MMLの成立
ここまでで MML が成立するまでの過程を見てきました。でも、調査の目的は「最初の MML 」を探すこと。
しかし、その前に難題をやっつけなくてはなりません。…そもそも MML って何だろう?
目次
世界初のMML(別ページ)
PC以降の音楽演奏(別ページ)
関連記事
Music Macro Language
最初にぐうの音も出ない答えを書いてしまいます。
MML は Music Macro Language の略なのですが、Music Macro Language はマイクロソフトの登録商標、でした。(過去形)
先に「アメリカでは BASIC に音楽演奏機能が用意されることは無かった」と書いたのですが、これは「日本よりも先に」という話。
日本の BASIC で音楽演奏が一般化された後、コンパック・ポータブルに添付された GW-BASIC や、IBM-PC Jr. で添付された BASIC では音楽演奏機能が搭載されています。
そして、IBM が IBM-PC Jr. の発売を告知した際、BASIC に音楽演奏機能が付いていることと共に「Music Macro Language はマイクロソフトの登録商標である」という但し書きが付いているのです。
というわけで、狭い意味では MML は「マイクロソフトが BASIC に搭載した音楽機能で使用される言語」であり、マイクロソフト BASIC でないもの(現在 Windows などで使用できる音楽演奏ソフトを含む)は、MML ではないことになります。
ちなみに、マイクロソフトが初めて Music Macro Language / MML という言葉を使ったのは、if800 。
BYTE 誌 1982 年5月号では「日本のコンピューター」が特集されています。
if800 の項目の最後の方(66ページ左側)には「Musical Possibilities」という項目があり、「MML と呼ばれるサブ言語を使う」と明記されています。
つまり、if800 こそが、最初の MML 。
歴史を遡る
さて、マイクロソフトでなければ MML ではない…というのでは「登録商標」という一面からしか物を見ていません。商法的には正しくても、歴史的には正しくありません。
すでに MML は一般名詞化しています。現在「MMLで音楽演奏ができる」とされているソフトは、そのまま MML と呼び続けて差し支えないと思います。ちなみに、すでに登録は無効化しているようなので、マイクロソフトが訴えるようなこともありません。
また、歴史の流れを見てもわかる通り、マイクロソフトが初めて MML を作成したのは if800 でした。しかし、ベーシックマスターと MZ-80K は if800 よりも前に発売され、明らかに if800 の MML 文法に影響を与えています。
特に、MZ-80K の MML 文法は MZ シリーズ、X1 シリーズに受け継がれ、マイクロソフト BASIC と共に 1980年代のコンピューター文化を支えています。
マイクロソフト製ではない「現在」の物でも、それが拡張されて完全互換ではないものであっても、類似の物であれば MML と呼ぶ、と定義するのであれば、これらの「類似物」も MML と呼ばない理由はありません。
では、次の問題です。いったい、MML はどこまで遡れるのだろう?
すでに見てきたように、if800 に音楽機能が搭載されたのは、明らかにベーシックマスター、MZ-80K の影響でしょう。そして、ベーシックマスターの演奏データ形式は、おそらく SCORTOS と、Altair MUSIC 、MUSYS の影響を受けています。
では、これらは MML と認められるのでしょうか?
if800 の BASIC は誰が作った?
ここから、少し歴史話を始めなくてはなりません。
コンピューターの黎明期、当然のことながら「定番」と呼べるような機能はありませんでした。あちらのパソコンはスピードが速い、こちらのパソコンはグラフィックが充実している、そちらのパソコンは音楽演奏ができる…というように、各社それぞれの特徴があったのです。
西和彦は、すべてのコンピューターの機能を凌駕する「全部入り」のコンピューターを作ろうとしていました。しかし、当時のコンピューターの性能では、そんなに入るわけがない。彼の周辺では、彼の構想が「ウソ800」だ、と揶揄されました。
しかし、彼は「嘘ではなく、もし作れるなら作りたい。ウソ800ではなく、if(もしも)800」と応えたそうです。これが、後に沖電気から発売された if800 の由来。
前回の話題ではif800の「由来」は枝葉だったので書きませんでしたが、この中に「真っ赤なUSO800」という話題が出てきます。
その広告はこちらのサイトで見ることができます。
ちなみに、西和彦は「if800」を、インターフェイスに優れた 8bit マシンの意味だ、と説明したそうなので、沖電気としては「ウソ800」から作られた名前とは知りません。
ここで、if800 に搭載するマイクロソフトの BASIC に「音楽演奏機能」の搭載をリクエストしたのは、おそらく西和彦。すでに書きましたが、当時西はマイクロソフトの副社長でもありました。
ただ、西が詳細な仕様書を作ったわけではなく、ベーシックマスターや MZ-80K の音楽演奏機能を示し、そういうものを搭載してほしい、と頼んだのではないかと思われます。
当時のプログラムは、小さなメモリに納めることが重要でした。そこで、要求仕様だけを決め、詳細仕様はプログラマがやりやすいように…という形式で開発されていたことが、各種文献から読み取れます。
音楽演奏機能の詳細は、ここでマイクロソフトのプログラマにゆだねられることになります。
マイクロソフトでは、各社の BASIC カスタマイズ要求にこたえるために、多くのプログラマが働いていた、というのは有名な話です。
その体制は西が日本から送り込んだ腕利きのプログラマたちによって支えられていたのですが、最初に送り込まれたのが、後に Shift-JIS 体系を考案する山下良蔵さんです。
山下さんが働き始めたのは、1980年の夏。ところが、if800 は同年5月には発売されています。if800は、「大勢で作る」体制の前に作られているのです。
体制が整う前から BASIC を作成していたのは、ビル・ゲイツと、マーク・チェンバレン。主にマークが 6800系を、ビルが Altair 以来の Intel 系を担当していました。
つまり、Z80 搭載の if800 の BASIC で MML 仕様を定めたのは、おそらくビル・ゲイツ。
「類似機能を作れ」という指示ですから、元となるベーシックマスターや MZ-80K の言語仕様も渡されたでしょう。しかし、ビルは素直に同じようには作っていません。これは MML の言語仕様がかなり違うことを見れば明らかです。
自称天才プログラマーだった(そして、自分を過信しすぎで人を見下す癖のある)彼としては「なんだこのヘッポコ仕様は! 俺ならもっと使いやすくできる!」と考えたのでしょう。
彼はすぐに F から始まる四字単語で相手を罵ったそうですが、古川氏はその言葉は書けない、と思い出話では「ヘッポコ」で訳していました。
ここで、彼が念のため既存の音楽環境を調査したのか、それともマニアだからすでに知っていたのかはわかりませんが、過去のシステム…MUSYS と SCORTOS と Altair MUSIC を発見しているように思います。
MML の成立
上に書いたように、おそらくビル・ゲイツの元に、BASIC に音楽演奏機能を付けてくれ、という依頼が来た時に、彼は過去の音楽演奏システムを調査したのでしょう。既存のシステムを良く調査し、それらを取り込み、拡張し、やがては越えること…「取り込み、拡張する」は、マイクロソフトの技術開発方針でした。
結果として、MUSYS、SCORTOS、Altair MUSIC、ベーシックマスター、MZ-80K の特徴が混ざり、 MML が成立したのでしょう。
SCORTOS の影響
おそらく、言語仕様を定める際にベースになったのは SCORTOS。要求仕様である「ベーシックマスターや MZ-80K のような」機能を作るにしても、ベーシックマスターは Altair MUSIC 寄りでしたが、MZ-80K はかなり SCORTOS 寄りになっています。その延長上にあるのは、やはり SCORTOS を中心として再構築することだったのでしょう。
SCORTOS から取り入れられた特徴は、次の通りです。
CDEFGAB で音階を、On でオクターブを示す。この際、A=440Hz は O3 にある。(後に O4 に変更)
+ - を後ろにつけることでシャープ・フラットを示す。
音階の後ろに、○分音符を示す数値で音長を書く、その際 . (ピリオド)で付点を示す。
T でテンポを変える。(使い方は変わっている)
{ } で連符を示す。(if800 時点では存在しない)
[ ] で繰り返しを示す。(PC-8801mkII の CMD SING に存在)
一方で、SCORTOS では休符の記号はありません。「記号なしの音長のみ」が休符で、この時に「前の音符の音長数字と区別できるようにする」という目的のためだけに、音符をスペースで分かち書きする文法になっています。
SCORTOS の記事のサブタイトルは「Implementation of a Music Language」でした。音楽言語の実装、という意味ですね。Music Macro Language という名前にも影響を与えているように思います。