rlib-MML アプリの MML のパース処理は C++ で書かれており OSS としてGitHub で 公開していますが、このたび JavaScript からも簡単に利用できるよう npm package を公開しました。
C++ の段階で Wasm へのコンパイルが可能な形でしたが、さらに扱いやすい形にしました。
@thinkridge/rlib-mml
npm package 化のコードも GitHub で公開しております。
サウンドフォントのデコード処理と同じレポジトリにて、サンプルコードも含めたモノレポ構成になっています。
https://github.com/thinkridge/rlib-Sounds
これにサウンドフォントデコーダーである @thinkridge/rlib-soundfont も合わせれば、ブラウザだけで MML → MIDI → SoundFont 再生まで完結します。
簡素ですが React を使ったサンプルアプリも前述のレポに含まれています。
react-demo

@thinkridger/lib-mml、@thinkridge/rlib-soundfont どちらもビルドに Emscripten / Boost を使用していますが、利用者は npm パッケージとしてそのまま使用でき、特別な知識は不要です。
サウンドフォント、MML、MIDI などにご興味ある方はぜひお試しください。
問題の報告や改善案、御助言などありましたらご一報いただけますと幸いです。
なお rlib-MML アプリ 及び WebApp 版は、FM音源サポートやサーバーによるC++ネイティブ処理といった特徴が付加されています。
こちらもぜひお試しください。
https://rlib-mml.thinkridge.jp
rlib-MML アプリ を更新しました。
ご利用者様からの意見をもとに、MML入力エリアのフォントを等幅フォントに変更しました。
貴重なご意見をお寄せいただき誠にありがとうございます。
あわせて各種 OSS のアップデートも行っています。
rlib-MML アプリおよび rlib-MML WebApp は、テキスト入力だけで曲が作れます。 ぜひお気軽にお試しください。
また、問題の報告、改善案や御助言などありましたら、ご一報頂けますと幸いです。よろしくお願いします。
rlib-MML WebApp はブラウザでご利用いただけます。
https://rlib-mml.thinkridge.jp
rlib-MML アプリ はiOS、macOS、Android に対応しています。
rlib-MML アプリではサウンドフォントを利用した音声出力を行っています。
このたび、その部分のソースコード一式を GitHub にて公開しました。
https://github.com/thinkridge/rlib-Sounds
サウンドフォントのデコード処理は C++ で記述していますが、Emscripten を用いて WebAssembly としてビルドすることも可能です。
そこで、このデコーダーを JavaScript から簡単に利用できるよう、npm package としても公開しました。ブラウザおよびnode.jsのどちらでも利用できます。
@thinkridge/rlib-soundfont
npm package では、標準MIDIファイルからWAVファイルへ変換するというシンプルなインターフェースのみを提供していますが、C++ レイヤでは波形データを直接扱える形にしています。
ただし、現時点では親切なドキュメントを用意できていない点はご容赦いただければと思います。
サウンドフォントにご興味ある方はぜひお試しください。
問題の報告や改善案、御助言などありましたらご一報いただけますと幸いです。
なお、rlib-MML アプリではFM音源のレンダリングも実装していますが今回の公開には含まれていません。(ymfm に手を加えて利用しているためどう扱うべきか検討中です)