Add more scales and synths
authorEugene Petkevich <nasedil.genio.code@gmail.com>
Wed, 6 Jul 2022 17:03:38 +0000 (20:03 +0300)
committerEugene Petkevich <nasedil.genio.code@gmail.com>
Wed, 6 Jul 2022 17:03:38 +0000 (20:03 +0300)
extensions/classes/midisynths.sc
startup.scd
Хэзифу/test.scd
Хэзифу/test2.scd

index 0c7b37a..27e088e 100644 (file)
@@ -93,7 +93,7 @@ KeySynth : MidiSynth {
   }
 
   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;
   }
 }
index 8dde760..9a77442 100644 (file)
@@ -13,10 +13,34 @@ s.options.numOutputBusChannels = 16;
 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;
@@ -88,12 +112,12 @@ SynthDef(\liwe, {|out=0, amp=1, pan=0, t_trig=0, tension=0.05, loss=0.99999, imp
 // 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;
index f793112..15bad46 100644 (file)
@@ -166,8 +166,10 @@ s.waitForBoot{
 [ 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;
index c1606f8..859ac9e 100644 (file)
@@ -1,54 +1,3 @@
-// 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,