金曜日, 9月 29, 2006

「サクラ」でアルゴリズム作曲 - 2 -

今日は、昨日やった楽器の変更にちょっと手を加えて三章からなる曲を作ってみる。題して「フルートとピアノのための三章」。

昨日は、前半と後半で音符の種類を変えて変化を付けてみたのだが、今日はTempoの指定を変えて変化を作ってみる。一章をTempo=120、二章をTempo=80、三章をTempo=160に設定してみた。

三章にする部分は繰り返し構文( [3 ~~] )でやっているのだが、各章の切り分けはSWITCH()コマンドを使ってやってみた。

SWITCH()
http://oto.chu.jp/doc/command/127.htm

もう一つ、楽器の音域を決めるためのパラメータ(BoN)を加えた。これにより中央「ド」を中心に発生させていた音を、指定の半音数分上下に移動させることができる。

関数 Compose(BoN,RoN,NoN,LoN)

BoN・・・・中央「ド」からどのぐらい離れた音程で音を生成するかを指定
RoN・・・・中央「ド」を中心にどのぐらいの範囲で音を生成するかを指定
NoN・・・・音をいくつ作るかを指定
LoN・・・・音符の種類(セット)を指定

//_ フルートとピアノのための三章

Function Compose(BoN,RoN,NoN,Array LoN){
 STR ML={}
 [(NoN)
  ML=ML+{n(}+(NoteNo(ド)+BoN+Random(RoN)-RoN/2)+{)}+RandomSelect(LoN)
 ]
 Result=ML
}

TR(1) P(100) V(120) REV(080) q080 音色(Flute)
TR(2) P(020) V(100) REV(100) q100 音色(GrandPiano)
TR(3) P(020) V(100) REV(100) q100 音色(GrandPiano)

INT Pos INT N=0
[3 N++
 #Part1=Compose(24,16,50,(1,2,4,8))
 #Part2=Compose(0,50,50,(1,2,4,8))
 #Part3=Compose(0,50,50,(1,2,4,8))
 SWITCH(N){
  CASE(1){Tempo(120)} // 一章
  CASE(2){Tempo(80)} // 二章
  CASE(3){Tempo(160)} // 三章
 }
 TR(1) #Part1 TR(2) #Part2 TR(3) #Part3
 Pos=Time TR(1) Time(Pos) r1r1 TR(2) Time(Pos) r1r1 TR(3) Time(Pos) r1r1
]

//_______ ここまで _______________





参考:「ドリトル」による「フルートとピアノのための三章」
http://mugen-blog.blogspot.com/2006/04/oom02.html