Skip to content

Instantly share code, notes, and snippets.

@yotamorimoto
Last active July 28, 2021 11:46
Show Gist options
  • Select an option

  • Save yotamorimoto/2340155 to your computer and use it in GitHub Desktop.

Select an option

Save yotamorimoto/2340155 to your computer and use it in GitHub Desktop.
remix
/*******************************************************************************
2012年制作
2021年動作確認
demo live-coding using synth emulations from ymo 'rydeen'
yota morimoto
*******************************************************************************/
(
// double clicking selection.
s = Server.default;
TempoClock.default.tempo = 128/60;
s.waitForBoot {
/* ------------------------------------------------------------------------ SynthDefs */
SynthDef(\lead, { | out=0, gate=1, amp=1, sustain=1, freq=440, pan=0 |
var sig, env;
sig = LFSaw.ar([freq, freq*2]).mean;
env = EnvGen.kr(Env.adsr, gate, amp, 0, sustain, 2);
sig = sig * env;
Out.ar(out, sig);
}).store;
SynthDef(\arp, { | out=0, gate=1, amp=1, sustain=1, freq=440, pan=0 |
var sig, env;
sig = LFSaw.ar(freq);
sig = HPF.ar(sig, 200);
sig = RLPF.ar(sig, 5000, 0.2);
env = EnvGen.kr(Env.adsr, gate, amp, 0, sustain, 2);
sig = sig * env;
Out.ar(out, sig);
}).store;
SynthDef(\hrm, { | out=0, amp, freq=440, sustain |
var sig, env;
sig = LFSaw.ar([freq, freq*0.99]);
sig = RLPF.ar(sig, 3200);
env = EnvGen.kr(Env.perc, 1, amp, 0, sustain, 2);
Out.ar(out, sig * env);
}).store;
SynthDef(\bss, { | out=0, gate=1, amp=1, sustain=1, freq=440, pan=0 |
var sig, env;
sig = LFSaw.ar(freq, 0, 0.2) + LFPar.ar(freq);
sig = RLPF.ar(sig, 800, 0.3);
env = EnvGen.kr(Env.adsr, gate, amp, 0, sustain, 2);
Out.ar(out, Pan2.ar(sig, 0, env));
}).store;
SynthDef(\prc, { | out=0, amp, sustain |
var sig, env;
sig = WhiteNoise.ar;
env = EnvGen.kr(Env.perc(0.001, 0.999), 1, amp, 0, sustain, 2);
Out.ar(out, Pan2.ar(sig, 0, env));
}).store;
SynthDef(\hat, { | out=0, amp=0.1, sustain=1, pan=0 |
var sig, env;
sig = WhiteNoise.ar;
sig = RHPF.ar(sig, 9500, 0.1);
env = EnvGen.ar(Env.perc(0.001, 0.999), 1, amp, 0, sustain, 2);
Out.ar(out, Pan2.ar(sig, pan, env));
}).store;
SynthDef(\snr, { | out=0, amp=0.1 |
var sig1, sig2, env;
sig1 = WhiteNoise.ar;
sig2 = FSinOsc.ar(200, 0, 0.3);
env = EnvGen.kr(Env.perc(0, 0.05), 1, amp, 0, 2);
Out.ar(out, Pan2.ar(RLPF.ar(sig1 + sig2, 5000, 0.4), 0, env));
}).store;
SynthDef(\kik, {| amp=0.3, sustain, freq=30 |
var sig, env, freqEnv, phasEnv, timeEnv;
freqEnv = EnvGen.kr(Env.perc, 1, freq*10, freq, 0.023);
phasEnv = EnvGen.kr(Env.perc, 1, 2pi, 0, 1);
timeEnv = EnvGen.kr(Env.linen(0.017, 0.1, 0.25, 1, [-5,1,-4]), 1, amp, 0, sustain, 2);
sig = SinOsc.ar(freqEnv, phasEnv, timeEnv);
sig = Pan2.ar(sig, 0);
Out.ar(0, sig);
}).store;
/* ----------------------------------------------------------------- Effect SynthDefs */
SynthDef(\chorus, { | out=0, maxdtime=0.2, dtime=0.02, decay=0.01 |
var sig;
sig = In.ar(out, 2);
sig = DelayC.ar(sig, 0.05, SinOsc.kr(0.25, [0, pi]).range(0.02, 0.03), 0.5, sig);
XOut.ar(out, 1, sig);
}).store;
SynthDef(\delay, { | out=0, ratio=1, maxdtime=0.2, dtime=0.02, decay=0.01 |
var sig;
sig = In.ar(out, 2);
sig = CombC.ar(sig, 1, (128/60).reciprocal * 0.5, 4, 1);
XOut.ar(out, ratio, sig);
}).store;
SynthDef(\distort, { | out=0, ratio=1, pregain=2, amp=0.1 |
var sig;
sig = In.ar(out, 2);
sig = (sig * pregain).softclip * amp;
XOut.ar(out, ratio, sig);
}).store;
SynthDef(\moog, { | out=0, ratio=1, speed=1 |
var sig;
sig = In.ar(out, 2);
sig = MoogFF.ar(sig, LFSaw.kr(speed).range(4000, 10000), 3);
XOut.ar(out, ratio, sig);
}).store;
SynthDef(\panner, { | out=0, ratio=1, speed=0.3 |
var sig;
sig = In.ar(out, 1);
sig = Pan2.ar(sig, SinOsc.kr(speed));
XOut.ar(out, ratio, sig);
}).store;
}
)
/* -------------------------------- live-coding performance using some patterns from rydeen */
// each code blocks, double click selection, then excecute
// live-coding: codes excecuted 'on the fly'
(
// scheduled at the next bar
TempoClock.playNextBar({
Pdef(\arp,
Pfxb(
Pbind(\instrument, \arp,
\dur, 0.25,
\legato, 0.5,
\amp, 0.2,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, Pseq([1,8,1,8,1,8,8,1,8,1,8,1,1,8,1,8], inf) - 1,
\octave, 4,
\mtranspose, 0
),
\panner, \speed, 0.3)
).play;
});
)
(
TempoClock.playNextBar({
Pdef(\lead,
Pfxb(
Pbind(
\instrument, \lead,
\dur, Pxrand([1, 0.5, 0.25, 0.25], inf),
\legato, 0.5,
\amp, 0.3,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, Pseq([3, 4], inf) - 1,
\octave, 3
),
\panner, \speed, 3.33)
).play;
});
)
(
TempoClock.playNextBar({
Pdef(\hrm,
Pbind(\instrument, \hrm,
\dur, Pseq([0.5, 0.25, 0.25], inf),
\legato, 0.5,
\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],
[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], inf),
\amp, 0.15
)
).play;
});
)
(
/* ---------------------------------------------------------- rythm 1 */
TempoClock.playNextBar({
Pdef(\arp).pause;
Pdef(\hrm,
Pbind(\instrument, \hrm,
\dur, Pseq([
2, 0.5, 0.5, 0.25, 0.25, 0.5,
0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 0.75,
1, 1, 0.5, 0.5, 0.25, 0.25, 0.5,
0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 0.75
], inf),
\legato, 0.5,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, Pseq([
[4, 6, 8, 10], \, [3, 4, 6, 8], [4, 6, 8, 10], [4, 6, 8, 10], \,
\, [4, 6, 8, 10], \, [4, 6, 8, 10], \, [3, 4, 6, 8], [3, 4, 6, 8], [3, 4, 6, 8], [4, 6, 8, 10],
\, [4, 6, 8, 10], \, [3, 4, 6, 8], [4, 6, 8, 10], [4, 6, 8, 10], \,
\, [4, 6, 8, 10], \, [4, 6, 8, 10], \, [3, 4, 6, 8], [3, 4, 6, 8], [3, 4, 6, 8], [4, 6, 8, 10]
], inf) - 1,
\octave, 4,
\amp, 0.15
)
).play;
Pdef(\bss,
Pbind(\instrument, \bss,
\dur, Pseq([
1, 0.75, 0.25, 1, 0.5, 0.5,
0.5, 0.5, 0.75, 0.25, 0.5, 0.5, 0.25, 0.75
], inf),
\legato, 0.9,
\amp, 0.6,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, Pseq([
4, \, 4, 4, \, 4,
\, 3, \, 3, 3, 4, \, 3
], inf) - 1,
\octave, 2
)
).play;
Pdef(\hat,
Pbind(\instrument, \hat,
\dur, Pseq([
Pseq([0.25, 0.25, 0.5], 3),
Pseq([0.25, 0.25, 0.25, 0.25], 1)
], inf),
\legato, Pseq([
Pseq([0.5, 0.5, 0.7], 3),
Pn(0.5, 4)
], inf),
\freq, Pseq([1, 1, 1, \, 1, \], inf),
\amp, 0.3)
).play;
Pdef(\prc,
Pfxb(
Pbind(\instrument, \prc,
\dur, 0.25,
\legato, 0.05,
\amp, 0.9,
\freq, Pseq([\, 1, \, 1, \, 1, 1, 1], inf)
),
\chorus
)
).play;
Pdef(\snr,
Pbind(\instrument, \snr,
\dur, Pseq([
Pn(1, 4),
Pn(1, 3), 0.5, 0.25, 0.25,
Pn(1, 4),
Pn(1, 3), Pn(0.25, 4)
], inf),
\amp, Pseq([
Pn(1.25, 4),
Pn(1.25, 4), 0.7, 0.7,
Pn(1.25, 4),
Pn(1.25, 3), Pn(0.7, 4)
], inf),
\degree, Pseq([
Pseq([\, 1, \, 1], 1),
Pseq([\, 1, \, 1, 1, 1], 1),
Pseq([\, 1, \, 1], 1),
Pseq([\, 1, \, 1, 1, \, 1], 1)
], inf)
)
).play;
Pdef(\kik,
Pbind(\instrument, \kik,
\dur, Pseq([
1, 0.75, 0.25, 1, 0.5, 0.5,
0.5, 0.5, 0.75, 0.25, 0.5, 0.5, 0.25, 0.75
], inf),
\amp, 0.85,
\freq, Pseq([
40, \, 40, 40, \, 40,
\, 40, \, 40, 40, 40, \, 40
], inf)
)
).play;
});
)
(
TempoClock.playNextBar({
Pdef(\hrm,
Pbind(\instrument, \hrm,
\dur, Pseq([0.5, 0.25, 0.25], inf),
\legato, 0.5,
\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],
[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], inf),
\amp, 0.15
)
).play;
Pdef(\arp,
Pfxb(
Pbind(\instrument, \arp,
\dur, 0.25,
\legato, 0.5,
\amp, 0.2,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, Pseq([1,8,1,8,1,8,8,1,8,1,8,1,1,8,1,8], inf) - 1,
\octave, 4,
\mtranspose, 0
),
\panner, \speed, 0.3)
).play;
Pdef(\lead).pause;
});
)
(
TempoClock.playNextBar({
Pdef(\prc).pause;
Pdef(\hrm).pause;
Pdef(\arp).pause;
Pdef(\bss,
Pbind(\instrument, \bss,
\dur, 1,
\legato, 0.9,
\amp, 0.6,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, Pshuf([4, 3, 4, \, 5, 7, 8, \], inf) - 1,
\octave, 2
)
).play;
Pdef(\hat).pause;
});
)
(
/* ---------------------------------------------------------- rythm 2 */
TempoClock.playNextBar({
Pdef(\lead,
Pfxb(
Pbind(
\instrument, \lead,
\dur, 1,
\legato, 0.4,
\amp, 0.3,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, 3 - 1,
\octave, 3
),
\panner, \speed, 3.33)
).play;
Pdef(\hrm,
Pfxb(
Pbind(\instrument, \hrm,
\dur, 0.25,
\legato, 1,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, Pseq([
[4, 6, 8, 10], \, \, \, \, [3, 4, 6, 8], \, \
], inf) - 1,
\octave, 4,
\amp, 0.15
), \moog, \speed, 1)
).play;
Pdef(\arp,
Pfxb(
Pbind(\instrument, \arp,
\dur, 0.25,
\legato, 0.3,
\amp, 0.15,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, 1 - 1,
\octave, 9,
\mtranspose, 1
),
\panner, \speed, 2)
).play;
Pdef(\hat,
Pbind(\instrument, \hat,
\dur, 0.25,
\legato, 0.5,
\freq, Pseq([1, \, 1, 1], inf),
\amp, 0.4)
).count(8);
Pdef(\kik,
Pbind(\instrument, \kik,
\dur, 1,
\amp, 0.9,
\freq, 50
)
).play;
Pdef(\prc,
Pfxb(
Pbind(\instrument, \prc,
\dur, 0.25,
\legato, 0.1,
\amp, 0.5,
\freq, Pseq([
1, 1, \, 1,
1, \, 1, 1,
1, 1, 1, \,
1, 1, \, 1
], inf)
),
\chorus
)
).play;
Pdef(\bss,
Pbind(\instrument, \bss,
\dur, 0.5,
\legato, Pseq([
Pn(0.9, 12),
0.9, Pn(0.5, 3)
], inf),
\amp, 0.6,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, Pseq([
Pseq([4, 4, \, 3], 3) - 1,
Pseq([4, 3, 3, 3], 1) - 1
], inf),
\octave, 2
)
).play;
});
)
(
/* ---------------------------------------------------------- part of rythm 1 */
TempoClock.playNextBar({
Pdef(\arp).pause;
Pdef(\hrm,
Pbind(\instrument, \hrm,
\dur, Pseq([
2, 0.5, 0.5, 0.25, 0.25, 0.5,
0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 0.75,
1, 1, 0.5, 0.5, 0.25, 0.25, 0.5,
0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 0.75
], inf),
\legato, 0.5,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, Pseq([
[4, 6, 8, 10], \, [3, 4, 6, 8], [4, 6, 8, 10], [4, 6, 8, 10], \,
\, [4, 6, 8, 10], \, [4, 6, 8, 10], \, [3, 4, 6, 8], [3, 4, 6, 8], [3, 4, 6, 8], [4, 6, 8, 10],
\, [4, 6, 8, 10], \, [3, 4, 6, 8], [4, 6, 8, 10], [4, 6, 8, 10], \,
\, [4, 6, 8, 10], \, [4, 6, 8, 10], \, [3, 4, 6, 8], [3, 4, 6, 8], [3, 4, 6, 8], [4, 6, 8, 10]
], inf) - 1,
\octave, 4,
\amp, 0.15
)
).play;
});
)
(
TempoClock.playNextBar({
Pdef(\arp,
Pfxb(
Pbind(\instrument, \arp,
\dur, 0.25,
\legato, 0.3,
\amp, 0.15,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, 1 - 1,
\octave, 9,
\mtranspose, 1
),
\panner, \speed, 2)
).play;
Pdef(\hat,
Pbind(\instrument, \hat,
\dur, Pseq([
Pseq([0.25, 0.25, 0.5], 3),
Pseq([0.25, 0.25, 0.25, 0.25], 1)
], inf),
\legato, Pseq([
Pseq([0.5, 0.5, 0.7], 3),
Pn(0.5, 4)
], inf),
\freq, Pseq([1, 1, 1, \, 1, \], inf),
\amp, 0.3)
).play;
Pdef(\bss,
Pbind(\instrument, \bss,
\dur, Pseq([
1, 0.75, 0.25, 1, 0.5, 0.5,
0.5, 0.5, 0.75, 0.25, 0.5, 0.5, 0.25, 0.75
], inf),
\legato, 0.9,
\amp, 0.6,
\scale, [2, 4, 5, 7, 9, 10, 12],
\degree, Pseq([
4, \, 4, 4, \, 4,
\, 3, \, 3, 3, 4, \, 3
], inf) - 1,
\octave, 2
)
).play;
});
)
(
TempoClock.playNextBar({
Pdef(\prc,
Pfxb(
Pbind(\instrument, \prc,
\dur, 0.25,
\legato, 0.05,
\amp, 0.9,
\freq, Pseq([\, 1, \, 1, \, 1, 1, 1], inf)
),
\chorus
)
).play;
Pdef(\snr,
Pbind(\instrument, \snr,
\dur, Pseq([
Pn(1, 4),
Pn(1, 3), 0.5, 0.25, 0.25,
Pn(1, 4),
Pn(1, 3), Pn(0.25, 4)
], inf),
\amp, Pseq([
Pn(1.25, 4),
Pn(1.25, 4), 0.7, 0.7,
Pn(1.25, 4),
Pn(1.25, 3), Pn(0.7, 4)
], inf),
\degree, Pseq([
Pseq([\, 1, \, 1], 1),
Pseq([\, 1, \, 1, 1, 1], 1),
Pseq([\, 1, \, 1], 1),
Pseq([\, 1, \, 1, 1, \, 1], 1)
], inf)
)
).play;
Pdef(\hrm,
Pbind(\instrument, \hrm,
\dur, Pseq([0.5, 0.25, 0.25], inf),
\legato, 0.5,
\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],
[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], inf),
\amp, 0.15
)
).play;
});
)
/* ---------------------------------------------------------- etc, etc, etc..... */
(
TempoClock.playNextBar({
Pdef(\hrm).stop;
Pdef(\snr).stop;
Pdef(\lead).stop;
Pdef(\hat).stop;
Pdef(\arp).stop;
Pdef(\prc).stop;
Pdef(\bss).stop;
Pdef(\kik).stop;
~last = Pbind(\instrument, \hrm,
\dur, Pseq([0.5, 0.25, 0.25], inf),
\legato, 0.5,
\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],
[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], inf),
\amp, 0.15
);
~parallelFx = Ppar([
~last,
Pfx(~last, \moog, \ratio, 1),
Pfx(~last, \delay, \ratio, 1),
Pfx(~last, \distort, \ratio, 1, \pregain, 20, \amp, 0.2)
]);
Pdef(\hrm, ~parallelFx).play;
});
)
Pdef(\hrm).stop;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment