独自のMIDIツール開発記 #1「ブラウザ音源を使ったSE作成ツールが欲しいの巻」

2023年9月1日

MIDI プログラミング

eyecatch インターネットブラウザで、ゲームを作ろうとすると、色々なセキュリティ事情による、音声データの再生の制限にうんざりするでしょう。 まあ、それはそれとして、mp3音源もまあまあなボリュームにもなったりするので、ここは一つファミコン音源でいいから、容量の軽い音声データが欲しいな〜と思ったわけですよ。 ※ゲーム開発の話はまた別の機会にしたいと思います。 データ容量が軽い音声ファイルといえば、MIDIファイルでしょ。 ストレージ音声ファイルよりも、音源を別に用意して、音階データ(速度や音種なども含む)のみの非常に軽量な状態でのMIDIデータって、本当にゲーム向きだと思うんですよね。 思い立ったら吉日という事で、今回から何日かに分けて、MIDIツールを作っていく開発備忘録をブログで公開したいと思います。 最初に言っておきますが、このMIDIツールは、厳密にMIDI企画に沿ったものではなく、MIDIイズム的なニュアンスで、独自のテキスト音データを構築して、以後に開発するゲームなどでの使用を目的にするものです。 本格的なMIDIを期待する人は、このツールに期待されるとこちらとしても困るかもしれません。

MIDIについて

プログラミングは問題なくできるけど、MIDIについての知識がうとい人もいるかもしれないので、以下説明を掲載しておきます。
MIDI(Musical Instrument Digital Interface)は、 音楽や音声データをコンピュータや電子楽器間でやり取りするためのプロトコルです。
  1. MIDIは音楽の演奏情報をデジタル形式で伝送するための標準規格で、音符、音量、音色、タイミングなどの情報を含みます。
  2. MIDIデータは音楽ノートを直接含まず、演奏の指示を含む信号で、たとえば、「Cの音を弾く」といった指示をコンピュータや楽器に送信します。
  3. MIDIはコンピュータと電子楽器、または異なる電子楽器間で通信するための手段として使われ、楽器同士が相互に通信し、音楽を合成・演奏することが可能です。
  4. MIDIデータは軽量で、テキストファイルのような形式で保存することにより、異なる機器間で簡単にデータをやり取りできます。
  5. DAW(Digital Audio Workstation)ソフトウェアを使用して、MIDIデータを編集・作成でき、音楽制作やアレンジに広く活用されています。
今回作るMIDI(もどき)ツールの大きく違う点は、電子楽器がギターやピアノと言ったメジャーな楽器の音源を組み込まないという事です。 ゲームのピコピコ音レベルという事ですね。

いったいどんなツールを作るの?

以前ブログに、MSXサウンドをインターネットブラウザで出す方法のサンプル付きで掲載したものが基本技術になります。 ゲーム音源をMSXサウンド風なMIDI仕様を搭載 HTML5のAudioAPI仕様を使って、MSXのBASICでBGMなどに使っていた、音声再生機能と同じような記述方法のテキスト音符により、メロディなどを再生可能にする技術です。 このテキスト音符を手打ちするのがなかなかの手間とややこしさと難しさが入り混じっているので、いっそのことエディタを作ってしまえ的ないつものノリで作るツールになります。 でも、今後使えるツールになる可能性は大きいのでしっかりと作り込んでおきたいと思います。 ちなみに、ホームページなどで音を出す事も可能になりますね。 なんせ、インターネットブラウザで難なく音やメロディを出せるようにするツールですからね。 ちなみに、上記ブログでは、スーパーマリオのコインを取った時のチャリーンという音をデモとして掲載しています。 (※マリオのコイン音は、任天堂の登録商標です)

インターフェイスを考える

自分の場合、こうしたツールを作る時に、まず最初は、間違いなく見た目のインターフェイスを決める所から入ります。 Googleの画像検索で、MIDIツールの編集画面をいくつかキャプチャしてみました。

画像検索した結果

考えた結果

ほぼ全てのアプリで、左側にピアノ鍵盤が置いてあって、右側がタイムラインと鍵盤に合わせた音階構造になっているようです。 こうしておくことで、実際にMIDIなどで音楽を作っている小室くんなどにも将来的に使ってもらえるかもしれませんね。(誰?って言わないの) その他の機能は、オプション的に後から足してもいいので、とりあえずこのグランドルールにのっとればいいと考えました。

欲しい機能とツール完成後の著作権

とりあえず、このツール自体が、軽量でかつ無駄なシステムフレームワークに振り回されない仕組みにすることが大前提です。 なので、いつものように、バニアJSフレームワークで構築しようと思います。 そして、公開サーバー側では、PHPなどの機能を持たずに、ファイル保存もしない仕様にするけど、ちゃんとデータのセーブ・ロード機能は持たせようと思います。 データは、手元のパソコンでファイル管理するという、古くからのパソコンアプリの仕様なので、これを使いにくいと考える人は少ないでしょう。 ツールは、完成後は、無料公開してだれでも使えるようにする予定です。 これによるクラウドファンディングなどもやらない予定だし、開発員を募るような活動も一切行こないません。 もちろん、それぞれが作った音源データ自体は、作った人の著作物とすることにして、こちらでは、権利の一切は放棄する予定です。 ちょっと技術的に難しそうに思えるのは、音の波形表示をしようと思っているのだが、オシロスコープ処理を組み立てるのにどのくらい期間が掛かるのか見えていません。 時間がかかりそうなら、こうした装飾系の機能は後回しでver2.0以降にするかもね。

あとがき

とりあえず、今回は、こんなツール作るよ!的な宣言をして、ブログ閲覧者の人や、MIDIでググってたどり着いた人に、期待をもたせるだけ持たせた回でした。 でも、作ることは本気だし、実はもう、見た目だけは作り上げているので、次回はその内容を公開していく予定です。 もし期待してくれている人がいたら、頑張れコメントでも書いておいてくだされ。 こちらのやる気、元気、モチベーションが、爆上がりするでしょう。

このブログを検索

ごあいさつ

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