* MDXデータの作成方法 [#y5ab0245] 今となっては失われつつあるMDXデータの作成方法を記載します。((筆者はX68000リアルタイム世代では無いので憶測で書いている部分があります。ご指摘はstella.cadente.xあっとgmail.comまでお願い致します。))~ * MDXとは [#vde7e5bd] MDXとはかつてSHARP X68000シリーズ用のFM音源ドライバとして栄華を誇った''MXDRV''のデータ形式です。((MXDRVは膨大な曲数を誇っていた為、本家X68000の他にもPC-98x1、PC-88VA、MSXなどへドライバが移植されました。))~ GIMICのお試しファームウェアにはMXDRV互換ドライバ((MXDRV2.06+16相当))が組み込まれている為、S98ログを採取せずとも直接MDXデータを再生することが可能です。~ このページではファームウェアに内蔵されたMXDRV互換ドライバを利用してOPMモジュールで楽曲を作成する為の解説を行います。~ * コンパイラ [#u5a7cc9d] MXDRVでの楽曲作成はMMLという言語(詳細は後述します)を用いて行いますが、テキストファイルに演奏情報を記載しコンパイラでMDXデータ形式へと変換を行う必要があります。~ 現存するコンパイラにはnote.xとmxc((こうのたけし氏のPC-98x1版を利用します。本家X68000用のmxcは現存していないようです。))の2種類があります。note.xはmxcの上位互換コンパイラなので通常はnote.xを使えば問題無いはずです。~ ■note.xを使う場合 -[[note.x(NOTE085.LZH):http://cgi.geocities.jp/robokabuto/gimic/wiki/index.php?plugin=attach&pcmd=open&file=NOTE085.LZH&refer=MDX%E3%83%87%E3%83%BC%E3%82%BF%E4%BD%9C%E6%88%90]] -[[run68(run68bin-009a-20090920.zip):http://sourceforge.jp/projects/sfnet_run68/]] note.xはX68000のOSであるHuman68k用の実行ファイルである為、そのままではWindows上で動作させることができません。~ そこでrun68というHumann68kのコマンドラインをエミュレーションするツールを併用して実行します。~ ■mxcを使う場合 -[[mxc:http://www.vector.co.jp/soft/dos/art/se003454.html]] mxcはNT系OSではコンソール表示が行われないので注意が必要です。~ * プレイヤ [#e51805ad] -[[foobar2000:http://www.foobar2000.org/]] -[[MDX/MDC input:http://www.vesta.dti.ne.jp/~tsato/soft_fb2k.html]] 現状、PC側からGIMICへMDXデータを直に転送して再生することができないので制作中の曲データの再生に使うことになります。~ 上記の他にもMDXプレイヤは存在していますが、エミュレーションの精度が低いのでRuRuRuさんのMDX/MDCinputをお勧めします。((X68Sound.dllやfmgenを利用した物はハードウェアLFOの再現性に難があります。))~ foobar2000をインストールしたら'''C:\Program Files\foobar2000\components'''に''foo_input_mdx.dll''をコピーすればOKです。((必要に応じて''foo_input_s98.dll''も入れておくと良いでしょう))~ foobar2000を起動したらFile→Preferencesを開いてMDX inputの設定を行ってください。~ #ref(foobar2000.jpg) SampleRateに''625000Hz''を選択し、''Use LPF''のチェックを外して下さい。これでGIMICの音声出力に近い出音になります。~ * コンパイル環境の構築 [#j02a1550] 例としてnote.xを使った場合の環境構築の方法を記載します。上記サイトから'''NOTE085.LZH'''、'''run68bin-009a-20090920.zip'''をダウンロードして解凍してください。~ #ref(notex.jpg) '''NOTE085.LZH'''に含まれるデータで必要なのは''note.x''だけです。''note.doc''((.doc形式ですが実際にはただのテキストファイルなのでnote.txtとリネームしてメモ帳で開いてください。))はMMLの仕様が記載されているマニュアルなので目を通しておきましょう。~ #ref(run68.jpg) '''run68bin-009a-20090920.zip'''に含まれるデータで必要なのは''run68.exe''と''run68.ini''だけです。~ #ref(mxdrv.jpg) ''note.x''、''run68.exe''、''run68.ini''を一つのフォルダの中にコピーします。Cドライブ直下にmxdrvというフォルダを作ってそこに入れるのが良いと思います。~ 後はコマンドラインで~ >run68 note.x ''コンパイルするファイル.MML'' と入力することでMDXデータを作成できます(以下のような表示が行われます)~ #ref(compile.jpg) コンパイル後、即座にfoobarで曲を再生したい場合は以下のようなバッチファイルを用意すると良いでしょう。~ >"C:\Program Files\foobar2000\foobar2000.exe" /stop ~ run68 note.x ''コンパイルするファイル.MML'' ~ call "C:\Program Files\foobar2000\foobar2000.exe" "%~dp0''再生するファイル.MDX''" ~ pause ~ ※foobarで該当MDXが再生中の場合、ファイルがロックされていてコンパイルに失敗するので事前に演奏を停止しています。~ * MMLとは [#kf610b48] MMLとは'''MusicMacroLanguage'''の略で、演奏情報をテキストで表現する為の言語((統一規格ではないので音源ドライバ毎に仕様は異なります。))になります。~ >A @0o4v12l8 cdefgab>c 例えば上記はOPMのチャンネルA(8チャンネル中)で、音色番号0、オクターブ4(9段階中)、音量12(15段階中)、音長8分音符でドレミファソラシドを演奏することを表しています。~ * note.xのMML仕様 [#gd8e184f] ** チャンネル定義 A〜H [#u9184ca9] 行頭に'''A〜H'''を記載することでOPMの8つあるチャンネルのどれに対する演奏情報なのかを定義します。~ '''ABC @0o4v12l8 cdefgab>c'''と記載することで複数のチャンネルに大して同じ演奏情報を定義することも可能です((分かりやすくする為に音色や音量も記載しましたが、音色や音量を各チャンネル毎に定義して音階情報のみレイヤーさせることも可能です)) ※実際にはP〜Wのチャンネルもありますが、こちらはPCM用で現状のGIMICでは利用することはできません。 ** 音符 c,d,e,f,g,a,b + - = [#ud0f4edb] cから順にドレミファソラシに対応します。シャープは+、フラットは-、ナチュラルは=で表すことができます((c-、e+、f-、b+は存在しませんが<b>、f、e、>c<と同義になります。))(('c++'や'c--'と記載することでダブルシャープ、ダブルフラットを表現できた…ような気がします。)) ** 音長 1,2,4,8,16,32,64,128, 3,6,12,24,48,96,192 [#o7be79f3] 音長は音符の直後に記載します。1が全音符、2が2分音符…と最大で128分音符まで表現することができます。3連符を表現する時は分割したい音長に3をかけてやることで表現することができます。~ 例えば全音符を3分割したい時は1×3で"3"、2分音符を3分割したい時は"6"を記載します。ただし128分音符の3連符は表現することができません。64分音符の3連符"192"までです。~ また音調の後に"."を付けることで付点を表現することができます。"4."は付点4分音符になります。~ ** 音階 o0〜8, <, > ((OPNA系と比較するとオクターブ指定は1つ低くなります)) [#w16a6ac5] オクターブを定義します。note.docには値の範囲として-2〜10と記載がありますが実際に利用できるのはo0d+〜o8dまでのようです。また相対指定をすることも可能で'<'でオクターブを一つ下へ、'>'でオクターブを一つ上に変更することができます。~ >A o3cdefgab>c<bagfedc 上記はオクターブ3でドレミファソラシ(オクターブ+1)ド(オクターブ-1)シラソファミレドを意味しています。 ** 以下、作成中… [#c63dd4bd]