1
0
Fork 0

restructured busses to add reverb

8-channel
Luka Prinčič 2020-03-18 00:35:57 +01:00
parent ab06a766f2
commit 55589b21af
5 changed files with 143 additions and 49 deletions

View File

@ -77,7 +77,7 @@ s.scope
// Quarks.gui // Quarks.gui
); );
m = ServerMeter.new(s, 0, 2);
@ -123,7 +123,7 @@ t.tempo;
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
( // basic synth SynthDef ( // basic synth SynthDef
SynthDef(\blipo, { | out, freq = 440, amp = 0.1, nharms = 10, pan = 0, gate = 1, sustain, attack=0.1 | SynthDef(\blipo, { | out, freq = 440, amp = 0.1, nharms = 10, pan = 0, gate = 1, sustain, attack=0.1 |
var audio = Blip.ar(freq * (SinOsc.kr(3).range(1,1.01)), nharms, amp); var audio = Blip.ar(freq * (SinOsc.kr(3).range(1,1.001)), nharms, amp);
var env = Linen.kr(gate, attackTime: attack, releaseTime: sustain, doneAction: Done.freeSelf); var env = Linen.kr(gate, attackTime: attack, releaseTime: sustain, doneAction: Done.freeSelf);
OffsetOut.ar(out, Pan2.ar(audio, pan, env) ); OffsetOut.ar(out, Pan2.ar(audio, pan, env) );
}).add; }).add;
@ -168,8 +168,8 @@ Pbindf(
\instrument, \blipo, \instrument, \blipo,
\degree, (Pflatten(1, Plorenz()) * 18).asInteger, \degree, (Pflatten(1, Plorenz()) * 18).asInteger,
\mtranspose, Prand([Pn(0,24),Pn(2,24),Pn(4,24)], inf), \mtranspose, Prand([Pn(0,24),Pn(2,24),Pn(4,24)], inf),
\detune, Prand([0,1,0.5,1.5], inf), \detune, Prand([0,0.5], inf),
\scale, Scale.minor(\just), \scale, Scale.minor,
\legato, Prand((4..7),inf) * 0.2, \legato, Prand((4..7),inf) * 0.2,
\pan, Prand((-10..10),inf) * 0.1, \pan, Prand((-10..10),inf) * 0.1,
\out, ~revbus \out, ~revbus
@ -181,6 +181,17 @@ Pbindf(
{SinOsc.ar()}.play
@ -1053,3 +1064,24 @@ x.free
// Hello everyone!!!

View File

@ -37,18 +37,38 @@
SynthDef("octoPanner", { SynthDef("octoPanner", {
arg inBus, x=0, y=0.14, radius=1; arg inBus, x=0, y=0.14, radius=1, outBus;
var snd = In.ar(inBus,1); var snd = In.ar(inBus,1);
snd = ~octoPanOut.value(snd, x, y, radius); snd = ~octoPanOut.value(snd, x, y, radius);
Out.ar(0, snd); Out.ar(outBus, snd);
}).add; }).add;
);
(
SynthDef("reverBusser", {
arg inBus, outBus, verb1wet=0, verb2wet=0, verb3wet=0, verb4wet=0;
var verb1, verb2, verb3, verb4;
var snd = In.ar(inBus, 8);
verb1 = JPverb.ar(snd.at([0,1]) * verb1wet);
verb2 = JPverb.ar(snd.at([2,3]) * verb2wet);
) verb3 = JPverb.ar(snd.at([4,5]) * verb3wet);
verb4 = JPverb.ar(snd.at([6,7]) * verb4wet);
snd.put(0, snd.at(0) + verb1.at(0) );
snd.put(1, snd.at(1) + verb1.at(1) );
snd.put(2, snd.at(2) + verb2.at(0) );
snd.put(3, snd.at(3) + verb2.at(1) );
snd.put(4, snd.at(4) + verb3.at(0) );
snd.put(5, snd.at(5) + verb3.at(1) );
snd.put(6, snd.at(6) + verb4.at(0) );
snd.put(7, snd.at(7) + verb4.at(1) );
Out.ar(outBus, snd);
}).add;
);

View File

@ -1,4 +1,4 @@
( (
~forestSoilBuf = Buffer.read(s, ~forestSoilBuf = Buffer.read(s,
PathName(thisProcess.nowExecutingPath).pathOnly +/+ "smp/403312__marco-luzi__forest-soil_norm-mono.wav" ); PathName(thisProcess.nowExecutingPath).pathOnly +/+ "../smp/403312__marco-luzi__forest-soil_norm-mono.wav" );
); );

View File

@ -50,10 +50,11 @@ SynthDef(\henonLsynth1, {
( (
// henonLsynth = dark brooding melodic drone-noise // henonLsynth = dark brooding melodic drone-noise
SynthDef(\henonLsynth2, { SynthDef(\henonLsynth2, {
arg out; arg out, gate=1, fadeTime=1;
var sig, sinfreq, env; var sig, sinfreq, env;
env = EnvGen.kr(Env(levels: [0,1,1,0], times: [40, 170, 40], curve: \sin), doneAction: 2); env = EnvGen.kr(Env(levels: [0,1,0], times: [fadeTime, fadeTime], curve: \sin, releaseNode: 1),
gate, doneAction: 2);
sinfreq = LFPulse.kr( freq: 0.9, width:0.1); sinfreq = LFPulse.kr( freq: 0.9, width:0.1);
sinfreq = sinfreq.range( sinfreq = sinfreq.range(
@ -74,7 +75,7 @@ SynthDef(\henonLsynth2, {
sig = sig * env; sig = sig * env;
//sig = Mix.new(sig); sig = Mix.new(sig);
Out.ar(out, sig); Out.ar(out, sig);
}).add; }).add;

View File

@ -51,6 +51,7 @@ Server.default.waitForBoot {
~panBus2x.free; ~panBus2y.free; ~panBus2r.free; ~panBus2x.free; ~panBus2y.free; ~panBus2r.free;
~panBus3x.free; ~panBus3y.free; ~panBus3r.free; ~panBus3x.free; ~panBus3y.free; ~panBus3r.free;
~panBus4x.free; ~panBus4y.free; ~panBus4r.free; ~panBus4x.free; ~panBus4y.free; ~panBus4r.free;
~revBus.free;
// octoBus1 + panners and control busses: // octoBus1 + panners and control busses:
~octoBus1 = Bus.audio(s,1); ~octoBus1 = Bus.audio(s,1);
@ -88,37 +89,67 @@ Server.default.waitForBoot {
~panBus4x.value = 0; ~panBus4x.value = 0;
~panBus4r.value = 0.1; ~panBus4r.value = 0.1;
// 8chan reverb bus
~revBus = Bus.audio(s,8);
">>> loaded all busses".postln;
); );
( (
var timeLine, r; var timeLine, r;
// CmdPeriod frees these, but not the busses, so only these need to be re-inst. // CmdPeriod frees these, but not the busses, so only these need to be re-inst.
"--- freeing old octoPanners ...".postln;
~octoPanner1.free; ~octoPanner2.free; ~octoPanner3.free; ~octoPanner4.free; ~octoPanner1.free; ~octoPanner2.free; ~octoPanner3.free; ~octoPanner4.free;
~octoPanner1 = Synth("octoPanner", [\inBus, ~octoBus1], addAction: \addToTail);
"--- loading octoPanners ...".postln;
~octoPanner1 = Synth("octoPanner", [\inBus, ~octoBus1, \outBus, ~revBus], addAction: \addToTail);
~octoPanner1.map(\x, ~panBus1x); ~octoPanner1.map(\x, ~panBus1x);
~octoPanner1.map(\y, ~panBus1y); ~octoPanner1.map(\y, ~panBus1y);
~octoPanner1.map(\radius, ~panBus1r); ~octoPanner1.map(\radius, ~panBus1r);
~octoPanner2 = Synth("octoPanner", [\inBus, ~octoBus2], addAction: \addToTail); ~octoPanner2 = Synth("octoPanner", [\inBus, ~octoBus2, \outBus, ~revBus], addAction: \addToTail);
~octoPanner2.map(\x, ~panBus2x); ~octoPanner2.map(\x, ~panBus2x);
~octoPanner2.map(\y, ~panBus2y); ~octoPanner2.map(\y, ~panBus2y);
~octoPanner2.map(\radius, ~panBus2r); ~octoPanner2.map(\radius, ~panBus2r);
~octoPanner3 = Synth("octoPanner", [\inBus, ~octoBus3], addAction: \addToTail); ~octoPanner3 = Synth("octoPanner", [\inBus, ~octoBus3, \outBus, ~revBus], addAction: \addToTail);
~octoPanner3.map(\x, ~panBus3x); ~octoPanner3.map(\x, ~panBus3x);
~octoPanner3.map(\y, ~panBus3y); ~octoPanner3.map(\y, ~panBus3y);
~octoPanner3.map(\radius, ~panBus3r); ~octoPanner3.map(\radius, ~panBus3r);
~octoPanner4 = Synth("octoPanner", [\inBus, ~octoBus4], addAction: \addToTail); ~octoPanner4 = Synth("octoPanner", [\inBus, ~octoBus4, \outBus, ~revBus], addAction: \addToTail);
~octoPanner4.map(\x, ~panBus4x); ~octoPanner4.map(\x, ~panBus4x);
~octoPanner4.map(\y, ~panBus4y); ~octoPanner4.map(\y, ~panBus4y);
~octoPanner4.map(\radius, ~panBus4r); ~octoPanner4.map(\radius, ~panBus4r);
~reverb = Synth("reverBusser", [\inBus, ~revBus, \outBus, 0], addAction: \addToTail);
timeLine = Routine { timeLine = Routine {
"--- starting main routine ...".postln; "--- starting main routine ...".postln;
1.wait; //1.wait;
/*
~panBus1y.value = 0.2; // set a fixed value to a bus
~panBus1x.value = 0;
~darkHenon1 = Synth(\henonLsynth2, [\out, ~octoBus1, \fadeTime, 3]);
~darkHenon1.set(\gate, 0);
~darkHenon1.free
~darkHenon1.set(\gate, 0);
~darkHenon1.set(\amp, 0);
~noiseCr1.set(\fadeTime, 20, \gate, 0);
~darkHenon2 = Synth(\henonLsynth2, [\out, ~octoBus2]);
~darkHenon1.free
~darkHenon2.free
*/
/* ***** ************************ /* ***** ************************
@ -180,7 +211,6 @@ timeLine = Routine {
~markov8.set(\gate, 0); ~markov8.set(\gate, 0);
~markov9.set(\gate, 0); ~markov9.set(\gate, 0);
wait(1); wait(1);
**********/
~markov7 = Synth(\markovS1, [ \out, ~octoBus1, ~markov7 = Synth(\markovS1, [ \out, ~octoBus1,
\freq, 141, \tsize, 3, \amp, 0.5, \clip, 0.9, \fadeTime, 0.01 ]); \freq, 141, \tsize, 3, \amp, 0.5, \clip, 0.9, \fadeTime, 0.01 ]);
@ -249,6 +279,7 @@ timeLine = Routine {
~noiseCr1.set(\fadeTime, 20, \gate,0); ~noiseCr1.set(\fadeTime, 20, \gate,0);
**********/
/* /*
@ -281,31 +312,6 @@ timeLine.play;
); );
// 'set' values - disconnects mapping!
~octoPanner1.set(\x, 0, \y, 0.14, \radius, 0.1);
( // send oscilations to control bus
~panner1y.free;
~panner1y = {Out.kr(~panBus1y, LFNoise0.kr(9).range(0,0.28))}.play;
~panner1y = SynthDef(\randomPanY, { Out.kr(~panBus1y, LFNoise0.kr(9).range(0,0.28))}).play;
// convert to SynthDef + Synth for common oscilations?
)
( // metering/analysis ( // metering/analysis
s.meter; s.meter;
s.scope; s.scope;
@ -313,18 +319,45 @@ s.plotTree;
FreqScope.new(400, 200, 0, server: s); FreqScope.new(400, 200, 0, server: s);
) ///////////////////////////////////// ) /////////////////////////////////////
// testing stuff! ///////////////////////////////////////////////////////////////////////////////////////
~lorenzTrig1 = Synth(\lorenzTrigRing, [\out, ~octoBus1, \freq, 1400, \amp, 0.5]);
~reverb.set(\verb1wet, 0.3);
~reverb.set(\verb2wet, 1);
// 'set' values - disconnects mapping!
~octoPanner1.set(\x, 0, \y, 0.28, \radius, 0.001);
~panner1y.free;
~panner1y = {Out.kr(~panBus1y, SinOsc.kr(0.1).range(0,0.28))}.play;
~panner1y = SynthDef(\randomPanY, { Out.kr(~panBus1y, LFNoise0.kr(9).range(0,0.28))}).play;
// convert to SynthDef + Synth for common oscilations?
~lorenzTrig1.free;
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// synths // synths
~henonS1 = Synth(\henonSynth1, [\out, ~octoBus1], ~octoPanner1, \addBefore); ~henonS1 = Synth(\henonSynth1, [\out, ~octoBus1], ~octoPanner1, \addBefore);
~henonS1 = Synth(\henonSynth1, [\out, ~octoBus1], addAction:\addToHead);// addToHead is default action ~henonS1 = Synth(\henonSynth1, [\out, ~octoBus1], addAction:\addToHead);// addToHead is default action
~henonS1 = Synth(\henonSynth1, [\out, ~octoBus1]); ~henonS1 = Synth(\henonSynth1, [\out, ~octoBus1]);
~Henons1 = Synth(\henonSynth1, [\out, 0]);
~henonS1.free; ~henonS1.free;
~darkHenon = Synth(\henonLsynth2, [\out, ~octoBus2], ~octoPanner2, \addBefore); ~darkHenon = Synth(\henonLsynth2, [\out, ~octoBus2], ~octoPanner2, \addBefore);
~darkHenon = Synth(\henonLsynth2, [\out, ~octoBus2]); ~darkHenon = Synth(\henonLsynth2, [\out, ~octoBus2]);
~darkHenon = Synth(\henonLsynth2, [\out, 0]);
~darkHenon.free; ~darkHenon.free;
~hpfHenon = Synth(\henonLsynth1, [\out, ~octoBus3, \hpfreqmin, 100]); ~hpfHenon = Synth(\henonLsynth1, [\out, ~octoBus3, \hpfreqmin, 100]);
~hpfHenon = Synth(\henonLsynth1, [\out, ~octoBus1, \hpfreqmin, 100]);
~hpfHenon.set(\hpfreqmin, 1000)
~hpfHenon.free; ~hpfHenon.free;
~distbleeps = Synth(\latooTriggers, [\out, ~octoBus1, \trigA, 1.1], ~octoPanner1, \addBefore); ~distbleeps = Synth(\latooTriggers, [\out, ~octoBus1, \trigA, 1.1], ~octoPanner1, \addBefore);
@ -338,6 +371,8 @@ FreqScope.new(400, 200, 0, server: s);
~henonSquare.set(\gate,0); ~henonSquare.set(\gate,0);
~latooWan1 = Synth(\latooWanderings, [\out, ~octoBus4, \fadeTime, 0.1]); ~latooWan1 = Synth(\latooWanderings, [\out, ~octoBus4, \fadeTime, 0.1]);
~latooWan1.set(\out,1)
~latooWan1.set(\amp,1)
~latooWan1.set(\gate, 0, \fadeTime, 10); ~latooWan1.set(\gate, 0, \fadeTime, 10);
~latooWan1.free; ~latooWan1.free;
@ -354,10 +389,14 @@ FreqScope.new(400, 200, 0, server: s);
~noiseCr1 = Synth(\noiseCrackle, [\out, ~octoBus1, \fadeTime, 5 ]); ~noiseCr1 = Synth(\noiseCrackle, [\out, ~octoBus1, \fadeTime, 5 ]);
~noiseCr1 = Synth(\noiseCrackle, [\out, 0, \fadeTime, 5 ]);
~noiseCr2 = Synth(\noiseCrackle, [\out, 1, \fadeTime, 5 ]);
~noiseCr1.set(\lpfa,1,\hpfa,0); ~noiseCr1.set(\lpfa,1,\hpfa,0);
~noiseCr1.set(\hpfa,1,\lpfa,0);
~noiseCr1.set(\amp,0.3); ~noiseCr1.set(\amp,0.3);
~noiseCr1.set(\fadeTime, 20, \gate,0); ~noiseCr1.set(\fadeTime, 20, \gate,0);
~noiseCr2.set(\fadeTime, 20, \gate,0);
~noiseCr1.free; ~noiseCr1.free;
@ -380,7 +419,7 @@ FreqScope.new(400, 200, 0, server: s);
~latooTrig1 = Synth(\latooTrigRing, [\out, ~octoBus1, \freq, 300], ~octoPanner1, \addBefore); ~latooTrig1 = Synth(\latooTrigRing, [\out, ~octoBus1, \freq, 300], ~octoPanner1, \addBefore);
~latooTrig1.free; ~latooTrig1.free;
~lorenzTrig1 = Synth(\lorenzTrigRing, [\out, ~octoBus1, \freq, 1400, \amp, 0.5], ~octoPanner1, \addBefore); ~lorenzTrig1 = Synth(\lorenzTrigRing, [\out, ~octoBus1, \freq, 1400, \amp, 0.5]);
~lorenzTrig1.free; ~lorenzTrig1.free;
~fhnTrig1 = Synth(\fhnTrigRing, [\out, ~octoBus1, \freq, 2100, \amp, 0.5], ~octoPanner1, \addBefore); ~fhnTrig1 = Synth(\fhnTrigRing, [\out, ~octoBus1, \freq, 2100, \amp, 0.5], ~octoPanner1, \addBefore);
@ -395,8 +434,8 @@ FreqScope.new(400, 200, 0, server: s);
~soil1.set(\rate, 0.2); ~soil1.set(\rate, 0.2);
~soil1.set(\out, 1); ~soil1.set(\out, 1);
~soil1.set(\dur, 0.01); ~soil1.set(\dur, 0.01);
~soil1.set(\amp, 3); ~soil1.set(\amp, 0.1);
~soil1.set(\out, 1);
~soil1.set(\envbuf, ~planotaBuf); ~soil1.set(\envbuf, ~planotaBuf);
// send SinOscilation to a argument via bus // send SinOscilation to a argument via bus
@ -409,6 +448,8 @@ FreqScope.new(400, 200, 0, server: s);
~soil2 = Synth(\granSoil, [\out, ~octoBus2, \sndbuf, ~forestSoilBuf]); ~soil2 = Synth(\granSoil, [\out, ~octoBus2, \sndbuf, ~forestSoilBuf]);
~soil2.map(\dur, ~foreskrBus); ~soil2.map(\dur, ~foreskrBus);
~soil2.set(\amp, 0.1)
~soil1.set(\gate, 0, \fadeTime, 2); // use envelope to fade out ~soil1.set(\gate, 0, \fadeTime, 2); // use envelope to fade out
~soil2.set(\gate, 0, \fadeTime, 2); // use envelope to fade out ~soil2.set(\gate, 0, \fadeTime, 2); // use envelope to fade out