libinstpatchとは

音楽技術etc. Advent Calendar 2019の…うーん…とりあえず21日目くらいにしようかな…のエントリーです。残りは上手く埋まったら埋めていきます。とりあえず今回はlibinstpatchについてです。短めに。

github.com

libinstpatchはswami projectの一環として公開されているインストゥルメンタルパッチの抽象表現ライブラリです。インストゥルメンタルパッチとは何かというと、具体的には次の3つの実装があるので、これを見ると何となくでもすぐに理解できると思います:

要するにサウンドフォントやDLSはどちらも性格が似ているので、両方ともまとめて扱えるようにしてしまおう、というものです(GigaSamplerはどの辺のコミュニティで使われているのか正直よくわかりません)。どちらも懐かしいといえば懐かしい存在ではありますが、現役で使われていなくもないものですね。

どういうところで使われるかというと、サウンドフォントベースのサンプラーや仮想MIDIバイスのソフトウェアで使うことができます…そうです、Fluidsynthの最新版2.1でこのlibinstpatchがサポートされた結果、FluidsynthでもDLSが使えるようになりました。実のところ作者がFluidsynthのメンテナなので、推して知るべしではあります。libinstpatchをどうやって使うかも、ここから使われ方を見てみれば分かるかと思います。

SFもDLSも(たぶんGigaSamplerも)単なるインストゥルメンタルパッチのデータストレージにすぎないので、このライブラリ自体がやっていることは単純です。サウンドフォントを読み書きするライブラリのAPIと機能的には大して変わらないはずです。

データロードの部分だけはIpatchConvert_から始まる名前のフォーマット別実装が含まれています。特に難しいことはないでしょう。