Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TcGM.sf2 (V2)

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 用音源定義ファイル

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 を参照してください。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages