Skip to content

Instantly share code, notes, and snippets.

@maedaunderscore
Last active August 29, 2015 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maedaunderscore/af347d828eb15cfc096b to your computer and use it in GitHub Desktop.
Save maedaunderscore/af347d828eb15cfc096b to your computer and use it in GitHub Desktop.
Resonz使ってみた
// ・Resonzのノイズは、各音の始まりだけに混じるようにする
// ・音が長いところは、後半にビブラートかける(音量に揺れができる)
// ・息継ぎがないので、どこかのタイミングで(1フレーズごと?)に音を切る
(
SynthDef(\main, { |out=0, note=81, next=81, dur=1, gate = 1, tempo=1, breath=0|
var freq = [note, note+Rand(-0.02,0.02)!3, next].midicps;
var d = dur / tempo;
var t = d / 4.0;
var freqEnv = EnvGen.ar(Env(freq, [t * 3, t], \exp));
var cross = d / 32.0;
var crossFade = EnvGen.ar(Env([0, 1,1, (1-breath),0], [0.01, d-(cross*8*breath), cross*7*breath,cross]), doneAction:2);
var main_resonz = HPF.ar(RLPF.ar((Resonz.ar(PinkNoise.ar, freqEnv, XLine.ar(0.001,0.0008, 1)) * 10), freqEnv,0.2) * (1-XLine.ar(1,0.0001,2)),1000);
var main_sin = SinOsc.ar(freqEnv + (SinOsc.kr(XLine.ar(1, 4, 1))*20), 0, Line.ar(0.001,0.1,d / 2));
var main_cross = Line.ar(0.1,0.9,d/2);
var main = main_resonz * (1 - main_cross) + (main_sin * main_cross);
var tremolo = SinOsc.ar(XLine.ar(0.001,8, 0.5),0,0.5,1);
Out.ar(out, Mix.ar(main * crossFade * tremolo))
}).add;
SynthDef(\back, { |out=0, note=81, gate = 1, dur=1|
var freq = ([note, note - 12, note -15]).midicps;
var main = LPF.ar(Mix.ar(Saw.ar(freq, [0.3, 0.2, 0.1])), note.midicps);
var env = EnvGen.ar(Env.adsr(0.01, dur, 0.3, 0.1), gate, doneAction:2);
Out.ar(out, Pan2.ar(main * env * 0.5))
}).add;
)
(
var note = Dictionary[
($a -> 69), ($b -> 71), ($c -> 72), ($d -> 74), ($e -> 76), ($f -> 77), ($g -> 79),
($A -> 81), ($B -> 83), ($C -> 84), ($D -> 86), ($E -> 88), ($F -> 89), ($G -> 91)
];
var scores = [
[ "c4 C4 B4- A4 f4+ g4 D2_! e4 E4 D4 C4 B4 C4 F2_! ",
"f2 b2 g1 c1 f1 "],
[ "G4 F4 E4 D4 C4 B4- A4 g4 D2 e2 C1_!",
"f2 d2 g1 c1 A2 g2"],
[ "c4 C4 B4- A4 f4+ g4 D2_! e4 E4 D4 C4 B4 C4 F2_! ",
"f2 b2 g1 c1 f1 "],
[ "G4 F4 E4 D4 C4 B4- A4 g4 D2 e2_! f1 g2 A2 C1_!",
"f2 d2 g1 c1 f1 c1 f1 "],
[ "*4 g4 A4 B4- B8 D8 C2.! ",
"c2 g2 f1 "],
[ "*4 A4 B4 C4 C8+ E8 D4_! *8 D8 E8 F8 G1 E1",
"d1 g2 d2 d2- g2 c2 g2"],
[ "c4 C4 B4- A4 f4+ g4 D2_! e4 E4 D4 C4 B4 C4 F2_! ",
"f2 b2 g1 c1 f1 "],
[ "G4 F4 E4 D4 C4 B4- A4 g4 D2_! E2_! F1",
"f2 d2 g1 c2 c2 f1"]
];
var zip = {|xs|
var num = xs.at(0).size;
(0..(num-1)).collect({|i|
xs.inject("", {|acc, x| acc + x.at(i)});
});
};
var main_melody = zip.value(scores).at(0);
var back_melody = zip.value(scores).at(1);
var parse = {|melody|
var trim = {|str| str.split($ ).select({|i| i != ""})};
trim.value(melody).collect{|x|
var m = x[0];
var t = x[1].asString.asInt;
var f = switch(x[2], $-, -1,$+, 1, 0);
var t2 = switch(x[2], $., 1.5, 1);
var breath = switch(x[3], $!, 1, 0);
var midi = note.at(m);
[if(midi.notNil, {(midi + f)}, nil), 4 / t * t2, breath]
};
};
var down = {|melody| melody.collect({|n| [ n[0] !? ( _ - 12 ), n[1], n[2] ]})};
var m1 = parse.value(main_melody);
var m2 = down.value(parse.value(back_melody));
var tempo = TempoClock(1.2);
var player = {|sound, melody| Routine.new{
melody.do{|n, i|
var s;
if(n[0].notNil,{
var next = melody[i+1] !? (_[0]) ? n[0];
s = Synth(sound, [
\note, n[0], \next, next,
\dur, n[1], \tempo, tempo.tempo,
\breath, n[2]
]);
});
n[1].wait;
if(s.notNil, { s.set(\gate, 0);});
}
}};
m = [player.value(\main, m1), player.value(\back, m2)];
m.do{|i| i.play(tempo) };
)
// 最初
(
SynthDef(\main, { |out=0, note=81, next=81, dur=1, gate = 1, tempo=1|
var freq = [note, note, next].midicps;
var d = dur / tempo;
var t = d / 4.0;
var freqEnv = EnvGen.ar(Env(freq, [t * 3, t], \exp));
var cross = d / 32.0;
var crossFade = EnvGen.ar(Env([0, 1,1, 0], [cross, d, cross]), doneAction:2);
var main = LPF.ar(Resonz.ar(PinkNoise.ar, freqEnv, 0.01) * 10, 800) +
SinOsc.ar(freqEnv + (SinOsc.kr(2)*20), 0, 0.1);
Out.ar(out, main * crossFade)
}).add;
SynthDef(\back, { |out=0, note=81, gate = 1, dur=1|
var freq = ([note, note - 12, note -15]).midicps;
var main = LPF.ar(Mix.ar(Saw.ar(freq, [0.3, 0.2, 0.1])), note.midicps);
var env = EnvGen.ar(Env.adsr(0.01, dur, 0.3, 0.1), gate, doneAction:2);
Out.ar(out, main * env * 0.5)
}).add;
)
(
var note = Dictionary[
($a -> 69), ($b -> 71), ($c -> 72), ($d -> 74), ($e -> 76), ($f -> 77), ($g -> 79),
($A -> 81), ($B -> 83), ($C -> 84), ($D -> 86), ($E -> 88), ($F -> 89), ($G -> 91)
];
var scores = [
[ "c4 C4 B4- A4 f4+ g4 D2 e4 E4 D4 C4 B4 C4 F2 ",
"f2 b2 g1 c1 f1 "],
[ "G4 F4 E4 D4 C4 B4- A4 g4 D2 e2 C1",
"f2 d2 g1 c1 A2 g2"],
[ "c4 C4 B4- A4 f4+ g4 D2 e4 E4 D4 C4 B4 C4 F2 ",
"f2 b2 g1 c1 f1 "],
[ "G4 F4 E4 D4 C4 B4- A4 g4 D2 e2 f1 g2 A2 C1",
"f2 d2 g1 c1 f1 c1 f1 "],
[ "*4 g4 A4 B4- B8 D8 C2. ",
"c2 g2 f1 "],
[ "*4 A4 B4 C4 C8+ E8 D4 *8 D8 E8 F8 G1 E1",
"d1 g2 d2 d2- g2 c2 g2"],
[ "c4 C4 B4- A4 f4+ g4 D2 e4 E4 D4 C4 B4 C4 F2 ",
"f2 b2 g1 c1 f1 "],
[ "G4 F4 E4 D4 C4 B4- A4 g4 D2 E2 F1",
"f2 d2 g1 c2 c2 f1"]
];
var zip = {|xs|
var num = xs.at(0).size;
(0..(num-1)).collect({|i|
xs.inject("", {|acc, x| acc + x.at(i)});
});
};
var main_melody = zip.value(scores).at(0);
var back_melody = zip.value(scores).at(1);
var parse = {|melody|
var trim = {|str| str.split($ ).select({|i| i != ""})};
trim.value(melody).collect{|x|
var m = x[0];
var t = x[1].asString.asInt;
var f = switch(x[2], $-, -1,$+, 1, 0);
var t2 = switch(x[2], $., 1.5, 1);
var midi = note.at(m);
[if(midi.notNil, {(midi + f)}, nil), 4 / t * t2]
};
};
var down = {|melody| melody.collect({|n| [ n[0] !? ( _ - 12 ), n[1] ]})};
var m1 = parse.value(main_melody);
var m2 = down.value(parse.value(back_melody));
var tempo = TempoClock(1.2);
var player = {|sound, melody| Routine.new{
melody.do{|n, i|
var s;
if(n[0].notNil,{
var next = melody[i+1] !? (_[0]) ? n[0];
s = Synth(sound, [\note, n[0], \next, next, \dur, n[1], \tempo, tempo.tempo]);
});
n[1].wait;
if(s.notNil, { s.set(\gate, 0);});
}
}};
m = [player.value(\main, m1), player.value(\back, m2)];
m.do{|i| i.play(tempo) };
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment