s.boot; ~dict = BmDspAlgs.getDict("synths/bass/saw_bass.scd"); ~dict[\postAmp] = true; ~dict[\useEnv] = true; ~dict.makeSourceSynthDef().add(); ~sawBass = (); ~sawBass[\name] = \saw; Ndef(~sawBass[\name]).clear; Ndef(~sawBass[\name]).ar(2); Ndef(~sawBass[\name]).prime(~dict[\name]); Ndef(~sawBass[\name]).play; ( Tdef(\t, { loop { [40, 45, 47].do({|n| Ndef(~sawBass[\name]).put( n, Ndef(~sawBass[\name]).source, 0, [\freq, n.midicps, \gate, 1, \amp, 0.25, \release, 0.5, \attack, 0.01] ); 0.25.wait; }); } }).play; ) ( Tdef(\t2, { loop { [55, 61].do({|n| Ndef(~sawBass[\name]).put( n, Ndef(~sawBass[\name]).source, 0, [\freq, n.midicps, \gate, 1, \amp, 0.25, \release, 0.1, \attack, 0.01] ); (4/7).wait; }); } }).play; ) ( Ndef(~sawBass[\name]).put( 159, \filter -> { arg in; d = LPF.ar(in, 1100); d }); ) ( Ndef(~sawBass[\name]).put( 160, \filter -> { arg in; var d = in; var diffusion = \diffusion.kr(1); var spacesize = \spacesize.kr(0.1); 8.do { |i| d = AllpassC.ar( d, delaytime: LFNoise1.kr(0.01!2).range(0.01, spacesize), decaytime: diffusion ) }; d }); ) Ndef(~sawBass[\name]).set(\diffusion, 0.03); Ndef(~sawBass[\name]).set(\spacesize, 0.1); Tdef(\t2).stop; Tdef(\t).stop;