«IDMish» by xffff

on 17 Jul'12 22:28 in bassdrumsdistortedclippingidm

thanks to whoever it was who wrote the kick and snare, I stole them from the dubstep whatsit from the list ages ago. Bit of time wasting turned relatively interesting.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// bit of an afternoon playing random noises turned out to sound relatively IDM-ish

// I stole the kick & snare from the dubstep thing off the list a while ago... thanks

(
fork{
	loop{ | i | 
		var time, trigtime;
		time = [1/8,1/4,1].wchoose([2,1,0.2].normalizeSum);
		trigtime = [1,2,4,8,16].choose;
		play{		
			var sound, freq, ampenv, filterenv, mod, snare, snaretrig, kick, kickenv, lin;
						
			mod = LFNoise2.kr({0.01.rand}.dup(2), [0.01.rand,0.001.rand,0.5.rand].choose, 1.0);
			
			freq = [
					Scale.minorPentatonic.degrees,
					Scale.minorPentatonic.degrees.choose
				].choose + (12 * (2..6).choose);
			freq = freq.midicps;
			
			filterenv = EnvGen.kr(Env.linen(time/3.0.rand.max(0.01), 
				time/3.0.rand.max(0.01),
				time/3.0.rand.max(0.01)).range(freq*1.5,freq*10.0.rand.max(1.5))
			);
			
			ampenv = EnvGen.kr(Env.perc(0.01,time/2.0.rand.max(1/8),1.0.rand),doneAction:2);
			
			sound = Select.ar(5.rand, [
				Pulse.ar(freq*mod,0.5).tanh,
				LFTri.ar(freq*mod,0).tanh,
				Pulse.ar(freq*mod,0.5).tanh,
				LFSaw.ar(freq*mod,0.5).tanh,		
				SinOscFB.ar(freq*mod,100.0.rand).tanh
			]); 
			
			sound = RLPF.ar(sound, filterenv, LFNoise2.kr(0.01.rand, 0.3, 0.5) );
			sound = sound * ampenv;
			
			sound = sound + (DelayC.ar(sound, 1/4, {[1/4,1/8].choose}.dup(2)) * [1.0.rand,0]);
			
			5.do{sound = (sound.clip + sound)*0.75};

			sound = LPF.ar(sound, LFNoise2.kr(trigtime, 250, 500) );
	
			snaretrig = Impulse.kr(trigtime);
			snare = 3*PinkNoise.ar(1!2) * 
				EnvGen.kr(Env.perc(0.01,0.01,[0,0.3.rand].choose),snaretrig);
			5.do{snare = AllpassC.ar(snare, 0.5, {0.05.rand}.dup(2), 1.0.rand)+snare};
			5.do{snare = (snare.distort + snare)*0.85};
			
			kickenv = EnvGen.kr(Env.perc(0.01,time,[0,1.0.rand].choose));
			kick = SinOsc.ar(40!2+(kickenv**3*200),0,7*kickenv) * kickenv; 
			5.do{kick = (kick.distort + kick)*0.75};
			
			sound = Limiter.ar(sound + snare + kick, 1.0, 0.00001);
						
			Out.ar(0,sound.tanh);
		};
		
		time.wait;
	};
}
)
descendants
«uuxofaato» by anonymous (private)
«unijejiu» by anonymous (private)
«owopakid» by anonymous (private)
«xareywi» by anonymous (private)
«ocosiejaf» by anonymous (private)
«oasimizui» by anonymous (private)
«ufaredmabnore» by anonymous (private)
«iehxejekehone» by anonymous (private)
«akeqawumuv» by anonymous (private)
«eyuhikam» by anonymous (private)
«eruitagi» by anonymous (private)
full graph
raw 2052 chars (focus & ctrl+a+c to copy)
reception
comments
nufets user 18 Jul'12 14:49

really, really like it ;)

vividsnow user 23 Jul'12 02:35

what cpu/mem do you use? )

xffff user 24 Jul'12 16:18

I7-620M/8GB, my server memSize is set quite high (~1Gb) because I get carried away and do a lot of sampling. Should probably put a line at the top with that in but I forgot (it's in my startup file). :)

alln4tural user 03 Aug'12 11:19

yeah jazzy!

Schemawound user 08 Aug'12 17:53

=D !!!

Luka P. user 08 Dec'16 11:09

love it!

jerome.lapuyade.lahorgue user 17 Dec'18 15:40

Very interesting code. However, the server saturate rapidely. I suggest instead of using a fork with speed loop to store this in a SynthDef and using Demand Ugens instead. Indeed, it avoid to send several OSC messages to the server in a short time interval. I will try to do this and to send it.

jerome.lapuyade.lahorgue user 17 Dec'18 15:42

Moreover, I am not sure that my suggestion is possible but I will try and I will see.