diff --git a/convolution.scd b/convolution.scd index b4e534f..7e9a684 100644 --- a/convolution.scd +++ b/convolution.scd @@ -14,7 +14,10 @@ b = Buffer.read(s, "/home/lcoogan/snd/releases/desolation-mountain/01. Crawling b = Buffer.read(s, "/home/lcoogan/Misc/ametsub.wav"); +b = Buffer.read(s, "/home/lcoogan/snd/releases/desolation-mountain/03. Daven That Dark Matter 'Till Harsh Light Slows Sight.wav"); +b = Buffer.read(s, "/home/lcoogan/snd/releases/desolation-mountain/daven.stems/3_overhead.wav"); +b = Buffer.read(s, "/home/lcoogan/snd/releases/desolation-mountain/daven.stems/2_TripleOscillator.wav"); // use this one on the last one ( SynthDef(\convolvCrossfade, { @@ -36,10 +39,42 @@ SynthDef(\convolvCrossfade, { ) -x = Synth(\convolvCrossfade, [\mix, 0.0]); // 50/50 blend +x = Synth(\convolvCrossfade, [\mix, 1.0]); x.set(\mix, 0); x.set(\mix, 0.5); // Mostly IR B x.set(\mix, -1.0); // Only IR A x.set(\mix, 1.0); // Only IR B + + + +// Modulate between the two + +( +SynthDef(\convolvCrossfadeLFO, { + var sig, convA, convB, mix; + + sig = PlayBuf.ar(1, b, 1, loop: 0, doneAction: 2); + + // Run both convolutions + convA = Convolution2.ar(sig, ~irA.bufnum, 512); + convB = Convolution2.ar(sig, ~irB.bufnum, 512); + + // LFO modulation for crossfade: -1 to +1 + mix = SinOsc.kr(\lfoFreq.kr(0.2), 0); // add \lfoFreq arg + + // Crossfade logic as before + // convA = convA * ((1 - mix) * 0.5); + // convB = convB * ((1 + mix) * 0.5); + + Out.ar(0, (convA + convB).dup * 0.1); +}).add; +) + + +x = Synth(\convolvCrossfadeLFO, [\lfoFreq, 0.1]); // very slow modulation +x.set(\lfoFreq, 0.1); +x.set(\lfoFreq, 9); // faster modulation + +s.record; diff --git a/microsound/wavesets.scd b/microsound/wavesets.scd index 58839d7..f94b576 100644 --- a/microsound/wavesets.scd +++ b/microsound/wavesets.scd @@ -1,6 +1,10 @@ b = Buffer.read(s, "/home/lcoogan/snd/samples/freesound/vocals/ymaaela/attribution/330909__ymaaela__discordant-clip.mono.wav"); b = Buffer.read(s, "/home/lcoogan/snd/samples/freesound/vocals/ymaaela/333264__ymaaela__female-vocal-cut-ups-collage.mono.wav"); +// with this +b = Buffer.read(s, "/home/lcoogan/snd/releases/desolation-mountain/daven.stems/raoeu.wav"); +w = Wavesets.from("/home/lcoogan/snd/releases/desolation-mountain/daven.stems/raoeu.wav"); + b.play; s.boot @@ -10,6 +14,7 @@ s.boot // make a wavesets from a soundfile w = Wavesets.from("/home/lcoogan/snd/samples/freesound/vocals/ymaaela/attribution/330909__ymaaela__discordant-clip.mono.wav"); w = Wavesets.from("/home/lcoogan/snd/samples/freesound/vocals/ymaaela/333264__ymaaela__female-vocal-cut-ups-collage.mono.wav"); +w = Wavesets.from("/home/lcoogan/.local/share/SuperCollider/Recordings/SC_250525_194956.wav"); w.dump; // contains mainly analysis data @@ -147,3 +152,24 @@ fork { + + + + + +///////////////////////// + + +( +// the simplest synthdef as implented in *prepareSynthDefs: +SynthDef(\wvst0, { arg out = 0, buf = 0, start = 0, length = 441, playRate = 1, sustain = 1, amp=0.2, pan; + var phasor = Phasor.ar(0, BufRateScale.ir(buf) * playRate, 0, length) + start; + var env = EnvGen.ar(Env([amp, amp, 0], [sustain, 0]), doneAction: 2); + var snd = BufRd.ar(1, buf, phasor) * env; + + OffsetOut.ar(out, Pan2.ar(snd, pan)); +}, \ir.dup(8)).add; +) + +Synth("wvst0", [\bufnum, b, \start, 0, \length, 600, \sustain, 4, \playRate, -0.4]); +