| @@ -10,18 +10,26 @@ s.waitForBoot { | |||||
| // Create the synth definition and load it | // Create the synth definition and load it | ||||
| module = SynthDef.new("module", { | module = SynthDef.new("module", { | ||||
| arg hue, saturation, value; | |||||
| var oscillator, noise, filter, panner, mixer; | |||||
| arg hue, saturation, value, pan; | |||||
| var oscillator, noise, filter, panner, mixer, frequency, qfactor, noise_level, osc_level; | |||||
| // Calculate some parameters | |||||
| frequency = 200 + 800*hue; | |||||
| qfactor = (1 - saturation)**4; | |||||
| osc_level = saturation; | |||||
| noise_level = 1 - osc_level; | |||||
| // Generate some sounds | |||||
| noise = WhiteNoise.ar(1); | noise = WhiteNoise.ar(1); | ||||
| filter = BPF.ar(noise, MouseX.kr(220, 1000), MouseY.kr(0, 1)**4, MouseY.kr(2, 0.1)); | |||||
| oscillator = SinOsc.ar(MouseX.kr(220, 1000)) * MouseY.kr(0.5, 0); | |||||
| filter = BPF.ar(noise, frequency, qfactor) * noise_level; | |||||
| oscillator = SinOsc.ar(frequency) * osc_level; | |||||
| mixer = Mix.ar([filter, oscillator]); | mixer = Mix.ar([filter, oscillator]); | ||||
| panner = LinPan2.ar(mixer, 0.0); | |||||
| Out.ar(0, mixer); | |||||
| panner = LinPan2.ar(mixer, 2*pan - 1, value); | |||||
| Out.ar(0, panner); | |||||
| }); | }); | ||||
| module.load(s); | module.load(s); | ||||
| s.sync; | s.sync; | ||||
| // Make a sound | // Make a sound | ||||
| sound = Synth.new("module", [\hue, 440, \saturation, 100, \value, 500]); | |||||
| sound = Synth.new("module", [\hue, 0.5, \saturation, 0.1, \value, 0.5, \pan, 0.5]); | |||||
| }; | }; | ||||