|
@@ -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); |
|
|