-
-
Save maedaunderscore/af347d828eb15cfc096b to your computer and use it in GitHub Desktop.
Resonz使ってみた
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
// ・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) }; | |
) |
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
// 最初 | |
( | |
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