From d8ebcacdeb3156b9d7b8d03ead854bbefa13fe83 Mon Sep 17 00:00:00 2001 From: Eugene Petkevich Date: Thu, 26 May 2022 15:18:09 +0300 Subject: [PATCH] Add continuous synthdefs --- startup.scd | 96 +++++++++++----- .../33.7.5.1-morning.scd" | 108 ++++++++++++------ 2 files changed, 143 insertions(+), 61 deletions(-) diff --git a/startup.scd b/startup.scd index f24c01d..03bad72 100644 --- a/startup.scd +++ b/startup.scd @@ -14,6 +14,36 @@ MIDIClient.init; MIDIIn.connectAll; // ==== Synths + +// 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; + sig = AnalogSnareDrum.ar( + t_trig, + infsustain: 0.0, + accent: accent, + freq: freq, + tone: tone, + decay: decay, + snappy: snappy, + ) * amp; + sig = Pan2.ar(sig, pan); + Out.ar(out, sig); +}).add; + +// Subtract synth pad +SynthDef(\dyti, { + | out=0, gate=1, freq=440, amp=1, cut=800, rez=0.8, + modFreqMin=7, modFreqMax=12, modAmp=0.01, release=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, rez); + sig = sig * EnvGen.ar(Env.asr(releaseTime: release), gate, doneAction: 2); + sig = Pan2.ar(sig, Rand(-0.3, 0.3)); + Out.ar(out, sig * amp); +}).add; + // additive sin synth, sounds like metal SynthDef(\leto, { |freq = 440, sustain = 1, amp=1, out=0| var sig = 0; @@ -30,33 +60,18 @@ SynthDef(\leto, { |freq = 440, sustain = 1, amp=1, out=0| Out.ar(out, sig*amp); }).add; -// additive pulse synth -SynthDef(\pope, {|out=0, gate=1, freq=440, amp=1| - var sig = 0; - var num = 30; - num.do({ - sig = sig + (LFPulse.ar(freq, Rand(0, 0.01), SinOsc.kr(SinOsc.kr(Rand(2, 8), 0, 2, 2), Rand(0, 2pi), 0.5, 0.5)) / num); - }); - sig = sig * EnvGen.kr(Env.asr(0.03, 0.3, 1.8), gate, doneAction: Done.freeSelf); - sig = Pan2.ar(sig, Rand(-0.2, 0.2), amp); +// round membrane drum continuous +SynthDef(\liwe, {|out=0, amp=1, pan=0, t_trig=0, tension=0.05, loss=0.99999, impact=0.025| + var sig, excitation; + excitation = EnvGen.kr(Env.perc, t_trig, timeScale: impact, doneAction: 0); + excitation = excitation * PinkNoise.ar(); + sig = MembraneCircle.ar(excitation, tension, loss, mul: amp); + sig = Pan2.ar(sig, pan); Out.ar(out, sig); }).add; -// Subtract synth pad -SynthDef(\dyti, { - | out=0, gate=1, freq=440, amp=1, cut=800, rez=0.8, - modFreqMin=7, modFreqMax=12, modAmp=0.01, release=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, rez); - sig = sig * EnvGen.ar(Env.asr(releaseTime: release), gate, doneAction: 2); - sig = Pan2.ar(sig, Rand(-0.3, 0.3)); - Out.ar(out, sig * amp); -}).add; - // Subtract synth drum -SynthDef(\dytu, { +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 | var sig = 0; @@ -68,14 +83,43 @@ SynthDef(\dytu, { Out.ar(out, sig * amp); }).add; -// bass drum +// additive pulse synth +SynthDef(\pope, {|out=0, gate=1, freq=440, amp=1| + var sig = 0; + var num = 30; + num.do({ + sig = sig + (LFPulse.ar(freq, Rand(0, 0.01), SinOsc.kr(SinOsc.kr(Rand(2, 8), 0, 2, 2), Rand(0, 2pi), 0.5, 0.5)) / num); + }); + sig = sig * EnvGen.kr(Env.asr(0.03, 0.3, 1.8), gate, doneAction: Done.freeSelf); + sig = Pan2.ar(sig, Rand(-0.2, 0.2), amp); + Out.ar(out, sig); +}).add; + +// bass drum 808 continuous +SynthDef(\qoba, {|out=0, amp=1, pan=0, t_trig=0, accent=0.5, freq=50, tone=0.5, decay=0.5, attackfm=0.5, selffm=0.25| + var sig; + sig = AnalogBassDrum.ar( + t_trig, + infsustain: 0.0, + accent: accent, + freq: freq, + tone: tone, + decay: decay, + attackfm: attackfm, + selffm: selffm, + ) * amp; + sig = Pan2.ar(sig, pan); + Out.ar(out, sig); +}).add; + +// bass drum single-use SynthDef(\ruse, { | gate = 1, freq = 55, amp=1, out=0 | var sig = AnalogBassDrum.ar( gate, infsustain: 1, accent: 0.9, freq: freq, - tone: 0.7, + tone: 0.6, decay: 0.15, attackfm: 0.31, selffm: 0.15, @@ -83,4 +127,4 @@ SynthDef(\ruse, { | gate = 1, freq = 55, amp=1, out=0 | 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; \ No newline at end of file +}).add; diff --git "a/\320\245\321\215\320\267\320\270\321\204\321\203/33.7.5.1-morning.scd" "b/\320\245\321\215\320\267\320\270\321\204\321\203/33.7.5.1-morning.scd" index 3aa9a22..4700613 100644 --- "a/\320\245\321\215\320\267\320\270\321\204\321\203/33.7.5.1-morning.scd" +++ "b/\320\245\321\215\320\267\320\270\321\204\321\203/33.7.5.1-morning.scd" @@ -1,41 +1,54 @@ + +TempoClock.tempo = 1.5; + ( -SynthDef(\drum, {|out=0, amp=1, freq=110, - sustain=1.0, attack=0.01, tension=0.01, loss=0.999999| - var sig, env; - sig = SinOsc.ar(freq, mul: 0.1) + BrownNoise.ar(mul: 0.5); - env = Env.perc(attack, sustain-attack); - sig = sig * EnvGen.ar(env, doneAction: 2); - sig = MembraneCircle.ar(sig, tension, loss, mul: amp); - sig = Pan2.ar(sig, Rand(-0.3, 0.3)); - Out.ar(out, sig); -}).add; +Pdef(\ritm, Pmono(\liwe, *[ + dur: Pwrand([ + Pseq([1, 1, 1, 1].normalizeSum*4, 1), + Pseq([1, 1, 1, 1, 1, 1, 1, 1].normalizeSum*4, 1), + Pseq([2, 2, 1, 1, 1, 1].normalizeSum*4, 1), + Pseq([4, 2, 2, 2, 2, 1, 1, 1, 1].normalizeSum*4, 1), + Pseq([3, 3, 2, 3, 2, 3].normalizeSum*4, 1), + Pseq([3, 3, 2, 2, 3, 3].normalizeSum*4, 1), + Pseq([3, 3, 2, 3, 3, 2].normalizeSum*4, 1), + Pseq([2, 1, 2, 1, 4, 2, 2, 2].normalizeSum*4, 1), + Pseq([3, 3, 2, 2, 1, 1, 1/2, 1/2, 1/2, 1/2, 2].normalizeSum*4, 1), + ], [5, 2, 1, 1, 2, 2, 2, 1, 1].normalizeSum, inf), + db: -21, + pan: Pwhite(-0.5, 0.5), + t_trig: Pwrand([1, 0], [15, 1], inf), + tension: 0.006/(Pkey(\dur)**0.4)*Pwhite(0.95, 1.05), + loss: Plprand(0.9999, 0.99995, inf), +])).quant_(4).stop; ) ( -SynthDef(\membrane, {|out=0, amp=1, t_trig=0, tension=0.05, loss=0.99999| - var sig, excitation; - excitation = EnvGen.kr(Env.perc, t_trig, timeScale: 0.1, doneAction: 0); - excitation = excitation * PinkNoise.ar(); - sig = MembraneCircle.ar(excitation, tension, loss, mul: amp); - //sig = FreeVerb.ar(sig, 0.5, 0.2, 0.7); - sig = sig + (JPverb.ar(sig) * 0.2); - sig = Pan2.ar(sig, Rand(-0.3, 0.3)); - Out.ar(out, sig); -}).add; +Pdef(\ritm2, Pmono(\qoba, *[ + dur: Pwrand([ + Pseq([1, 1, 1, 1].normalizeSum*4, 1), + Pseq([1, 1, 1, 1, 1, 1, 1, 1].normalizeSum*4, 1), + Pseq([2, 2, 1, 1, 1, 1].normalizeSum*4, 1), + Pseq([4, 2, 2, 2, 2, 1, 1, 1, 1].normalizeSum*4, 1), + Pseq([3, 3, 2, 3, 2, 3].normalizeSum*4, 1), + Pseq([3, 3, 2, 2, 3, 3].normalizeSum*4, 1), + Pseq([3, 3, 2, 3, 3, 2].normalizeSum*4, 1), + Pseq([2, 1, 2, 1, 4, 2, 2, 2].normalizeSum*4, 1), + Pseq([3, 3, 2, 2, 1, 1, 1/2, 1/2, 1/2, 1/2, 2].normalizeSum*4, 1), + ], [5, 2, 1, 1, 2, 2, 2, 1, 1].normalizeSum, inf), + db: 15, + pan: Pwhite(-0.5, 0.5), + trig: Pwrand([1, 0], [15, 1], inf), + accent: 0.3, + freq: Pexprand(40, 80), + tone: 0.01, + decay: 0.2, + attackfm: 0.15, + selffm: 0.6, +])).quant_(4).stop; ) -~m.free; -~m = Synth(\membrane); - -~m.set(\t_trig, 1); - -TempoClock.tempo = 2; - ( -Pdef(\ritm, Pbind(*[ - type: \set, - id: ~m.nodeID, - \args, #[\t_trig, \tension, \loss, \amp], +Pdef(\ritm3, Pmono(\buti, *[ dur: Pwrand([ Pseq([1, 1, 1, 1].normalizeSum*4, 1), Pseq([1, 1, 1, 1, 1, 1, 1, 1].normalizeSum*4, 1), @@ -47,13 +60,38 @@ Pdef(\ritm, Pbind(*[ Pseq([2, 1, 2, 1, 4, 2, 2, 2].normalizeSum*4, 1), Pseq([3, 3, 2, 2, 1, 1, 1/2, 1/2, 1/2, 1/2, 2].normalizeSum*4, 1), ], [5, 2, 1, 1, 2, 2, 2, 1, 1].normalizeSum, inf), + timingOffset: 1/2, db: -20, - t_trig: Pwrand([1, 0], [15, 1], inf), - tension: 0.006/(Pkey(\dur)**0.4)*Pwhite(0.95, 1.05), - loss: Plprand(0.9999, 0.99995, inf), -])).quant_(4).play; + pan: Pwhite(-0.5, 0.5), + trig: Pwrand([1, 0], [15, 1], inf), + accent: 0.5, + freq: Pexprand(40, 160), + tone: 0.1, + decay: Pwhite(0.1, 0.5), + snappy: Pwhite(0.1, 0.9), +])).quant_(4).stop; ) +( +Ndef(\stormofkicks, { + var trig = Impulse.kr(8); + var sig = AnalogBassDrum.ar( + trig, + infsustain: 0.0, + accent: 0.25, + freq: TExpRand.kr(40,120, trig), + tone: 0.0,//TRand.kr(0.5,1.0,trig), + decay: 0.15, + attackfm: 0.11,//TRand.kr(0.1,1.0,trig), + selffm:TRand.kr(0.1,0.9,trig) + ); + + Pan2.ar(sig, TRand.kr(-1.0,1.0,trig)); +}).play; +) + +{ Impulse.ar(5, 0.0, 0.5, 0) }.play + ( Pdef(\ritmbase, Pbind(*[ type: \set, -- 2.17.1