世界初のMML
目次
PDP-1 の Harmony Compiler (1963)
PDP-8 の MUSYS(1969)
ここまでの話で PDP-1、PDP-6 が登場していますが、PDP-8 はこれらともまた別の、互換性がない機械です。
PDP-8 は当時のコンピューターの常識を破壊するほど安かったため、大ヒットしました。…といっても、個人で持てるようなものではありませんでしたが。
それでも、当時の「計算機」のイメージを覆す、さまざまな応用が現れます。音楽演奏もその一つでした。
ロンドンの Electronic Music Studios Inc.(以下 EMS)では、PDP-8 を使用して、音楽を作成する方法を考案しました。
その原理はこうです。まず、オシレーター(周波数発振器)を 64 台並べ、半音づつ違った周波数を出力するように調整しておきます。
PDP-8 の 1byte は 6bit で、 0~63 の数値を表せます。この数値を出力させると、64 台のオシレーターのうち1台がスピーカーに接続されるようにします。これで、半音64個=5オクターブと少しの音程の演奏が可能となります。
実際には、もっと複雑な回路を用意します。オシレーターが直接スピーカーに接続されるのではなく、アンプ(音量コントロール)と、エンベロープカッター(音の減衰を表現できる)を経由するのです。これらの機器も PDP-8 からコントロールできました。
しかしこれでは、音が出るだけで音楽にはなりません。演奏するには「一定の時間で次の音に移る」必要があります。
この機器、「タイマー」も、PDP-8 からコントロールできます。…といっても、実際にはタイマーの役割を担うのは、 PDP-8 自身でした。
とにかく、この4つの機器を使いこなせば、PDP-8 による演奏が可能となります。実際には機材は多重化されていて、6重の和音を出せるようになっていました。
発明当初は、コントロールデータは、すべてを8進数で表現されるバイナリで入力する、と言う方法でした。すべてがバイナリ…まるで、CSIRの演奏データのようです。
この段階でニュースで報じられたフィルム(1968)が残っています。
ニュースで報じられた翌年、EMS にプログラマーのピーター・グロゴノ(Peter Grogono)が参加します。
音楽演奏をしていた PDP-8 (Sofka と呼ばれていた)は、もうそれだけで機能を使い切っていました。しかし、バイナリで表現しなくてはならないようでは、ミュージシャンには使えません。
そこでグロゴノの出番です。新たにもう1台の PDP-8 (Leo と呼ばれた)を購入し、それで Sofka に渡すデータを作り出すのです。
ミュージシャンにわかる方法で音楽を記述し、Leo がそれをバイナリ化し、Sofka が実際の演奏を行う、と言うシステムでした。
グロゴノは非常に簡単なインタプリタ言語を考案し、そのインタプリタ上で Sofka に渡すデータを作れるようにします。
この言語はシステムが完成してからは MUSYS コンパイラと呼ばれ、後には音楽制御から独立して Mouse 言語と呼ばれるようになります。
その処理構造は FORTH と似ていますが、FORTH 公表(1971)よりも前に作成されています。
MUSYS は、プロの使用に耐えうるコンピューター音楽環境でした。数多くのレコードアルバムの録音に使用され、1972年にはラジオミラノから表彰されています。
その翌年、1973年には、Software - Practice and Experience(季刊誌)の冬号で紹介されています。
さらに後には、ただのオシレーターではなく PCM によって波形を生成したり、エンベロープカッター以外にも各種エフェクタをつないだりと発展していったようですが、詳細は不明です。
MUSYS を作り上げた EMS は、この後アナログシンセサイザーの会社として有名となります。
演奏データ形式
先に書いてしまうと、MUSYS 言語が用意するのは「音を出す方法」なので、演奏データ形式は無いです。演奏自体は、MUSYS言語のプログラムによって行われます。
しかし、後の話題で重要になりますので、ここでは音を出す方法を説明しましょう。
一応、MUSYSコンパイラから音を出すための指定は次のような指定でした。
O1 56 A1 12 E1 13 T1 14 E1 0 T1 1
これで1つの音が出ます。
アルファベットで始まるのは機器名。後ろの数字は機器番号。6重和音を出すには、別の音を別の機器で指示します。上の表記の例だと、
・O1 (オシレータ)に 56番目の音程を発信させ、A1 (アンプ)に音量 12を指定
・E1 (エンベロープ)は 13 で T1 (タイマー)が 0.14 秒待機
・その後 E1 の設定を 0 に変え、T1 で 0.01秒待機
…と、そういう感じ。
タイマーで待たせながらエンベロープを2回指定することで、サスティンとリリースの音の減衰を変えているのがミソ。音楽的に自然な音を作り出せました。
MUSYS では減衰率しか指定できないため、音が大きくなる部分である、アタックは変えられません。しかし、それ以外の部分は自由に設定できました。
上の例では、サスティンとリリースを指定していることになります。
ところで、MUSYSコンパイラにはマクロ機能がありました。「マクロ」とは「ミクロ」の対義語。
ある機能を実現する小さな命令(ミクロ)の集まりがあったとして、この命令の集まりを一般化し、大きな機能を作り出すことを「マクロ」と呼びます。関数やサブルーチンと実質的には同じものです。
やはりイギリス人プログラマーのピーター・グロゴノは、ストレイチーの作った言語の影響で MUSYS コンパイラにマクロ機能を付けた、と明言しています。
MUSYS で音を出す場合は、先に書いた細かな定義をマクロでまとめ、
#NOTE 56,12,15; (56番目の音程を、音量 12で 0.15秒発音)
というように書くのが普通だったそうです。これで、先ほどと同じ、ややこしい命令群を作り出してくれます。
MUSYSコンパイラは言語ですので、ループやランダムの発生も可能です。これを使って、ランダムミュージックも作れたそうですし、ランダムでも違和感が無いような音の組み合わせを生成することも出来ました。
ただ、書き始めると長くなりすぎるため、詳細はグロゴノのページや、Wikipedia の Mouse 言語のページをご覧ください。
もっと知りたい
本文中でもグロゴノのページにリンクしていますが、こちらのリンクは MUSYS の話題のページです。
NOTE マクロの詳細な説明などが載っています。(英語)
そして、こちらもグロゴノのページから、MOUSE言語のページ
小さくて小回りが利く、という意味で MOUSE と名付けたそうですが、「後で同名のデバイスがこんなに有名になると知っていたら、別の名前を付けた」そうです。
MUSYS: Software for an electronic music studio
Software - Practice and Experience 1973年冬号にグロゴノが書いた論文のPDFがここにある…のですが、有料なのでまだ読んでません (^^;
内容もわかりません。僕は MUSYS を深く知りたいわけではなく、音楽の歴史を俯瞰したいだけだったので…
今でも残る、EMS のホームページ。アナログシンセサイザーのメーカーとして今でも健在? 最後のページ更新が 2002 年のようだけど… (^^;
The Historyのページの、The Putney Studio のところに MUSYS の全景写真があります。
a General Purpose Macrogenerator(PDF)
グロゴノが参考にした、と明言している「マクロ言語」の論文。
…本文中ではさらっと流したけど、マクロ言語は「テキストファイルを処理する」仕組み。今でもそのような意味に使うのが普通です。
インタプリタに組み込んだというグロゴノは、何か曲解している。でも、この曲解が後で謎を解く重要なカギになります。