PC以降の音楽演奏
目次
パソピア(1981/9)
東芝のパソピアは、ROMカートリッジによってBASIC が供給されました。ハードウェアは同じでも添付される BASIC がちがう2つのモデルがあり、さらに別売りのフロッピーディスクドライブを使えば、各 BASIC の DISK 版も使うことができました。
BASIC は、マイクロソフトによる T-BASIC と、東芝オリジナルの OA-BASIC です。OA-BASIC は COBOL と言語構造を似せ、ビジネス用に使いやすくしたもの、T-BASIC はホビー用途に使いやすくしたものでした。
このうち、T-BASIC には音楽の演奏機能があります。ROM 版は MML ではなく音階と時間を指定する方法で、ディスク版では、ROM 版の方法に加えて MML が使えました。
ディスク版の供給時期は不明ですが、本体とほぼ同時発売だったのではないかと思われます。本体は 1981年9月発売ですが、わずか3か月後の1982年1月発売の本には、ディスク版の存在が書かれているためです。
ほぼ同時発売なのに、ROM と DISK で命令が違い、DISK の方が命令豊富…というのはちょっと不思議です。DISK アクセスのための機能が増えた分だけ、DISK の方が命令が削られている、というのならわかりますが…
本体よりも高価な DISK 装置を買ってもらうための高機能化、という可能性もありますが、DISK を購入する人にとって、DISK が使えることが何よりも購買理由のはず。
MML の解釈部分を小さく収めるために自己書き換えでも使ったのかな、とも思いますが、ROM 供給の if800 でも MML は使えています。(もっとも if800 は DISK の有無で2モデル同時発売でした。もしかしたら、こちらも DISK 版にしか MML がなかった可能性もあります)
演奏データ形式
ROM 版では、先に書いたように「音階と時間」で音を出すことができました。
SOUND 音階,音長
で、音階は 11~84。A=440Hz が 45 で、半音階ごとに 1 ずれます。これ、次に書く PC-6001 の MML で、N 命令を使った際に指定する値と同じです。
音長は、1/64 秒を単位として 0~ 65535で指定しました。
これを並べれば音楽が作れます。半音ごとに数値を割り振っていることも含め、MUSYS のような方法。
DISK 版には MML があります。if800 とほぼ同じ構造ですが、以下の点が違います。
・休符が P ではなく、R になりました。
・オクターブ指定が 0~6 の7オクターブになりました。A=440Hz は O3で変わらず。
・N 命令が無くなりました
休符が変わったのはものすごく重要な変更です。
「トッカータとフーガ ニ短調」は次のようになります。
l16aga8a2gfedc+4d2r4
もっと知りたい
MORIYA Ma. 氏のページ。当ページが公開された当初、パソピアには MML は無い、としていました。DISK 版にあるなんて情報、ネットを探した限りではどこにもなかった。
しかし、ページ公開からわずか1日で、氏はパソピアにも MML があったことを突き止め、その詳細を公開しました。すごい行動力!
もともと氏のページに触発されて調査を始めたのですが、公開後も細かな間違いを指摘していただいたり、こんな大きな調査をされたり、お世話になりっぱなしです…
NEC PC-6001(1981/11)
NEC の PC-6001 は、音楽演奏ができた最初期のマシン、として多くの人が記憶しているのではないかと思います。
最初に MML が搭載された機械、と思っている方も非常に多く、MORIYA Ma.氏の調査もそこから始まっているわけです。しかし、すでに見てきたとおり、音楽演奏自体は他の機種でもできましたし、MML らしきものもすでに確立してきています。
本当に PC-6001 がすごかった点は MML にあるわけではなく、音楽専用の LSI を搭載し、3重和音+ノイズを出すことができたことです。
…なんかすごそうに聞こえるけど、PSGチップ AY-3-8910搭載ってことですね。国内のパソコンとしては初めて、 PSG搭載した機種でした。
BASIC はやはりマイクロソフトのもので、MML も if800 / パソピアとほぼ同じ文法です。
演奏データ形式
マイクロソフト製の MML なので、ここでは if800 / パソピアとの違いだけを書きましょう。
・休符は R です。パソピアでの変更を受け継ぎました。
・音域が8オクターブになりました。(if800 は5オクターブ、パソピアは7オクターブ)
・A=440Hz は O4 となり、科学的表記と一致しました。(if800 / パソピア は O3)
・N の数字の範囲は 1~96 になり、オクターブも含めた音階指定になりました。(if800 は範囲が 1~12 でオクターブは別途指定、パソピアは N なしだが、同じ数値を SOUND で使う)
・V コマンドで音量を変えられるようになりました。
・PSG のエンベロープを細かく指定するための指定が増えました。(S M コマンド)
・和音を出すために、カンマ区切りで3つのMMLを並べられるようになりました。
これによって現代的な MML の基礎文法が完成します。(その意味では、PC-6001が最初の MML、というのは事実です)
ところで、PC-6001には、MML と同時に、パソピアにも存在した SOUND 命令があります。しかし、SOUND 命令の使い方は、全く異なるものでした。
パソピアの SOUND 命令は、実質的には音符一つを生成するものでした。PC-6001 の SOUND 命令は、PSG のレジスタに値をセットする命令になっています。
「トッカータとフーガ ニ短調」は次のようになります。…この例では変化したコマンドを使用していないため、パソピアと全く同じです。
l16aga8a2gfedc+4d2r4
もっと知りたい
PC-6001あたりになると有名すぎて…今でも熱い人は「知っている」前提だし、そうでない人は詳しく語れない。この機械を上手に説明したサイト案外少ないのね。
なつかしのパーソナルコンピュータ、というサイトから。まぁ、そつなくまとめている程度ですが、その程度のまとめが案外少ない。
そもそも、今回の調査を開始したきっかけは、Moriya. Ma さんのページの記事でした。
きっかけ記事は先にリンクしているので、ここではあえて僕のおすすめ記事をリンク。
TINY 野郎 mkII さんのページから。このゲーム、かなり好き。
ふたたび、次回へ続く…
さて…今回の目的は、「PC-6001 よりも古い MML を探す」なので、PC-6001 の紹介で終わりにします。
PC-6001 の MML は、現代の MML と「互換性のある」ものです。上位互換だけどね。(PC-6001 で書かれた MML は現代でも演奏できますが、現代の MML を PC-6001 で演奏できるわけではありません)
これで一通りの歴史の流れは提示しました。
でも、これで終わりじゃない。まだ「最初の MML」に関して、全然考察していないから。
次回は、歴史の裏を深読み(邪推かもしれない)しながら、MML の成立過程を探ります。