「サクラ」でアルゴリズム作曲 - 10.1 -
今日は、昨日やった「尺八のための2声のインベンション NO.2」の右側の方の尺八を1オクターブ下げてみる。2尺4寸管の低音の尺八と合奏しているようで、なかなかいい感じになる。
//_ 尺八のための2声のインベンション NO.2Function Compose1(Int NoN, Array LoN){ Array Scale=({レ},{レ#},{ファ},{ソ},{ソ#},{`ド},{`レ},{ファ},{`ソ},{`ソ#},{``ド},{``レ#}) Str ML={} Int N=0 Int M [(NoN) N++ M=12 If (N<40) m="6}">160) {M=7}
ML=ML+Scale(Random(0,M))+RandomSelect(LoN) ] Result=ML}TR(1) P(64-50) V(120) v.Random(60) REV(100) q080 音色(Shakuhachi) o4TR(2) P(64+50) V(080) v.Random(60) REV(100) q080 音色(Shakuhachi) o3#Part1=Compose1(200,(4,4,8))#Part2=Compose1(200,(4,4,8))Tempo(112)TR(1) #Part1 TR(2) #Part2//_______ ここまで _______________
昨日録音したGMセットのSoundFontの尺八の音がちょっとこもった音なので、今日は尺八単独のSoundFontを使って演奏させてみた。
「サクラ」でアルゴリズム作曲 - 10 -
今日は、昨日やった「尺八のための2声のインベンション」のスケール定義を変えて演奏させてみる。使う音域の範囲も、前半、中間、後半と3段階に変えてみた。
//_ 尺八のための2声のインベンション NO.2Function Compose1(Int NoN, Array LoN){ Array Scale=({レ},{レ#},{ファ},{ソ},{ソ#},{`ドレ},{`レ},{ファ},{`ソ},{`ソ#},{``ド},{``レ#}) Str ML={} Int N=0 Int M [(NoN) N++ M=12 If (N<40) m="6}">160) {M=7} ML=ML+Scale(Random(0,M))+RandomSelect(LoN) ] Result=ML}TR(1) P(64-50) V(100) v.Random(60) REV(100) q080 音色(Shakuhachi)TR(2) P(64+50) V(100) v.Random(60) REV(100) q080 音色(Shakuhachi)#Part1=Compose1(200,(4,4,8))#Part2=Compose1(200,(4,4,8))Tempo(112)TR(1) #Part1 TR(2) #Part2//_______ ここまで _______________
「サクラ」でアルゴリズム作曲 - 9 -
今日は、「
サクラ」でアルゴリズム作曲シリーズ7とほぼ同じものを、二本の尺八でやってみる。題して「尺八のための2声のインベンション」だ。
尺八のほぼ全音域の音をランダムに120音生成してみる。最初の方は、高音の音を使わないようにして変化を作ってみた。尺八の音は、GM音源に標準で入っている。
//_ 尺八のための2声のインベンション NO.1Function Compose1(Int NoN, Array LoN){ Array Scale=({レ},{ファ},{ソ},{ラ},{`ド},{`レ},{`ファ},{`ソ},{`ソ#},{`ラ},{``ド},{``レ}) Str ML={} Int N=0 Int M [(NoN) N++ If (N<40) m="6}" m="12}
ML=ML+Scale(Random(0,M))+RandomSelect(LoN)
] Result=ML
}
TR(1) P(64-50) V(080) v.Random(60) REV(100) q080 音色(Shakuhachi)
TR(2) P(64+50) V(080) v.Random(60) REV(100) q080 音色(Shakuhachi)
#Part1=Compose1(120,(4,4,8))
#Part2=Compose1(120,(4,4,8))
Tempo(112)
TR(1) #Part1 TR(2) #Part2
//_______ ここまで _______________
_
「サクラ」でアルゴリズム作曲 - 8.1 -
今日は、昨日やった「笛と太鼓による官能的な神楽」をちょっとアレンジしてみた。
一つは、太鼓を2台にして左右に配置してみる。もう一つは、笛の音の音程を微妙にずらして、笛っぽい感じを出してみる。
//_ 笛と太鼓による官能的な神楽Function Compose1(Int NoN, Array LoN){Array Scale=({``レ},{p%-200``ミ},{``ファ},{p%-200``ラ},{``シ},{```レ},{p%-20```ミ}) Str ML={}[(NoN) ML=ML+Scale(Random(0,7))+RandomSelect(LoN)] Result=ML}Function Compose2(Int NoN, Array LoN){Array Scale=({ド},{ミ},{ソ}) Str ML={}[(NoN) ML=ML+Scale(Random(0,3))+RandomSelect(LoN)] Result=ML}TR(1) P(64-10) V(080) v.Random(60) REV(100) q080 音色(Piccolo)TR(2) P(64+10) V(080) v.Random(60) REV(100) q080 音色(Piccolo)TR(3) P(64-50) V(120) v.Random(60) REV(100) q080 音色(TaikoDrum)TR(4) P(64+50) V(120) v.Random(60) REV(100) q080 音色(TaikoDrum)#Part1=Compose1(120,(2,4))#Part2=Compose1(120,(2,4))#Part3=Compose2(240,(4,8))#Part4=Compose2(240,(4,8))Tempo(240)TR(1) #Part1 TR(2) #Part1 TR(3) #Part3 TR(4) #Part4//_______ ここまで _______________
「サクラ」でアルゴリズム作曲 - 8 -
今日は、「
サクラ」でアルゴリズム作曲シリーズ7とほぼ同じものを、笛と太鼓でやってみる。題して「笛と太鼓による官能的な神楽」だ。
笛の感じは、ピッコロの高域の音で表現してみた。太鼓の音はGM音源に入っている。
//_ 笛と太鼓による官能的な神楽Function Compose1(Int NoN, Array LoN){Array Scale=({``レ},{``ミ},{``ファ},{``ラ},{``シ},{```レ},{```ミ}) Str ML={}[(NoN) ML=ML+Scale(Random(0,7))+RandomSelect(LoN)] Result=ML}Function Compose2(Int NoN, Array LoN){Array Scale=({ド},{ミ},{ソ}) Str ML={}[(NoN) ML=ML+Scale(Random(0,3))+RandomSelect(LoN)] Result=ML}TR(1) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Piccolo)TR(2) P(64-10) V(100) v.Random(60) REV(100) q080 音色(Piccolo)TR(3) P(64+30) V(100) v.Random(60) REV(100) q080 音色(TaikoDrum)#Part1=Compose1(120,(2,4))#Part2=Compose1(120,(2,4))#Part3=Compose2(240,(4,8))Tempo(220)TR(1) #Part1 TR(2) #Part2 TR(3) #Part3//_______ ここまで _______________
「サクラ」でアルゴリズム作曲 - 7.1 -
昨日やった「三弦と鼓による風雅2006」、鼓の音がGM音源にないのでSynthDrumで代用している。
そこで、SoundFontに鼓の音がないかを探してみたら、これが簡単に見つかった。ということで、今日は鼓のSoundFont版を作ってみた。
//_ 三弦と鼓による風雅2006
Function Compose1(Int NoN, Array LoN){
Array Scale=({"シ},{レ},{ミ},{ファ},{ラ},{シ},{`レ},{`ミ})
Str ML={}[(NoN) ML=ML+Scale(Random(0,8))+RandomSelect(LoN)] Result=ML
}
Function Compose2(Int NoN, Array LoN){
Array Scale=({""ソ},{""ソ},{""ファ#}) // for asia_ethnic.sf2
Str ML={}[(NoN) ML=ML+Scale(Random(0,3))+RandomSelect(LoN)] Result=ML
}
TR(1) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Shamisen)
TR(2) P(64-00) V(100) v.Random(60) REV(100) q080 音色(Shamisen)
TR(3) P(64+30) V(100) v.Random(60) REV(100) q080 音色(SynthDrum)
#Part1=Compose1(120,(2,4)) #Part2=Compose1(120,(2,4))
#Part3=Compose2(060,(1,2))
TR(1) #Part1 TR(2) #Part2 TR(3) #Part3
//_______ ここまで _______________

「サクラ」でアルゴリズム作曲 - 7 -
今日は、「
サクラ」でアルゴリズム作曲シリーズ6をちょっと変更して三味線と鼓で演奏させてみる。
鼓は日本の伝統的な楽器のひとつで、砂時計型の胴の両面に皮を張った打楽器だ。
鼓
http://ja.wikipedia.org/wiki/%E9%BC%93鼓は、胴の両面に皮を張っている緒を締めたりめたりゆるめたりすることで、音色を変えることができる。この感じを、GM音源のSynthDrumを使って表現してみる。
//_ 三弦と鼓による風雅2006Function Compose1(Int NoN, Array LoN){Array Scale=({"シ},{レ},{ミ},{ファ},{ラ},{シ},{`レ},{`ミ}) Str ML={}[(NoN) ML=ML+Scale(Random(0,8))+RandomSelect(LoN)] Result=ML}Function Compose2(Int NoN, Array LoN){Array Scale=({``ミ-},{``ラ-},{``シ-}) Str ML={}[(NoN) ML=ML+Scale(Random(0,3))+RandomSelect(LoN)] Result=ML}TR(1) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Shamisen)TR(2) P(64-00) V(100) v.Random(60) REV(100) q080 音色(Shamisen)TR(3) P(64+30) V(100) v.Random(60) REV(100) q080 音色(SynthDrum)#Part1=Compose1(120,(2,4)) #Part2=Compose1(120,(2,4))#Part3=Compose2(060,(1,2))TR(1) #Part1 TR(2) #Part2 TR(3) #Part3//_______ ここまで _______________
「サクラ」でアルゴリズム作曲 - 6.3 -
今日は、「二面の箏による即興的断章」のスケール定義を「古今調子」にして演奏させてみる。
古今調子というのは、江戸時代後期に吉沢検校が雅楽の盤渉調からヒントを得て考案された調弦法で、「千鳥の曲」という有名な曲がある。
生田流お琴教室 お箏の調弦法
http://www.shamisen.info/tyougen_koto/tyougen-koto.html今日は、プログラムをちょっと変更して、一章と二章の演奏の部分を共通化して繰り返し構文にしてみた。各章で異なる部分は、Swtch~Caseコマンドで切り分けてある。
//_ 二面の箏による即興的断章Function Compose(Int NoN, Array LoN){Array Scale=({レ},{ソ},{"ラ},{ド},{レ},{レ#},{ソ},{ラ},{`ド},{`レ},{`レ#},{`ソ},{`ラ}) Str ML={} [(NoN) ML=ML+Scale(Random(0,13))+RandomSelect(LoN) ] Result=ML}TR(1) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Koto)TR(2) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Koto)TR(3) P(64+30) V(100) v.Random(60) REV(100) q080 音色(Koto)TR(4) P(64+30) V(100) v.Random(60) REV(100) q080 音色(Koto)INT CN=0 INT Pos INT N INT NN[2 CN++ Switch (CN){ Case (1){Tempo(096) NN=050} // 一章 Case (2){Tempo(240) NN=100} // 二章 } #Part1=Compose(NN,(1,2,4)) #Part2=Compose(NN,(1,2,4)) #Part3=Compose(NN,(1,2,4)) #Part4=Compose(NN,(1,2,4)) TR(1) #Part1 TR(2) #Part2 TR(3) #Part3 TR(4) #Part4 Pos=Time N=0 [4 N++ TR(N) Time(Pos) [4 r1] ]]//_______ ここまで _______________
「サクラ」でアルゴリズム作曲 - 6.2 -
今日は、「二面の箏による即興的断章」のパートの一つを十七弦にしてみる。箏というのは、普通は十三弦で、昨日までのスケールの定義も実際の十三弦の平調子に設定してある。
箏
http://ja.wikipedia.org/wiki/%E7%AD%9D今日は向かって右の方から出しているパートの音を1オクターブ下にすることで、低音パートを受け持つ十七弦の感じを出してみる。
//_ 二面の箏による即興的断章Function Compose(Int NoN, Array LoN){Array Scale=({レ},{"ソ},{"ラ},{"ラ#},{レ},{レ#},{ソ},{ラ},{ラ#},{`レ},{`レ#},{`ソ},{`ラ}) Str ML={} [(NoN) ML=ML+Scale(Random(0,13))+RandomSelect(LoN) ] Result=ML}TR(1) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Koto) o5TR(2) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Koto) o5TR(3) P(64+30) V(100) v.Random(60) REV(100) q080 音色(Koto) o4//_一章#Part1=Compose(50,(1,2,4)) #Part2=Compose(50,(1,2,4))#Part3=Compose(50,(1,2,4))Tempo(096)TR(1) #Part1 TR(2) #Part2 TR(3) #Part3INT Pos=Time INT N=0 [3 N++ TR(N) Time(Pos) [4 r1] ]//_二章#Part1=Compose(100,(1,2,4)) #Part2=Compose(100,(1,2,4))#Part3=Compose(100,(1,2,4))Tempo(240)TR(1) #Part1 TR(2) #Part2 TR(3) #Part3//_______ ここまで _______________
「サクラ」でアルゴリズム作曲 - 6.1 -
昨日作った「二面の箏による即興的断章」では、箏の各パートは同時に一つの音だけを出している。
実際の琴の演奏では、主に親指、人差し指、中指の3本(この3本には爪を使う)を使って演奏する。現代邦楽では、爪を使っていない指も含めて5本全部を使うなんていうこともある。
そこで、昨日の作品をちょっと変更して、一つのパートに二つの音を割りあててみた。ちょっと難しい曲の感じになって、より現代邦楽作品っぽくなる。
//_ 二面の箏による即興的断章Function Compose(Int NoN, Array LoN){Array Scale=({レ},{"ソ},{"ラ},{"ラ#},{レ},{レ#},{ソ},{ラ},{ラ#},{`レ},{`レ#},{`ソ},{`ラ}) Str ML={} [(NoN) ML=ML+Scale(Random(0,13))+RandomSelect(LoN) ] Result=ML}TR(1) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Koto)TR(2) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Koto)TR(3) P(64+30) V(100) v.Random(60) REV(100) q080 音色(Koto)TR(4) P(64+30) V(100) v.Random(60) REV(100) q080 音色(Koto)//_一章#Part1=Compose(50,(1,2,4)) #Part2=Compose(50,(1,2,4))#Part3=Compose(50,(1,2,4)) #Part4=Compose(50,(1,2,4))Tempo(096)TR(1) #Part1 TR(2) #Part2 TR(3) #Part3 TR(4) #Part4INT Pos=Time INT N=0 [4 N++ TR(N) Time(Pos) [4 r1] ]//_二章#Part1=Compose(100,(1,2,4)) #Part2=Compose(100,(1,2,4))#Part3=Compose(100,(1,2,4)) #Part4=Compose(100,(1,2,4))Tempo(240)TR(1) #Part1 TR(2) #Part2 TR(3) #Part3 TR(4) #Part4//_______ ここまで _______________
「サクラ」でアルゴリズム作曲 - 6 -
「
サクラ」でアルゴリズム作曲シリーズの4と5のアルゴリズムはとても簡単なもので、定義した音階の中からランダムに音を選ぶという方法だ。今日は、この音階の定義を日本の「平調子」という音階にしてみる。
生田流お琴教室 お箏の調弦法
http://www.shamisen.info/tyougen_koto/tyougen-koto.htmlこの平調子というのは、琴の曲などにもよく使われる音階なので、今日は音色を琴にして演奏させてみる。題して、「二面の箏による即興的断章」。1章と2章の構成にして、2章の方のテンポを早めに設定してみた。
//_ 二面の箏による即興的断章Function Compose(Int NoN, Array LoN){Array Scale=({レ},{"ソ},{"ラ},{"ラ#},{レ},{レ#},{ソ},{ラ},{ラ#},{`レ},{`レ#},{`ソ},{`ラ}) Str ML={} [(NoN) ML=ML+Scale(Random(0,13))+RandomSelect(LoN) ] Result=ML}TR(1) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Koto)TR(2) P(64+30) V(100) v.Random(60) REV(100) q080 音色(Koto)//_一章#Part1=Compose(50,(1,2,4)) #Part2=Compose(50,(1,2,4))Tempo(096)TR(1) #Part1 TR(2) #Part2INT Pos=Time TR(1) Time(Pos) [4 r1] TR(2) Time(Pos) [4 r1]//_二章#Part1=Compose(100,(1,2,4)) #Part2=Compose(100,(1,2,4))Tempo(240)TR(1) #Part1 TR(2) #Part2//_______ ここまで _______________
「サクラ」でアルゴリズム作曲 - 5.2 -
昨日は、Tromboneの音を土台に、FrenchHornの音を3度上の音、Trumpetの音を5度上の音になるように関数Compose()を変更してみたのだが、今度は逆にちょっと単調になってしまった。
そこで今日は、3つパートの音の長さは同じにして、音程を基準になる音から3度と5度と2度(ちょっと味付け)の音をランダムに選ぶように変更してみた。
//_ 3本の金管楽器ののための FantasiaArray Scale=({"ソ},{"ラ},{"シ},{ド},{レ},{ミ},{ファ},{ソ})Str ML1={} Str ML2={} Str ML3={} Int NN Int NL Str NMFunction Compose(Int NoN, Array LoN){ [(NoN) NM=Scale(Random(0,8)) NN=NoteNo(NM) NL=RandomSelect(LoN) ML1=ML1+{n(}+(NN+RandomSelect(0,2,4,7))+{)}+NL ML2=ML2+{n(}+(NN+RandomSelect(0,2,4,7))+{)}+NL ML3=ML3+{n(}+(NN+RandomSelect(0,2,4,7))+{)}+NL ]}Compose(48,(1,2,4,4))#Part1=ML1#Part2=ML2#Part3=ML3Tempo(112)TR(1) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Trumpet)TR(2) P(64-00) V(100) v.Random(60) REV(100) q080 音色(FrenchHorn)TR(3) P(64+30) V(100) v.Random(60) REV(100) q080 音色(Trombone)TR(1) #Part1 TR(2) #Part2 TR(3) #Part3//--------- ここまで ----------
「サクラ」でアルゴリズム作曲 - 5.1 -
昨日やった「3本の金管楽器ののための Fantasia」だが、全部の金管楽器の音を12音階でランダムに作ると、ちょっとごちゃごちゃした感じになってしまう。
そこで、Tromboneの音を土台に、FrenchHornの音を3度上の音、Trumpetの音を5度上の音になるように関数Compose()を変更してみた。これで、かなりファンファーレっぽい音楽が生成される。
//_ 3本の金管楽器ののための FantasiaArray Scale=({"ソ},{"ラ},{"シ},{ド},{レ},{ミ},{ファ},{ソ})Str ML1={} Str ML2={} Str ML3={} Int NN Int NL Str NMFunction Compose(Int NoN, Array LoN){ [(NoN) NM=Scale(Random(0,8)) NN=NoteNo(NM) NL=RandomSelect(LoN) ML1=ML1+{n(}+(NN+7)+{)}+NL ML2=ML2+{n(}+(NN+4)+{)}+NL ML3=ML3+{n(}+(NN+0)+{)}+NL ]}Compose(48,(1,2,4,4))#Part1=ML1#Part2=ML2#Part3=ML3Tempo(112)TR(1) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Trumpet)TR(2) P(64-00) V(100) v.Random(60) REV(100) q080 音色(FrenchHorn)TR(3) P(64+30) V(100) v.Random(60) REV(100) q080 音色(Trombone)TR(1) #Part1 TR(2) #Part2 TR(3) #Part3//--------- ここまで ----------
「サクラ」でアルゴリズム作曲 - 5 -
「ドリア旋法による古風な愛の歌」で使ったアルゴリズムは、定義した音階の中からランダムに音を選ぶという方法なので、この音階を変えれば色々と応用ができる。
今日は、音階をミクソリディア旋法にして、金管楽器で演奏させてみる。題して「3本の金管楽器ののための Fantasia」だ。
ミクソリディア旋法
http://www.mab.jpn.org/lib/exp/cmodes/char.html#Mixolydian-mode//_ 3本の金管楽器ののための FantasiaFunction Compose(Int NoN, Array LoN){Array Scale=({"ソ},{"ラ},{"シ},{ド},{レ},{ミ},{ファ},{ソ}) Str ML={} [(NoN) ML=ML+Scale(Random(0,8))+RandomSelect(LoN) ] Result=ML}#Part1=Compose(48,(1,2,4))#Part2=Compose(48,(1,2,4))#Part3=Compose(48,(1,2,4))Tempo(112)TR(1) P(64-30) V(100) v.Random(60) REV(100) q080 音色(Trumpet)TR(2) P(64-00) V(100) v.Random(60) REV(100) q080 音色(FrenchHorn)TR(3) P(64+30) V(100) v.Random(60) REV(100) q080 音色(Trombone)TR(1) #Part1 TR(2) #Part2 TR(3) #Part3//--------- ここまで ----------
「サクラ」でアルゴリズム作曲 - 4.2 -
今日は、「ドリア旋法による古風な愛の歌」をVocalとHarpのSoundFontを使って演奏させてみる。また、違った感じにできあがる。

「サクラ」でアルゴリズム作曲 - 4.1 -
昨日やってみた「ドリア旋法による古風な愛の歌」、あんなに単純なアルゴリズムなのに、なかなか雰囲気のある曲ができたような気がする。
今日は、昨日と同じものを楽器を変えてやってみたい。歌の部分をイングリッシュホルン、伴奏の部分をギターにしてみた。伴奏の部分のみギターっぽくするため、パートを一つ増やしてみた。
//_ ドリア旋法による古風な愛の歌
Function Compose(Int NoN, Array LoN){
Array Scale=({レ},{ミ},{ファ},{ソ},{ラ},{シ},{`ド},{`レ})
Str ML={}
[(NoN)
ML=ML+Scale(Random(0,8))+RandomSelect(LoN)
]
Result=ML
}
#Oboe=Compose(68,(1,2,4))
#Harp1=Compose(68,(1,2,4))
#Harp2=Compose(68,(1,2,4))
#Harp3=Compose(68,(1,2,4))
Tempo(112)
TR(1) P(64+30) V(120) v.Random(60) REV(100) q080 音色(EnglishHorn)
TR(2) P(64-30) V(060) v.Random(60) REV(100) q080 音色(SteelcGuitar)
TR(3) P(64-40) V(060) v.Random(60) REV(100) q080 音色(NylonGuitar)
TR(4) P(64-50) V(060) v.Random(60) REV(100) q080 音色(NylonGuitar)
TR(1) #Oboe TR(2) #Harp1 TR(3) #Harp2 TR(4) #Harp3
//_______ ここまで _______________

「サクラ」でアルゴリズム作曲 - 4 -
今日は 「サクラ」でアルゴリズム作曲シリーズの4曲目をやってみる。題して、「ドリア旋法による古風な愛の歌」だ。
ドリア旋法というのは、教会旋法の中の一つで、単調に近い音階ということもあって、なかなか哀愁のあるメロディーができる。
リア旋法
http://www.mab.jpn.org/lib/exp/cmodes/char.html#Dorian-modeアルゴリズム作曲の部分はとても単純だ。ドリア旋法の音階を配列に入れ、この中から音をランダムに選び出すという方法だ。
楽器は、旋律に相当するパートをオーボエ、伴奏にあたるパートをハープにしてみた。
//_ ドリア旋法による古風な愛の歌Function Compose(Int NoN, Array LoN){ Array Scale=({レ},{ミ},{ファ},{ソ},{ラ},{シ},{`ド},{`レ}) Str ML={} [(NoN) ML=ML+Scale(Random(0,8))+RandomSelect(LoN) ] Result=ML}#Oboe=Compose(68,(1,2,4))#Harp1=Compose(68,(1,2,4))#Harp2=Compose(68,(1,2,4))Tempo(112)TR(1) P(64+30) V(120) v.Random(60) REV(100) q080 音色(Oboe)TR(2) P(64-30) V(060) v.Random(60) REV(100) q080 音色(OrchestralHarp)TR(3) P(64-40) V(060) v.Random(60) REV(100) q080 音色(OrchestralHarp)TR(1) #Oboe TR(2) #Harp1 TR(3) #Harp2//_______ ここまで _______________
「サクラ」でアルゴリズム作曲 - 3.1 -
昨日は、サキソフォンの四重奏をやってみたのだが、四重奏といえばやっぱり弦楽四重奏だ。今日は、昨日の作品をちょっとアレンジして、全く同じアルゴリズムで弦楽四重奏版を作ってみる。
弦楽四重奏には、バイオリン2台、ビオラ、チェロが使われることが多い。バイオリン、ビオラ、チェロは、4本の弦があり、バイオリンが下の方から、o4ソ・o5レ・o5ラ・o6ミ、チェロが下の方から、o3ド・o3ソ・o4レ・o4ラ、ビオラがチェロの1オクターブ上、というよに調弦されている。
音域の指定を、下限を一番低い弦、上限を一番高い弦の1オクターブ上の音までに設定してみる。
//_ 弦楽四重奏のためのエレジー
Function Compose(STR L_N, STR U_N, INT NoN, Array LoN){
STR ML={}
[(NoN)
ML=ML+{n(}+Random(NoteNo(L_N),NoteNo(U_N))+{)}+RandomSelect(LoN)
]
Result=ML
}
#Violin1=Compose({o4ソ},{o7ミ},100,(1,2,4,8))
#Violin2=Compose({o4ソ},{o7ミ},100,(1,2,4,8))
#Viola=Compose({o4ド},{o6ラ},100,(1,2,4,8))
#Cello=Compose({o3ド},{o5ラ},100,(1,2,4,8))
TR(1) P(64-50) V(120) v.Random(60) REV(100) q080 音色(Violin)
TR(2) P(64-15) V(120) v.Random(60) REV(100) q080 音色(Violin)
TR(3) P(64+15) V(120) v.Random(60) REV(100) q080 音色(Viola)
TR(4) P(64+50) V(120) v.Random(60) REV(100) q080 音色(Cello)
TR(1) #Violin1 TR(2) #Violin2 TR(3) #Viola TR(4) #Cello
//_______ ここまで _______________

「サクラ」でアルゴリズム作曲 - 3 -
ちょっと間があいてしまったが、今日は 「
サクラ」でアルゴリズム作曲シリーズの3曲目をやってみる。
題して、「サキソフォン四重奏のためのエレジー」だ。
サキソフォンには、5度づつ音域が違う、ソプラノ、アルト、テナー、バリトンの4つの種類がある。
サキソフォンの種類
http://kou-sa.xrea.jp/music/wood/saxophone/saxophone.htmlGM音源にも、この4種類のサキソフォンの音色が定義されており、各々の楽器と同じ音域で音を出せば、より楽器に近い音を出すことができる。
MML演習6で、音域を指定して音をランダムに作る関数を作ったので、これを応用して、前回使ったアルゴリズム作曲の関数(Compose)をちょっと変更してみた。
関数 Compose(B_N,R_N,NoN,LoN)L_N・・・・音域の下限を指定
U_N・・・・音域の上限を指定
NoN・・・・音をいくつ作るかを指定
LoN・・・・音符の種類(セット)を指定
//_ サキソフォン四重奏のためのエレジーFunction Compose(STR L_N, STR U_N, INT NoN, Array LoN){ STR ML={} [(NoN) ML=ML+{n(}+Random(NoteNo(L_N),NoteNo(U_N))+{)}+RandomSelect(LoN) ] Result=ML}#Part1=Compose({o4ラ-},{o7ミ-},100,(1,2,4,8)) // SopranoSax#Part2=Compose({o4レ-},{o6ラ-},100,(1,2,4,8)) // AltoSax#Part3=Compose({o3ラ-},{o6ミ-},100,(1,2,4,8)) // TenorSax#Part4=Compose({o3レ-},{o5ラ-},100,(1,2,4,8)) // BaritoneSaxTR(1) P(64-40) V(120) v.Random(60) REV(100) q080 音色(SopranoSax)TR(2) P(64-10) V(100) v.Random(60) REV(100) q080 音色(AltoSax) TR(3) P(64+10) V(120) v.Random(60) REV(100) q080 音色(TenorSax) TR(4) P(64+40) V(100) v.Random(60) REV(100) q080 音色(BaritoneSax)TR(1) #Part1 TR(2) #Part2 TR(3) #Part3 TR(4) #Part4//_______ ここまで _______________
「サクラ」でMML演習6(続き4)
昨日は、左手の音も右手の音もランダムな音にしてみたのだが、今日は、右手の音のみをランダムにしたり、左手の音のみをランダムにしたらどうなるかをやってみる。
//_______ ここから _______________
Function Lnote(){Result=n(Random(NoteNo(o3ミ),NoteNo(o4ラ)))}
Function Rnote(){Result=n(Random(NoteNo(o4ソ),NoteNo(o6レ)))}
#L1={l4 "a "g# "g "f# "f "e "d "c}
#L2={< "b "a "g "f l1 "e}
#R1={l12 rca rdb re`c r`ce r`da r`cg rbf rae}
#R2={rde rcd r"bc r"a"b r"g#"a"bcd l4 eb }
Tempo(60)
TR(1) q120 v.Random(60) 音色(Vibraphone)
TR(2) q100 v.Random(60) 音色(Vibraphone)
[2
TR(1) o5 #L1 #L2
TR(2) [12 l12 r [2 Rnote()]] [1 r [5 Rnote()] l4 [2 Rnote()]]
]
[2
TR(1) [12 l4 Lnote()] [1 l1 Lnote()]
TR(2) o5 #R1 #R2
]
//_______ ここまで _______________

音源は、パソコン内蔵の Microsoft GS Wavetable SW Synth だ。
「サクラ」でMML演習6(続き3)
今日は、素敵な即興演奏講座6で使っているフレーズの「三連符」の音を、プログラムでランダムに作ったら面白い作品ができるのではないかと考え、プログラムを作成してみた。
今日のポイントは、指定の音域の音をランダムに作るという方法だ。
関数NoteNoは、引数で指定されたMMLの音を数値にして返す。例えば、次のようにすれば、中央「ド」の下の「ラ」から、その1オクターブ下の「ミ」までの音がランダムに作られる。
n(Random(NoteNo(o3ミ),NoteNo(o4ラ)))
下のプログラムには、左手のための音を作る関数Lnote()と、右手の音を作る関数Rnote()を定義してある。
//_______ ここから _______________
Function Lnote(){Result=n(Random(NoteNo(o3ミ),NoteNo(o4ラ)))}
Function Rnote(){Result=n(Random(NoteNo(o4ソ),NoteNo(o6レ)))}
Tempo(60)
TR(1) q120 v.Random(60) 音色(Vibraphone)
TR(2) q100 v.Random(60) 音色(Vibraphone)
[4
TR(1) [12 l4 Lnote()] [1 l1 Lnote()]
TR(2) [12 l12 r [2 Rnote()]] [1 r [5 Rnote()] l4 [2 Rnote()]]
]
//_______ ここまで _______________

音源は、昨日と同じSynth1を使っている。
「サクラ」でMML演習6(続き2)
昨日、「音源のチェックにも便利かもしれない」と書いたのだが、早速、ソフトシンセの音を、このフレーズでチェックしてみた。
VSTiとして使えるソフトシンセで、
Synth1という有名なフリーソフトがある。Synth1をインストールすると、BANK0には、GM互換の音色がセットされる。
この音がどんな音なのかを聴いてみることにする。「
サクラ」のプログラムは、昨日と同じだ。

「サクラ」でMML演習6(続き1)
今日は、素敵な即興演奏講座6のフレーズをピアノ以外の楽器でやってみる。音色が変わるとまた別の雰囲気が味わえる。
楽器の切り替えの例として、MusicBox、TubularBells、Marimba、Vibraphoneでやってみる。
SWITCH~CASE文で楽器を切り替えているので、プログラムを適当に変えて、いろんな楽器を試して欲しい。
//_______ ここから _______________
#L1={l4 "a "g# "g "f# "f "e "d "c}
#L2={< "b "a "g "f l1 "e}
#R1={l12 rca rdb re`c r`ce r`da r`cg rbf rae}
#R2={rde rcd r"bc r"a"b r"g#"a"bcd l4 eb }
Tempo(60)
TR(1) q120 v.Random(60)
TR(2) q100 v.Random(60)
INT Inst INT N=0 [4 N++
SWITCH(N){
CASE(4){Inst=(Vibraphone)}
CASE(3){Inst=(Marimba)}
CASE(2){Inst=(TubularBells)}
CASE(1){Inst=(MusicBox)}
}
TR(1) @(Inst) o5 #L1 #L2 TR(2) @(Inst) o5 #R1 #R2
]
//_______ ここまで _______________

「サクラ」でMML演習6(グラフィック譜)
素敵な即興演奏講座6には、実は
ピアノのためのグラフィック譜というのが付いている。丸い雫が右手・その下波模様が左手だという。

「サクラ」で演奏させたものを下のプレーヤーで聴きながら、この画像を鑑賞?して欲しい。
「サクラ」でMML演習6(修正版)
昨日やってみた素敵な即興演奏講座6で、一部まちがっている部分があるという鋭い指摘が作者のpocpruさんからあった。ということで、今日は修正版を掲載します。
それと、後半の2回の繰り返しの微妙に音量をづらした部分の値を少し上げて、効果のかかり具合を大きくしてある。
//_______ ここから _______________
Int Pos
#L1={l4 "a "g# "g "f# "f "e "d "c}
#L2={< "b "a "g "f l1 "e}
#R1={l12 rca rdb re`c r`ce r`da r`cg rbf rae}
#R2={rde rcd r"bc r"a"b r"g#"a"bcd l4 eb }
Tempo(60)
TR(1) @(GrandPiano) q120
TR(2) @(GrandPiano) q100
TR(1) o5 #L1 #L2 #R1 #R2
Pos=Time TR(1) Time(Pos) TR(2) Time(Pos)
[2
TR(1) o5 #L1 #L2
TR(2) o5 #R1 #R2
]
[2
TR(1) v.Random(60) o5 #L1 #L2
TR(2) v.Random(60) o5 #R1 #R2
]
//_______ ここまで _______________

録音の方は、sfz+SoundFontを使ってやってみた。
「サクラ」でMML演習6
今日は久しぶりに、picoruさんのピアノのための「素敵な即興演奏講座」を題材にしてみる。
====== 素敵な即興演奏講座6 ======今回、左手は4分の4拍子で1拍ずつ弾きます。
4分の4拍子は、学校で習うはずなので分かりますね?
右手は3連符の3つの内、最初はお休みして後ろの2つだけを弾きます。
3連符とは、1拍の長さを3つに分割した時に発生する3つの音符を言います。
では左手から、真ん中のドからド→シ→ラと左へ音を下がってください。
その「ラ」の音から始めます。
まずラ→♭ラ→ソ→♭ソと、白鍵と黒鍵を交互に半音ずつ左方向、低い音域へ音を下がって弾いていきましょう。
次はファ→ミ→レ→ドと白鍵を順番に下がります。ここまでで1フレーズです。
更にシ→ラ→ソ→ファと下がり、最後、→ミの音を4拍のばします。
NEXT右手、真ん中のドから。ずっと白鍵です。
少し指を開いて「ド」に親指と、そこからレミファソラと右方向へ上がった「ラ」の音に小指を置きます。その手の形で最初は固定してください。
まず「ッドラ」「ッレシ」「ッミド」と3連符の後ろ2拍を、下から上へ順番に弾きます。最後4拍目は「ッドミ」と3拍目の音を逆に下がってください。
次は少し手の間隔を縮めて、先ほどの「ッドミ」のドの1つ上レの音から「ッレラ」「ッドソ」「ッシファ」「ッラミ」と左方向へ同じ手の形で下がっていきます。ここまでで1フレーズです。
更に手の感覚を縮めて隣同士の音に指を置き、先ほどの「ッラミ」のミの1つ下レの音から「ッレミ」「ッドレ」「ッシド」「ッラシ」と、同じ手の形で下がっていきます。
右手は最後が難しいです。先ほどの「ッラシ」のラの半音下♯ソの音から、「ッ♯ソラシドレ」と狭く上がった後は、1拍ずつ「ミ」「シ」と上へ少し広く上がって弾きます。
さて両手を合わせて弾いてみましょう。
お尻まで行ったら最初に戻ります(適当に繰り返して終わってね)。
今回のテーマは「雨」です。しっとりとゆっくり弾いてください。
覚えれば初心者でも簡単に弾ける曲のハズ。。。
======= ==================== ======さて、今日のポイントは
三連符だ。いままで、三連符はやっていなかったような気がする。
「サクラ」で音符の長さを指定するには、
l(n)というコマンドを使う。ここでの n の値は、1小節を n 分割するという意味だ。だから、n=2 というのは1小節を2分割するということで2部音符になる。n=8 は、1小節を8分割するから8部音符ということになる。
今回使う三連符は4部音符を3分割するわけだから、1小節に換算すると12分割すると同じ長さになる。ということで、4部音符1拍に相当する三連符の指定はn=12になるので、l12 というのが長さの指定になる。
今日は、もう一つ、
音量をランダムに変えるというのをやってみる。人間が楽器を演奏する場合は、キーと指の関係が音程により微妙に異なるから、同じ強さで弾いているつもりでも音量が全く同じになるということはない。この辺が、コンピュータで演奏させると機械的な音になってしまう原因だ。
そこで、この機械的な音量を、わざと微妙にランダムにずらしてしまえば、人が弾く演奏に近くなるのではないかということで、これをやってみることにする。
両手の演奏のフレーズを4回繰り返すことにして、最初の2回の繰り返しを同じ音量、後の2回の繰り返しを微妙に音量をづらして見る。
//_______ ここから _______________
Int Pos
#L1={l4 "a "g# "g "f# "f "e "d "c}
#L2={< "b "a "g "f l1 "e}
#R1={l12 rca rdb re`c r`ce rda rcg r"bf r"ae}
#R2={rde rcd r"bc r"a"b r"g#"a"bcd l4 eb }
Tempo(60)
TR(1) @(GrandPiano) q120
TR(2) @(GrandPiano) q100
TR(1) o5 #L1 #L2 #R1 #R2
Pos=Time TR(1) Time(Pos) TR(2) Time(Pos)
[2
TR(1) o5 #L1 #L2
TR(2) o5 #R1 #R2
]
[2
TR(1) v.Random(40) o5 #L1 #L2
TR(2) v.Random(40) o5 #R1 #R2
]
//_______ ここまで _______________

演奏モニターを見ているとわかるのだが、音量をRandomにした後半の部分は確かにベロシティの値が微妙に変化する。
「サクラ」の音をAudacityで簡単録音
「
サクラ」でアルゴリズム作曲シリーズでは、昨日書いたような方法でソフト音源を鳴らしたものをMP3にして添付しているのだが、今日は、このMP3ファイルをどうやって作っているのかを説明する。
パソコンでデジタル録音するフリーのソフトは結構あるのだが、なんと言っても応用範囲が広く多機能なのが、オープンソースの
Audacity だ。
Audacity
http://audacity.sourceforge.net/Audacityでは、入力ソースを「ステレオミキサー」に設定すれば、難しい設定をしなくても、とりあえずはパソコンから出ている音を簡単に録音することができる。

パソコンで録音したファイルは、多くのソフトがWindowの標準のWAVファイルとして書き出すようになっているのだが、Audacityでは、LAME MP3エンコーダー(lame_enc.dll)をインストールすることで、直接MP3形式のファイルを作成することが可能だ。
LAME MP3エンコーダー
http://audacity.sourceforge.net/help/faq?s=install&item=lame-mp3Audacityで直接MP3ファイルを作成する場合は、ファイルメニューから「MP3書き出し」を選ぶ。一番最初だけ、LAME MP3エンコーダーの場所を尋ねられるので、lame_enc.dllを保存してあるフォルダを指定すればよい。
MP3書き出しの場合は、下の画像のようなIDタグ編集画面が出るので、Audacityで直接MP3ファイルを作るときは、ここでIDタグを入力してしまうことも可能だ。
「サクラ」で複数のソフト音源を使う
今日は、「
サクラ」で複数のソフト音源を使う方法を説明してみる。これができれば、昨日やったように複数のSoundFontを同時に使うこともできるのだ。
まず最初にやることは、「サクラ」のMIDI出力をソフト音源に渡すための設定だ。ソフト音源は外部音源のようにMIDIケーブルで接続することができないので、仮想MIDIドライバ(
MIDI Yoke Junction)を使ってソフト音源と接続する。
MIDI Yoke Junction
http://www.midiox.com/index.htm?http://www.midiox.com/myoke.htm「サクラ」側の設定はメニューから、
設定→マルチメディアの設定で、MIDIの出力先をMIDI Yokeに変更する。

そして、ソフトシンセの方のMIDIの入力を、MIDI Yoke の出力に合うように設定する。これで、「サクラ」からのMIDI信号でとソフト音源の音が出るようになる。

こんな感じで複数のMIDI音源の設定を同じようにしていけば、立ち上げたすべてのソフト音源で「サクラ」の音が出るのだが、これでは、
すべてのトラックの音がどのソフト音源からも出てしまうのだ。
昨日やったように、楽器を別々の音源で鳴らしたい(トラック毎に音源を分けたい)という場合は、ソフト音源の方で
受信するチャンネルを制限すれば良い。
「サクラ」の標準では、Track(1)→Channel(1)、Track(2)→Channel(2)、・・・・のようにチャンネルが対応するので、ソフト音源のFilter設定(メニューから
Effect→Filtersで出る)の画面で、下の画像のように受信したくないチャンネルにチェックを入れればよい。

例えば、フルートの音源の場合は、ピアノのパートのChannelの2と3にチェックを入れて、ピアノのパートを受信しないように設定する。