日本語English

FM音色パラメータ仕様

4オペレータFM音源の音色(音色)を定義するYAMLファイルの記載方法です。1ファイルに 複数音色を定義できます。

ファイル形式

YAML形式。コメント行は#で表現し、空行・スペースのみの行は無視されます。 fileio.LoadFMVoiceFile / LoadFMVoiceFileFS / SetFMVoiceData のいずれかで読み込みます。

fmVoice:
  - voiceID: 0
    algorithm: 2
    feedback: 20
    lfo: true
    lfoDelay: 0.3
    lfoFade: 0.4
    lfoDepth: 30
    lfoHz: 7
    operators:
      - multiple: 1
        totallevel: 127
        detuneCents: 0
        wave: W1
        envelope: "11, 10, 0.6, 4, 12"
      - multiple: 2
        totallevel: 40
        detuneCents: 0
        wave: W1
        envelope: "31, 12, 0.3, 4, 12"
      - multiple: 1
        totallevel: 30
        detuneCents: 0
        wave: W2
        envelope: "31, 10, 0.5, 4, 12"
      - multiple: 1
        totallevel: 0
        detuneCents: 0
        wave: W2
        envelope: "31, 8, 0.7, 2, 12"

音色パラメータ一覧

キー範囲・書式説明
voiceID整数音色を一意に識別するID。[partSetting]voiceIDRegisterVoiceから参照します。
algorithm0〜7の整数4基のオペレータの接続方法(下記「アルゴリ ズム一覧」参照)。
feedback0〜7オペレータ1(OP1)にかけるセルフフィードバック量。 7を超える値は7として扱われます。
lfotrue / falseビブラートLFOの有効/無効。未設定時はfalse (Phase 8)。
lfoDelay秒(0.1秒単位)発音開始からLFOが掛かり始めるまでの 遅延時間。未設定時のデフォルトは0.4
lfoFade秒(0.1秒単位)LFO開始から深さが最大になるまでの時間。 未設定時のデフォルトは0.5
lfoDepthセント(100=半音1個分)LFOの揺れ幅。未設定時の デフォルトは30
lfoHzHzLFOの周期。未設定時のデフォルトは6

operators(4要素固定、各オペレータ共通)

キー範囲・書式説明
multiple正の小数ノート基本周波数に対する周波数比。値が大きい ほど倍音的に高い成分になります。クランプはされません。
totallevel0(最大音量)〜127(無音)そのオペレータの出力減衰 量。キャリア(音として出力されるオペレータ)では音量、モジュレータでは変調の深さに相当します。 約0.75dB/ステップで減衰します。
detuneCentsセント(100=半音1個分)multipleに 対する微調整デチューン。正負両方指定可能です。
waveW1W8基本波形(下記「基本 波形一覧」参照)。未設定または無効値はW1(正弦波)として扱われます。
envelope"attackRate, decay1Rate, sustainLevel, decay2Rate, releaseRate" のカンマ区切り文字列下記「エンベロープ」参照。

envelope(5項目)

項目(記載順)範囲説明
attackRate0〜31アタック(無音から最大音量に達するまで)の速さ。0は立ち上 がらない、31が最速。
decay1Rate0〜31最大音量からsustainLevelまで減衰する速さ。0は最大音量を 保持し続ける。
sustainLevel0.0〜1.0decay1が落ち着く先のレベル。
decay2Rate0〜31sustainLevelから0へゆっくり減衰する速さ(セカンダリ ディケイ)。0は減衰せず持続。
releaseRate0〜31ノートオフ後、無音になるまでの速さ。0は減衰しません (キャリアでは音が鳴り止まなくなるため注意)。
レート値は0〜31の対数的スケールで、実時間(約8秒〜数ミリ秒)に変換 されます。値が小さいほどゆっくり、大きいほど速く変化します。

基本波形一覧(W1〜W8)

waveで選択できる8種類の基本波形です。phaseは0〜2πの位相を表します。

