1
0

feat: load synthef on startup

This commit is contained in:
2025-06-14 16:41:54 +02:00
parent fddbf09d99
commit 6f90b4d1cf
26 changed files with 214 additions and 152 deletions

32
examples/bandoo.scd Normal file
View File

@ -0,0 +1,32 @@
(
SynthDef(\bandoo, {
var sig;
// base osc
sig = Pulse.ar(
\freq.kr(120) * [1.05, 1.1, 0.8, 1.5],
LFNoise1.ar(0.04).linlin(-1, 1, 0.3, 1)
);
sig = Splay.ar(sig);
// low pass filter with random range and resonance
sig = RLPF.ar(
sig,
LFNoise2.ar(0.08).linlin(-1, 1, 450, 1600),
LFNoise2.ar(0.1).linlin(-1, 1, 0.25, 0.6)
);
// random pitch shifting and amplitude for each voices
sig = [
sig * LFNoise2.ar(0.02).linlin(-1, 1, 0.1, 1),
PitchShift.ar(sig, 0.05, LFNoise2.ar(0.14).linlin(-1, 1, 0.5, 2), 0.4) * LFNoise2.ar(0.01).linlin(-1, 1, 0.1, 1),
PitchShift.ar(sig, 0.02, LFNoise2.ar(0.09).linlin(-1, 1, 0.25, 1.1), 0.1) * LFNoise2.ar(0.04).linlin(-1, 1, 0.1, 1)
];
sig = LPF.ar(sig, 490 * LFNoise2.ar(0.19).linlin(-1, 1, 0.25, 3), 0.3);
sig = Splay.ar(sig, 0.1);
sig = sig * \amp.kr(1);
sig = Limiter.ar(sig);
Out.ar(\out.kr(0), sig);
}).add;
)
Synth(\bandoo, [freq: 220]);

4
examples/bitcrushing.scd Normal file
View File

@ -0,0 +1,4 @@
// bitcrushing
sig = sig.round(0.12);
// sample rate reduction
sig = Latch.ar(sig, Impulse.ar(SampleRate.ir/10));

14
examples/bpf_brown.scd Normal file
View File

@ -0,0 +1,14 @@
(
SynthDef(\bpf_brown, {
var sig, env, rq = 0.005;
env = Env([0, 1, 0], [\attack.kr(0.02), \release.kr(2)], [1, -2]).kr(2);
sig = BrownNoise.ar(0.8);
sig = BPF.ar(sig, \freq.kr(800), rq, 1 / rq.sqrt);
sig = Pan2.ar(sig, \pan.kr(0), \amp.kr(1)) * env;
sig = Limiter.ar(sig);
Out.ar(\out.kr(0), sig);
}).add;
)
(instrument: \bpf_brown, freq: [430, 500, 625].choose, attack: 0, release: 3, amp: 0.6).play;

34
examples/choir.scd Normal file
View File

@ -0,0 +1,34 @@
// 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
];
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;
)

5
examples/chorus.scd Normal file
View File

@ -0,0 +1,5 @@
sig = 8.collect({
var mod = LFTri.kr(ExpRand(0.2, 0.3), Rand(0.0, 2.0)).range(0.001, 0.02);
DelayL.ar(sig, 0.02, mod);
});
sig = Splay.ar(sig, 0.2);

1
examples/flanger.scd Normal file
View File

@ -0,0 +1 @@
sig = CombC.ar(sig, 0.1, SinOsc.ar(0.1).linlin(-1, 1, 0.009, 0.015), 0.1);

20
examples/fx_chain1.scd Normal file
View File

@ -0,0 +1,20 @@
SynthDef(\fx, {
var sig, lag;
sig = In.ar(\in.kr(0), 2);
// chorus
sig = 8.collect({
var mod = LFTri.kr(ExpRand(0.2, 0.3), Rand(0.0, 4.0)).range(0.001, 0.02);
DelayL.ar(sig, 0.02, mod);
});
sig = Splay.ar(sig, 0.2);
// flanger
sig = DelayL.ar(sig, 0.1, SinOsc.ar(0.04).linlin(-1, 1, 0.009, 0.015));
sig = Splay.ar(sig);
// reverb
sig = [sig, JPverb.ar(sig, 2, 0.3, 0.5)].sum;
sig = Pan2.ar(sig, \pan.kr(0));
sig = sig * \rwet.kr(1);
// sig = Normalizer.ar(sig, 0.3);
sig = Limiter.ar(sig);
ReplaceOut.ar(\out.kr(0), sig);
}).add;

View File

@ -0,0 +1,41 @@
(
// example effect chains
SynthDef(\fx, {
arg in;
var sig, fx, releaser;
sig = In.ar(in, 2);
fx = sig.copy;
fx = DelayL.ar(fx, 2, TRand.kr(0.25, \maxRelease.kr(2) / 3));
fx = GVerb.ar(fx, 250);
fx = LPF.ar(fx, 900);
sig = (sig + fx) * 0.5;
releaser = DetectSilence.ar(fx, doneAction: Done.freeSelf);
OffsetOut.ar(\out.kr(0), sig);
}).add;
// master channel with limiter
SynthDef(\master, {
arg in;
var sig, releaser;
sig = In.ar(in, 2);
sig = Limiter.ar(sig, -6.dbamp);
// releaser = DetectSilence.ar(sig, doneAction: Done.freeSelf);
OffsetOut.ar(\out.kr(0), sig);
}).add;
)
(
var fx, fxBus, master, masterBus;
// audio bus transmitting sound signal to synths below
fxBus = Bus.audio(Server.default, 2);
masterBus = Bus.audio(Server.default, 2);
// fx channel. output to master bus
fx = Synth.new(\fx, [\in, fxBus.index, \out, masterBus.index], Server.default, \addToTail);
// master channel. output to default audio out
master = Synth.new(\master, [\in, masterBus.index], Server.default, \addToTail);
/* sequences or routines go there */
)

26
examples/pad_chords.scd Normal file
View File

@ -0,0 +1,26 @@
(
var rel = 2;
// degrees, whatever
var chords = [
[0, 3, 5],
[0, 3, 5] + 3,
[0, 2, 5] + 5,
[0, 3, 5] + 2,
];
r {
loop {
chords.do({
|deg|
SynthUtils.playChordGated(
\padoo,
rel,
(40 + deg).midicps,
[ff: 2200, attack: rel, decay: 1, release: rel, vibrato: 0.2, amp: 0.3, gate: 1]
);
(rrand(0.25, 1) + rel).wait;
});
}.play;
}.play;
)