Open3

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

okuokuokuoku

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

okuokuokuoku

GUS Patch (Gravis Ultrasound 〜)

GUS Patchは太古の昔にTimidityが採用したので割と普及した。今でもWildMidi( https://github.com/Mindwerks/wildmidi )のようなシンプルなシンセがこれに対応している。

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時のリアクション)で構成されている。

okuokuokuoku

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では基準として使われつつある。