選択子名称波形の特徴
W1正弦波(サイン波)全周期の基本波形。既存音色との後方互換の デフォルト。
W2半波整流正弦波正(上)の半周期のみを取り出し、負(下)を0 に固定。
W3全波整流正弦波負(下)の半周期を正(上)へ反転。
W4半波整流正弦波(周期半分)前半のみ正の半周期で、後半は0。
W5鋸の歯状に近い正弦波正の半波を2倍周期(半分の幅)で2回 繰り返す。
W6全波整流(周期半分)W3の山をさらに2倍の密度で詰めた形。
W7正の全波整流(極性あり)W3を小さくし、正側にシフトした 波形。
W8非対称鋸の歯状正弦波W5の交互反転版。

アルゴリズム一覧(0〜7)

4基のオペレータ(図ではOP1〜OP4、内部では0〜3)をどう接続するかを選びます。矢印はモジュレータ →キャリアの変調方向、オレンジ枠がそのアルゴリズムで音として出力される「キャリア」です。オペレータ 1(OP1)には全アルゴリズム共通でfeedbackによるセルフフィードバックを追加でかけられます。

algorithm: 0 — フルシリアルチェーン
OP1 OP2 OP3 OP4
OP1→OP2→OP3→OP4 の一直線。出力 = OP4。最もFM感(倍音の複雑さ)が強く出る 基本形です。
algorithm: 1
OP1 OP2 OP3 OP4
OP1→OP4、OP2→OP3→OP4。出力 = OP4。2系統のモジュレータが1つのキャリアに 合流します。
algorithm: 2
OP1 OP2 OP3 OP4
OP1→OP4、OP2→OP3→OP4。出力 = OP4。algorithm 1と似ますが、OP1が直接OP4を 変調する点が異なります(サンプル音色 voiceID:0 で使用)。
algorithm: 3
OP1 OP2 OP3 OP4
OP1→OP2→OP4、OP3→OP4。出力 = OP4。2系統のモジュレータ経路が1つのキャリア に合流する構成です。
algorithm: 4 — 2系統の並列FMペア
OP1 OP2 OP3 OP4
(OP1→OP2) と (OP3→OP4) が独立に並列動作。出力 = OP2+OP4。2つの音色を重ねた ような厚みのある音になります。
algorithm: 5 — 1対多モジュレータ
OP1 OP2 OP3 OP4
OP1が OP2・OP3・OP4 の3つを同時に変調。出力 = OP2+OP3+OP4。1個のモジュレータ で複数キャリアを揺らす構成です。
algorithm: 6
OP1 OP2 OP3 OP4
OP1→OP2のみ変調あり、OP3・OP4は完全独立のキャリア。出力 = OP2+OP3+OP4。
algorithm: 7 — 全独立(加算合成)
OP1 OP2 OP3 OP4
変調接続なし。4基とも独立キャリア。出力 = OP1+OP2+OP3+OP4。オルガン的な 加算合成音に向きます。

設定例

ベース/リード寄りの音色(シリアル寄りのalgorithm 2、波形はキャリア寄りにW2):

fmVoice:
  - voiceID: 0
    algorithm: 4
    feedback: 20
    operators:
      - multiple: 20
        totallevel: 20
        detuneCents: 0
        wave: W1
        envelope: "28, 10, 0.6, 4, 20"
      - multiple: 2
        totallevel: 40
        detuneCents: 0
        wave: W1
        envelope: "31, 12, 0.3, 4, 20"
      - multiple: 1
        totallevel: 30
        detuneCents: 0
        wave: W2
        envelope: "31, 10, 0.5, 4, 20"
      - multiple: 1
        totallevel: 0
        detuneCents: 0
        wave: W2
        envelope: "31, 8, 0.7, 2, 20"
未定義・不正な値(YAMLパースエラー等の軽微なもの)は警告ログを出力した上で0扱い にして解析を継続します。YAML自体が不正な場合のみ致命的エラーとして読み込みが中止されます。