Synth bass
This commit is contained in:
parent
8b51d7663f
commit
aa57a4e967
1 changed files with 56 additions and 0 deletions
56
synthbass.scd
Normal file
56
synthbass.scd
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
// An attempt to reproduce the patch at https://music.tutsplus.com/tutorials/essential-synthesis-part-3-synth-bass--audio-6844
|
||||||
|
// I'm not quite there yet...
|
||||||
|
|
||||||
|
(
|
||||||
|
SynthDef.new(\synthbass, {
|
||||||
|
|
||||||
|
arg freq = 440, ffreq = 3000, amp = 1, gate = 1, rq = 0.5;
|
||||||
|
var sig, env, fenv, sig1, sig2, sig3;
|
||||||
|
|
||||||
|
env = EnvGen.kr(Env.adsr(0.005, 0, 1, 0.01), gate, doneAction: 2);
|
||||||
|
|
||||||
|
sig1 = SinOsc.ar(freq / 2) * 1.5;
|
||||||
|
sig2 = Mix.ar([sig1, Saw.ar(freq)]);
|
||||||
|
sig3 = Mix.ar([sig1, Saw.ar(freq * 1.015)]);
|
||||||
|
|
||||||
|
sig2 = sig2 * env * amp;
|
||||||
|
sig3 = sig3 * env * amp;
|
||||||
|
|
||||||
|
fenv = EnvGen.kr(Env.adsr(0.001, 0.3, 200 / ffreq, 0.1), gate);
|
||||||
|
|
||||||
|
sig2 = RLPF.ar(sig2, ffreq * fenv, rq);
|
||||||
|
sig3 = RLPF.ar(sig3, ffreq * fenv, rq);
|
||||||
|
|
||||||
|
sig = Pan2.ar([sig2, sig3], SinOsc.kr(1));
|
||||||
|
Out.ar(0, sig);
|
||||||
|
|
||||||
|
|
||||||
|
}).add;
|
||||||
|
)
|
||||||
|
|
||||||
|
(
|
||||||
|
p = Pdef(\pattern,
|
||||||
|
Pbind(
|
||||||
|
\instrument, \synthbass,
|
||||||
|
\dur, Pseq([1, 1, 0.5, 1, 0.5].collect({ |i| i / 3 }), inf),
|
||||||
|
\midinote, Pseq([0, 0, 0, 2, 3].collect({ |i| i + 36 }), inf)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
p.play;
|
||||||
|
)
|
||||||
|
|
||||||
|
// PBinds generate events. It's like a stream of events. We can look at each Event object
|
||||||
|
// by polling the stream.
|
||||||
|
// Events are objects containing key-value pairs, e.g.:
|
||||||
|
// ( 'instrument': synthbass, 'dur': 0.33333333333333, 'midinote': 36 )
|
||||||
|
// The key-value pairs are used to control synths.
|
||||||
|
// See http://doc.sccode.org/Tutorials/A-Practical-Guide/PG_03_What_Is_Pbind.html
|
||||||
|
// See http://doc.sccode.org/Tutorials/A-Practical-Guide/PG_07_Value_Conversions.html
|
||||||
|
// for an explanation of how Event values are converted into SynthDef inputs.
|
||||||
|
|
||||||
|
p.asStream.next(Event.new);
|
||||||
|
|
||||||
|
// We can play a stream of events:
|
||||||
|
p.play;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue