-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmucomMD2vgm_MMLCommandMemo.txt
601 lines (506 loc) · 22.6 KB
/
mucomMD2vgm_MMLCommandMemo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
mucomMD2vgm MMLコマンドメモ
元ネタ: MUSIC LALF MMLコマンドメモ
■ .vgm/.xgmファイル作成手順
1. 元になるMMLファイルを作成します。
(1) mucomMD2vgmでは拡張子を便宜上.muMとします。(以下MMLファイルのことを.muMと略します。)
(2) 文字コードはshiftJIS(改行はCRLF)とします。
(3) .mucファイル(mucom88win向けMMLファイル)も使用できます。
2-A. mucomMD2vgm.exeを使用する場合
主にGUIでの使用を想定したプログラムです。ファイル監視と自動起動、vgz変換が可能。
画面上のボタンの説明(左から)
・ファイルを開く
.muM又は.mucファイルを読み込みます。
読み込んだら即コンパイルを開始します。
・コンパイル
一度読み込んだ.muMファイルを再読み込み、再コンパイルします。
・プレイヤーの自動起動(トグルボタン)
コンパイル後に生成されたvgmを既定のプログラムで開きます。
予め、vgm/xgmファイルに対して関連付けを行っておく必要があります。
・ファイルの更新監視(トグルボタン)
一度読み込んだ.muMファイルの監視を開始します。
更新を検出すると自動的にコンパイルを実行します。
テキストエディタでmmlを変更し上書き保存した際に自動的にコンパイルさせることを想定した機能です。
・vgzファイル作成(トグルボタン)(vgm/xgm)
コンパイル時に生成したvgm/xgmファイルを自動的にvgz/xgzに変換します。
・Lコマンド解析処理拡張(トグルボタン)
mucom88本来のLコマンドの動作をできるだけvgm/xgmで再現するモードになります。
・最大レンダリング時間指定(テキストボックス)
Lコマンド解析処理拡張ボタンを有効にして処理を行ったとき、最大の演奏時間を秒数で指定します。
データ中のLコマンドの指定の仕方によっては、長時間の演奏が必要なパターンがあるためです。
画面上の左ペインの説明
コンパイル後のクロックカウンター値をリスト表示するペインです。
・Part
コンパイルを行うと、パート名(MegaDriveの場合はAからQまで)が表示されます。
・Chip
MegaDriveの場合はOPN2(YM2612/YM2612X)かDCSG(SN76489)が表示されます。
他のChipの場合はその名称が表示されます。
・Counter
パートごとのクロックカウンター値が表示されます。
Lコマンドを使用してループさせたい時は、この値が全パートで一致しているか確認すると便利です。
画面上の右ペインの説明
コンパイルの進捗、コンパイル時のエラーや警告など、詳細を表示します。
他の使い方
エクスプローラなどで、mucomMD2vgm.exeのアイコンの上に作成したmuc/muMファイルをD&Dするとそれをコンパイルします。
又は、コマンドラインから「mucomMD2vgm.exe ファイル名」と打ち込んでもそのファイルをコンパイルします。
UI使用時、
UI上にmuc/muMファイルをD&Dするとそれをコンパイルします。
F1キーを押すと「ファイルを開く」、
F5キーを押すと「コンパイル」を行います。
2-B. mdvc.exeを使用する場合
mdvc.exeはコマンドプロンプト専用のプログラムです。
コンパイル対象のmuc/muMファイルをコマンドラインで指定し実行します。
vgz変換が可能。
3. コンパイルが実行され、エラーやワーニング、例外が表示される。
又は、エラー無く無事に.vgm/.xgmファイルがmuc/muMと同じフォルダーに生成される。
4. 手頃なvgm/xgmプレイヤーで試聴する。修正が必要であれば1から繰り返す。
5. 完成!悦に入る。自己陶酔モード。
.xgmの場合はSGDK使ってLet's megadrive programming!!
■ 基本的な記述方法
.muMは.mucファイルと記述方法は基本、同じです。
(.mucファイルもそのまま使用できます。)
■ mucom88との違い
・対象音源
mucom88はPC-8801(OPN/OPNA)向けのドライバですが
本アプリはMEGA DRIVE(GENESIS)(OPN2+DCSG)向けのドライバです。
mucom88とできるだけ同じように使用できるよう調整しています。
また、OPL,OPMにも対応しています。
mucom88 -> OPNA(YM2608)
mucomMD2vgm -> OPN2(YM2612),DCSG(SN76489)
/OPL(YM3526)
/OPM(YM2151)
・パート割り
MegaDriveの場合
A OPN2(YM2612) Ch.1
B OPN2(YM2612) Ch.2
C OPN2(YM2612) Ch.3 / Ch.3 extend mode op.1
D DCSG(SN76489) Ch.1
E DCSG(SN76489) Ch.2
F DCSG(SN76489) Ch.3
G DCSG(SN76489) Ch.4(noise Ch)
H OPN2(YM2612) Ch.4
I OPN2(YM2612) Ch.5
J OPN2(YM2612) Ch.6(FM向け)
K OPN2(YM2612) Ch.6(PCM向け)
L OPN2(YM2612) Ch.3 extend mode op.2
M OPN2(YM2612) Ch.3 extend mode op.3
N OPN2(YM2612) Ch.3 extend mode op.4
O OPN2(YM2612) Ch.6 PCM Ch.2(XGMonly)
P OPN2(YM2612) Ch.6 PCM Ch.3(XGMonly)
Q OPN2(YM2612) Ch.6 PCM Ch.4(XGMonly)
(JとK(O/P/Q)は排他的に使用します。片方がキーオン(発音)するともう片方の音は消えます)
OPLの場合
A OPL(YM3526) Ch.1
B OPL(YM3526) Ch.2
C OPL(YM3526) Ch.3
D OPL(YM3526) Ch.4
E OPL(YM3526) Ch.5
F OPL(YM3526) Ch.6
G OPL(YM3526) Ch.7
H OPL(YM3526) Ch.8
I OPL(YM3526) Ch.9
J OPL(YM3526) Rhythm BD
K OPL(YM3526) Rhythm SD
L OPL(YM3526) Rhythm TOM
M OPL(YM3526) Rhythm CYM
N OPL(YM3526) Rhythm HH
OPMの場合
A OPM(YM2151) Ch.1
B OPM(YM2151) Ch.2
C OPM(YM2151) Ch.3
D OPM(YM2151) Ch.4
E OPM(YM2151) Ch.5
F OPM(YM2151) Ch.6
G OPM(YM2151) Ch.7
H OPM(YM2151) Ch.8
・音色定義
mucom88は@コマンドと@%コマンドの2種類の定義が可能ですが、
mucomMD2vgmでは更に以下のコマンドを追加しています。(N、L,Mは大文字です)
OPN向け音色定義
AMとSSG-EGのパラメータが指定できます。
@N0
0 , 7
; AR DR SR RR SL TL KS ML DT AM SSG
31, 12, 12, 15, 15, 0, 0, 1, 0, 1, 0
31, 12, 12, 15, 15, 0, 0, 1, 0, 1, 1
31, 12, 12, 15, 15, 0, 0, 1, 0, 1, 2
31, 12, 12, 15, 15, 0, 0, 1, 0, 1, 3
OPL向け音色定義
; No. CNT FB
@L 043 001 000
@ 015 006 010 006 000 000 001 000 000 000 000 000
@ 015 003 000 006 000 022 011 000 000 000 000 000
; AR DR SL RR KSL TL MT AM VIB EGT KSR WS
OPM向け音色定義
; No.ALG FB
@M 000
@ 001 000
@ 001 000 000 000 000 000 000 000 000 000 000
@ 001 000 000 000 000 000 000 000 000 000 000
@ 001 000 000 000 000 000 000 000 000 000 000
@ 001 000 000 000 000 000 000 000 000 000 000
; AR DR SR RR SL TL KS ML DT1 DT2 AME
・コマンド
mucom88と基本的には同じです。
mucom88のバージョン1.7のコマンドにあわせています。
違いは以下の通りです。
v ボリュームコマンド(リズム)
mucom88のリズムパートで使用できる形式に未対応です。
L 曲全体ループコマンド
Lコマンド解析処理通常モード
Aパート以外のLは無視されます。
またvgm/xgmファイルの制約によりパートごとに長さが異なっていても、全パートは一番長いパートにパディング(
休符で埋められるイメージです)されます。
Lコマンド解析処理拡張モード
mucom88と同じ演奏になるよう、全てのパートのLコマンドを考慮したvgm/xgmを作成します。
このモードでは、
一気にループ可能なポイントが現れるまで内部でループ処理が行われながら処理が継続します。
また、組み合わせによってはなかなかそのポイントが発生しない場合があります。
そのような状況を解決するために、「Max rendering」(最大レンダリング時間指定)という項目が用意されています。
初期値600秒を超えてもループポイントが現れない場合は処理をそこで打ち切ります。
P ミキサモードコマンド(DCSG)
Gパート(DCSG Ch.4)にて使用します。
以下の値を設定することによって動作モードが切り替わります。
(注意:@コマンドで指定するエンベローププリセットパターン中のPコマンドは無視されます。)
値 mode rate
P0 -> periodic 0
P1 -> periodic 1
P2 -> periodic 2
P3 -> periodic Ch.3連動
P4 -> white noise 0
P5 -> white noise 1
P6 -> white noise 2
P7 -> white noise Ch.3連動
mode
periodic : ファミコンにちょっと似ている音がなります。
音域はかなり狭いですが、連動モードにてメロディを演奏することも可能です。
white noise : 所謂、ノイズを発音します。
もっぱらエンベロープと組み合わせてリズムを刻むような使い方をします。
rate
0 / 1 / 2 : priodicとwhite noiseの効果の具合がそれぞれ違います。
Ch.3連動 : DCSGはノイズの周波数をCh.3(mucomMDではFチャンネル)を利用して設定します。
例えばo4aとFチャンネルで指定すればそれに応じたノイズ周波数がセットされます。
連動してしまうので当然使いにくいことが多いです。
潔くFチャンネルのボリュームを0にしてしまうとか、
通常は連動機能は使わず固定レートを使用し「ここぞ」というときに連動させるなど、
何か工夫が必要になります。
w ノイズ周波数コマンド(DCSG)
wn (n:0~1023)
Ch.3の周波数を数値で指定できます。
参考: AY-8910(PSG/SSG) SN76489(DCSG) ノイズ周波数対応表(WINGさん作成)
X 近似値無し
PSG DCSG
---------------
~05 X
06 00
07 03
08 06
09 08
10 09
11 10
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31
X 32~
vm PCMボリュームモードコマンド(FM PCM)
未対応です。
mon PCMマッピングモードをONにする。音色が音符コマンドによって切り替わる。
mof PCMマッピングモードをOFFにする。
EXON 効果音モード開始コマンド(FMex)
EXOF 効果音モード停止コマンド(FMex)
EXn 効果音モードのスロット割り当て(使用するスロットを列挙する)コマンド(FMex)
S 効果音モードのスロットディチューンコマンド(既存)(FMex)
■ EXコマンド群について
OPN,OPN2,OPNA,OPNBなどOPN系チップは、効果音モードを利用してCH3を最大4分割して演奏することが可能です。
OPN系は1CH当たり4オペレータのFM音源です。
通常のCHは周波数を1CH毎にしか設定できないのですが、
CH3だけは効果音モードを使用するとオペレータ毎に周波数を設定することができます。
(因みにキーオンはCHに関係なくオペレータ毎に指定可能です。)
この機能を利用する場合にC/L/M/Nパートを使用します。
何分割するかは、通常(あえて変わった使い方をしない限り)、
CH3に設定したアルゴリズムで決まります。
(アルゴリズムは@コマンドやyコマンドで設定します。)
例えば
アルゴリズムが0から3は、オペレータ4のみの発音なので分割して使用することはあまりありません。
アルゴリズム4は、オペレータ2と4が発音しますので2分割して使用できます。
アルゴリズム6は、オペレータ2,3,4が発音しますので3分割して使用できます。
(アルゴリズム5も、オペレータ2,3,4が発音するのですが1が2,3,4に関わるのでクセがあるかも)
アルゴリズム7は、オペレータ1,2,3,4の全てが発音しますので4分割して使用できます。
お勧めはアルゴリズム4です。2オペレータずつ分かれますのでOPL系風味に使用することが可能です。
使用例
先ずはEXONコマンドで効果音モードを有効にします。
次にEXコマンドを使用しEXチャンネルにオペレータを割り当てます。
例えば
Cパートにオペレータ1と2を割り当て、
Lパートにオペレータ3と4を割り当てるには以下のようにします。
C EXON EX12
L EX34
後はアルゴリズム4の音色を指定しノートを書くだけです。
(音色はC/L/M/Nパート4つで共有します。)
C @123 c4d4e4
L gabgab
注意
EXON / EXOF / @ コマンドは Cパートで行ってください。
■ 効果音モードを利用したスロットディチューンコマンド(S)
スロットディチューンはチャンネル自体は通常の使用方法ですが、
FNumの値をスロット毎にずらし、音色の幅を出したいときに使用します。
要は、この機能を利用することでOPMのDT2と同じような効果を得られます。
SコマンドとEX系コマンドはチップ的には同じ機能を使用しますので共用できません。
EXM スロットマスクコマンド(FM/FMex)
発音時に指定のスロットだけキーオンするようになります。
キーオンしたいスロットを列挙します。
デフォルトは1234で全てのスロットが有効です。
一つも発音しない設定はできません。
C/L/M/Nは、効果音モードと併用はできません。効果音モード時はEXMの設定は無視します。
@n1,n2[,n3[,n4]] 音色モーフィングコマンド
値の範囲
n1 : (0~255)発音時の音色番号
n2 : (0~255)到達目標の音色番号
n3 : (1~255)変化スピード(Tick)
n4 : (0:しない 1:する)発音ごとにリセットするか否か(省略時:1)
使用可能なパート
FM(OPN2)
内容
FB,ALG,AR~DTx4オペのパラメーターを+-1ずつ変化させ、n2で指定した音色に変化させます。
変化スピードはn3で指定し1が最速になります。
-レジスタ書き込み
コマンド
y
書式
yn1,n2,n3,n4
値の範囲
n1 : (0~4) 0:OPNA.1 1:OPNA.2 2:OPNB.1 3:OPNB.2 4:OPM
n2 : (0~1) ポート
n3 : (0~255) アドレス
n4 : (0~255) データ
使用可能なパート
全て
内容
他のChipのパートに対してデータを送れるようにします。
既存のコマンドと比較してアドレスの制限がありません。
mubファイルでのフォーマット
0xFF 0xF7 n1 n2 n3 n4
・タグ
mucom88winと基本的には同じです。タグ名は大文字小文字を区別しません。
タグは主に曲情報を設定するのに使用します。
mucomMD2vgmではvgm/xgmの仕様に沿ってGD3形式に変換されます。意味の近いタグに置き換えます。
以下の通りです。
#Title
タイトル(日本語以外)
#TitleJ
タイトル(日本語専用)
#GameName
ゲーム名(日本語以外)
#GameNameJ
ゲーム名(日本語専用)
#SystemName
システム名(日本語以外)
例えば MEGADRIVE や GENESIS など
#SystemNameJ
システム名(日本語専用)
#Composer
作曲者(日本語以外)
#ComposerJ
作曲者(日本語専用)
#Date
日付(vgmではrelease date)
#Author
作者(vgmではConverted)
#Comment
コメント(vgmではNotes)
また、曲データごとの動作設定を指定するのにも使用されます。
違いは以下の通りです。
#pcm filename
ADPCM指定タグ
mucom88形式のADPCMファイルをfilenameに指定します。
muMファイルと同じパスを参照します。
(mucomMD2vgmでは内部でPCM形式に変換します。)
#PcmVolume n
PCMの音量設定タグ
設定値nは10進数の数値。範囲は0から255。初期値は255。
ADPCMからPCMに変換する際の音量を設定します。
255で最大音量になります。
この設定の対象は#pcmのみです。
'@ Pn,"filename" , freq , volume
PCM個別設定
n には音色番号、filenameにはwavファイル名を指定します。
muMファイルと同じパスを参照します。
読み込めるwavファイルの形式は以下の通りです。
vgm形式は
8KHz , 8bit , mono , 圧縮なし , unsigned であること。
8KHz固定で再生されます。
xgm形式は
14KHz , 8bit , mono , 圧縮なし , unsigned であること。
14KHz固定で再生されます。
#PcmVolumeの設定は無視されます。
また、#pcmで定義されている内容が優先で使用されます。
よって#pcmで定義されていない音色番号を指定するか、
場合によっては#pcmの内容を削除する必要があります。
volume は100で通常の音量になります。100以上も指定できますが音が割れます。
freqを指定すると、36をo4cとして0~72の範囲で音程を変換し定義します。
73以上を指定すると8KHz/14KHzを基準に、異なるピッチのPCMデータとして登録ができます。
但し、この機能を利用するにはsoxが必要になります。
SoXはコマンドラインによるPCMデータ変換ツールです。
SoX
ホームページ
http://sox.sourceforge.net/
プログラムのアーカイブへのリンク
https://sourceforge.net/projects/sox/files/sox/14.4.2/sox-14.4.2-win32.zip/download
LICENSE
GPL
解凍したら、mucomMD2vgmのプログラムがあるフォルダーに「sox」フォルダーを作成しその中にファイルをコピーしてください。
また、.muM/.mucがある場所に以下のファイル名を作業用として使用します。上書きが行われ作業完了するとファイルを削除します。
soxTemp.raw
soxTempDest.raw
周波数変更機能仕様例)
8KHzのGuitarがo4cの音の時、以下のように定義すると1オクターブ分のPCMが変換されながら定義される。
(後述のPCMマッピングモード併用)
'@ P 1,"Guitar.wav" , 36 , 100
'@ P 2,"Guitar.wav" , 37 , 100
'@ P 3,"Guitar.wav" , 38 , 100
'@ P 4,"Guitar.wav" , 39 , 100
'@ P 5,"Guitar.wav" , 40 , 100
'@ P 6,"Guitar.wav" , 41 , 100
'@ P 7,"Guitar.wav" , 42 , 100
'@ P 8,"Guitar.wav" , 43 , 100
'@ P 9,"Guitar.wav" , 44 , 100
'@ P 10,"Guitar.wav" , 45 , 100
'@ P 11,"Guitar.wav" , 46 , 100
'@ P 12,"Guitar.wav" , 47 , 100
'@ P 13,"Guitar.wav" , 48 , 100
'@ PM 0 , 4,0 , 1,2,3,4,5,6,7,8,9,10,11,12,13
または
'@ P 1,"Guitar.wav" , 8000 , 100
'@ P 2,"Guitar.wav" , 8476 , 100
'@ P 3,"Guitar.wav" , 8979 , 100
'@ P 4,"Guitar.wav" , 9513 , 100
'@ P 5,"Guitar.wav" , 10079 , 100
'@ P 6,"Guitar.wav" , 10679 , 100
'@ P 7,"Guitar.wav" , 11314 , 100
'@ P 8,"Guitar.wav" , 11987 , 100
'@ P 9,"Guitar.wav" , 12699 , 100
'@ P 10,"Guitar.wav" , 13455 , 100
'@ P 11,"Guitar.wav" , 14255 , 100
'@ P 12,"Guitar.wav" , 15102 , 100
'@ P 13,"Guitar.wav" , 16000 , 100
'@ PM 0 , 4,0 , 1,2,3,4,5,6,7,8,9,10,11,12,13
'@ PM MapNo , Octave , Note , No...
PCMマッピングモード定義
MapNo PCM Map No(0-255)
Octave オクターブ(1-8)
Note ノート番号(0-11) 0:c 1:c+ ... 10:a+ 11:b
No... 定義番号(0-62) カンマ区切りで半音ごとに複数定義可能です。
指定のノートにPCMを割り当てます。同じ音程の定義は上書きされます。
#Chip type
使用するChip(又は音源構成)を指定します。
指定可能なtype(値)は
MegaDrive
OPL
OPM
の3種です。
MegaDriveがデフォルトです。
MegaDrive形式は
OPN2とDCSGを使用した演奏が可能です。
OPL形式は
OPLを使用した演奏が可能です。
OPM形式は
OPMを使用した演奏が可能です。
#FileFormat type
出力するファイルフォーマットを指定します。
指定可能なtype(値)は
vgm
xgm
の2種です。
vgmがデフォルトです。
vgm形式は
様々なチップ向けのデータを扱うことが可能なログ形式のフォーマットです。
チップに送信するデータが時間情報を挟みながら列挙されているだけなので、
再生プログラムを書くのが他の形式と比較して圧倒的に楽であり、
また、エミュレーターなどでチップに送られたデータを出力するのに易しい形式です。
但し、単純が故に冗長的なデータになるためファイルサイズが巨大になりがちです。
xgm形式は
扱えるチップをOPN2とDCSGに限定したMEGA DRIVE(GENESIS)専用のフォーマットです。
OPL/OPMでは使用できません。
基本的にはvgmと同じログ形式のフォーマットですが、
チップ数を2つに限定しているのと、単純ではありますがデータを圧縮して記録できる仕組みを持っているため、
ファイルサイズを抑えることができます。
SGDK(MEGA DRIVEのhome brew向け開発環境)の為に用意された専用の形式で、
そのままプログラムに組み込んで使用することが可能です。
最大の特徴はソフトウェアによるPCMの4ch同時再生です。
パンが個別に振ることができないなどの制約もありますがとても強力な機能になっています。
#XGMBaseFrame type
ファイルフォーマットにXGM形式を選択した場合のみ有効なタグです。
1秒当たりのフレーム数を指定します。
指定可能なtype(値)は
ntsc
pal
の2種です。
ntscがデフォルトです。
ntsc フレーム数は 60Hz 。
pal フレーム数は 50Hz 。
テンポ、分解能指定と密接な関係にあります。
※参考
1クロック当たりに割り当てるフレーム数 = XGMBaseFrame * (60 * 4) / ClockCount / tempo
例えば
ntsc , clockcount=192 , tempo=120
のとき
60 * 60 * 4 / 192 / 120 = 0.625 (frame/clock)
4分音符は
192 / 4 = 48 (clock)
で48クロックなので
0.625 * 48 = 30 (frame)
で30フレームとなります。
テンポが120ということは1秒間(60frame)で4分音符(30frame)が2回演奏できますから合っていますね。
VGM形式に比べて非常に値が小さい事に注意してください。(ちなみにVGM形式の場合は44100Hz固定。)
ここでのntsc、palは日本、ヨーロッパなどのテレビの1秒間あたりの画面を書き換える回数を意味しています。
他の多くのゲーム機はこのテレビの映像を書き換えるタイミングに合わせて音楽の演奏処理を行います。
メガドライブで動作するXGM形式も同じ仕組みになっています。
#Vsync hz
vgm向け
この指定を行うと、1Clock = 1Frame 固定モードになります。
よってテンポの指定も無効になります。
hz(値)に指定した数値が、1秒間あたりのフレーム数となります。
例えば60を指定すれば、NTSCな状態になりますが、1clock=1frame 固定なので#XGMBaseFrameとはかなり異なります。
因みに内部では以下のような関係になります。
44100Hz / 60Hz = 1Clock = 1Frame
#Vsync 1
xgm向け
この指定を行うと、1Clock = 1Frame 固定モードになります。
よってテンポの指定も無効になります。
値は1を指定してください。XGMBaseFrameで設定した数値が、1秒間あたりのフレーム数となります。
#PcmRaw
vgm向け
使用すると、ファイルサイズは大きくなりますが、SPFMPlayerなどでも再生できるようになります
・エラーと警告について
mucom88よりもうるさいエラーと警告がでます。
mucomMD2vgmは一文字ずつ読み進めながらエラーを判定するので連続して似たようなエラーが表示されやすく、
よって大量のエラーが表示されても実際はそれほど大変ではないことが多いです。
XGM形式の場合に
「1Frameに収められる限界バイト数(256byte)を超えています。データを分散させてください。 Frame {0} : {1}byte」
といった警告が記録される場合があります。
これはmmlの文法に問題があるわけではなくコンパイル後のデータが大きく、SGDK中のXGMDriverの規定値を超える場合に
発生します。これが曲中で発生するとフレーム落ちやPCMの再生に支障がでる可能性が高くなります。
ゲーム開始時や曲の始まる最初などであれば問題ない場合もありますので実際にSGDKに組み込んで確認、調整してください。
同じ時間のタイミングで沢山のデータをOPN2とDCSGに送る為に発生しているので、違うタイミングで少しずつ送るように
すると発生しなくなります。
例えば
OPN2の@(音色設定)コマンドは多くのデータを送りますのでこれをパートごとに半拍ずらして設定する
というような工夫をします。
因みにMDPlayerのみで再生したいだけであればほぼ無視して問題ない警告です。
以上