12音技法での対位法の扱いを調べている時にWikipediaに載っていた、
現在の代表的な自動作曲ソフトウェアとして、フランス国立音響音楽研究所IRCAMが開発したOpenMusicが挙げられる。このソフトウェアの説明書に付属するチュートリアルの初歩段階に、十二音技法の音列各種を自動生成する練習課題がある。
という記述になんとなく興味を引かれて、OpenMusic
というのがどういったものなのかを見てみようかという気になった。
OpenMusicはMaxやPdなどで有名なIRCAMのプロジェクトで、Max等とは違って、どちらかというとアルゴリズミックコンポジションの方にフォーカスしているようだ。いかにして波形を作るかというより、いかにして音符を作るか。そう言い換えることが出来るだろうか。
音列に対して逆行、反行、反逆行などはもちろん、時間的な変形を行うことが出来るのはもちろん、限定されたランダムネスのなかから音列を作ったり、音列の生成変形に関してその機能は網羅されている。らしい。
らしいというのは、わたし自身がまだ全然機能を試せていないため、何が出来るということを把握していないためだ。
OpenMusicのソースコードはLGPLで公開されているので、誰でも試すことが出来る。出来るのだけど、実はLISPで書かれているので簡単には動かなかった。色々試してみた結果、なんとか動くようになったので、手順を書き留めておこうと思う。
準備するもの
まず、なんといってもOpenMusicのソースコード。ここからダウンロードしておく。
また、そのページのExternal dependenciesにある、MidiShare、libAudioStream、SDIFをダウンロードしておく。
OpenMusicを動かすためにはLisp、それもLispWorksという処理系が必要になるのだけど、これのPersonal版が無償で提供されている。このページよりダウンロードすることが出来る。
インストールと実行
まずはLispWorksをインストールする。ディスクイメージをマウントするとインストーラが出てくるので、インストーラによりインストールする。
External dependenciesのライブラリをインストールする。MidiShareはインストーラがある。他のものは解凍するとフレームワークが出てくるので~/Library/Frameworks(自分のホームディレクトリ上のLibrary。Frameworksが無い場合はフォルダを作成する)もしくは/Library/Frameworksに入れておく。
OpenMusicのソースを展開する。OpenMusicのOSX用のビルドに使うファイルはbuildimage/build-omm内にある。特に重要なのはbuild-om.lispというファイルだ。
OpenMuscの公式ページにあるインストール方法だと、このlispファイルをLispWorksにロードしてEvaluateすればよいという風になっていたのだけど、色々とうまくいかなかった。
まず、build-om.lispを書き換える。中身はテキストなのでテキストエディタなどで書き換えることが出来る。その63,64行目。* this-file*がそのファイルのフルパスを表すようなのだけど、これがうまく渡されていなくてエラーが出ていた。*this-file*の代わりにフルパスでファイル名を書いておく。
(let* ((root-path (make-pathname :device (pathname-device "/Users/XXXX/Desktop/OM-6.1.3-SRC/buildimage/build-omm/build-om.lisp") :directory (butlast (butlast (pathname-directory "/Users/XXXX/Desktop/OM-6.1.3-SRC/buildimage/build-omm/build-om.lisp")))))
この例ではDesktopにソースを展開した場合になっている。XXXXはユーザ名だ。~/のような記法は通らないようだ。
build-om.lispをダブルクリックするとLispWorksが立ち上がる。スプラッシュの表示の後、build-om.lispが表示されているEditorのツールバー上のCompile Bufferボタンを押す。するとOpenMusicのコンパイルが始まる。
後は待つだけ・・・と行きたいのだけど、残念ながらそうはならない。実はLispWorks Personal版に制限があって、スタック量が制限されているのだ。そのため、OpenMusicのコンパイルの途中で容量の上限に達したというメッセージが出た後に自動終了してしまう。ここは仕方ないので全部が通るまで何回もこのプロセスを行う。幸い、一度中間バイナリになったものは二度目はパスされるので何回かやっているうちに最後まで到達する。
いくつかWarningが出るようだけど実行上問題ないようだ。上記のような画面になったら次はCL-USER 1 >などとプロンプトが出ているListenerウィンドウに移る。
そこで、左のように(om::start-openmusic)とうちこみリターンを押すとOpenMusicの実行が始まる。色々とWarningが出た後、運悪く起動しないこともある。そのときは慌てずにもう一度(om::start-openmusic)と打ち込む。
右のようなダイアログが出たらあとは新規にWorkspaceを作るか、既存のWorkspaceを開くかを選ぶだけだ。
注意すべき点
以上でOpenMusicが起動するわけなんだけど、注意しないといけない点がある。それはOpenMusicのコンパイルのところでも書いた通り、LispWorksの制限事項だ。これはOpenMusicを動かしているときにも影響してくる。パッチを組んでるときに突然まもなく制限に達したので終了するというダイアログが出るのだ。そうしたらWorkspaceをすぐにセーブして終了に備えないといけない。起動し直せばいいとはいえ、ちょっと興がそがれる。
それではLispWorksの製品版(Professional版以上)を買えば・・・ということになるのだけど、LispWorksの価格表を見てびっくりした。一番安くても(Education版は除いて)$1700もするのだ。ちょっと手が出ないな・・・。
他にもIRCAMのResearcher Subscriptionに登録するとアプリケーション版のOpenMusicが使えるようになるようだ。その場合年会費として360ユーロ、約4万円強になる。OpenMusic以外のアプリも使える。これに価値を見いだせばこれもありだろう。
Version5系のOpenMusicはCommonLispでもコンパイルできたらしいという話を見かけたので、使い続けるとなるとそれもありなのかなと思うのだけど・・・。