You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
2.9 KiB
Plaintext
120 lines
2.9 KiB
Plaintext
~ir = Buffer.read(s, "/home/lcoogan/snd/ir/ForestScaleModel/ForestScaleModel/IR_ScaleModel/S1R1_ScaleModel.wav");
|
|
~ir = Buffer.read(s, "/home/lcoogan/snd/ir/r1-nuclear-reactor-hall/stereo/r1_ortf-48k.wav");
|
|
|
|
|
|
b = Buffer.read(s, "/home/lcoogan/snd/samples/scarlett/scarlett singing.wav");
|
|
b.play;
|
|
|
|
{Convolution.ar(b, ~ir)}.play;
|
|
|
|
|
|
s.options.memSize = 8192;
|
|
|
|
|
|
(
|
|
SynthDef(\bellFM, {
|
|
|freq = 440, amp = 0.1, gate = 1, ratioIndex = 0, out = 0, irBuf = 0, wet = 0.5, lfoRate = 20, lfoDepth = 1|
|
|
var car, mod, env, mFreq, mIndex, tunedFreq, tuning, dry, reverb, sig, lfo;
|
|
|
|
tuning = [13/12, 55/48, 5/4, 65/48, 11/8, 143/96, 13/8, 5/3, 11/6, 2/1];
|
|
tunedFreq = freq * Select.kr(ratioIndex.clip(0, tuning.size - 1), tuning);
|
|
|
|
env = EnvGen.kr(Env.perc(0.01, 1.0, 1, 4), gate, doneAction: 2);
|
|
|
|
mFreq = tunedFreq * 6.7;
|
|
mIndex = env * 5;
|
|
mod = Pulse.ar(mFreq) * (tunedFreq * mIndex);
|
|
dry = SinOsc.ar(tunedFreq + mod) * env * amp;
|
|
|
|
// Initialize sig with the dry signal
|
|
// sig = dry;
|
|
|
|
sig =
|
|
|
|
// Create LFO and modulate
|
|
lfo = SinOsc.kr(lfoRate, 0, lfoDepth); // Low-frequency oscillator
|
|
|
|
lfo = LFNoise0.kr(lfoRate * lfoDepth);
|
|
sig = sig + lfo; // Add LFO to the signal
|
|
|
|
// Convolve and scale
|
|
reverb = Convolution2.ar(dry, ~ir, 512);
|
|
// Mix dry and wet signals
|
|
sig = XFade2.ar(dry, reverb, (wet * 2) + lfo); // -1 = all dry, +1 = all wet
|
|
|
|
Out.ar(out, sig.dup);
|
|
}).add;
|
|
)
|
|
|
|
|
|
(
|
|
SynthDef(\pluckedSine, {
|
|
|out=0, freq=220, amp=0.4, decay=3, coef=0.5|
|
|
var trig, burst, pluck;
|
|
|
|
trig = Impulse.kr(0); // trigger manually
|
|
|
|
burst = SinOsc.ar(freq) * EnvGen.kr(Env.perc(0.001, 0.05), trig);
|
|
|
|
pluck = Pluck.ar(
|
|
burst,
|
|
trig,
|
|
0.2, // max delay time
|
|
1 / freq, // delay time = 1 / freq
|
|
decay,
|
|
coef
|
|
);
|
|
|
|
Out.ar(out, pluck.dup * amp);
|
|
}).add;
|
|
)
|
|
|
|
|
|
|
|
Synth(\bellFM, [\irBuf, ~ir.bufnum]);
|
|
|
|
|
|
|
|
|
|
Synth(\bellFM, [\freq, 440]);
|
|
Synth(\bellFM, [\freq, 660]);
|
|
Synth(\bellFM, [\freq, 550]);
|
|
|
|
|
|
(
|
|
SynthDef(\pluckedSine, {
|
|
|out = 0, freq = 220, amp = 0.4, decay = 3, coef = 0.5, wet = 0.5, lfoRate = 3, lfoDepth = 1, irBuf = 0|
|
|
var trig, burst, pluck, reverb, lfo, sig;
|
|
|
|
trig = Impulse.kr(0); // trigger manually
|
|
|
|
burst = LFSaw.ar(freq) * EnvGen.kr(Env.perc(0.001, 0.05), trig);
|
|
|
|
pluck = Pluck.ar(
|
|
burst,
|
|
trig,
|
|
0.2, // max delay time
|
|
1 / freq, // delay time = 1 / freq
|
|
decay,
|
|
coef
|
|
);
|
|
|
|
// Initialize sig with the pluck signal
|
|
sig = pluck;
|
|
|
|
// LFO modulation (Low-frequency noise oscillator)
|
|
lfo = LFNoise0.kr(lfoRate); // Low-frequency noise oscillator
|
|
sig = sig + lfo * lfoDepth; // Apply LFO to the signal
|
|
|
|
// Convolve and scale
|
|
// reverb = Convolution2.ar(sig, irBuf, 512); // Apply convolution reverb
|
|
sig = XFade2.ar(sig, reverb, (wet * 2) + 0.1); // Mix dry and wet signals
|
|
|
|
// sig = GVerb.ar(sig);
|
|
|
|
// Output the signal
|
|
Out.ar(out, sig.dup);
|
|
}).add;
|
|
)
|
|
|