General MIDI 向けPCM波形(GUS patch, SF2)のメモ

とりあえずいわゆる .mod
や .it
は後まわしにして、まずはMIDI系から。。基本的にはDLS2とSoundFont2がシンセサイザとしては最も高性能なはずなので、それを実装してみて .xm
や .it
はシーケンサだけで済ませたい。。

GUS Patch (Gravis Ultrasound 〜)
GUS Patchは太古の昔にTimidityが採用したので割と普及した。今でもWildMidi( https://github.com/Mindwerks/wildmidi )のようなシンプルなシンセがこれに対応している。
- https://github.com/miker2049/gravisPats -- 元の配布からの抽出
-
https://kakurasan.blogspot.com/2017/04/eawplus-gus-patch.html -- いわゆるeawplusパッチ
- http://ftp.lip6.fr/pub/linux/distributions/0linux/archives_sources/eawpats/eawpats12_full.tar.gz
- http://mirror.its.dal.ca/freebsd/distfiles/eawplus-12.1.tar.gz
- http://mirror.its.dal.ca/freebsd/distfiles/guspat-20000706-required.tar.gz
- http://mirror.its.dal.ca/freebsd/distfiles/guspat-20000706-optional.tar.gz
- http://www.maroon.dti.ne.jp/yta/win32utl/timiditypp/timidity-doc-cfg.ja.html -- 設定ファイル解説
GUSの音源(GF1)のレジスタやGUS Patchのファイルフォーマットについては https://www.alsa-project.org/files/pub/datasheets/gus/gusdk222.zip 内のword文書に説明がある。
記憶が正しければTimidityには本来のGUSにない拡張があった...ような...
制約
近代的なPCM音源と比べると制約が多い。
フィルタが無い 。いやまぁNintendo DSくらいまで家庭用ゲーム機やアーケードでは普通の仕様だったけど。。音楽的には厳しいものがある。
EGが1つのみで、LFOもない 。当時からFM音源類では普通にあったと思うんだけど。。LFOエフェクトとしてはトレモロとビブラートが(たぶんソフトウェアで)提供される。 .pat
で設定できるのは静的なdepth/frequencyだけで、ディレイを持つことはできない。
EGが標準的な6セグメントEGでない 。ハードウェア的にはEGの1セグメントぶんだけが実装されており、ホストがIRQによって次のエンベロープを設定する方式になっている。このため、ソフトウェアでEGを拡張することもできる。ただし、 .pat
の形式としては 4セグメントEG + サスティン + Echo(key up時のリアクション)で構成されている。

SoundFont (.sf2)
Vorbis圧縮を導入した .sf3 とかもあるがとりあえず忘れて良いんではないか。
SoundFontはCreativeがSoundblaster向けに開発したPCM音源波形バンクフォーマットで、MIDI向けの波形配布フォーマットとしては未だに現役で使われている。ただし、Creativeの最近のデバイスではシンセサイザを持っていないか、波形の変更ができない。公式のドライバでは c:/Windows/System32/CT2MGM.SF2
にインストールされる。(ドライバのバージョンによっては CT4MGM.SF2
CT8MGM.SF2
もある)
コンパクトな実装としてはTinySoundfont( https://github.com/schellingb/TinySoundFont )があるが、これを含め実装状況が激烈にまちまちで( https://schristiancollins.wordpress.com/2016/03/02/using-soundfonts-in-2016/ , スプレッドシート: https://docs.google.com/spreadsheets/d/1QzqA9IetT7MVDhG-oSFAWrciyg6O-oaQ_hGsl8fKeSo/edit#gid=2011028303 )、この比較表ではFluidSynthが最も良く実装されているとしているが、SoundFontによっては専用版を配布していることがある。また、Appleの実装は超クッソ激烈に間違っており、外部の実装がどうしても必要になる。現状ではBassMidiの実装が(VirtualMIDISynthのような良いフロントエンドがあるので)野良SoundFontでは基準として使われつつある。