Files
BuboQuark/Classes/Configuration/Synthdefs.scd
Raphaël Forment 26f744c575 Saving state after latest Lyon Algorave
This is the current state of the system after the 27/04 algorave.

NOTE: this is my personal live coding system, it is not fine-tuned for general usage. You might have to update paths and various parts of the code to get it to run on your system.
2024-04-29 12:10:30 +02:00

272 lines
6.5 KiB
Plaintext

d = (); // This is a storage area for synthesizers
f = (); // This is a storage for various FX functions
(
d.params = { arg obj, name; obj[name].allControlNames.do({arg i; i.postln;}); };
d.list = { arg obj; obj.keys.do({arg i; i.postln}); };
);
f.vardel = {
arg in;
HPF.ar(CombC.ar(in, 2, c.beatDur / [1, 2], 2),
SinOsc.ar(c.beatDur * 4).range(500, 2000));
};
/*
* This is the sampler used for 90% of sampling duties.
*/
(
z = SynthDef.new(\player, {
arg buf;
var sig, env = EnvGen.ar(
Env.perc(
\attack.kr(0.01),
\release.kr(1),
doneAction: 2)
);
var startPos = \begin.kr(0) * BufFrames.kr(buf);
var endPos = \end.kr(1) * BufFrames.kr(buf); // TODO: unused
sig = PlayBuf.ar(
numChannels: 1,
bufnum: buf,
rate:BufRateScale.kr(buf) * (\rate.kr(1) * \freq.kr(400) / 60.midicps),
trigger: 1, startPos:startPos,
loop:\loop.kr(0), doneAction: 2);
sig = sig * \amp.kr(-6.dbamp);
sig = Pan2.ar(sig * env, \pan.kr(0));
OffsetOut.ar(\out.kr(0), sig)
}).add;
d.player = z;
);
/*
* Stereo variant
*/
(
z = SynthDef.new(\splayer, {
arg buf;
var sig, env = EnvGen.ar(
Env.perc(
\attack.kr(0.01),
\release.kr(1),
doneAction: 2)
);
var startPos = \begin.kr(0) * BufFrames.kr(buf);
var endPos = \end.kr(1) * BufFrames.kr(buf); // TODO: unused
sig = PlayBuf.ar(
numChannels: 2,
bufnum: buf,
rate:BufRateScale.kr(buf) * (\rate.kr(1) * \freq.kr(400) / 60.midicps),
trigger: 1, startPos:startPos,
loop:\loop.kr(0), doneAction: 2);
sig = sig * \amp.kr(-6.dbamp);
sig = Pan2.ar(sig * env, \pan.kr(0));
OffsetOut.ar(\out.kr(0), sig)
}).add;
d.splayer = z;
);
(
z = SynthDef(\sinfb, {
var sig, env;
env = EnvGen.ar(
Env.linen(
\attack.kr(0.01),
\sustain.kr(0),
\release.kr(1)
),1,1,0,1,2);
sig = SinOscFB.ar(
\freq.kr(400),
\fb.kr(0),
1
);
sig = sig * env;
OffsetOut.ar(\out.kr(0), Pan2.ar(sig, \pan.kr(0), \amp.kr(-6.dbamp)));
}).add;
d.sinfb = z;
);
(
z = SynthDef(\omi, {
var envLength = \sustain.kr(1) * (\end.kr(1) - \begin.kr(0)) / \speed.kr(1);
var line = Line.ar(\begin.kr, \end.kr, envLength, doneAction: Done.freeSelf);
var env = Env.asr;
var volume = IEnvGen.ar(env, line) * \amp.kr(-6.dbamp);
var sig;
sig = MiOmi.ar(pit: \freq.kr(400).cpsmidi);
OffsetOut.ar(\out.kr(0), Pan2.ar(sig * volume, \pan.kr(0)));
}).add;
d.omi = z;
);
(
[
'Panalog', 'Pwaveshape', 'Pfm', 'Pgrain',
'Padditive', 'Pwavetable', 'Pchord', 'Pspeech',
'Pswarm', 'Pnoise', 'Pparticle', 'Pstring',
'Pmodal', 'Pbass', 'Psnare', 'Phat'
].do({arg name, index;
var synth;
synth = SynthDef(name, {
var env = EnvGen.ar(
Env.perc(
\attack.kr(0.01),
\release.kr(1)
), doneAction: Done.freeSelf
);
var sig;
sig = MiPlaits.ar(
pitch: \freq.kr(400).cpsmidi,
timbre: \timbre.kr(0),
harm: \harm.kr(0),
engine: index,
morph: \morph.kr(0),
level: \level.kr(1),
decay: \lpgdecay.kr(0),
lpg_colour: \lpgcolour.kr(0),
);
sig = Pan2.ar(sig[0], \pan.kr(0));
sig = sig * env * \amp.kr(-6.dbamp);
OffsetOut.ar(\out.kr(0), sig);
}).add;
d.put(name, synth);
});
);
(
[
'Bcsaw',
'Bmorph',
'Bsaw_square',
'Bsine_triangle',
'Bbuzz',
'Bsquare_sub',
'Bsaw_sub',
'Bsquare_sync',
'Bsaw_sync',
'Bt_saw',
'Bt_square',
'Bt_triangle',
'Bt_sine',
'Bt_ring_mod',
'Bsaw_swarm',
'Bsaw_comb',
'Btoy',
'Bfilter_lp',
'Bfilter_pk',
'Bfilter_bp',
'Bfilter_hp',
'Bvosim',
'Bvowel',
'Bvowel_fof',
'Bharmonics',
'Bbfm',
'Bfeedback_fm',
'Bchaotic_feedback_fm',
'Bplucked',
'Bbowed',
'Bblown',
'Bfluted',
'Bstruck_bell',
'Bstruck_drum',
'Bbkick',
'Bcymbal',
'Bbsnare',
'Bbwavetable',
'Bwave_map',
'Bwave_line',
'Bwave_paraphonic',
'Bfiltered_noise',
'Btwin_peaks_noise',
'Bclocked_noise',
'Bgranular_cloud',
'Bparticle_noise',
'Bdigital_modulation',
'Bquestion_mark'].do({
arg name, index;
var synth;
synth = SynthDef(name, {
var sig;
var env = EnvGen.ar(Env.perc(\attack.kr(0.01), \release.kr(1)), doneAction: Done.freeSelf);
var freq = \freq.kr;
sig = MiBraids.ar(
pitch: freq.cpsmidi,
timbre: \timbre.kr(0),
color: \color.kr(0),
resamp: 0,
decim: \decim.kr(32),
model: index,
ws: \ws.kr(0),
bits: \bits.kr(0)
);
OffsetOut.ar(\out.kr(0), Pan2.ar(sig * env * \amp.kr(-6.dbamp), \pan.kr(0)));
}).add;
d.put(name, synth);
});
);
(
z = SynthDef(\tides, {
var env = Env.perc(\attack.kr(0.01), \release.kr(1)).ar(2);
var sig = MiTides.ar(
freq: \freq.kr(400),
shape: \shape.kr(0),
slope: \slope.kr(0),
smooth: \smooth.kr(0),
shift: \shift.kr(0),
output_mode: \mode.kr(2),
ramp_mode: 1,
rate: 1
);
OffsetOut.ar(\out.kr(0), Pan2.ar(sig * env * \amp.kr(-6.dbamp), \pan.kr(0)));
}).add;
d.tides = z;
);
(
z = SynthDef('pink', {
arg out;
var pink = PinkTrombone.ar(
noiseSource: BPF.ar(WhiteNoise.ar(), \noiseFilter.kr(2000)),
freq: \freq.kr(800),
tenseness: \tenseness.kr(0.4),
tongueIndex: \tongueIndex.kr(30),
tongueDiameter: \tongueDiameter.kr(3.5),
constrictionX: \constrictionX.kr(1.5),
constrictionY: \constrictionY.kr(2.5),
fricativeIntens: \fricativeIntens.kr(1.5)
);
var env = Env.perc(\attack.kr(0.01), releaseTime: \release.kr(2.0)).kr(doneAction: 2);
var sound = pink * env;
Out.ar(out, Pan2.ar(sound, pos: \pan.kr(0.0)))
}).add;
d.pink = z;
);
(
z = SynthDef('kick', {
|out=0, freq, mul=512, vsweep=0.5, hold=0.25, release=0.25, amp=0.5, pan=0|
var p0, p1, p, freq0, freq1, freqEnv, sig;
p0 = 0.006699687;
p1 = 0.00001884606;
p = (1-vsweep)*p0 + (vsweep*p1);
freq1 = freq;
freq0 = freq1 * mul;
freqEnv = EnvGen.ar(Env([0,1], [1.0], [0]));
freqEnv = freq1 + ((freq0-freq1)/(1.0 + (freqEnv/p)));
sig = SinOsc.ar(freqEnv);
sig = sig * EnvGen.ar(Env([1,1,0], [hold,release], [0,0]), doneAction: Done.freeSelf) * amp;
sig = Pan2.ar(sig, pan);
Out.ar(out, sig);
}).add;
d.kick = z;
);
z = nil; // We don't need that variable anymore