| @@ -4,20 +4,43 @@ s.waitForBoot { | |||||
| // Create the synth definition and load it | // Create the synth definition and load it | ||||
| module = SynthDef.new("module", { | module = SynthDef.new("module", { | ||||
| var noise, crackle, mixer, oscillator, filtered_noise, tone, frequency, noise_level, qfactor, osc_level; | |||||
| tone = MouseX.kr(1, 0); | |||||
| frequency = MouseY.kr(200, 2000); | |||||
| qfactor = (tone)**4; | |||||
| osc_level = 1 - tone; | |||||
| noise_level = 1 - tone; | |||||
| oscillator = SinOsc.ar(frequency) * osc_level; | |||||
| crackle = Crackle.ar(tone + 1, 0.5); | |||||
| noise = WhiteNoise.ar(1); | |||||
| filtered_noise = BPF.ar(noise, frequency, qfactor) * noise_level; | |||||
| mixer = Mix.ar([crackle, filtered_noise]); | |||||
| Out.ar(0, mixer); | |||||
| var x; | |||||
| var frequency, qfactor, fm_amount, detune, distortion, oscillator_level, subosc_level, noise_level, noise_tone; | |||||
| var detune_max = 3; | |||||
| var noise, crackle, mnoise, fnoise, rootosc, fmosc, subosc, msin, dsin, mixer, panner; | |||||
| // Setup some parameters | |||||
| x = MouseY.kr(0, 1); | |||||
| frequency = 1000; | |||||
| qfactor = ((0 -x) * 10).exp; | |||||
| detune = (1 - x) * detune_max; | |||||
| fm_amount = 1 - x; | |||||
| distortion = (1 - x)**2; | |||||
| subosc_level = 1 - (x-0.5)**2; | |||||
| oscillator_level = x**4; | |||||
| noise_level = 0.1 * (1 - (x - 0.5)**2); | |||||
| noise_tone = 1 - x; | |||||
| // Build and connect noise modules | |||||
| noise = WhiteNoise.ar(noise_level); | |||||
| crackle = Crackle.ar(noise_tone + 1, 0.5); | |||||
| mnoise = Mix.ar([crackle]) * (1-x); | |||||
| fnoise = BPF.ar(mnoise, frequency, qfactor); | |||||
| // Build and connect sinusoid modules | |||||
| fmosc = SinOsc.ar(frequency * 0.3); | |||||
| rootosc = SinOsc.ar(frequency + fmosc) * oscillator_level; | |||||
| subosc = SinOsc.ar(frequency/16).cubed * subosc_level; | |||||
| // Mix the sines together | |||||
| msin = Mix.ar([subosc]); | |||||
| // Distort the sines | |||||
| dsin = msin; | |||||
| mixer = Mix.ar([dsin, fnoise]); | |||||
| panner = LinPan2.ar(mixer, MouseX.kr(-1, 1), 1); | |||||
| Out.ar(0, panner); | |||||
| }); | }); | ||||
| module.load(s); | module.load(s); | ||||