コンピュータで音楽演奏と言うと、大きく2つの方法があります。1つは、コンピュータで外部の電子楽器を制御するという方法でして、これの標準は、いわゆるMIDI(Musical Instrument Digital Interface)というやつで、電子的な楽譜データをシリアルポート経由などで電子楽器に流してやる事になります。肝心の電子楽器を持っていないのでこの方法は試したことはないのですが、ポケ3にもシリアルポートはついているわけですから、FMR用のMIDIツールを使えば、十分可能なような気がします。
もう一つの方法は、楽譜データに基づき、マシンそのものの音源をコントロールする方法。この場合、楽譜データはMIDIでもいいわけですし、その他にもいろいろな電子楽譜のフォーマットがあります。
さて、ポケ3を含むOASYSに搭載されているDOSから使えるFBIOSには、内蔵音源であるBeep音の周波数を変える機能があります。最近、母艦のHDDの中を整理していたら、2年ほど前に作ったプログラムが発掘されました。本人も作ったことを忘れていた、というか、とりあえず音が出る程度の未完成な状態で投げ出してあるのですが、これが、外部から楽譜データを読み込みながらポケ3の内蔵音源をコントロールして音楽演奏をするプログラムだったのですね。
楽譜形式には、ご存知の方も多いと思いますが、MML(Music Macro Language)というもので、"cdefgab" と書くと「ドレミファソラシ」と音が出るというものを採用しています。
開発言語はC言語で、LSI C-86 でコンパイルしてあります。
このまま埋もれさせてももったいないので、ここで公開させていただきます。
ただ、ドキュメントを書くのが面倒なんで、ソースリストとコンパイル済の実行ファイルだけを梱包したものを置いておきます。著作権は主張しませんので、好きなように扱ってください。
楽譜データとしては、JASRACに怒られないものとして、以下のような例をとりあえず掲載しておきます。
O4CCGGAAG2RFFEEDDC2R GGFFEED2R GGFFEED2R O4CCGGAAG2RFFEEDDC2R
このような楽譜をファイルにしておき、標準入力からリダイレクションで入力してやれば演奏してくれます。また、WEBを探せば、楽譜データなんて大量に入手できるかもしれません。
もし可能であれば、誰かもっと完成度の高いものに改良していただけると幸いです。ちょっと考えただけでも、コマンドラインの引数でファイル名を指定できるようにするとか、いくらでも改善の余地があるかと。