PCM (ADPCM / PDX)¶
PCM は、サンプルバンク (PDX ファイル) の音を、ADPCM (MSM6258) で鳴らす機能です。X68000 の PCM8 と同じ考え方で、最大 8 チャンネルを同時に鳴らします。
サンプルバンクの宣言¶
ファイルの冒頭に、#pcmfile で PDX ファイルを宣言します。
#pcmfile "SAMPLE.PDX"
- PDX ファイルは、開いている MML ファイルと同じフォルダ からの相対パスで探されます。
#pcmfileが必要なのは、サンプルを鳴らす音符 (n<番号>) が 1 つでもあるとき だけです。PCM のチャンネルがあっても、鳴らす音がなければ、宣言は要りません。
チャンネル¶
CHP1:〜CHP8: で、PCM のチャンネルを書きます。内部では CH12〜CH19 になります。
#pcmfile "SAMPLE.PDX"
CHP1: v13 L8 n0 n1 n0 n1
CHP0: や CHP9: のように、範囲外の番号はエラーになります。
PCM チャンネルのコマンド¶
| コマンド | 意味 |
|---|---|
n<番号> |
サンプルを鳴らす (n0〜n95) |
n<番号>,<ticks> |
音長を ticks にしてから鳴らす (l(ticks) を書いてから n<番号> を書くのと同じ) |
p0〜p3 |
パン |
F0〜F4 |
再生レート (下の表) |
@v0〜@v255 |
PCM8 互換の音量 |
v<N> / l(N) |
ネイティブの音量・音長 |
上記以外は、ふつうのコマンドとして読まれます。範囲外の値は、すべてエラーになります。
再生レート F0〜F4¶
| コマンド | レート |
|---|---|
F0 |
3.90625 kHz |
F1 |
5.20833 kHz |
F2 |
7.8125 kHz |
F3 |
10.41667 kHz |
F4 |
15.625 kHz |
PDX ファイルについて¶
- 96 個のサンプル (
n0〜n95) を持てます。 - 音声データは、MSM6258 の ADPCM 形式です。
RetroFM Drums v1(任意の音源パック)¶
ダウンロードと導入手順を参照してください。
録音素材を使わずに合成した12音のPDXです。CC0の条件で、商用利用、加工、ゲームへの同梱、
PDXそのものの再配布ができます。クレジットは不要です。アプリ本体の再配布条件とは別です。
利用条件と出典は、パック内の LICENSE.md と PCM_PROVENANCE.md を参照してください。
バンクをMMLと同じフォルダーに置いて、次のように指定します。
; chip=all
; pdx_default_vol=100
#pcmfile "retrofm_drums_v1.pdx"
CHP1: [BPM 120] F4 p3 v12 L4 n0 r n2 r
| 番号 | 音 |
|---|---|
| n0 / n1 | Kick Deep / Kick Tight |
| n2 / n3 | Snare Body / Snare Tight |
| n4 / n5 | Closed Hat / Open Hat |
| n6 / n7 / n8 | Tom Low / Tom Mid / Tom High |
| n9 / n10 / n11 | Clap / Crash / Ride |
このバンクは 全音F4(15.625 kHz) 用です。PDX自体に推奨レートは保存されません。 F3などで再生すると、音程と長さが変わります。n12〜n95は空です。 重ねて鳴らす音には別のCHPを使ってください。
サンプル同梱版には、12音の試奏MMLと、SCC 5パート+PCM 3パートの
Shadow_Reactor_Public_v1.mml(BPM 150、25.6秒ループ)が入っています。
音源のみの版にはMMLを含みません。
配布zipの MML/RetroFM-Drums-v1 を展開し、Resourcesから開いてください。
自動更新は既存のMMLフォルダー内ファイルを上書きしません。
音が変わる改訂は新しいバンク名・フォルダー名で提供し、既存の版を同名で置き換えません。
外部のPDXも同じ #pcmfile 構文で指定できます。その利用・再配布には各素材の条件が適用されます。
曲全体の PCM の音量¶
; pdx_default_vol=<%> で、PCM 全体の音量を調整できます (曲ヘッダディレクティブ)。
原音のsample時刻によるPCMイベント¶
MML tick に丸めず、VGMなどの原音サンプル時刻に合わせてPDXを発音する場合は、CHPチャンネルに[PCM ...]イベントを記述します。; chip=allと#pcmfileが必要で、CHP1〜CHP8を発音先に指定します。指令一覧とループ規則は曲ヘッダディレクティブを参照してください。
; chip=all
#pcmfile "tone.pdx"
; sample_pcm_rate=44100
; sample_pcm_total=2473049
; sample_pcm_loop=46629,2426420
CHP1: [PCM 46629,0,15,4,3]
[PCM ...]の各値は、原音サンプル時刻、PDX番号、音量、再生レート番号(F0〜F4)、パンです。発音先はそのイベントを書いたCHPチャンネルで、同じCHPにnNなどtick単位のイベントは混在させないでください。イベント時刻はsample_pcm_rateの単位です。ループ区間内のイベントは同じ間隔で再発音されます。