parent
9073cab624
commit
e3fa7d2159
1 changed files with 141 additions and 0 deletions
@ -0,0 +1,141 @@ |
||||
( |
||||
Server.default.waitForBoot { |
||||
|
||||
// audio is in the smp/ subfolder from the location of this file |
||||
var path = PathName.new(thisProcess.nowExecutingPath).pathOnly +/+ "smp/contrapoints_gender_critical.wav"; |
||||
~contra = Buffer.read(s, path); |
||||
|
||||
// a mono channel feeding reverb fx |
||||
~revBus = Bus.audio(s, 1); |
||||
|
||||
// stereo channel feeding granular reverb/delay |
||||
~granBus = Bus.audio(s, 2); |
||||
|
||||
// two buffers for granluar rev/delay |
||||
~granbufL = Buffer.alloc(s, 6 * s.sampleRate); |
||||
~granbufR = Buffer.alloc(s, 6 * s.sampleRate); |
||||
|
||||
|
||||
// SynthDefs |
||||
|
||||
SynthDef(\bufPlayer, { |
||||
arg out=0, sndbuf, gate = 1, amp = 0.1, pos = 0, rate = 1; |
||||
var snd, com, env; |
||||
|
||||
env = EnvGen.ar(Env.asr(0.01, 1, 0.01), gate, doneAction:Done.freeSelf); |
||||
snd = PlayBuf.ar(1, sndbuf, rate: rate, startPos: pos); |
||||
com = CombN.ar(snd, 0.5, Rand(0.01, 0.05), mul:0.6); |
||||
snd = snd + (com * Rand(0,1)); |
||||
snd = RLPF.ar(snd, Rand(1000, 5000), 0.2); |
||||
snd = HPF.ar(snd, Rand(200,1000)); |
||||
snd = Decimator.ar(snd/2, ExpRand(5000,44100), add:snd/2); |
||||
com = CombN.ar(snd, 0.5, Rand(0.1, 0.5)); |
||||
snd = snd + (com * Rand(0,1)); |
||||
snd = snd * env * amp; |
||||
|
||||
Out.ar(out, snd); |
||||
}).add; |
||||
|
||||
|
||||
SynthDef(\revfx, { |
||||
arg inBus, outBus=0, revtime = 5, dry=1, wet=0.2, roomsize=100; |
||||
var snd; |
||||
|
||||
snd = In.ar(inBus); |
||||
snd = GVerb.ar(snd, roomsize, revtime, drylevel: dry, earlyreflevel: 0, taillevel: wet) ; |
||||
|
||||
Out.ar(outBus, snd); |
||||
}).add; |
||||
|
||||
|
||||
SynthDef(\grainIn, { |
||||
arg inBus, outBus=0, bufL, bufR, amp=0.5, freq=220, fvar=1, |
||||
dur = 0.5, durvar = 0.05, pos = 0, posvar = 0.05, pitch = 1, pitchvar = 0.01, |
||||
width = 0.8, gain = 0.4, wet = 1, dry = 3 ; |
||||
var inSnd, snd; |
||||
|
||||
// audio from a bus |
||||
inSnd = In.ar(inBus, 2); |
||||
|
||||
// continously record into two buffers |
||||
RecordBuf.ar(inSnd[0], bufL); |
||||
RecordBuf.ar(inSnd[1], bufR); |
||||
|
||||
// granulate the audio in buffers |
||||
snd = GrainBuf.ar( |
||||
numChannels: 1, |
||||
trigger: Impulse.kr(freq + (freq * (fvar * LFNoise2.kr(freq)))), |
||||
dur: dur + (durvar * LFNoise2.kr(freq)), // in seconds |
||||
sndbuf: [bufL, bufR], // not sure if this works correctly |
||||
rate: pitch + (pitchvar * LFNoise2.kr(5)), |
||||
pos: SinOsc.ar(0.03, phase:[0,0.1]).range(0,1) + (posvar * LFNoise2.kr(freq)), // 0-1 |
||||
interp: 2, |
||||
//pan: LFNoise1.kr(10).range(width.neg, width), |
||||
maxGrains: 512, mul: gain, add: inSnd*2 |
||||
); |
||||
|
||||
// mix granulated and original sound |
||||
snd = (snd * wet) + (inSnd * dry); |
||||
|
||||
snd = snd * amp; |
||||
snd = Limiter.ar(snd, 0.7); |
||||
Out.ar(outBus,snd); |
||||
}).add; |
||||
|
||||
} |
||||
) |
||||
|
||||
// create fx |
||||
~reverb = Synth(\revfx, [\inBus, ~revBus, \outBus, ~granBus]); |
||||
~granulator = Synth(\grainIn, [\inBus, ~granBus, \bufL, ~granbufL, \bufR, ~granbufR], addAction:\addToTail) |
||||
|
||||
|
||||
|
||||
// play it with a patterns |
||||
( |
||||
Pbindef(\bufPlat, |
||||
\instrument, \bufPlayer, |
||||
\sndbuf, ~contra, |
||||
\amp, 0.3, |
||||
\dur, Prand([1, 4, 1/2, Pn(1/4, Prand([2,4])), Pn(1/8, Prand([2,4,8])), 2], inf), |
||||
\legato, Prand((3..4) * 0.1, inf), |
||||
\pos, Prand(list: (0..~contra.numFrames), repeats: inf), |
||||
\out, ~revBus |
||||
).stop |
||||
) |
||||
|
||||
|
||||
//////////////////////////////////////////////////////////// |
||||
//play with arguments/parameters |
||||
~reverb.set(\wet, 0.5); |
||||
~reverb.set(\roomsize, 140); |
||||
|
||||
~granulator.set(\amp, 1) |
||||
~granulator.set(\dur, 0.5) |
||||
~granulator.set(\wet, 1); |
||||
~granulator.set(\dry, 3); |
||||
~granulator.free; |
||||
//////////////////////////////////////////////////////////// |
||||
|
||||
|
||||
( // free stuff |
||||
~reverb.free; |
||||
~granulator.free; |
||||
|
||||
~granBufL.free; |
||||
~granBufR.free; |
||||
|
||||
~revBus.free; |
||||
~granBus.free; |
||||
) |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
thisProcess.platform.recordingsDir = "/home/random"; |
||||
r = Recorder.new(s); |
||||
r.recHeaderFormat = "flac"; |
||||
r.recSampleFormat = "int24"; |
||||
r.filePrefix = "SuperCollider_"; |
Loading…
Reference in new issue