コンテンツにスキップ

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の単位です。ループ区間内のイベントは同じ間隔で再発音されます。