From 37e4dbdd3e08a67a3fb39132532f6ee8bc73b858 Mon Sep 17 00:00:00 2001 From: Eugene Petkevich Date: Wed, 6 Jul 2022 20:03:38 +0300 Subject: [PATCH] Add more scales and synths --- extensions/classes/midisynths.sc | 2 +- startup.scd | 30 +++++++++-- .../test.scd" | 4 +- .../test2.scd" | 51 ------------------- 4 files changed, 31 insertions(+), 56 deletions(-) diff --git a/extensions/classes/midisynths.sc b/extensions/classes/midisynths.sc index 0c7b37a..27e088e 100644 --- a/extensions/classes/midisynths.sc +++ b/extensions/classes/midisynths.sc @@ -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; } } diff --git a/startup.scd b/startup.scd index 8dde760..9a77442 100644 --- a/startup.scd +++ b/startup.scd @@ -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; diff --git "a/\320\245\321\215\320\267\320\270\321\204\321\203/test.scd" "b/\320\245\321\215\320\267\320\270\321\204\321\203/test.scd" index f793112..15bad46 100644 --- "a/\320\245\321\215\320\267\320\270\321\204\321\203/test.scd" +++ "b/\320\245\321\215\320\267\320\270\321\204\321\203/test.scd" @@ -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; diff --git "a/\320\245\321\215\320\267\320\270\321\204\321\203/test2.scd" "b/\320\245\321\215\320\267\320\270\321\204\321\203/test2.scd" index c1606f8..859ac9e 100644 --- "a/\320\245\321\215\320\267\320\270\321\204\321\203/test2.scd" +++ "b/\320\245\321\215\320\267\320\270\321\204\321\203/test2.scd" @@ -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, -- 2.17.1