PCM音色パラメータ仕様
WAVサンプルを鳴らすPCM音色(音色)を定義するYAMLファイルの記載方法です。1ファイルに 複数音色を定義できます。
ファイル形式
YAML形式。コメント行は#で表現し、空行・スペースのみの行は無視されます。
fileio.LoadPCMVoiceFile / LoadPCMVoiceFileFS / SetPCMVoiceData
のいずれかで読み込みます。読み込み時にYAML解析と同時に参照WAVファイルもメモリへデコードされます
(同一WAVファイルは重複デコードせずキャッシュを再利用)。
voiceType: 2つのタイプ
oneShot(ワンショット)
ドラムキットのように、複数のノートそれぞれに独立したWAVサンプルを割り当てて発音するタイプです。
1音色につき最大16個の
voiceSettingを持てます。ファイル自体にループ設定があっても無視
され、常にワンショット(波形の最後まで)再生されます。loop / baseNote /
envelope は無視されます。
long(ロング)
ヴァイオリン等の持続音を想定したタイプです。
voiceSettingは1個のみ。baseNote
を起点に、鳴らすノートに応じて12音階でピッチが変化して再生されます。note /
volume / pan(voiceSetting側)は無視され、代わりにパート設定側の
volume/panが使われます。エンベロープ・LFO・ループ再生に対応します。
共通パラメータ
| キー | 範囲・書式 | 説明 |
|---|---|---|
voiceID | 整数 | 音色を一意に識別するID。 |
voiceType | oneShot / long | 音色タイプ。 未知の値はYAML自体のエラーとして扱われ、読み込みが中止されます。 |
loop | true / false | longのみ有効。trueかつWAVファイル自体
にsmplチャンクのループ設定が含まれる場合はその区間をループ、含まれない場合は波形の
先頭〜末尾をループします。falseの場合はWAV自体にループ設定があってもループ再生しません
(oneShotでは常に無視)。 |
lfo | true / false | longのみ有効(Phase 8)。oneShotでは 無視されます。未設定時はfalse。 |
lfoDelay / lfoFade / lfoDepth / lfoHz |
FM音色と同じ | デフォルトはそれぞれ0.4 / 0.5 / 30 /
6。詳細はFM音色パラメータ仕様参照。 |
voiceSetting
| キー | oneShot | long | 説明 |
|---|---|---|---|
fileName | 必須 | 必須 | WAVファイル名(モノラル・44.1kHz
のみ対応)。絶対パス指定、またはファイル名のみの場合はYAML自体と同一フォルダ(LoadPCMVoiceFileFS
の場合はfsysルートからの絶対パス、ファイル名のみならYAMLと同フォルダ)を探索します。 |
note | 必須(例: C1) | 無視 | このサンプルを 発音させるノート名。1音色内で最大16個まで設定でき、ノートごとに異なるサンプルを割り当てます。 |
baseNote | 無視 | 必須(例: A3) | このサンプルが 原音(無変換)で再生されるノート。未設定・不正値の場合は警告の上A4にフォールバックします。 |
volume | 0〜127 | 無視 | そのサンプル単体の音量(oneShotは サンプルごとに個別ミックス可能)。 |
pan | -16(左)〜16(右) | 無視 | そのサンプル単体のパン定位。 0が中央、連続値(例: -7で少し左寄り)。 |
envelope | 無視 | "attackRate, decay1Rate, sustainLevel, decay2Rate, releaseRate" |
FM音色のenvelopeと同一書式・同一意味。FM音色パラメータ仕様 参照。 |
設定例
pcmVoice:
# ワンショットタイプ(ドラムキット)
- voiceID: 0
voiceType: oneShot
loop: false
voiceSetting:
- fileName: kick.wav
note: C1
volume: 100
pan: 0
- fileName: snare.wav
note: E1
volume: 100
pan: 0
- fileName: hat1.wav
note: F#1
volume: 100
pan: -16
# ロングタイプ(持続音、ループ・エンベロープ・LFO付き)
- voiceID: 1
voiceType: long
loop: true
lfo: true
lfoDelay: 0.3
lfoFade: 0.4
lfoHz: 7
voiceSetting:
- fileName: uhh.wav
baseNote: A3
envelope: "31, 1, 2, 6, 14"
WAVファイル仕様
- モノラル・44.1kHzのみサポート。
- ロングタイプのループは、WAVファイル自体に埋め込まれた
smplチャンクのループポイント (ある場合)を優先して使用します。 - 同一WAVファイルが複数の音色・複数の読み込み呼び出しから参照されても、デコードは1回のみ行われ、
以降はメモリ上のキャッシュを再利用します(
memory.ClearPCMWaveCacheで明示的にクリア 可能)。
未定義・不正な値(軽微なもの)は警告ログを出力した上で0扱いにして解析を継続します。
voiceTypeが不明な値、またはWAVファイルの読み込み自体に失敗した場合は致命的エラーとして
読み込みが中止されます。