convolution crossfade
parent
b39ec55854
commit
b691afdd85
@ -1,34 +1,39 @@
|
||||
~ir = Buffer.read(s, "/Users/lcoogan/snd/samples/convolution/ir_chunks/ir_chunk_055.wav");
|
||||
~irA = Buffer.read(s, "/home/lcoogan/snd/samples/convolution/ir_chunks/ir_chunk_000.wav");
|
||||
~irB = Buffer.read(s, "/home/lcoogan/snd/samples/freesound/vocals/ymaaela/fvocal.wav");
|
||||
~ir.play;
|
||||
|
||||
b = Buffer.read(s, "/home/lcoogan/snd/live/2025-04-26.Basic_City_Brewery/harm/01 Ritual for Harmonica.wav", bufnum:0);
|
||||
|
||||
b = Buffer.read(s, "/Users/lcoogan/Misc/grave.wav");
|
||||
b = Buffer.read(s, "/home/lcoogan/Misc/grave.wav");
|
||||
b = Buffer.read
|
||||
|
||||
b = Buffer.read(s, "/home/lcoogan/snd/live/2025-04-26.Basic_City_Brewery/trax/01-Cantor_Samual_Malavsky_Shomea_Kol_Bichios.wav");
|
||||
|
||||
|
||||
(
|
||||
SynthDef(\convolv, {
|
||||
var sig, env;
|
||||
|
||||
// sig = SinOsc.ar(\freq.ar(440));
|
||||
sig = PlayBuf.ar(1, b, 1, loop: 0, doneAction: 2); // Mono playback (1 channel)
|
||||
|
||||
// env = EnvGen.kr(Env.asr(0.1, 0.3), doneAction:1);
|
||||
// sig = LPF.ar(sig, 600);
|
||||
(
|
||||
SynthDef(\convolvCrossfade, {
|
||||
var sig, convA, convB, mix;
|
||||
|
||||
sig = PlayBuf.ar(1, b, 1, loop: 0, doneAction: 2);
|
||||
|
||||
sig = Convolution2.ar(sig, ~ir, 512); // Apply convolution reverb with buffer size 512'''
|
||||
// Run both convolutions
|
||||
convA = Convolution2.ar(sig, ~irA.bufnum, 512);
|
||||
convB = Convolution2.ar(sig, ~irB.bufnum, 512);
|
||||
|
||||
// Crossfade using mix control (-1 to 1)
|
||||
mix = \mix.kr(0.0); // -1 = only A, 0 = 50/50, 1 = only B
|
||||
convA = convA * ((1 - mix) * 0.5); // scales from 1 to 0 as mix goes from -1 to 1
|
||||
convB = convB * ((1 + mix) * 0.5); // scales from 0 to 1 as mix goes from -1 to 1
|
||||
|
||||
Out.ar(0, sig.dup * 0.1);
|
||||
Out.ar(0, (convA + convB).dup * 0.1);
|
||||
}).add;
|
||||
|
||||
)
|
||||
|
||||
Synth(\convolv, [\freq, [50].midicps]);
|
||||
|
||||
x = Synth(\convolvCrossfade, [\mix, 0.0]); // 50/50 blend
|
||||
|
||||
MIDIIn.connectAll;
|
||||
x.set(\mix, -1.0); // Only IR A
|
||||
x.set(\mix, 1.0); // Only IR B
|
||||
x.set(\mix, 0.5); // Mostly IR B
|
||||
|
||||
|
||||
Loading…
Reference in New Issue