Skip to content

Commit f3367eb

Browse files
rogerroger
roger
authored and
roger
committed
Initial commit
0 parents  commit f3367eb

25 files changed

+1302
-0
lines changed

DEV-seqadora.scd

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
(
2+
SynthDef(\cmos4051, {
3+
var in = In.ar(\in.kr(0));
4+
var out = \out.ar(0);
5+
// choose between external and internal clock 0=internal, 1=external
6+
var externalclock = \externalclock.kr(0);
7+
var internalclock = Impulse.kr(\clockrate.kr(1)); // overriden by external clock
8+
var clock = Select.kr(
9+
which: \clock.kr(0), // if != 0 then it will select external clock, internal otherwise
10+
array: [ internalclock, externalclock ]
11+
);
12+
13+
var divisions = 2.pow((0..12));
14+
var divider = PulseDivider.ar(clock, divisions);
15+
// var count = PulseCount.kr(clock);
16+
17+
var sig, gate;
18+
19+
a = (\inputA.kr(0) > 0) * 2.pow(0); // first binary digit
20+
b = (\inputB.kr(0) > 0) * 2.pow(1); // second binary digit
21+
c = (\inputC.kr(0) > 0) * 2.pow(2); // third binary digit
22+
// (a+b+c).poll;
23+
// // Convert from binary digit to decimal
24+
gate = a+b+c;
25+
// gate.poll;
26+
// // Select the divider gate according to binary digit
27+
sig = Gate.ar( 1, Select.ar(gate, divider) );
28+
// sig.poll;
29+
30+
Out.ar(out, sig);
31+
}).add;
32+
)
33+
(
34+
Ndef(\snd).clear;
35+
Ndef(\cm).clear;
36+
Ndef(\cm, \cmos4051);
37+
Ndef(\snd, {
38+
var trig = Ndef(\cm).kr;
39+
var sig = SinOsc.ar(LFNoise0.kr(trig).range(36,96).midicps);
40+
var env = Env.perc.kr(2, trig); // !!! FIX: doesn't quite work
41+
sig = sig * env;
42+
Out.ar(\out.kr(0), sig!2 * 0.2)
43+
}).play;
44+
)
45+
46+
Ndef(\cm).set(\inputA, 1);
47+
Ndef(\cm).set(\inputA, 0);
48+
Ndef(\cm).set(\inputB, 1);
49+
Ndef(\cm).set(\inputB, 0);
50+
Ndef(\cm).set(\inputC, 1);
51+
Ndef(\cm).set(\inputC, 0);
52+
Ndef(\cm).set(\clockrate, 8);
53+
Ndef(\cm).set(\externalclock, Ndef(\immp, {Impulse.kr(8)}));
54+
Ndef(\cm).set(\clock, 1); // set clock to external
55+
Ndef(\cm).set(\clock, 0); // set clock to internal

README.md

Whitespace-only changes.

synthdef-brute.scd

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
(
2+
SynthDef(\brute, {
3+
var freq = \freq.kr(440);
4+
var overtone = min(\overtone.kr(0), 1);
5+
var sub = min(\sub.kr(0), 1) * overtone;
6+
var fifth = min(\fifth.kr(0), 1) * overtone;
7+
var amp = \amp.kr(0.3);
8+
var out = \out.kr(0);
9+
var pan = \pan.kr(0);
10+
var attackTime = \attackTime.kr(0.01);
11+
var decayTime = \decayTime.kr(0.3);
12+
var sustainLevel = \sustainLevel.kr(0.5);
13+
var releaseTime = \releaseTime.kr(0.01);
14+
var gate = \gate.kr(1);
15+
var wave = \wave.kr(0);
16+
var pw = \pw.kr(0.5);
17+
// var distort = \distort.kr(20);
18+
19+
var sig, env;
20+
21+
freq = [
22+
freq,
23+
freq / 2, // sub
24+
freq * 2.pow(7/12), // fifth
25+
];
26+
sig = Select.ar(wave, [
27+
Saw.ar(freq),
28+
Pulse.ar(freq, pw),
29+
DPW3Tri.ar(freq)
30+
]) * [1, sub, fifth];
31+
env = Env.adsr(attackTime, decayTime, sustainLevel, releaseTime).kr(2, gate);
32+
33+
// sig = Select.ar(distort > 1, [sig, (sig * max(distort, 1)).distort]);
34+
35+
Out.ar(out, Pan2.ar(sig.sum * env * amp, pan));
36+
}).add
37+
)
38+
39+
(
40+
var synthname = \brute;
41+
Pdef((synthname++"pat").asSymbol,
42+
Pfx(
43+
Pbind(\instrument, synthname,
44+
\octave, 3,
45+
\degree, 0,
46+
\dur, 1,
47+
// \attackTime, 0.01,
48+
// \decayTime, 0.3,
49+
// \sustainLevel, 0.5,
50+
// \releaseTime, 1,
51+
// \amp, 0.3,
52+
\wave, 0,//Prand((0..2),inf),
53+
\pw, 0.5,//Pseq([0.1, 0.5, 0.9], inf), // only with wave=1 -- square
54+
\sub, 1,//Pn(Pseries(0, 0.2,10)),
55+
\fifth, 1,//Pn(Pseries(0, 0.2,11)),
56+
\overtone, 0,
57+
\distort, 20,
58+
),
59+
\wah
60+
)
61+
).play
62+
)
63+
64+
Synth(\brute, [pw: 0.1, wave:1]);
65+
Synth(\brute, [pw: 0.5, wave:1]);
66+
67+
s.scope

