PC以降の音楽演奏
目次
NEC TK-80(1976/8)
TK-80 には、音を出す機能はありません。そもそもスピーカーが付いていません。でも、TK-80 は「回路技術者用のトレーニングキット」でした。改造するのは当たり前。手始めに簡単な改造方法の指南と、それで動くようになるサンプルプログラムも付属していました。
その改造が、スピーカーを接続すること。コンデンサーを1つ挟んでアンプにつなぐ…とあります。それほど難しい改造では無さそうです。そして、それで動くプログラムが、電子オルガンと、自動演奏プログラム。
「音を出す」プログラムは、TK-80 の開発者が、開発中に AM ラジオにノイズが載ることから着想したそうです。このあたり、事情は Altair の Music of a sort と同じ。そして、演奏データはやはりバイナリ直接でした。
演奏データ形式
Music of a sort と同じで、バイナリデータです。ただし、音長データもありますし、テンポ指定も可能になっています。
音域は、C ~ 1つ上の G までの1オクターブ半。C が 16進で 33 、上の G が 11 でした。多分、マニュアルに記されていないだけで「もっと低い音」が出せそうです。
休符は、音階の最上位ビットを立てると休符になるようになっています。
テンポはサブルーチン内に埋め込まれた定数で調整し、音長は、そのテンポでの「最小の音」いくつ、という数で表現します。
「トッカータとフーガ ニ短調」は次のようになります。
1E 01 22 01 1E 0A 22 01 26 01 28 01 2D 21 04 2D 08 80 04
もっと知りたい
TK-80 に付属のマニュアル。電子オルガンの冒頭にスピーカーの接続方法が書かれています。
リンクした章は、先ほどと同じ、Altair の Music of a sort の部分です。しかし、この一番最後に、TK-80 の開発者も同じ経験をした…という説明があります。
日立ベーシックマスター(1978/9)
国内で TK-80 の次に発売されたのは、日立ベーシックマスターでした。発売日は 1978年9月。TK-80 が「最初の応用プログラム」として音楽演奏を示したように、ベーシックマスターもまた、BASIC から音楽演奏が楽しめるように作られています。
発売は、先に SCORTOS が紹介された BYTE 誌の発行からは1年、 Altair MUSIC が紹介された号からは6か月後です。
これは想像にすぎませんが、おそらくベーシックマスターの作成者は、この2冊の BYTE 誌を見たのではないかと思っています。…というか、当時コンピューターを作ろうとしている技術者が、コンピューター先進国であるアメリカの雑誌などを一切見ていない、と考えることの方が不自然です。
そして、ベーシックマスターには非常に充実した音楽機能がありました。多分、アメリカ人のハッカーであれば作らない、「シンプルではない専用命令」として。その記述方法は、SCORTOS と Altair MUSIC の言語を、いいとこどりで混ぜたような形になっています。
どこをどのように組み合わせた…と例示することはできますが、非常に長くなりそうです。ここではそれは避けて「1+1を3にした」とだけ書いておきましょう。とにかく、単に組み合わせる以上の仕事をやってのけています。
巧みに組み合わせた結果として、演奏データを非常に短く書くことを可能にしているのです。これは、1バイトが貴重だった当時としては非常に優れた工夫でした。
ついでに、SCORTOS が持っていた「転調」機能を、ベーシックマスターも持っています。これ、後の MML でもなかなか見ない機能です。
そして、ベーシックマスター最大の特徴は…音階を半角カタカナで示すことでした!
演奏データ形式
ベーシックマスターの MUSIC 命令の記述方法は、全体としては Altair MUSIC に類似しています。
ただし、先に書いた通り、音階は半角カタカナで「トレミフソラシ」で指定します。
出力できる音域は3オクターブ。中央のオクターブでは階名のみを指定します。上のオクターブは階名の前に U を、下のオクターブは、D を付けます(UP/DOWN の意味)。
また、音の「前」に # を付けると半音上がり、B をつけると半音下がりました。SCORTOS も Altair MUSIC も「後」に記号を付けたのですが、譜面上は普通は前につけます。# という記号も含め、ここは譜面に倣った部分なのでしょう。
フラットは B ですが、フラット(♭) と小文字の B (b) の類似性かな…と思います。
音長は、音階とは独立して、先に指定します。
P0 とすると 32分音符、P1は16分音符、P2は付点16分音符、P3は8分音符…と、32分音符以降には付点があり、数値ごとに音長が長くなります。一度指定すると、再指定するまでの音は全てその音長で演奏されます。
ベーシックマスターでは、これを「連続する音符で」共有するようにしたことで、テンポが同じであれば階名だけを続けて書くことで演奏を可能にしています。
P9が全音符で、音長は必ず「数字一桁」になります。ちなみに、4分音符は P5 。音楽での言い方と指定する数字は、全く一致しませんが、常に一桁の数字で指定できるというのは、言語仕様的には美しいです。
なぜ音長が「P」なのかは興味深いところです。Altair MUSIC の紹介記事では、MUSIC Language で書かれた楽譜が、どのように制御命令に変換され、演奏されるかも詳細に書かれていました。
その中で、音を出した後、止めるまでの期間は「Pause」(そのまま待つ)という内部命令に変換されています。おそらくは、これが P の由来ではないかと思います。
ちなみに、紹介記事では休符がどの文字で表現されたかはわからないにもかかわらず、「内部表現」としては、休符も「音を出していない状態で Pause」だったことが読み取れます。
楽譜 A には休符がなく、楽譜 B には休符があったため、内部制御コードでの休符表現はわかるが、MUSIC Language での表現はわからない。
ベーシックマスターでは、休符は R (Rest の意味)で記述します。休符の長さも、P で前もって指定する必要がありました。
「トッカータとフーガ ニ短調」は次のようになります。
P1ラソP3ラP7ラP1ソフミレP5#トP7レP5R
ベーシックマスターは、はじめてコンピューターを使う人に、プログラムの楽しさを教える目的で作られた機械です。しかし、現実問題として、プログラムは難しいです。個々の命令は機能が単純すぎ、それをどのように組み合わせたら何ができるのか…と想像するのは、初心者には途方に暮れる世界です。
それに対し、音楽機能はたった一つの命令ですぐに楽しめるものでした。アメリカのハッカー文化からすれば、シンプルではない、応用の利きにくい命令かもしれませんが、初心者向が最初に取り組むきっかけとしては、非常にわかりやすい、良いものです。
…もしかしたら、ベーシックマスター開発者が、音楽演奏機能を付けたのは、こんな動機ではないかとも考えています。ベーシックマスターの MML は、「トレミフソラシ」と日本語で記述する、かなり独特のものです。もし、「プログラムができない人間でも使えるような機能」として用意したのであれば、日本語で判りやすく、という配慮もわかる気がするのです。
最初の説明ではあえて厳密に書きませんでしたが、CDEFGAB は、「音名」で、ドレミファソラシは「音階」です。
ちなみに、日本語での「音名」は、ハニホヘトイロ。小学校で習ったの覚えてる?
音名に対して周波数は固定ですが、音階に対して周波数は固定していません。
そして、音階に対する周波数を変更することを「転調」と呼びます。
ベーシックマスターが CDEFGAB を使わなかったのは、「転調」機能を付けたかったから、というのもあると思います。
もっと知りたい
この記事の調査を始めるきっかけとなった、MORIYA Ma.(@morian) 氏と、タイニーP(@Kenzoo6601) 氏の会話。資料を示したのはタイニーP氏です。