initial commit
This commit is contained in:
72
choir.scd
Normal file
72
choir.scd
Normal file
@ -0,0 +1,72 @@
|
||||
// create a choir from two formants
|
||||
(
|
||||
|
||||
// https://en.wikipedia.org/wiki/Formant#cite_note-7
|
||||
var formants = [
|
||||
[360, 640], // o
|
||||
[235, 2100], // y
|
||||
[390, 2300], // e
|
||||
[585, 1710], // æ
|
||||
[850, 1610], // a
|
||||
[750, 940], // ɑ
|
||||
[820, 1530], // ɶ
|
||||
[600, 1170], // ʌ
|
||||
[250, 595], // u
|
||||
[240, 2400], // i
|
||||
];
|
||||
|
||||
SynthDef(\formoo, {
|
||||
arg formants = #[850, 1610];
|
||||
var sig, env;
|
||||
env = Env.perc(\attack.kr(0), \decay.kr(1)).ar(Done.freeSelf);
|
||||
sig = 10.collect{
|
||||
var octave = [1, 2, 0.5, 1.5];
|
||||
// base freq * octave * detuning over time
|
||||
// sounds like a chorus fx
|
||||
var voice = Saw.ar(\freq.kr(220) * LFNoise2.kr(3).linlin(-1, 1, 0.99, 1.1) * octave.choose);
|
||||
// formant * detuning; very high resonance
|
||||
voice = RLPF.ar(
|
||||
voice,
|
||||
formants *
|
||||
formants.size.collect{
|
||||
LFNoise2.kr(3).linlin(-1, 1, 0.98, 1.05)
|
||||
}, 0.05).sum;
|
||||
// detune and blur some more
|
||||
voice = voice + PitchShift.ar(voice, {Rand(0.01, 0.1)}, 0.98) * 0.5;
|
||||
// a bit of distortion
|
||||
voice = voice.softclip;
|
||||
};
|
||||
sig = Splay.ar(sig);
|
||||
// narrowing the spectrum a little more
|
||||
sig = RLPF.ar(
|
||||
sig,
|
||||
\ff.kr(4700) *
|
||||
LFNoise2.kr(1).linlin(-1, 1, 0.95, 1.05),
|
||||
\qr.kr(0.9)
|
||||
);
|
||||
sig = sig * env;
|
||||
sig = sig * \amp.kr(0.25);
|
||||
sig = Limiter.ar(sig);
|
||||
Out.ar(\out.kr(0), sig);
|
||||
}).add;
|
||||
)
|
||||
|
||||
// example
|
||||
(
|
||||
r {
|
||||
[38 + 3, 38 +5, 38 + 12].do{
|
||||
|freq|
|
||||
Synth(\formoo,
|
||||
[
|
||||
amp: 0.15,
|
||||
attack: 2,
|
||||
decay: 5,
|
||||
freq: freq.midicps,
|
||||
formants: [850, 1610],
|
||||
ff: rrand(550, 2660),
|
||||
qr: 0.5
|
||||
]
|
||||
);
|
||||
}
|
||||
}.play;
|
||||
)
|
||||
Reference in New Issue
Block a user