synthdef-bufrd.scd

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
(
2+
SynthDef(\bufrd, {
3+
arg buf, rate=1.0, start=0.0, dur=1.0, t_reset=0, phase=0.0, amp=1, out=0, syncbus=2;
4+
var sig, pos, end, resetpos, sync;
5+
sync = In.kr(syncbus);
6+
// dur = BufDur.kr(buf) * dur;
7+
rate = BufRateScale.kr(buf) * rate;
8+
resetpos = BufFrames.kr(buf) * start;
9+
end = BufFrames.kr(buf) * (start + dur);
10+
// phase = BufFrames.kr(buf) * phase;
11+
pos = Phasor.ar(
12+
trig: Impulse.kr(1/dur, phase) + t_reset + sync,
13+
rate: rate,
14+
start: resetpos,
15+
end: end,
16+
resetPos:resetpos
17+
);
18+
sig = BufRd.ar(2, buf, pos, 0);
19+
sig = Mix.ar(sig) * amp;
20+
Out.ar(out, Mix.ar(sig));
21+
}).add;
22+
)

synthdef-chant.scd

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
(
2+
SynthDef(\chant, {
3+
var sig;
4+
var out = \out.kr(0);
5+
var pan = \pan.kr(0);
6+
var gate = \gate.kr(1);
7+
var amp = \amp.kr(1);
8+
var freq = \freq.kr(98);
9+
var env;
10+
var attack = \attack.kr(0.01);
11+
var decayTime = \decaytTime.kr(0.3);
12+
var sustainLevel = \sustainLevel.kr(0.5);
13+
var releaseTime = \releaseTime.kr(1);
14+
var vowel = Select.kr(\vowel.kr(1), Vowel.formLib.asArray);
15+
var register = Select.kr(\register.kr(1), Vowel.formLib.asArray);
16+
var vowels = [\a, \e, \i, \o, \u];
17+
var registers = [\bass, \tenor, \counterTenor, \alto, \soprano];
18+
19+
var va = Vowel(vowels.choose, registers.choose);
20+
var ve = Vowel(vowels.choose, registers.choose);
21+
var vi = Vowel(vowels.choose, registers.choose);
22+
var vo = Vowel(vowels.choose, registers.choose);
23+
var vu = Vowel(vowels.choose, registers.choose);
24+
/* var va = Vowel(Select.kr(\va.kr(0), vowels), Select.kr(\ra.kr(0), registers));
25+
var ve = Vowel(vowels.choose, registers.choose);
26+
var vi = Vowel(vowels.choose, registers.choose);
27+
var vo = Vowel(vowels.choose, registers.choose);
28+
var vu = Vowel(vowels.choose, registers.choose);*/
29+
30+
env = Env.adsr(attack, decayTime, sustainLevel, releaseTime).kr(2, gate);
31+
32+
sig = Formants.ar(
33+
freq.lag(0.2) + LFNoise2.kr(10).range(-4,4),
34+
va.blend(ve, LFNoise2.kr(1.0.rand))
35+
.blend(vi, LFNoise2.kr(1.0.rand))
36+
.blend(vo, LFNoise2.kr(1.0.rand))
37+
.blend(vu, LFNoise2.kr(1.0.rand))
38+
// .brig
39+
);
40+
41+
sig = sig!2 * LFNoise2.kr( LFNoise2.kr(10) ).range(0.3,0.5) * amp * env;
42+
// sig = AllpassC.ar(sig, 0.2, LFNoise2.kr(1.2).range(0.1,0.2));
43+
// sig = FreeVerb.ar(sig, 0.63,0.15,0.5);
44+
sig = LPF.ar(sig, (freq*15));
45+
// sig = GVerb.ar(sig, 100, 0.4, 0.79);
46+
// sig = CombC.ar(sig, 0.2, 0.2, LFNoise2.kr(1.1).range(0.01,1), LFNoise2.kr(0.5).range(0.01,1));
47+
Out.ar(out, Pan2.ar(sig , pan));
48+
}).store;
49+
)
50+
// (
51+
// Pdef(\a,
52+
// Ppar([
53+
// Pbind( \instrument, \chant,
54+
// \amp, 0.1,
55+
// \octave, 5,//Pseq(Array.rand(6,3,4), inf),
56+
// \degree, Pseq(Array.rand(6, 0,7), inf),
57+
// \dur, Pseq(Array.rand(6, 0.125, 0.5), inf),
58+
// \attack, Pseq(Array.rand(6, 0.1, 0.5), inf),
59+
// \decayTime, 0.01,//Pseq(Array.rand(6, 0.01, 0.5), inf),
60+
// \sustainLevel, 0.5,//Pseq(Array.rand(6, 0.5, 0.75), inf),
61+
// \releaseTime, 2,//Pseq(Array.rand(6, 0.5, 2), inf),
62+
// ),
63+
// Pbind( \instrument, \chant,
64+
// \amp, 0.1,
65+
// \octave, 3,//Pseq(Array.rand(6,3,4), inf),
66+
// \degree, Pseq(Array.rand(6, 0,7), inf),
67+
// \dur, Pseq(Array.rand(6, 0.125, 0.5), inf),
68+
// \attack, Pseq(Array.rand(6, 0.1, 0.5), inf),
69+
// \decayTime, 0.1,//Pseq(Array.rand(6, 0.01, 0.5), inf),
70+
// \sustainLevel, 0.1,//Pseq(Array.rand(6, 0.5, 0.75), inf),
71+
// \releaseTime, 0.05,//Pseq(Array.rand(6, 0.5, 2), inf),
72+
// ),
73+
// ])
74+
// ).play
75+
// )
76+
77+
// Vowel.formLib.postTree

