GS(MSGS)互換の GM1 音源配列を持つ、正弦波加算合成 + 簡易FMのサウンドフォントです。 録音サンプルは一切使用せず、すべての音色を正弦波(の足し合わせと位相変調)だけで合成しています。
▶ YouTube で試聴する (V1時点の音源です)
| Bank | 内容 |
|---|---|
| 0 | GM1 128音色(GS/MSGS互換配列)。V2でFM層・倍音デチューンを追加し、生楽器も「リアルではないが懐かしいシンセサイザーっぽい」鳴り方に |
| 1 | GM配列のまま全128プログラムをテクノ/トランス向けシンセに置き換えた音色バンク(V2で新規)。普通のGM MIDIをバンク1で鳴らすと曲全体がそのままエレクトロになります |
| 2 | "Techno Synth" 専用6音色(Saw Lead / Acid Bass / Pluck / Stab / Super Pad / Sub Bass)。V1ではBank 1にありましたが、Bank 1がフルGM配列になったため移動 |
| 128 / Preset 0 | 標準GMドラムキット |
- 音源方式は正弦波のみ。加算合成(フーリエ級数によるSAW/矩形波の再現を含む)に加え、 V2では正弦波どうしの位相変調による簡易FM音源を各音色にレイヤーしています
- FMの「モジュレーター・エンベロープ」を実装: 変調指数(index)が独立したA/Dエンベロープで 時間変化するため、アタックで倍音が開いて減衰していく、FM音源特有の動きが出ます (例: エレピはDX系の 1:1 ボディ + 14:1 のタイン、ブラスは押している間ほど明るくなる設定)
- 倍音のずれ(デチューン): 各倍音を整数比からわずかにずらし(倍数が上がるほど深く)、 さらにBank 1ではユニゾン用のデチューン・オシレータを最大5声重ねてスーパーソー的な厚みを出しています
- 打楽器やブレスノイズ系の音色は、多数の正弦波クラスターでノイズ的な質感を近似
- Bank 0 は鍵盤1つにつき1音を個別合成、Bank 1 は3半音ごとに1音を合成(ファイルサイズ対策)。 音域外の鍵盤はピッチ追従で延長
- フィルター(ローパス+レゾナンス)とLFOによる音色の時間変化を全カテゴリに設定し、 ピアノやギターなどの生楽器系も静的なスペクトルにならないよう調整
- pan・reverb send・chorus send を音色ごとに設定。SF2の標準モジュレータにより CC1(モジュレーションホイール→ビブラート)・CC7/CC11(音量/エクスプレッション)・ CC10(パン)・CC91/CC93(リバーブ/コーラス送り)・ピッチベンドに対応
TcGM.sf2— 完成したサウンドフォント本体(Git LFS管理)scripts/— 生成に使用したPythonビルドパイプラインsynth_engine.py— 合成エンジン(加算合成・簡易FM(fm_stack)・ノイズクラスター・ループポイント検出)gm_data.py/timbre_recipes.py— GM1 128音色のカテゴリ別音色レシピfm_recipes.py— FMオペレータ/モジュレーターエンベロープの設定と、Bank 1(GM配列シンセバンク)のレシピdrum_recipes.py— 標準GMドラムキットの合成レシピtechno_recipes.py— Bank 2 "Techno Synth" のオシレータ/フィルタレシピsf2_writer.py— 自作のSF2(RIFF)バイナリライターbuild_sf2.py— 全体のビルドスクリプト
domino/TcGM_V2.xml を Domino のインストールフォルダ内 Module フォルダにコピーし、
[ファイル]→[環境設定]→[MIDI-OUT] で音源定義ファイルに「TcGM V2」を選択してください。
128プログラム × 各バンク(GM / Syn / Techno)、ドラムセットの各キー名、
主要CCのマクロが登録されます。
バンク切り替えは CC0(バンクセレクトMSB) です(VirtualMIDISynth/BASSMIDI・FluidSynth の メロディバンクの流儀に合わせています)。
| CC0 | 鳴る音 |
|---|---|
| 0 | GM1(Bank 0) |
| 1 | テクノ/トランス版(Bank 1) |
| 2 | Techno Synth 専用6音色(Bank 2、PC 1〜6のみ) |
定義ファイルは音色テーブルから自動生成されるので、レシピを変更したら再生成してください。
python scripts/make_domino_module.py
python scripts/build_sf2.py --out TcGM.sf2
--banks gm,synth,techno,drums— ビルドするバンクを選択--synth-key-step 3— Bank 1 の合成間隔(半音)。1にすると音質は上がりますがファイルは約3倍--note-limit N— 動作確認用の軽量ビルド--jobs N— レンダリングの並列プロセス数(既定=全コア、1で逐次)
合成は float32 + マルチプロセスで実行されます(V1比で約20倍高速)。
VirtualMIDISynthやFluidSynthなど、SF2に対応したMIDIシンセ/プレイヤーで読み込んでご利用ください。
Git LFSを使用しているため、git clone する場合は事前に git lfs install が必要です。
- 実機のGS音源や録音サンプル音源を忠実に再現したものではなく、加算合成による近似音色セットです
- SF2フォーマット自体に「ディレイ」専用のジェネレータは存在しないため、ディレイエフェクトは コーラス送りによる近似にとどまります
LICENSE を参照してください。