[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[sc-users] RE: reverse reverb in real time
This is what I was imagining, though I'm sure there is room for improvement:
s.options.memSize = 2.pow(20); //a safe choice when using large
auto-allocated delay buffers
s.reboot;
//load buffers one at a time
b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");
c = Buffer.alloc(s, b.numFrames + (s.sampleRate+6), 2); //size = sound +
reverb time + an extra second
(
//signal routing busses
~reverbBus = Bus.audio(s, 2);
~delayBus = Bus.audio(s, 2);
//source sound
SynthDef.new(
\input,
{
arg amp=0.5, out=0;
var sig;
//or SoundIn, maybe
sig = PlayBuf.ar(1!2, b.bufnum);
sig = sig * amp;
Out.ar(out, sig);
}).add;
//simple reverb
SynthDef.new(
\reverb,
{
arg amp=1, out=0, in=0;
var sig;
sig = In.ar(in, 1);
sig = sig.blend(GVerb.ar(sig, 99, 5), 0.5);
sig = sig * amp;
Out.ar(out, sig);
}).add;
SynthDef.new(
\reversedelay,
{
arg amp=1, out=0, in=0;
var input, sig, readptr;
input = In.ar(in, 2);
//write the incoming reverb'd signal to a buffer, and stop at the end
RecordBuf.ar(input, c.bufnum, loop:0);
//LFTri used for oscillating backward/forward playback
readptr = LFTri.ar(SampleRate.ir/BufFrames.ir(c.bufnum)/2, 3).range(0,1);
readptr = 1 - readptr; //reverse
readptr = (readptr * BufFrames.ir(c.bufnum)).round; //scale by numFrames
//delay by number of frames in captured reverb buffer
readptr = DelayN.ar(readptr, BufDur.ir(c.bufnum), BufDur.ir(c.bufnum));
sig = BufRd.ar(2, c.bufnum, readptr);
sig = sig * amp;
Out.ar(out, sig);
}).add;
)
//play -- sound will begin after initial reverb sound is recorded
(
s.bind({
Synth.new(\input, [\out, ~reverbBus]);
Synth.new(\reverb, [\in, ~reverbBus, \out, ~delayBus], s, \addToTail);
Synth.new(\reversedelay, [\in, ~delayBus, \out, 0], s, \addToTail);
})
)
//stop
s.freeAll;
--
View this message in context: http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/reverse-reverb-in-real-time-tp7615406p7615432.html
Sent from the SuperCollider Users New (Use this!!!!) mailing list archive at Nabble.com.
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/