水曜日, 9月 27, 2006

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

サクラ」でアルゴリズム作曲の最初の作品「2台のピアノのための dialogue」は、これから始めるシリーズの基本となる関数を定義してある。今日は今後のことも考えて、この関数をちょっとバージョンアップしてみる。

「サクラ」の関数は、配列(Array)をパラメータとして渡すことができる。そこで、関数 Compose() にパラメータを追加して、生成する音符の種類をパラメータで指定できるようにしてみた。

関数 Compose(RoN,NoN,LoN)

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

ここまでいけば、関数 Compose() も色々と応用が可能だ。作品をちょっと変更して、前半と後半に分け、後半部分は、8部音符と16部音符が多く出現するようにして変化を付けてみた。

//_ 2台のピアノのための dialogue

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

TR(1) P(000+20) REV(100) q100 音色(GrandPiano)
TR(2) P(127-20) REV(100) q100 音色(GrandPiano)

#Part1=Compose(50,40,(1,2,4,8))
#Part2=Compose(50,40,(1,2,4,8))
TR(1) #Part1 TR(2) #Part2

Int Pos=Time TR(1) Time(Pos) r1r1 TR(2) Time(Pos) r1r1

#Part1=Compose(60,160,(2,4,8,8,16,16))
#Part2=Compose(60,160,(2,4,8,8,16,16))
TR(1) #Part1 TR(2) #Part2

//_______ ここまで _______________