synthdef-cmos4051.scd

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
(
2+
SynthDef(\cmos4051, {
3+
var in = In.ar(\in.kr(0));
4+
var out = \out.ar(0);
5+
// choose between external and internal clock 0=internal, 1=external
6+
var externalclock = \externalclock.kr(0);
7+
var internalclock = Impulse.kr(\clockrate.kr(1)); // overriden by external clock
8+
var clock = Select.kr(
9+
which: \clock.kr(0), // if != 0 then it will select external clock, internal otherwise
10+
array: [ internalclock, externalclock ]
11+
);
12+
13+
var divisions = 2.pow((0..12));
14+
var divider = PulseDivider.ar(clock, divisions);
15+
// var notes = Array.series(12);
16+
// var count = PulseCount.kr(clock);
17+
// var note = Select.kr(Stepper.kr(trig), notes);
18+
19+
var sig, gate;
20+
21+
a = (\inputA.kr(0) > 0) * 2.pow(0); // first binary digit
22+
b = (\inputB.kr(0) > 0) * 2.pow(1); // second binary digit
23+
c = (\inputC.kr(0) > 0) * 2.pow(2); // third binary digit
24+
// (a+b+c).poll;
25+
// // Convert from binary digit to decimal
26+
gate = a+b+c;
27+
// gate.poll;
28+
// // Select the divider gate according to binary digit
29+
sig = Gate.ar( 1, Select.ar(gate, divider) );
30+
// sig.poll;
31+
32+
Out.ar(out, sig);
33+
}).add;
34+
)
35+
(
36+
Ndef(\snd).clear;
37+
Ndef(\cm).clear;
38+
Ndef(\cm, \cmos4051);
39+
Ndef(\snd, {
40+
var trig = Ndef(\cm).kr;
41+
var sig = SinOsc.ar(LFNoise0.kr(trig).range(36,96).midicps);
42+
var env = Env.perc.kr(2, trig); // !!! FIX: doesn't quite work
43+
sig = sig * env;
44+
Out.ar(\out.kr(0), sig!2 * 0.2)
45+
}).play;
46+
)
47+
48+
Ndef(\cm).set(\inputA, 1);
49+
Ndef(\cm).set(\inputA, 0);
50+
Ndef(\cm).set(\inputB, 1);
51+
Ndef(\cm).set(\inputB, 0);
52+
Ndef(\cm).set(\inputC, 1);
53+
Ndef(\cm).set(\inputC, 0);
54+
Ndef(\cm).set(\clockrate, 8);
55+
Ndef(\cm).set(\externalclock, Ndef(\immp, {Impulse.kr(8)}));
56+
Ndef(\cm).set(\clock, 1);

