はじめに
OpusmodusはCommon Lispベースの環境で簡単にMIDIやMusic XMLを生成することのできる統合開発環境です。
手前味噌ですが、Opusmodusを作ってこんな曲とかを作ったりしました。
公式サイトにも色々サンプルがあります。
mac専用で有料ですが、色々実験的なアルゴリズム作曲をしたい時は便利です。
すごく便利なんですが、基本的に日本人のユーザーは今は僕しかいないので、せっかく興味があるのに英語のドキュメントに阻まれてハンズオンできない人を救済するために、簡単なことだけまとめます。
基本のキ
⌘+eでカーソル以下を評価し、コンソールに出力します。⌘+Eでファイル全体を評価します。
OMNという単位で音価、音高、ダイナミクス、奏法を指定します。(以下、公式サイトよりキャプチャ)
ダイナミクスと奏法は省略することもできます。
⌘+1でMIDI再生、
⌘+3で以下のように簡易楽譜の表示、
⌘+2で簡易楽譜を表示してMIDIを再生します。
スコアについて
⌘+2で簡易楽譜を表示することはできるのですが、これは単一のOMNを表示できるだけなので、デバッグ向きの機能です。
複数の楽器や長いセクションを書くときは、一度scoreと呼ばれる単位にコンパイルします。
ここでいうscoreは総譜のようなものです。
Opusmodusにはdef-score
というマクロがあり、以下のように呼び出すことでscoreを定義することができます。
(def-score qiita-tutorial
(:time-signature '(4 4)
:key-signature '(c major)
:tempo 120)
(piano :omn motif)
)
このマクロを呼び出すと*last-score*
というグローバル変数に評価されたスコアのデータが入るので、
(display-midi *last-score*)
(display-musicxml *last-score*)
こうするとスコアの再生や表示ができます。
まとめ
Opusmodusを立ち上げワークスペースを一つ作りその中にファイルを一つ作って、以下のように書いて⌘+Eすると、とりあえずhello world完了です。
(setf motif '(q c4 d4 e4))
(def-score qiita-tutorial
(:time-signature '(4 4)
:key-signature '(c major)
:tempo 120)
(piano :omn motif)
)
(display-midi *last-score*)
(display-musicxml *last-score*)
とりあえずこれだけだとアルゴリズムもへったくれもないので、次の記事で強力な関数を紹介します。
あと、Twitterでよく作ったものとかプロトタイプとかあげてるので、興味あったらぜひフォローしてください!