}
midiKeyToFreq {|n|
- "Playing %".format(scale.degreeToFreq(n-60, 60.midicps, 0).cpsmidi.round).postln;
+ "Playing %".format(scale.degreeToFreq(n-60, 60.midicps, 0).cpsmidi.round(0.001)).postln;
^scale.degreeToFreq(n-60, 60.midicps, 0) * bend.midiratio;
}
}
MIDIClient.init;
MIDIIn.connectAll;
+// ==== Scales
+
+// == Tunings
+
+Tuning.all.put(\tritave13, Tuning.new((0..12).collect(_ * (12*(3 ** (1/13)).log2)), 3, "Tritave 13"));
+
+// == Scales
+
+Scale.all.put(\tt13, Scale.chromatic(Tuning.at(\tritave13)));
+Scale.all.put(\hivi, Scale([0, 2, 4, 5, 7, 10, 12], 13, tuning: ~tun));
+
// ==== Synths
// == Sources
+// fm synth
+SynthDef(\bino, { |
+ out=0, gate=1, freq=440, modFreq=440, amp=1, release=1.0, maxIndex=1
+ |
+ var sig, modIndex, env;
+ env = EnvGen.ar(Env.asr(releaseTime: release), gate, doneAction: 2);
+ modIndex = (1 - env) * maxIndex;
+ sig = PMOsc.ar(freq, modFreq, modIndex, mul: amp);
+ sig = sig * env;
+ sig = Pan2.ar(sig, Rand(-0.3, 0.3));
+ Out.ar(out, sig * amp);
+}).add;
+
// snare drum 808 continuous
SynthDef(\buti, {|out=0, amp=1, pan=0, t_trig=0, accent=0.1, freq=200, tone=0.5, decay=0.5, snappy=0.5|
var sig;
// Subtract synth drum
SynthDef(\naje, {
| out=0, sustain=0.5, freq=440, amp=1, cut=800, rez=0.8,
- modFreqMin=7, modFreqMax=12, modAmp=0.01, release=1.0 |
+ modFreqMin=7, modFreqMax=12, modAmp=0.01 |
var sig = 0;
var modFreq = SinOsc.kr(Rand(modFreqMin, modFreqMax), 0, modAmp, 1);
sig = sig + Pulse.ar(freq * modFreq);
- sig = RLPF.ar(sig, cut, rez);
- sig = sig * EnvGen.ar(Env.perc(0.005, releaseTime: release), doneAction: 2);
+ sig = RLPF.ar(sig, cut.lag(0.01), rez.lag(0.01));
+ sig = sig * EnvGen.ar(Env.perc(0.005, releaseTime: sustain), doneAction: 2);
sig = Pan2.ar(sig, Rand(-0.3, 0.3));
Out.ar(out, sig * amp);
}).add;
[ 0.0, 2.0, 4.0, 5.0, 7.0, 8.0, 11.0 ].do{|e, i| };
(
~keys = KeySynth(~kedi, \dyti, 1, true, nil, 0.2, nil, false);
+~keys.amp = 1.0;
+~keys.synthName = \sidrub;
~keys.onlyWhite = true;
-~keys.scale = Scale.zanjaran;
+~keys.scale = Scale([0, 2, 4, 5, 7, 10, 12], 13, tuning: ~tun);
~keys.params[\modAmp] = 0.0;
~kedi.press_{|v|
var val = v * 0.02;
-// trying varios scales
-
-~tun = Tuning.new((0..12).collect(_ * (12*(3 ** (1/13)).log2)), 3, "tritave");
-~scale = Scale.chromatic(~tun);
-
-(
-SynthDef(\sibino, { |
- out=0, gate=1, freq=440, modFreq=440, amp=1, release=1.0, maxIndex=1
- |
- var sig, modIndex, env;
- env = EnvGen.ar(Env.asr(releaseTime: release), gate, doneAction: 2);
- modIndex = (1 - env) * maxIndex;
- sig = PMOsc.ar(freq, modFreq, modIndex, mul: amp);
- sig = sig * env;
- sig = Pan2.ar(sig, Rand(-0.3, 0.3));
- Out.ar(out, sig * amp);
-}).add;
-)
-
-(
-SynthDef(\sidrub, {
- | out=0, gate=1, freq=440, amp=1, cut=800, rez=0.8,
- modFreqMin=7, modFreqMax=12, modAmp=0.01, sustain=1.0 |
- var sig = 0;
- var modFreq = SinOsc.kr(Rand(modFreqMin, modFreqMax), 0, modAmp, 1);
- sig = sig + Pulse.ar(freq * modFreq);
- sig = RLPF.ar(sig, cut.lag(0.01), rez.lag(0.01));
- sig = sig * EnvGen.ar(Env.perc(releaseTime: sustain), gate, doneAction: 2);
- sig = Pan2.ar(sig, Rand(-0.3, 0.3));
- Out.ar(out, sig * amp);
-}).add;
-)
-
-(
-SynthDef(\siruse, { | gate = 1, freq = 55, amp=1, out=0 |
- var sig = AnalogBassDrum.ar(
- gate,
- infsustain: 1,
- accent: 0.9,
- freq: freq,
- tone: 0.7,
- decay: 0.15,
- attackfm: 0.31,
- selffm: 0.15,
- );
- sig = sig * EnvGen.ar(Env.adsr(0.01, 0.2, 0.9, 0.25), gate, doneAction: 2);
- sig = Pan2.ar(sig, 0);
- Out.ar(out, sig * amp);
-}).add;
-)
-
(
Pdef(\nodi, Pbind(
\instrument, \sibino,