LoginSignup
4
5

More than 5 years have passed since last update.

Opusmodusの基本。

Last updated at Posted at 2018-09-02

はじめに

OpusmodusはCommon Lispベースの環境で簡単にMIDIやMusic XMLを生成することのできる統合開発環境です。
手前味噌ですが、Opusmodusを作ってこんな曲とかを作ったりしました。
公式サイトにも色々サンプルがあります。
mac専用で有料ですが、色々実験的なアルゴリズム作曲をしたい時は便利です。

すごく便利なんですが、基本的に日本人のユーザーは今は僕しかいないので、せっかく興味があるのに英語のドキュメントに阻まれてハンズオンできない人を救済するために、簡単なことだけまとめます。

基本のキ

⌘+eでカーソル以下を評価し、コンソールに出力します。⌘+Eでファイル全体を評価します。

OMNという単位で音価、音高、ダイナミクス、奏法を指定します。(以下、公式サイトよりキャプチャ)
OMN

ダイナミクスと奏法は省略することもできます。

例えば以下のように作ったOMN上にカーソルがあった時、
Screenshot 2018-09-03 05.23.14.png

⌘+1でMIDI再生、

⌘+3で以下のように簡易楽譜の表示、
eval.png
⌘+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でよく作ったものとかプロトタイプとかあげてるので、興味あったらぜひフォローしてください!

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5