火曜日, 9月 26, 2006

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

サクラ」のすばらしいところは、単なるMMLコンパイラーではなく、自分で関数を定義できたり、一般のプログラミング言語にあるような制御構造が使えたりするところにある。要するに、音楽制作のためのプログラミング言語なのだ。

「サクラ」の開発者(クジラ飛行机さん)による説明
http://journal.mycom.co.jp/column/nihongoprog/039/

このプログラミング機能を使えば、コンピュータに自動的に作曲させる「アルゴリズム作曲」や乱数を使った「偶然性の音楽」といった「実験音楽」的なことが簡単にできるのだ。

そこで、今日からは、前にオブジェクト指向の日本語プログラミング言語「ドリトル」を使ったやってみた「実験音楽」シリーズの「アルゴリズム作曲」を「サクラ」を使ってやってみることにする。

「サクラ」では「ドリトル」より細かなMIDIのコントロールが可能なので、「ドリトル」シリーズをちょっとだけ変更して、表現力を多少は上げるようにしてみる。それと、各々の曲で使っているアルゴリズムの部分(関数になっている場合が多いと思う)の解説を簡単に付けることにする。最後に、MP3で録音したものも掲載するので、実際に聴いて楽しんで?もらいたいと思う。

最初の曲は、「2台のピアノのための dialogue」だ。

この曲は、関数 Compose(RoN,NoN) で曲を生成している。

RoN・・・・中央「ド」を中心にどのぐらいの範囲で音を生成するかを指定
NoN・・・・音をいくつ作るかを指定

音符の長さは、1,2,4,8部音符を均等に生成するようになっている。

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

Function Compo
se(RoN,NoN){
 STR ML={}
 [(NoN)
  ML=ML+{n(}+(NoteNo(ド)+Random(RoN)-RoN/2)+{)}+RandomSelect(1,2,4,8)
 ]
 Result=ML
}

#Part1=Compose(50,200)
#Part2=Compose(50
,200)

TR(1) P(000+20) REV(80) @(GrandPiano) #Part1
TR(2) P(127-20) REV(80) @(GrandPiano) #Part2

//_______ ここまで _______________






参考:「ドリトル」による「2台のピアノのための dialogue」
http://mugen-blog.blogspot.com/2006/04/blog-post_17.html