#MB:LOAD_SAMPLING:サンプリングファイルの読み込み 【記述例】
【解説】 サンプリングデータのバイナリファイルを読み込んで、使用できるように、準備 の設定を行います。(ロードサンプリング) ロードサンプリングの定義方法の概要は、 ・行頭からの記述で、キーワード「#MB:LOAD_SAMPLING」を書く。 ・続けて、スペースを置き、中括弧「{}」で括られた設定データを書く。
#MB:LOAD_SAMPLING {
//load file
v3mml__testpcm.v3b
|
//pick pcm
smp=0: init_lv=64,
smp=1: init_lv=40,
smp=2,
smp=3,
smp=4,
smp=5,
smp=6,
smp=7,
smp=8,
|
//assign
target=pcm: @=0: start=0: end=-1: loop=-1: key=48: fs=3579545/144: smp=0,
target=pcm: @=1: start=0: end=-1: loop=-1: key=48: fs=3579545/144: smp=1,
target=pcm: @=2: start=0: end=-1: loop=-1: key=48: fs=15625: smp=2,
target=pcm: @=3: start=0: end=-1: loop=-1: key=48: fs=15625: smp=3,
target=pcm: @=4: start=0: end=-1: loop=-1: key=48: fs=15625/2: smp=4,
target=pcm: @=5: start=0: end=-1: loop=-1: key=48: fs=16075.6510416667: smp=5,
target=pcm: @=6: start=0: end=-1: loop=-1: key=48: fs=6000: smp=6,
target=pcm: @=7: start=0: end=-1: loop=-1: key=48: fs=48000: smp=7,
target=pcm: @=8: start=0: end=-1: loop=-1: key=48: fs=48000: smp=8,
}
です。 設定データの概要ですが、中身は各種記号で分割されて定義されます。 以後、便宜上、 「|」記号で分割された内容を、「チャンク」と呼びます。 さらに、チャンクの内容は各種記号で分割されていて、 「,」記号で分割された内容を、「エレメント」と呼びます。 「:」記号で分割された内容を、「パラメータ」と呼びます。 「=」記号で分割された内容を、「ペア」と呼びます。 設定データは、まず3つのチャンクに分割されます。 第1チャンクには、読み込むバイナリファイル名を記述します。 第2チャンクには、バイナリファイルに含まれるサンプリングデータの何番目の ものを展開して読み込むか(抽出)を列挙します。 第3チャンクには、どの音源モジュールに対し、どういう設定で、第2チャンク で抽出したサンプリングデータを割り当てるかを列挙します。
第1チャンク詳細 読み込むバイナリファイル名を、1つだけ記述します。 【注意】 ・「|」記号を含むファイル名は使えません。 ・先頭および末尾にスペースの付くファイル名は使えません。 ・ファイル名の拡張子に制限は設けていませんが、標準は「.v3b」です。 ・読み込み対象になる場所は、プレイリストのカレントフォルダ配下です。 プレイリストのカレントフォルダは、 PlayListウインドウの最下部に書かれています。 ・読み込むファイルのフォーマットは、あらかじめ定められています。 (フォーマットとは)
第2チャンク詳細 バイナリファイルに含まれるサンプリングデータの何番目のものを展開して読み 込むかを列挙します。 列挙する内容は、1個以上のエレメントになります。 エレメントの内容は、1個以上のパラメータになっています。 パラメータの内容は、1組のペアになっています。 ペアは、項目名=設定内容 という記述になっています。 以下、ペアの「項目名」ごとに説明します。 項目名「smp」 バイナリファイルに含まれるサンプリングデータの何番目のものを展開するかを 定義します。 設定範囲は 0 〜 (ファイル内での定義数-1) です。 上述の記述例を元に説明すると、第2チャンクの最初のエレメントは
smp=0: init_lv=64,
という定義になっています。 これは、バイナリファイル内の0番目を読んで抽出番号0番とし、 バイナリの内容を 16bit signed pcm に展開して割り当てる、 という意味になります。 バイナリファイル内の「何番目を指すか」と「抽出番号」は連動します。 例えば、
smp=7,
という定義は、記述例では順番に並んでいますが、どの位置に「smp=7,」が書か れていても、7番目を読んで抽出番号を7番とする、という意味になります。 展開すると表現する理由は、扱うサンプリングデータが pcm 以外に adpcm や dpcm などもあり、読み込み時に 16bit signed pcm に統一的に変換して利用す るためです。 ※「抽出番号」は、第3チャンクで参照されます。 項目名「init_lv」 展開対象になるサンプリングバイナリが、dpcmだった場合に指定する、dpcm差分 計算の初期値になります。 設定範囲は 0 〜 127 です。 変位が 0 となる中心値は 64 です。
pcm
wvm
以上の2種類です。 target以外の必須になる項目名は、targetの内容に別々に決まっています。 「target=pcm」の場合:
「target」以外の必須項目名:
「@」「start」「end」「loop」「key」「fs」「smp」
省略可能な項目名:
「amp_mul」 「target=wvm」の場合:
「target」以外の必須項目名:
「@」「smp」
省略可能な項目名:
「amp_mul」 「target=pcm」の場合の項目名「@」 音源モジュール「@@”pcm”」におけるサブフォーム番号指定「@」の何番に割り当 てるかを設定します。 設定範囲は 0 〜 1023 です。 初期設定で波形番号 0番 にダミーの初期データが入っています(上書可)。 MMLで未定義の波形番号を参照した場合は、0番 が読み出されます。
「target=pcm」の場合の項目名「start」 参照するサンプリングデータの開始インデックス番号を設定します。 設定範囲は、0 〜 (サンプル総数-1) です。 特例として、「-1」を記述すると、サンプリングデータの末尾の番号として扱わ れます。 「target=pcm」の場合の項目名「end」 参照するサンプリングデータの終了インデックス番号を設定します。 設定範囲は、0 〜 (サンプル総数-1) です。 特例として、「-1」を記述すると、サンプリングデータの末尾の番号として扱わ れます。 「target=pcm」の場合の項目名「loop」 参照するサンプリングデータのループ開始インデックス番号を設定します。 設定範囲は、0 〜 (サンプル総数-1) です。 特例として、「-1」を記述すると、ループ機能無効(サンプリングデータの末尾 の番号)として扱われます。 「target=pcm」の場合の項目名「key」 「fs=[]」のサンプリング周波数を、どの音程番号に割り当てるかを指定します。 (音程番号とは) 設定範囲は 0 〜 119 です。 例えば、
fs=8000, key=48,
の場合、o4c のMML記述でサンプリング周波数 8kHz 相当の再生になります。 「target=pcm」の場合の項目名「fs」 参照するサンプリングデータのサンプリング周波数を指定します。 設定範囲は 2000.0 〜 384000.0 です。 「target=pcm」の場合の項目名「amp_mul」 参照するサンプリングデータの振幅への倍率を指定します。 この項目を省略した場合は、1.0(倍率変更なし)が指定されたものとみなされ ます。 負数を指定した場合は、振幅が上下反転することになります。
「target=pcm」の場合の項目名「smp」 参照するサンプリングデータを、第2チャンクで決めた、どの抽出番号のものに するかを指定します。 設定範囲は 0 〜 (ファイル内での定義数-1) です。 「target=wvm」の場合の項目名「@」 音源モジュール「@@”wvm”」におけるサブフォーム番号指定「@」の何番に割り当 てるかを設定します。 指定可能範囲は 0 〜 1023 です。 初期設定で波形番号 0番 にダミーの初期データが入っています(上書可)。 MMLで未定義の波形番号を参照した場合は、0番 が読み出されます。 「target=wvm」の場合の項目名「smp」 参照するサンプリングデータを、第2チャンクで決めたどの抽出番号のものにす るかを指定します。 「target=wvm」の場合の項目名「amp_mul」 参照するサンプリングデータの振幅への倍率を指定します。 この項目を省略した場合は、1.0(倍率変更なし)が指定されたものとみなされ ます。 負数を指定した場合は、振幅が上下反転することになります。