100日後に完成するゲームシステム 73日目「ゲーム音源をMSXサウンド風なMIDI仕様を搭載」

2021/05/02

MIDI テクノロジー プログラミング 特集

t f B! P L
eyecatch 興味のあるプログラムをやっていると、興奮して夜も眠れない、弓削田です。 最近、Ichigojamなど、僕のプログラミング学習の原点である、MSX Basicが再燃してきていますね。 そして、今作っているゲームのサウンドに関して、 どうして、ゲームそのものの動作がモッサリしてきたのが、オーディオコンテンツの量が多くなってきたのが原因だとわかり、 その昔のMSXの頃のように、ゲーム音楽は、音素材を再生するのではなく、 MIDI的に端末から再生できないかと、調べていたら、 なんと、Javascriptで、音源無しに、Web Audio APIを使って、音を再生することができるではないですか!!! そして、クオリティは、ファミコンレベルの8bitサウンド!!! 素敵、非常に今回の企画にもってこい!! という事で、midi的に、ゲームにサウンドを組み込もうと思い、今回はMSX BasicのPLAY関数的なJavascriptライブラリを作ってみたので、 それを公開したいと思います。

仕様検討

Javascriptで音の波形をコントロールして、出力する方法は、検索すれば意外と簡単に見つかります。 Web Audio APIでコインの音を作る このページが非常にわかりやすく書かれていたので、コードの解説などは、こちらを見てもらうといいでしょう。 そして、今回最も拘ったのは、MIDIのバイナリデータを作るっていう大それたレベルのライブラリではなく、 MSX BasicのPLAY命令で、ドレミファソラシドを"O4CDEFGABO5C"という風に書き込んだアレです。 わからない人の為に説明すると、 Cはド、Dはレ、Eはミ...という風に音階が書かれていて、 O4とO5の箇所は、オクターブの階層値という意味です。 他にもT120のように、楽譜のテンポ指定などもできて、まあまあそれなりに、MIDI的な使い方ができるので、 このMSXの文字列をそのまま貼り付けて再生できるライブラリにしたいと思います。

デモ

実際にできあがりは、次のようになりました。 inputタグの中に、MIDIコード(MSX Basicのやつ)を書き込んで、「Play」ボタンを押すと、あの有名ゲームのコインをぶっ叩いた時の音が鳴ります。 コードサンプル

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