rlib-mml アプリではサウンドフォントを利用した音声出力を行っています。
このたび、その部分のソースコード一式を github にて公開しました。
https://github.com/thinkridge/rlib-Sounds
サウンドフォントのデコード処理は C++ で記述していますが、Emscripten を用いて WebAssembly としてビルドすることも可能です。
そこで、このデコーダーを JavaScript から簡単に利用できるよう、npm package としても公開しました。ブラウザおよびnode.jsのどちらでも利用できます。
https://www.npmjs.com/package/@thinkridge/rlib-soundfont
npm pacakge では、標準MIDIファイルからWAVファイルへ変換するというシンプルなインターフェースのみを提供していますが、C++ レイヤでは波形データを直接扱える形にしています。
ただし、現時点では親切なドキュメントを用意できていない点はご容赦いただければと思います。
サウンドフォントにご興味ある方はぜひお試しください。
問題の報告や改善案、御助言などありましたらご一報いただけますと幸いです。
なお、rlib-mml アプリではFM音源のレンダリングも実装していますが今回の公開には含まれていません。(ymfm に手を加えて利用しているためどう扱うべきか検討中です)
