PC以降の音楽演奏
目次
MZ-80K(1978/12)
MZ-80K に MML が搭載されていたのは有名で、一部には「世界初の MML」だと主張する人もいます。しかし、上に書いたベーシックマスターが MZ-80K の3か月前に発売になっています。
そして、ベーシックマスターの発売のころ、MZ-80K は発売を予告する、プロトタイプ機時点でのパンフレットを作っています。
ベーシックマスターはそこで「新発売」展示し、MZ-80K は「近日発売」でパンフレットを配布したのでしょう。
プロトタイプ段階では、「音楽の自動演奏が BASIC ソフト処理で可能」とは書かれていますが、MML 命令(MUSIC 命令)は載っていません。ソフト処理、ですから、I/O ポートを直接操作するような方法が想定されていたのでしょうね。
しかし、ベーシックマスターへの対抗上、この後で BASIC に急遽 MML が搭載されたのではないかと思います。ハード的にはやはり、CPU から直接スピーカーを駆動します。TX-0 の音楽演奏と同じような形式です。
おそらく、ベーシックマスターに対抗する際に、音楽関連の先行技術を調べています。…もしくは、ベーシックマスターを見た瞬間に、「あれだ!」と気づいたかも知れません。ベーシックマスターのところでも書きましたが、当時の技術者ならアメリカの BYTE 誌を読んでいるのはある意味当たり前。そして、MZ-80K も、再度 SCORTOS と Altair MUSIC を見つけ出しているように思います。
MML をベーシックマスターと比べると、非常に似ています。しかし、機能的にはずっと貧弱になっています。転調機能はありません。音色を変える機能も、ボリュームを変える機能もありません。これらは開発期間が短かった影響ではないかと思います。
しかし、一方で機能が削られた分命令は整理され、さらに扱いやすくなっています。
最大の違いは、ベーシックマスターが音長指定に Altair MUSIC の方式を使ったのに対し、MZ-80K は SCORTOS の方式を使ったこと。
また、音符をカタカナではなく英字表現に戻したこと、でしょうか。
演奏データ形式
音は CDEFGAB 、休符は R で示します。ベーシックマスターと同じく、音域は3オクターブ。
やはり、該当の音の直前に上げ下げの記号を付けることでオクターブを変えます。ただし、MZ-80 では、グラフィックキャラクタの  ̄ で上のオクターブ、 _ で下のオクターブを示します。
半音上げる、は音名の前に # を付けます。半音下げ、はありません。これらも、ベーシックマスターと同じように各音符の前全てにつける必要があります。
そして、次が最大の違い。
音長の指定は、音名の後ろに数字1桁で行うようになりました。数字の意味は、ベーシックマスターと同じです。
ベーシックマスターのように、指定するとその後の音符が全部変わる、と言う命令はありません。数字は省略できるのですが、その際は常に 5 (4分音符)となります。
「トッカータとフーガ ニ短調」は次のように記述されます。
A1G1A3A7G1F1E1D1#CD7R
比較してみると、見た目は違えどベーシックマスターとほぼ同じ構成であることがわかります。
特に「シャープを音名の前につける」などは、まだ現代の MML とは大きく違います。
もっと知りたい
シャープの電子書籍として、無料配布されています。読むには会員登録が必要。以前は PDF で無料配布していたのですけど、電子書籍化でPDFの配布は終了したみたい。
とにかく、当時の BASIC マニュアルそのものなので、これ以上ないくらい細かな説明が残されています。
この機能は、BASIC に用意されていたわけではなく、システム ROM に納められていたのを BASIC から呼び出していたのだそうです。(GORRY さんの証言)
Oh!石氏のページより。実は、この記事の公開後(当日中)、MZ 関連の記述でおかしなところを多数指摘していただきました。
僕の記事、細かな間違いは一杯あると思います。気づいたらどんどん指摘していただけるとありがたいです。
沖電気if800(1980/5)
if800 はビジネス向けに販売していたために、それほど普及した機械ではありません。
しかし、販売がビジネス向けだった、というだけで、マシン設計にはホビー向けを指向した個所も見られます。
音楽演奏機能も、ベーシックマスターと MZ-80K 、そして SCORTOS と Altair MUSIC と MUSYS の音楽演奏機能の、良いところを取って組み合わせ、さらに洗練させたようなものになっています、
演奏データ形式
ベーシックマスターと MZ-80K に対抗しよう…として、SCORTOS と Altair MUSIC を再発見しているように思います。ふたたび文法は練り直され、現代の物に近くなっています。
音階指定は CDEFGAB です。これは MZ-80K と同じ。なんと、音域は5オクターブもあります。こうなると「音の前に上か下かを指定する」程度では足りなくなってくるため、オクターブ指定は SCORTOS 式になっています。A=440Hz が O3 、というところまで SCORTOS と同じ。(O の指定範囲は 1~5)
半音上げ下げは、音名の「後ろ」に指定する、これも SCORTOS 式。ただし、+ - に加え、ベーシックマスターと MZ-80K が使用していた # も使えます。
休符は R ではなく、P でした。恐らくここは、ベーシックマスターや MZ-80K を真似せずに、Altair MUSIC の内部表現を使ったのでしょう。
また、オクターブの中での音階を、「N」と数値で示すことも出来ました。N1 が C 、N2 が C#、N3 が D 、… N12 が B 、と言う具合です。これ、次回やりますが MUSYS の影響かと思います。
音長指定は、別途指定するベーシックマスター方式と、音階の後ろにつける MZ-80K 方式の両方が使えます。直接指定があればその音長が使用され、指定がなければあらかじめ指定しておいた音長になります。
ただし、音長の「数値」は、ベーシックマスターやMZ-80K とはちがい、SCORTOS 式に戻されました。4分音符なら 4、8分音符なら 8 を指定する方法です。
別途指定の際は L の後ろに音長を指定します。これも、現代の MML ではおなじみの文法。
音長指定で付点が使用できたかどうかは、調査不足でわかりません。(というか、この調査はほとんど MORIYA Ma.氏の調査にのっかっているだけ…)
「トッカータとフーガ ニ短調」は次のようになります。
l16aga8a2gfedc+4d2p4
現代 MML とは多少異なりますが、こうしてみると基本は if800 が作り上げたように思います。
そして実は… if800 の BASIC は、マイクロソフト製でした。西和彦の指示により、究極の BASIC として他機種の良いところを全部取り入れた BASIC 。
これ以降、if800 と基本構造が同じ MML が、多くの機種に搭載されていきます。
しかし、シャープは自社製ベーシックを使い続けました。
このためシャープの PC は他機種との BASIC 互換性(移植性)が悪く、MML もかなり違う文法のままでした。
もっと知りたい
if800 、非常に高くてホビーユーザーが変える機械ではなかったため、残されている資料が少ないです…
そんな中、タイニーP氏(ベーシックマスターの項でもMMLの文法を示していた方です)の連載記事である、「ホビーパソコンの歴史」で詳しく取り上げられています。