antigone-child/antigone.scd

315 lines
8.9 KiB
Plaintext
Raw Normal View History

2018-06-26 08:22:07 +02:00
(/*
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,
]
);
)