synthdef-eno.scd

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
(
2+
SynthDef(\enotamboura, {
3+
var sig;
4+
var feedback = \feedback.kr(0.07);
5+
var freq = \freq.kr(100);
6+
var amp = \amp.kr(0.3);
7+
var out = \out.kr(1);
8+
var pan = \pan.kr(0);
9+
var gate = \gate.kr(1);
10+
// var gate = Impulse.kr(1);
11+
var env = EnvGen.kr(Env.new( [ 0, 0.5, 0.5, 0.5, 0.5], [1, 1, 1, 1] ), gate, doneAction:2);
12+
// var env = EnvGen.kr(Env.adsr( \attackTime.kr(0.01), \decayTime.kr(0.3), \sustainLevel.kr(0.5), \releaseTime.kr(1)), gate, doneAction:2);
13+
sig = FM7.arAlgo(16,
14+
[
15+
[freq * 1, 0, EnvGen.kr(Env.new( [ 0, 1, 0, 1, 0], [0.93, 0.29, 0.18, 0.39] ), gate, doneAction:2) * 1],
16+
[freq * 0.5, 0, EnvGen.kr(Env.new( [ 0, 1, 1, 0, 0], [0.78, 0.98, 0.25, 0.22] ), gate, doneAction:2) * 0.76],
17+
[freq * 3, 0, EnvGen.kr(Env.new( [ 0, 1, 0, 1, 0], [0.29, 0.35, 0.22, 0.38] ), gate, doneAction:2) * 0.67],
18+
[freq * 3, 0, EnvGen.kr(Env.new( [ 0, 1, 0, 1, 0], [0.33, 0.35, 0.25, 0.99] ), gate, doneAction:2) * 0.76],
19+
[freq * 12, 0, EnvGen.kr(Env.new( [ 0, 1, 0, 1, 0], [0.36, 0.35, 0.15, 0.38] ), gate, doneAction:2) * 0.72],
20+
[freq * 13, 0, EnvGen.kr(Env.new( [ 0, 1, 0, 1, 0], [0.33, 0.35, 0.25, 0.99] ), gate, doneAction:2) * 0.81],
21+
],
22+
feedback;
23+
);
24+
25+
sig = sig + (sig * LFTri.kr(0.35 * 19, mul: 0.51));
26+
27+
Out.ar(out, Pan2.ar(sig * env * amp, pan));
28+
}).add;
29+
30+
SynthDef(\enoviolin3, {
31+
var sig;
32+
var feedback = \feedback.kr(0.05);
33+
var freq = \freq.kr(100);
34+
var amp = \amp.kr(0.3);
35+
var out = \out.kr(1);
36+
var pan = \pan.kr(0);
37+
var gate = \gate.kr(1);
38+
var velocity = 1;
39+
// var gate = Impulse.kr(1);
40+
var env = EnvGen.kr(Env.new( [ 0, 0.5, 0.5, 0.5, 0.5], [1, 1, 1, 1] ), gate, doneAction:2);
41+
// var env = EnvGen.kr(Env.adsr( \attackTime.kr(0.01), \decayTime.kr(0.3), \sustainLevel.kr(0.5), \releaseTime.kr(1)), gate, doneAction:2);
42+
sig = FM7.arAlgo(17,
43+
[
44+
[freq * 2 + 1, 0, EnvGen.kr(Env.new( [ 0, 1.00, 0.90, 0.97, 0], [0.42, 0.00, 0.12, 0.45] ), gate, doneAction:2) * 1],// * (velocity * 4)],
45+
[freq * 6 - 1, 0, EnvGen.kr(Env.new( [ 0, 1.00, 0.96, 0.89, 0], [0.55, 0.95, 0.00, 0.00] ), gate, doneAction:2) * 0.68],// * (velocity * 1)],
46+
[freq * 8 + 0, 0, EnvGen.kr(Env.new( [ 0, 0.87, 0.86, 0.00, 0], [0.54, 0.87, 0.00, 0.00] ), gate, doneAction:2) * 0.92],// * (velocity * 2)],
47+
[freq * 6 + 0, 0, EnvGen.kr(Env.new( [ 0, 1.00, 0.90, 0.00, 0], [0.67, 0.92, 0.28, 0.60] ), gate, doneAction:2) * 0.59],// * (velocity * 1)],
48+
[freq * 8 - 2, 0, EnvGen.kr(Env.new( [ 0, 1.00, 0.65, 0.60, 0], [0.85, 0.70, 0.97, 0.00] ), gate, doneAction:2) * 0.92],// * (velocity * 1)],
49+
[freq * 10 + 0, 0, EnvGen.kr(Env.new( [ 0, 1.00, 1.00, 0.97, 0], [0.73, 0.70, 0.60, 0.00] ), gate, doneAction:2) * 0.76],// * (velocity * 1)],
50+
],
51+
feedback;
52+
);
53+
54+
sig = sig + (sig * SinOsc.kr(0.35 * 19, mul: 0.35));
55+
sig = sig * CombC.ar(sig, 0.2, 0.2 * 0.42, 1);
56+
57+
Out.ar(out, Pan2.ar(sig * env * amp, pan));
58+
}).add;
59+
60+
SynthDef(\enoglide, {
61+
var sig;
62+
var feedback = \feedback.kr(0.0);
63+
var freq = \freq.kr(100);
64+
var amp = \amp.kr(0.3);
65+
var out = \out.kr(1);
66+
var pan = \pan.kr(0);
67+
var gate = \gate.kr(1);
68+
var velocity = 1;
69+
// var gate = Impulse.kr(1);
70+
var env = EnvGen.kr(Env.new( [ 0, 0.5, 0.5, 0.5, 0.0], [0.01, 1, 1, 0.1] ), gate, doneAction:2);
71+
// var env = EnvGen.kr(Env.adsr( \attackTime.kr(0.01), \decayTime.kr(0.3), \sustainLevel.kr(0.5), \releaseTime.kr(1)), gate, doneAction:2);
72+
sig = FM7.arAlgo(3,
73+
[
74+
[freq * 1 + 0, 0, EnvGen.kr(Env.new( [ 0, 0.99, 0.99, 0.99, 0], [0.62, 0.21, 0.46, 0.29] ), gate, doneAction:2) * 0.99],// * (velocity * 4)],
75+
[freq * 1 + 4, 0, EnvGen.kr(Env.new( [ 0, 0.49, 0.50, 0.50, 0], [0.33, 0.45, 0.45, 0.14] ), gate, doneAction:2) * 0.00],// * (velocity * 1)],
76+
[freq * 1 - 4, 0, EnvGen.kr(Env.new( [ 0, 0.49, 0.50, 0.50, 0], [0.19, 0.45, 0.45, 0.14] ), gate, doneAction:2) * 0.00],// * (velocity * 2)],
77+
[freq * 2 + 0, 0, EnvGen.kr(Env.new( [ 0, 0.99, 0.99, 0.99, 0], [0.32, 049, 0.46, 0.29] ), gate, doneAction:2) * 0.94],// * (velocity * 1)],
78+
[freq * 9 + 0, 0, EnvGen.kr(Env.new( [ 0, 0.49, 0.50, 0.50, 0], [0.85, 0.45, 0.45, 0.14] ), gate, doneAction:2) * 0.89],// * (velocity * 1)],
79+
[freq * 2.884 + 0, 0, EnvGen.kr(Env.new( [ 0, 0.99, 0.99, 0.99, 0], [0.18, 0.47, 0.48, 0.21] ), gate, doneAction:2) * 0.73],// * (velocity * 1)],
80+
],
81+
feedback;
82+
);
83+
84+
sig = sig + (sig * LFTri.kr(0.35 * 19, mul: 0.35));
85+
// sig = sig * CombC.ar(sig, 0.2, 0.2 * 0.42, 1);
86+
87+
Out.ar(out, Pan2.ar(sig * env * amp, pan));
88+
}).add;
89+
)
90+
91+
// Pbindef(\a, \instrument, \enotamboura, \scale, Scale.harmonicMinor, \degree, Pwhite(0,7), \amp, Pwhite(0.3, 0.5), \octave, Pseq((2..7),inf)).play

0 commit comments

Comments
 (0)