月別: 2019年2月

 

OpenMusic

MAXでもおなじみのIRCAM(フランス国立音響音楽研究所)で開発されているOpenMusic。

http://repmus.ircam.fr/openmusic/download

LISP言語ベースで開発されており、リアルタイムに入力した情報を元に音楽を生成したりすることを得意とするMAXなどとは違い、静的な解析や曲全体の構成を生成したりすることを得意とします。
https://ja.wikipedia.org/wiki/OpenMusic

LISPとは、LIST Processorの略でツリー構造のデータ処理をするのに便利です。いろいろと方言があり、OpenMusicではCommonLispが使われています。
https://ja.wikipedia.org/wiki/Common_Lisp_Object_System

私も以前から興味があり下記ブログでテストしています。LISPプログラミングについて興味のある方はご参照ください。

(Lisp (+ List Processor))

実装が軽く、構造がシンプルなのが好みです。

では音楽データをどのように表現しているのか見てみます。

60はMIDIノートデータに対応し、100はセントでマイクロチューニングにも対応できるピッチ表現をした数値をカッコでまとめています。(これがLISP言語の表現方法)
上下の点は入力と出力を表していて、モジュール間を結線します。しかし上のように直接数値のリストを記述することもできます。

これを踏まえて具体的に音列を生成してみます。

一つ目のomloopモジュールでランダムに生成された音列に四度上(500cent)のハーモニーを追加して出力しています。
omloopモジュールの中身は以下です。

正直いってちょっと難しかったです。ループの表現が既存ビジュアル言語と比べて特殊な感じがします。
プログラムはモジュールごとに評価ができ、右クリックで”EvalBox”を選びます。
下は、omloop2 を評価するところです。

評価結果のリストが以下のように表示されます。
評価するモジュールまでは内容を更新されますが、それ以降のモジュールに変化はありません。

この音列は再生することもできます。
ここではデフォルトプレイヤーのMicroPlayerというものを使いました。(別アプリ別途要ダウンロード。MAXで作成されている。)

これはこれで、深いいアプリなのですが、また次の機会に。

上記のブログで総音程音列を扱ったのも、こういった音楽データを生成するのにLISPが向いている特徴があると思ったからです。楽曲の構造(どの部分でどの音列を使うとか)をこのような仕組みを使ってつくるもの面白いかもしれません。

参考: http://support.ircam.fr/docs/om/om6-manual/co/LoopExample.html