Initial commit
commit
d05cc637f1
|
@ -0,0 +1,314 @@
|
|||
(/*
|
||||
Copyright (c) 2018 Luka Prinčič, All rights reserved.
|
||||
This program is free software distributed under
|
||||
GNU General Public Licence. See COPYING for more info.
|
||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
*/
|
||||
// Be nice. Say hi!
|
||||
postln("\n\n
|
||||
|
||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
>>> Hello. <<<
|
||||
|
||||
|
||||
█████╗ ███╗ ██╗████████╗██╗ ██████╗ ██████╗ ███╗ ██╗███████╗
|
||||
██╔══██╗████╗ ██║╚══██╔══╝██║██╔════╝ ██╔═══██╗████╗ ██║██╔════╝
|
||||
███████║██╔██╗ ██║ ██║ ██║██║ ███╗██║ ██║██╔██╗ ██║█████╗
|
||||
██╔══██║██║╚██╗██║ ██║ ██║██║ ██║██║ ██║██║╚██╗██║██╔══╝
|
||||
██║ ██║██║ ╚████║ ██║ ██║╚██████╔╝╚██████╔╝██║ ╚████║███████╗
|
||||
╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
|
||||
|
||||
|
||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
");
|
||||
|
||||
Server.default.waitForBoot {
|
||||
|
||||
|
||||
// home folder of current script
|
||||
var dir = PathName(thisProcess.nowExecutingPath).pathOnly;
|
||||
|
||||
// load samples
|
||||
~granSmp = PathName(dir +/+ "smp/").files;
|
||||
~granBfrList = List();
|
||||
~granBfr = List();
|
||||
|
||||
postln(" \n~~~ Loading samples for granular synthesis ..." );
|
||||
~granSmp.do({ |item, i|
|
||||
postln(" " + i + "" + item.folderName +/+ item.fileName);
|
||||
~granBfrList.add(item.fileName);
|
||||
~granBfr.add(Buffer.readChannel(s, item.fullPath, channels:[0])); // [0] forces mono!
|
||||
});
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
// granulator "Granny" definition
|
||||
|
||||
SynthDef(\Granny, {
|
||||
|
||||
arg bufnum,
|
||||
freq = 200, fvar = 0.05,
|
||||
dur = 0.3, durvar = 0.01,
|
||||
pitch = 1, pitchvar = 0.001,
|
||||
width = 0.4,
|
||||
gain = 0.2,
|
||||
reverb = 0.5,
|
||||
posvar = 0.05,
|
||||
|
||||
lpfLFOSpeed = 0.013,
|
||||
lpfLFOSpeedVar = 0.1,
|
||||
lpfLFOMin = 400,
|
||||
lpfLFOMax = 5000,
|
||||
|
||||
posLFOSpeed = 0.005,
|
||||
posLFOSpeedVar = 0.1,
|
||||
posLFOMin = 0,
|
||||
posLFOMax = 1
|
||||
;
|
||||
|
||||
// variables
|
||||
var signal,
|
||||
lpfFreq = SinOsc.kr(freq:lpfLFOSpeed * SinOsc.kr(freq:lpfLFOSpeedVar, mul:0.5, add:1)).linlin(
|
||||
inMin:-1, inMax:1, outMin:lpfLFOMin, outMax:lpfLFOMax),
|
||||
pos = SinOsc.kr(freq:posLFOSpeed * SinOsc.kr(freq:posLFOSpeedVar, mul:0.5, add:1)).linlin(
|
||||
inMin:-1, inMax:1, outMin:posLFOMin, outMax:posLFOMax),
|
||||
|
||||
// envelopes
|
||||
gainEnv = Env.newClear(4),
|
||||
gainEnvCtl = \gainEnv.kr(gainEnv.asArray),
|
||||
|
||||
lpfEnv = Env.newClear(4),
|
||||
lpfEnvCtl = \lpfEnv.kr(lpfEnv.asArray)
|
||||
;
|
||||
|
||||
// main granular synthesis generator: GrainBuf uGen
|
||||
signal = GrainBuf.ar(
|
||||
numChannels: 2, // stereo
|
||||
trigger: Impulse.kr(freq + (freq * (fvar * LFNoise2.kr(freq)))), // a UGen
|
||||
dur: dur + (durvar * LFNoise2.kr(freq)), // in seconds
|
||||
sndbuf: bufnum,
|
||||
rate: pitch + (pitchvar * LFNoise2.kr(5)), // pitch
|
||||
pos: pos + (posvar * LFNoise2.kr(freq)), // position 0-1
|
||||
interp: 2, // interpolation for pitchshifting
|
||||
pan: LFNoise1.kr(10).range(width.neg, width),
|
||||
maxGrains: 512,
|
||||
mul: gain,
|
||||
add: 0
|
||||
);
|
||||
|
||||
// low pass filter
|
||||
signal = LPF.ar(
|
||||
in: signal,
|
||||
// prevent filter clicks by lagging low pass filter freq changes
|
||||
freq: Lag.kr(lpfFreq, 0.2)
|
||||
* EnvGen.kr(envelope: lpfEnvCtl, gate: 1)); // filter frequency envelope
|
||||
|
||||
// fade in, sustain, fade out
|
||||
signal = signal * EnvGen.kr(envelope: gainEnvCtl, gate: 1, doneAction: 2);
|
||||
|
||||
// reverb
|
||||
signal = GVerb.ar(
|
||||
in: signal,
|
||||
roomsize: 243,
|
||||
revtime: 6,
|
||||
damping: 1,
|
||||
inputbw: 1,
|
||||
drylevel: -6.dbamp,
|
||||
earlyreflevel: reverb,
|
||||
taillevel: 0.dbamp
|
||||
);
|
||||
|
||||
Out.ar(0, signal);
|
||||
|
||||
postln("~~~ adding SynthDef: Granny ...");
|
||||
|
||||
}).add;
|
||||
|
||||
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
// Synths
|
||||
|
||||
|
||||
|
||||
// ACT I
|
||||
(
|
||||
~act_I = Synth(\Granny,
|
||||
[
|
||||
\bufnum, ~granBfr.at(21), // "09 - PART II - Chorus.7.wav"
|
||||
|
||||
\gainEnv, Env([0, 1, 1, 0], [1,320,40], \lin),
|
||||
\lpfEnv, Env([0.001, 1, 1, 0.001], [20,301,30], \exp),
|
||||
|
||||
\lpfLFOSpeed, 0.023, \lpfLFOSpeedVar, 0.041, \lpfLFOMin, 1000, \lpfLFOMax, 8000,
|
||||
\posLFOSpeed, 0.020, \posLFOSpeedVar, 0.089, \posLFOMin, 0.56, \posLFOMax, 0.92
|
||||
]
|
||||
);
|
||||
)
|
||||
|
||||
|
||||
( // ACT II --------------------------------------------------------------------------
|
||||
~act_II = Synth(\Granny,
|
||||
[
|
||||
\bufnum, ~granBfr.at(43), // "23 - The Mother.6.wav"
|
||||
|
||||
\gainEnv, Env([0, 1, 1, 0], [1,320,40], \lin),
|
||||
\lpfEnv, Env([0.001, 1, 1, 0.001], [19,301,30], \exp),
|
||||
|
||||
\lpfLFOSpeed, 0.013, \lpfLFOSpeedVar, 0.041, \lpfLFOMin, 1000, \lpfLFOMax, 4000,
|
||||
\posLFOSpeed, 0.020, \posLFOSpeedVar, 0.089, \posLFOMin, 0.25, \posLFOMax, 0.90 ,
|
||||
|
||||
]
|
||||
);
|
||||
)
|
||||
|
||||
|
||||
( // ACT IIb --------------------------------------------------------------------------
|
||||
~act_IIb = Synth(\Granny,
|
||||
[
|
||||
\bufnum, ~granBfr.at(28), // "13 - Chorus Of The Self-Righteous.7.wav"
|
||||
|
||||
\gainEnv, Env([0, 1, 1, 0], [1,320,40], \lin),
|
||||
\lpfEnv, Env([0.001, 1, 1, 0.001], [19,301,30], \exp),
|
||||
|
||||
\lpfLFOSpeed, 0.013, \lpfLFOSpeedVar, 0.054, \lpfLFOMin, 1000, \lpfLFOMax, 2000,
|
||||
\posLFOSpeed, 0.057, \posLFOSpeedVar, 0.033, \posLFOMin, 0.1, \posLFOMax, 0.6,
|
||||
|
||||
]
|
||||
);
|
||||
)
|
||||
|
||||
( // ACT III (and ACT VII) ------------------------------------------------------------
|
||||
~act_III = Synth(\Granny,
|
||||
[
|
||||
\bufnum, ~granBfr.at(25), // "11 - Chorus Of The Persecutors And Persecuted.8.wav"
|
||||
\pitch, 0.95,
|
||||
|
||||
\gainEnv, Env([0, 1, 1, 0], [1,320,40], \lin),
|
||||
\lpfEnv, Env([0.001, 1, 1, 0.001], [19,301,30], \exp),
|
||||
|
||||
\lpfLFOSpeed, 0.063, \lpfLFOSpeedVar, 0.054, \lpfLFOMin, 1500, \lpfLFOMax, 6000,
|
||||
\posLFOSpeed, 0.037, \posLFOSpeedVar, 0.033, \posLFOMin, 0.1, \posLFOMax, 0.8,
|
||||
|
||||
]
|
||||
);
|
||||
)
|
||||
|
||||
|
||||
( // ACT IV --------------------------------------------------------------------------
|
||||
~act_IV = Synth(\Granny,
|
||||
[
|
||||
\bufnum, ~granBfr.at(45), // "26 - Part III - Chorus.1.wav"
|
||||
|
||||
\gainEnv, Env([0, 1, 1, 0], [1,320,40], \lin),
|
||||
\lpfEnv, Env([0.001, 1, 1, 0.001], [19,301,30], \exp),
|
||||
|
||||
\lpfLFOSpeed, 0.009, \lpfLFOSpeedVar, 0.054, \lpfLFOMin, 1000, \lpfLFOMax, 6000,
|
||||
\posLFOSpeed, 0.037, \posLFOSpeedVar, 0.033, \posLFOMin, 0.35, \posLFOMax, 0.95,
|
||||
|
||||
]
|
||||
);
|
||||
)
|
||||
|
||||
|
||||
( // ACT V --------------------------------------------------------------------------
|
||||
~act_V = Synth(\Granny,
|
||||
[
|
||||
\bufnum, ~granBfr.at(51), // "29 - PRELUDIUM - General Ensemble.7.wav"
|
||||
|
||||
\gainEnv, Env([0, 1, 1, 0], [1,320,40], \lin),
|
||||
\lpfEnv, Env([0.001, 1, 1, 0.001], [19,301,30], \exp),
|
||||
|
||||
\lpfLFOSpeed, 0.009, \lpfLFOSpeedVar, 0.054, \lpfLFOMin, 2000, \lpfLFOMax, 9000,
|
||||
\posLFOSpeed, 0.037, \posLFOSpeedVar, 0.033, \posLFOMin, 0.05, \posLFOMax, 0.55,
|
||||
|
||||
]
|
||||
);
|
||||
)
|
||||
|
||||
|
||||
( // ACT VI --------------------------------------------------------------------------
|
||||
~act_VI = Synth(\Granny,
|
||||
[
|
||||
\bufnum, ~granBfr.at(48), // "28 - Scena (Bass Solo & Chorus).8.wav"
|
||||
|
||||
\gainEnv, Env([0, 1, 1, 0], [1,320,40], \lin),
|
||||
\lpfEnv, Env([0.001, 1, 1, 0.001], [19,301,30], \exp),
|
||||
|
||||
\lpfLFOSpeed, 0.031, \lpfLFOSpeedVar, 0.054, \lpfLFOMin, 700, \lpfLFOMax, 1500,
|
||||
\posLFOSpeed, 0.037, \posLFOSpeedVar, 0.033, \posLFOMin, 0.15, \posLFOMax, 0.9,
|
||||
|
||||
]
|
||||
);
|
||||
)
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
( // --------------------------------------------------------------------------
|
||||
~number38 = Synth(\Granny,
|
||||
[
|
||||
\bufnum, ~granBfr.at(38), // "21 - A Spiritual Of Anger (Chorus & Bass Solo).3.wav"
|
||||
\lpfLFOSpeed, 0.041, \lpfLFOMin, 700, \lpfLFOMax, 6500,
|
||||
\posLFOSpeed, 0.037, \posLFOMin, 0.15, \posLFOMax, 0.9,
|
||||
|
||||
// fade-in, fade-out
|
||||
\gainEnv, Env([0, 1, 1, 0], [1,320,40], \lin),
|
||||
\lpfEnv, Env([0.001, 1, 1, 0.001], [19,301,30], \exp),
|
||||
|
||||
\lpfLFOSpeedVar, 0.054, \posLFOSpeedVar, 0.033,
|
||||
]
|
||||
);
|
||||
)
|
||||
|
||||
|
||||
|
||||
( // --------------------------------------------------------------------------
|
||||
~number0 = Synth(\Granny,
|
||||
[
|
||||
\bufnum, ~granBfr.at(0), // "01 - PART I - Chorus.10.wav"
|
||||
\lpfLFOSpeed, 0.021, \lpfLFOMin, 700, \lpfLFOMax, 6500,
|
||||
\posLFOSpeed, 0.017, \posLFOMin, 0.09, \posLFOMax, 0.91,
|
||||
\gain, 0.15,
|
||||
|
||||
// fade-in, fade-out
|
||||
\gainEnv, Env([0, 1, 1, 0], [1,320,40], \lin),
|
||||
\lpfEnv, Env([0.001, 1, 1, 0.001], [19,301,30], \exp),
|
||||
|
||||
\lpfLFOSpeedVar, 0.054, \posLFOSpeedVar, 0.033,
|
||||
]
|
||||
);
|
||||
)
|
||||
|
||||
|
||||
( // --------------------------------------------------------------------------
|
||||
~number1 = Synth(\Granny,
|
||||
[
|
||||
\bufnum, ~granBfr.at(1), // "01 - PART I - Chorus.12.wav"
|
||||
\lpfLFOSpeed, 0.021, \lpfLFOMin, 700, \lpfLFOMax, 6500,
|
||||
\posLFOSpeed, 0.017, \posLFOMin, 0.09, \posLFOMax, 0.91,
|
||||
\gain, 0.15,
|
||||
|
||||
// fade-in, fade-out
|
||||
\gainEnv, Env([0, 1, 1, 0], [1,320,40], \lin),
|
||||
\lpfEnv, Env([0.001, 1, 1, 0.001], [19,301,30], \exp),
|
||||
|
||||
\lpfLFOSpeedVar, 0.054, \posLFOSpeedVar, 0.033,
|
||||
]
|
||||
);
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue