Last active
September 26, 2024 13:33
-
-
Save yotamorimoto/2339477 to your computer and use it in GitHub Desktop.
らいでぃーん
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /******************************************************************************* | |
| "rydeen" -- ymo | |
| old school exercise -- yota morimoto | |
| 2024 動作確認済み | |
| *******************************************************************************/ | |
| ( | |
| // ダブルクリックで選択後、実行 | |
| // ページ下の再生コードを実行 | |
| TempoClock.default.tempo = 142/60; | |
| s = Server.default; | |
| s.waitForBoot { // サーバ起動後に実行される | |
| /* ------------------------------------------------------------------------ SynthDefs */ | |
| SynthDef(\hat, { |amp=0.1, pan=0| | |
| var sig, env; | |
| env = Env.perc(0, 0.03).kr(2); | |
| sig = WhiteNoise.ar(amp); | |
| sig = HPF.ar(sig, 8000); | |
| sig = Pan2.ar(sig, pan, env); | |
| Out.ar(0, sig); | |
| }).add; | |
| SynthDef(\snr, { |amp=0.1| | |
| var sig, env, snr, mem; | |
| env = Env.perc(0, 0.05).kr(2); | |
| snr = WhiteNoise.ar(amp); | |
| mem = FSinOsc.ar(200); | |
| sig = LPF.ar(snr + mem, 12000); | |
| sig = Pan2.ar(sig, 0, env); | |
| Out.ar(0, sig); | |
| }).add; | |
| SynthDef(\kik, { |amp=0.3, sustain=1, freq=30| | |
| var sig, frqEnv, ampEnv; | |
| frqEnv = EnvGen.kr(Env.perc, 1, freq*10, freq, 0.023); | |
| ampEnv = EnvGen.kr(Env.linen(0.01, 0.1, 0.3, 1, [-5,1,-4]), 1, amp, 0, sustain, 2); | |
| sig = SinOsc.ar(frqEnv, 0, ampEnv); | |
| sig = Pan2.ar(sig, 0); | |
| Out.ar(0, sig); | |
| }).add; | |
| SynthDef(\prc, { |out=0, amp=0.1| | |
| var sig, env; | |
| env = Env.perc(0, 0.08).kr(2); | |
| sig = WhiteNoise.ar(amp); | |
| sig = sig * env; | |
| Out.ar(out, sig * env); | |
| }).add; | |
| SynthDef(\chorus, { |out=0| | |
| var sig; | |
| sig = In.ar(out, 1)*0.5; | |
| sig = DelayC.ar(sig, 1, FSinOsc.kr(0.25, [0, pi]).range(0.02, 0.03), 0.5, sig); | |
| ReplaceOut.ar(out, sig); | |
| }).add; | |
| SynthDef(\bss, { |gate=1, amp=0.1, sustain=1, freq=440| | |
| var sig, env; | |
| env = EnvGen.kr(Env.adsr, gate, amp, 0, sustain, 2); | |
| sig = Mix(Saw.ar([freq,freq+0.1])).tanh; | |
| sig = RLPF.ar(sig, 1000, 0.8); | |
| sig = Pan2.ar(sig, 0, env); | |
| Out.ar(0, sig); | |
| }).add; | |
| SynthDef(\arp, { |gate=1, amp=1, sustain=1, freq=440, pan=0| | |
| var sig, env; | |
| env = EnvGen.kr(Env.adsr, gate, amp, 0, sustain, 2); | |
| sig = Mix(LFSaw.ar([freq,freq+0.1])).softclip; | |
| sig = RLPF.ar(sig, 4500, 0.5); | |
| sig = Pan2.ar(sig, pan, env); | |
| Out.ar(0, sig); | |
| }).add; | |
| SynthDef(\hrm, { |amp, freq=440| | |
| var sig, env; | |
| env = Env.perc.kr(2); | |
| sig = Saw.ar([freq, freq*0.99],amp); | |
| sig = RLPF.ar(sig, 3200); | |
| Out.ar(0, sig * env); | |
| }).add; | |
| SynthDef(\lead, { |out=0, gate=1, amp=0.1, freq=440| | |
| var sig, env; | |
| env = EnvGen.kr(Env.adsr(0.01), gate, amp, 0, 1, 2); | |
| sig = Mix.ar(LFTri.ar([freq, freq*2])); | |
| sig = HPF.ar(sig, 500); | |
| sig = sig * env; | |
| Out.ar(out, sig); | |
| }).add; | |
| SynthDef(\reverb, { |gate=1, out=0| | |
| var sig, rev, env; | |
| env = Linen.kr(gate, 0.05, 1, 1, 2); | |
| sig = In.ar(out, 1) * 0.5; | |
| rev = BPF.ar(sig, 1000); | |
| 4.do { rev = AllpassN.ar(rev, 0.050, [0.050.rand, 0.050.rand], 1) }; | |
| sig = sig + rev; | |
| sig = sig * env; | |
| ReplaceOut.ar(out, sig); | |
| }).add; | |
| /* ------------------------------------------------------------------------ Patterns intro */ | |
| ~prcIntro = Pfxb( | |
| Pbind(\instrument, \prc, | |
| \dur, Pser([0.5, 0.25, 0.25], 3 * 4 * 3), | |
| \amp, 0.7 | |
| ), \chorus | |
| ); | |
| ~snrIntro = Pbind(\instrument, \snr, | |
| \dur, Pn(1, 12), | |
| \degree, Pseq([Pn(\, 10), 1, 1]), | |
| \amp, 0.7 | |
| ); | |
| ~bssIntro = Pbind(\instrument, \bss, | |
| \dur, Pn(1, 12), | |
| \legato, 0.7, | |
| \amp, 0.6, | |
| \scale, [2, 4, 5, 7, 9, 10, 12], | |
| \degree, Pseq([Pn(\, 10), 6, 5]) - 1, | |
| \octave, 2 | |
| ); | |
| ~hrmIntro = Pbind(\instrument, \hrm, | |
| \dur, 1, | |
| \legato, 1, | |
| \scale, [2, 4, 5, 7, 9, 10, 12], | |
| \degree, Pseq([Pn(\, 10), [0,-2,2], [1,-0.9,3]], 1), | |
| \octave, 5, | |
| \amp, 0.2 | |
| ); | |
| ~leadIntro = Pfxb( | |
| Pbind(\instrument, \lead, | |
| \dur, Pn(1, 12), | |
| \legato, 0.9, | |
| \amp, 0.4, | |
| \scale, [2, 4, 5, 7, 9, 10, 12], | |
| \degree, Pseq([Pn(\, 10), 0, 1], 1), | |
| \octave, 6 | |
| ), \reverb | |
| ); | |
| /* --------------------------------------------------------------------- Patterns body A */ | |
| ~hatA = Pbind(\instrument, \hat, | |
| \dur, Pn(0.25, 4 * 4 * 8), | |
| \amp, Pseq([0.4, 0.2, 0.3, 0.2], inf), | |
| \pan, -0.5 | |
| ); | |
| ~snrA = Pbind(\instrument, \snr, | |
| \dur, Pseq([ | |
| Pseq([1, 1, 1, 1], 7), | |
| Pseq([1, 1, 0.5, Pn(0.25, 4), 0.5], 1) | |
| ], 1), | |
| \amp, 0.6, | |
| \degree, Pseq([ | |
| Pseq([\, 1, \, 1], 7), | |
| Pseq([\, 1, \, Pn(1, 4), 1], 1) | |
| ], 1) | |
| ); | |
| ~kikA = Pbind(\instrument, \kik, | |
| \dur, Pn(1, 4 * 8), | |
| \amp, 0.65, | |
| \freq, 50 | |
| ); | |
| ~prcA = Pfxb( | |
| Pbind(\instrument, \prc, | |
| \dur, Pseq([0.5, 0.25, 0.25], 4 * 8), | |
| \amp, Pseq([0.4, 0.2, 0.2], inf) | |
| ), \chorus | |
| ); | |
| ~bssA = Pbind(\instrument, \bss, | |
| \dur, Pseq([ | |
| Pseq([1.5, 1.5, 1.5, 1.5, 1, 1, 2, 0.5, 1, 2.5, 1, 1], 1), | |
| Pseq([1.5, 1.5, 1.5, 1.5, 1, 1, 2, 2, 2, 1, 1], 1), | |
| ], 1), | |
| \legato, 0.7, | |
| \amp, 0.8, | |
| \scale, [2, 4, 5, 7, 9, 10, 12], | |
| \degree, Pseq([ | |
| Pseq([1, 2, 3, 1, 7, 3, 6, \, 5, 4, 6, 5], 1) - 1, | |
| Pseq([1, 2, 3, 1, 7, 3, 6, 6, 6, 6, 5], 1) - 1 | |
| ], inf), | |
| \octave, Pseq([ | |
| Pseq([3, 3, 3, 3, 2, 3, 2, 2, 2, 2, 2, 2], 1), | |
| Pseq([3, 3, 3, 3, 2, 3, 2, 2, 2, 2, 2], 1) | |
| ], inf) | |
| ); | |
| ~arpA = Pbind(\instrument, \arp, | |
| \dur, Pseq([ | |
| Pn(0.25, 4 * 14), | |
| 1, 1 | |
| ], 2), | |
| \legato, 0.5, | |
| \amp, 0.45, | |
| \scale, [2, 4, 5, 7, 9, 10, 12], | |
| \degree, Pseq([ | |
| Pseq([1, 1, 1, 1, 1, 8, 5, 1], 7), | |
| 1, 1 | |
| ], inf) - 1, | |
| \octave, 3, | |
| \mtranspose, Pseq([ | |
| Pn(0, 4 * 8), | |
| Pn(-2, 4 * 4), | |
| Pn(-4, 4 * 2), | |
| -2, -3 | |
| ], inf), | |
| \pan, Pseq([ | |
| Pser([-1, 1], 4 * 14), | |
| 0, 0 | |
| ], inf) | |
| ); | |
| ~hrmA = Pbind(\instrument, \hrm, | |
| \dur, Pseq([ | |
| Pseq([1.5, 1.5, 1.5, 1.5, 1, 1, 2, 0.5, 1, 2.5, 1, 1], 1), | |
| Pseq([1.5, 1.5, 1.5, 1.5, 1, 1, 2, 2, 2, 1, 1], 1) | |
| ], 1), | |
| \legato, 1, | |
| \scale, [2, 4, 5, 7, 9, 10, 12], | |
| \degree, Pseq([ | |
| Pseq([ | |
| [2,0,-3], [3,0,-3], [4,0,-3], [2,0,-3], [1,-1,-3], [4,1,-1], | |
| [2,0,-3,-2], \, [1,-1,-4,-3], [0,-2,-5,-4], [0,-2,-5], [1,-0.9,-4] | |
| ], 1), | |
| Pseq([ | |
| [2,0,-3], [3,0,-3], [4,0,-3], [2,0,-3], [1,-1,-3], [4,1,-1], | |
| [2,0,-2], [4,2,0,-1], [7,5,4,2], [9,7,6,4], [8,6,4,3] | |
| ], 1) | |
| ], inf), | |
| \amp, 0.2 | |
| ); | |
| ~leadA = Pfxb( | |
| Pbind(\instrument, \lead, | |
| \dur, Pseq([ | |
| 4, Pn(0.5, 5), | |
| 0.25, 0.25, 0.5, 0.5, 6, 1, 1, | |
| 4, Pn(0.5, 5), | |
| 0.25, 0.25, 0.5, 0.5, 6, 1, 1 | |
| ], 1), | |
| \legato, 1, | |
| \amp, 0.4, | |
| \scale, [2, 4, 5, 7, 9, 10, 12], | |
| \degree, Pseq([ | |
| 2, \, 2, 3, 2, 1, 1, 0, -1, -3, 0, 0, 1, | |
| 2, \, 2, 3, 2, 1, 1, 0, -1, 0, 4, \, \ | |
| ], inf), | |
| \octave, 6 | |
| ), \reverb | |
| ); | |
| /* --------------------------------------------------------------------- Patterns body B */ | |
| ~hatB = ~hatA; | |
| ~snrB = Pbind(\instrument, \snr, | |
| \dur, Pseq([1, 1, 1, 1], 8), | |
| \amp, 0.6, | |
| \degree, Pseq([ | |
| Pseq([\, 1, \, 1], 7), | |
| Pseq([\, 1, 1, 1], 1) | |
| ], 1) | |
| ); | |
| ~kikB = Pbind(\instrument, \kik, | |
| \dur, Pseq([ | |
| Pseq([1, 1, 0.5, 0.5, 1], 7), | |
| Pseq([1, 1, 2], 1), | |
| ], 1), | |
| \amp, 0.7, | |
| \freq, Pseq([ | |
| Pseq([50, \, 50, 50, \], 7), | |
| Pseq([50, 50, \], 1), | |
| ], 1) | |
| ); | |
| ~prcB = Pfxb( | |
| Pbind(\instrument, \prc, | |
| \dur, Pseq([0.5, 0.25, 0.25], 4 * 8), | |
| \amp, Pseq([0.7, 0.5, 0.5], inf) | |
| ), \chorus | |
| ); | |
| ~bssB = Pbind(\instrument, \bss, | |
| \dur, Pseq([ | |
| 0.5, 0.5, 1.5, 0.5, 0.5, 2.5, 0.5, 0.5, 1, | |
| 0.5, 0.5, 1.5, 0.5, 0.5, 2.5, 1, 1, | |
| 1.5, 1.5, 1.5, 1.5, 2, | |
| Pn(0.5, 7), 2.5, 1, 1 | |
| ], 1), | |
| \legato, 0.7, | |
| \amp, 0.8, | |
| \scale, [2, 4, 5, 7, 9, 10, 12], | |
| \degree, Pseq([ | |
| 3, 2, 3, 4, 6, 7, 7, 6, 4, | |
| 3, 2, 3, 4, 6, 7, 7, 6, | |
| 5, 3, 4, 5, 5.1, Pn(-1, 5), 7, 6, 2, 5, 4 | |
| ], 1), | |
| \octave, 2 | |
| ); | |
| ~arpB = Pbind(\instrument, \arp, | |
| \dur, Pseq([Pn(0.25, 4 * 4 * 7 + 8), 1, 1], 1), | |
| \legato, 0.5, | |
| \amp, 0.35, | |
| \scale, [2, 4, 5, 7, 9, 10, 12], | |
| \degree, Pseq([ | |
| Pseq([0,7,0,7,0,7,7,0,7,0,7,0,0,7,0,7], 7), | |
| Pseq([0,7,0,7,0,7,7,7,-2,-3], 7), | |
| ], 1), | |
| \octave, 4, | |
| \mtranspose, Pseq([Pn(0, 4 * 4 * 6), Pn(-1, 4 * 6), 0, 0], 1), | |
| \pan, Pseq([Pser([-1, 1], 4 * 4 * 7 + 8), 0, 0], inf) | |
| ); | |
| ~hrmB = Pbind(\instrument, \hrm, | |
| \dur, Pseq([ | |
| 1, 2, 0.5, 4.5, 1, 2, 0.5, 2.5, 1, 0.5, 0.25, 0.25, | |
| 1.5, 1.5, 1.5, 1.5, 2, 0.5, 1, 1, 1, 2.5, 1, 1 | |
| ], 1), | |
| \legato, 1, | |
| \scale, [2, 4, 5, 7, 9, 10, 12], | |
| \degree, Pseq([ | |
| \, [3, 4, 6, 8], \, [4, 7, 8, 10], \, [3, 4, 6, 8], \, [4, 7, 8, 10], 5, 4, 5, 4, | |
| 3, [4, 6, 8, 10], [5, 7, 9, 11], [6, 8, 10, 12], [3, 5, 6.1, 8], | |
| \, 6, 8, 10, 12, [6, 8, 10], [5, 7, 9] | |
| ], inf) - 1, | |
| \octave, Pseq([Pn(5, 13), Pn(4, 3), Pn(3, 1), Pn(4, 5), 4, 4], 1), | |
| \amp, 0.2 | |
| ); | |
| ~leadB = Pfxb( | |
| Pbind(\instrument, \lead, | |
| \dur, Pseq([ | |
| 1, 0.5, 0.5, 0.5, 1, 0.5, | |
| 0.5, 0.5, Pn(0.5/3, 3), 0.5, 0.5, 1.5, | |
| 1, 0.5, 0.5, 0.5, 1, 0.5, | |
| 0.5, Pn(0.5/3, 3), 0.5, 0.5, 1, 0.5, 0.5, | |
| 2.5, Pn(0.5/3, 3), 0.5, 0.5, | |
| 2, 1, 1, | |
| 2.5, 1, 0.5, | |
| 2, 1, 1 | |
| ], 1), | |
| \legato, 1, | |
| \amp, 0.4, | |
| \scale, [2, 4, 5, 7, 9, 10, 12], | |
| \degree, Pseq([ | |
| 7, 7, 6, 7, 9, 10, | |
| 6, 7, 6, 7, 6, 4, 6, 7, | |
| 7, 7, 6, 7, 9, 10, | |
| 11, 10, 11, 10, 9, 7, 9, 7, 9, | |
| 11, 13, 14, 13, 11, 10, | |
| 11, 7, 9, | |
| 11, 10, 11, | |
| 10, 7, 8 | |
| ], inf), | |
| \octave, 5 | |
| ), \reverb | |
| ); | |
| ~intro = Ppar([~prcIntro, ~snrIntro, ~bssIntro, ~hrmIntro, ~leadIntro], 1); | |
| ~bodyA = Ppar([~arpA, ~prcA, ~leadA, ~hrmA, ~bssA, ~hatA, ~snrA, ~kikA], 1); | |
| ~bodyB = Ppar([~arpB, ~prcB, ~leadB, ~hrmB, ~bssB, ~hatB, ~snrB, ~kikB], 1); | |
| }); | |
| // 再生! | |
| ~rydeen = Pseq([~intro, Pseq([~bodyA, ~bodyB], inf)]).play; | |
| // 停止 | |
| ~rydeen.stop; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment