LFOとシーケンスの検証結果を反映し、MRL 1.2(曲名・PCM8ch・任意のPDX内蔵)、MRZ圧縮出力、大容量ZIPの低メモリ読み込みに対応しました。
Windows 10/11 x64用のMDX / PDX・YM2151 VGM / VGZ / MRL / MRZプレイヤーです。ZIP/LZH/LHA内の選曲にも対応します。FM音声とチャンネル別波形にはIndependent OPM 0.14のDLLを使用します。音源実装ソースは同梱・静的リンクしていません。
- 出力レジスタログから独立に導いたソフトウェアLFOの乱数生成式を実装しました。取得数列の埋め込みではなく、16ビット内部状態の更新と途中の乗算結果から生成します。
- デチューンとLFOを加算した音程が符号付き16ビットで桁あふれした際の処理を修正しました。
- 既存LFO比較76ケース、Signed_Probe 58ケース、Random_Depth_Probe 68ケースの計202ケースで対象レジスタ状態が一致しました。比較対象が拒否した16入力はこの件数に含めません。
- 生成式・比較結果・検証範囲。設定は保持します。既存MRL/MRZへ反映するには元MDXから再出力してください。
- ランダムMPの深さを下位8ビットの符号付き値として扱うよう修正。128は−128、255は−1、256は0となります。
- ランダムMAの乗算・負値の丸め・8ビット減衰量抽出を修正しました。深さの計算に周期を掛けていた処理を廃止しました。
- MPは最初の進行クロック、MAは指定周期経過後に乱数を更新し、次の更新まで値を保持します。乱数は曲全体で順に取り出します。
- 乱数生成式は近似のままです。比較対象と同じ乱数列・音声になる修正ではありません。 確認済みの演算と未確定部分は 検証結果 に記載しています。
- 設定を保持します。既存MRL/MRZへ変更を反映するにはMDXから再出力してください。
- 負のMA鋸波・矩形波の開始減衰量を修正しました。
- MAはMD0で通常再発音しても位相を継続し、MDが正なら再発音でリセットします。MDの待機中は通常音量とし、MD1は待機なし、MD4は3クロック待機となるよう補正しました。
- Signed_Probeの比較可能58ケース中48ケースが一致。残る10ケースはランダム波形で、近似処理を維持しています。検証範囲。
- ランダムLFOの深さと乱数値を調べる独自検証入力68個を
samples/LFO_Random_Depth_Probeに追加しました。 - 既存の設定を保持します。MRL/MRZに修正を反映するには元のMDXから再出力してください。
- 負の深さを指定したMA三角波の開始減衰量を修正。MD遅延中も開始減衰量を保持し、不必要に大音量になる問題を修正しました。
- 比較ログの対象区間で3キャリア×192クロックのTL状態を照合しました。詳細と検証範囲は LFO_SIGNED_0.33.2.md を参照してください。
- 正負・ゼロの深さ、各波形、再発音、MDを比較する独自検証MDX 70個を
samples/LFO_Signed_Probeに追加。比較対象ツールでの追加ログ取得用です。負のMA鋸波・矩形波およびランダム波形の互換性は未確定です。 - 既存MRL/MRZは記録済みの値を再生します。修正を反映するには元のMDXからログを再出力してください。設定と音源DLLは変更していません。
ブックマークのドロップダウンに縦スクロールを追加しました。表示範囲を超える登録先もスクロールして選択できます。既存のブックマーク・設定は保持します。
- ZIP内のPDX名の大文字・小文字によって未展開の仮ファイルを読む問題を修正。同じフォルダーを優先し、見つからない場合はアーカイブ全体から同名のPDXを検索します。複数候補は自動選択しません。
- LZH/LHAをZIPと同じ仮想フォルダーとして開き、選曲・ブックマーク・同名テキスト表示・エクスプローラーへのコピーに対応。
- LZHの展開処理は静的リンクで内蔵しています。必要なファイルだけ展開し、全展開データをメモリへ保持しません。
- 対応方式・制限・検証範囲。既存の設定と音源DLLは変更していません。
- 取り直したLFOログに基づき、MP矩形波の初回反転・再発音境界、MP三角波の中心と折り返し、MHのPMD/AMDバンク指定を修正。
- 比較可能76ケースのうち、通常波形・ハードLFO31ケースの対象レジスタ状態が一致。ランダム45ケースは未一致です。比較結果とHTMLレポートを同梱。
- シーク進捗を「再生位置(検索50%)」のように同じラベル内へ表示。
- 同名テキストはDOC→TXT→HED→MUS→PDLの優先順位で拡張子アイコンを表示。Spaceは優先ファイルを開閉、MDXの右クリックで存在する種類を選んで表示できます。HED/PDLもEnterで開けます。
- 追加のランダムLFO検証入力17個は
samples/LFO_Random_Probe。通常の設定値と既存MRL/MRZはそのまま使用できます。既存ログにMDX側の修正を反映するには再出力が必要です。
- MRL 1.2へループ時刻・イベント位置を追加。指定周回数の記録は保持し、再生時はループ区間を反復します。WAV保存は無限ループ設定を無視して周回数欄の回数後にフェードアウトします。
- MRL/MRZのシーク中は再生位置の上に検索進捗を表示。
- PDX未発見時は
--embed-pdxでも外部参照ログを出力します。 - ZIPの曲名欄は拡張子付きファイル名を表示。「すべて」で全ファイルを列挙。
- MDXと同名のDOC/TXTをDOCアイコンで表示し、Spaceでビューアーを切り替え。テキストファイルはEnterで表示。スクロール・選択コピー可能で、再生は継続します。
- セレクターの項目をエクスプローラーへドラッグするとコピー。ZIP内ファイルは展開して渡します。
- 操作と検証範囲、LFO調査、比較用MDX80本は
samples/LFO_Comparison。
Independent OPMへのキーONレジスタbit 4/5の不要な入れ替えを除去し、一部オペレーターのみを使う音色が無音になる問題を修正しました。既存MRL/MRZの再出力やDLLの交換は不要です。MDX/VGM/VGZ/MIDIにも共通の出力修正が適用されます。
- MP/MAの決定的な波形・初期変位・初回反転、キーOFF後の変調更新を修正。ランダム波の一致や全MDX互換を保証するものではありません。
- テンポ変更、キーオン遅延、音色切替、y命令とMH感度、PMD/AMD bankの扱いを修正。
- ZIP32/ZIP64の目次を読み、必要なファイルだけをストリーム展開。MRLは64 KiBのイベントバッファで再生します。
- MRL 1.1で曲名、PCM8ch操作、PDX情報を記録。PDX内蔵が既定で、
--no-embed-pdxで外部参照にできます。--mrzはZIP圧縮出力、--mrl-v1は従来のFM比較形式です。 - 出力方法・バイナリ仕様・検証報告。既存の設定は維持します。
- MDXRLOG 1.0(MRL)のFM再生・シークに対応。
- ZIPをセレクターでフォルダーとして開き、内部の選曲・PDX参照・ブックマーク・前回選曲の復元に対応。
- 対応形式と制限は ZIPとMRLの説明 を参照してください。
--reglog-folderでMDXを再帰検索し、時刻付きYM2151レジスタログを元のフォルダー構成で出力します。- 独立した比較ツール用の バイナリ仕様 と 操作説明 を同梱。音源合成・PDX・GUIは使用しません。
- VGZ一括変換に
--no-pcm(FMのみ記録)を追加。 - 変換時に不要なFM合成を省略し、gzipのCRC計算を高速化。PCM除外時はPDX読み込み・デコードも省略します。
- GD3タグの英語/日本語タイトルにMDXの曲名、変換者に
Independent MDX、コメントにExported from Independent MDXを記録します。
- GUIを開かずにMDXを再帰検索してVGZへ一括変換する
--vgz-folderを追加。 - 指定ループ回数を有限の演奏として記録し、カレントフォルダーの下に元のフォルダー構成で出力します。
- PCMはステレオ12bit PWMとして記録します。生成ファイルのPWM再生にも対応。詳しくは一括VGZ変換。
- 初期値と異なるMMLパラメーターと音色一覧の音色番号を赤色で表示。リセット時は通常色へ戻ります。
- 音色ウインドウの最小高さを、MMLの9行が収まるフォント実測値から計算。初期サイズは最小の幅・高さです。
- 音色ウインドウの表示/非表示、位置、サイズ、最大化・最小化状態をINIに保存して次回起動時に復元。画面構成が変わった場合は表示可能な位置に補正します。
- 「音色表示」ボタンは表示/非表示を切り替えます。閉じるボタンでも非表示になり、編集状態は保持します。
- Independent OPMを0.14のWindows x64 DLL・公開ヘッダー・API文書へ更新。
- 音色ウインドウをNOTE-MDX-Workbench 2.8.21の音色編集に合わせて再配置。左にMMLテキストと4オペレーター×11項目のノブ、右にレジスタと接続図、下に試奏鍵盤と音色一覧を配置。
- MDXの全音色を再生開始時の初期値として保持。音色の編集を再生中の該当チャンネルに反映し、リセットで初期値へ戻す。
- 変更されたノブは赤色、初期値の方向は薄い針で表示。保存ボタンは設けず、MDXファイルを書き換えません。
ZIPを展開し、bin/IndependentMDX.exeを起動してください。independent_opm.dllを同じフォルダーに置きます。.NETやVC++再頒布ランタイムの追加インストールは不要です。Windows標準DLLを利用します。音色テキストの色分けにはWindows標準のMsftedit.dllを動的に読み込みます。
ファイルを開く、ドラッグ&ドロップ、下部セレクター、コマンドラインで選択できます。PDXはMDXと同じフォルダーから検索し、手動指定も可能です。PDXや音色が欠けた場合は診断を表示して再生可能な部分を継続します。
bin\IndependentMDX.exe "C:\Music\song.mdx"
bin\IndependentMDX.exe "C:\Music\song.vgm"起動済みの場合は既存ウインドウで指定ファイルを再生します。最小化は維持します。前回のファイルは次回起動時に読み込みます。初回の表示言語はWindowsのユーザー表示言語が日本語なら日本語、それ以外は英語です。手動切り替えも可能です。
「音色表示」でウインドウの表示/非表示を切り替え、チャンネルまたは下段の音色番号を選びます。音色番号の選択は現在のチャンネルにも適用されます。*は再生中に使用済みの音色です。
ノブは左右ドラッグまたはホイールで操作します。OP1〜OP4の順にAR / DR / SR / RR / SL / OL / KS / ML / DT1 / DT2 / AMEを編集し、CON / FL / OPも変更できます。MMLテキストの直接編集とコピーにも対応します。音色番号の変更、範囲外の値、入力途中の不完全なテキストは適用されず、直前の有効な音色が継続します。
編集は音声生成ブロックごとに適用されます。キュー済み音声の分だけ実際に聴こえるまで遅れます。同じ音色番号を使用している全FMチャンネルと、以後その音色を選ぶ発音に反映します。シーク、出力切り替え、一時停止/再開では編集値を維持し、新たな再生開始ではMDXの元の定義から初期化します。「リセット」は現在表示中の音色だけを戻します。VGMの音色表示はレジスタ参照のみで、MDX音色編集の対象外です。
鍵盤クリックで試奏できます。MMLテキスト入力欄以外ではAWSEDFTGYHUJKがドから13音、PageUp / PageDownがオクターブ変更です。初期オクターブは4、範囲は0〜8。Monophonic / Polyphonic設定に従います。「全音色をMML保存」はMDXファイルの元の定義を出力します。編集結果を残す場合は音色ウインドウのMMLテキストをコピーしてください。
- 再生、一時停止、停止、位置指定、ループ、次曲自動再生、WAV保存に対応。
- 再生速度0〜200%、キー−24〜+24。キーの対象はFMのみ/PCMを含む/PCMを含みピッチシフトから選択。
- 無限ループは再生中の変更も反映。有限回数を超えてからOFFにするとフェードし、フェード開始後は切り替えません。ループのない曲は終端の無音後に再開します。
- FM・PCM・全体音量は出力別に保存。初期値はIndependent OPM / X68SoundがFM 200%、PCM 100%、全体100%、C86CTLがすべて100%。
- MIDI入力、音色番号によるプログラムチェンジ、Mono / Poly、初期OFFのアフタータッチに対応。停止・一時停止中も試奏できます。
- チャンネル別鍵盤/縦ピアノロール、キャリアのML・DT2に基づく音程表示、波形表示の切り替え。鍵盤クリックで消音。
- Alt+Enterで全画面切り替え。スプリッターで鍵盤側の表示幅を変更。
設定は変更から約2秒後に実行ファイル横のIndependentMDX.iniへ保存します。更新時は既存INIを残してください。本パッケージには利用者設定を含めていません。
初期列は曲名/名前/作成日時/更新日時/種類/サイズ。初期ソートは名前です。見出しクリックでソート、ドラッグで順序・幅変更、見出し右クリックで表示列を変更できます。曲名はファイル一覧の表示後に順次読み込みます。
MDX・PDX・VGM/VGZのフィルターは初期ON。上下キーで選択、Enterまたはダブルクリックで再生・フォルダー移動。上の階層へ戻ると元のフォルダーの選択とスクロール位置を復元します。アドレス入力とブックマークにも対応します。
Independent OPM DLL / X68Sound DLL / C86CTL (OPM / YM2151)を選択できます。出力変更時は同じ位置から再開します。C86CTLとX68Soundの外部DLLは同梱していません。X68Soundは32bit版を付属ブリッジ経由で使用します。C86CTLは別途対応するx64 DLLと機器が必要です。FM/PCM遅延設定は次回再生から適用します。
Independent OPMの波形はDLLから取得したチャンネル別サンプルです。外部音源のFM波形はDLLによる推定であり、実機の録音を分離したものではありません。実測出力タイミングは初期ON、YM3012右DAC時差モデルは初期OFFです。
VGM/VGZはYM2151と、本ツールが出力する直接PWM形式に対応します。その他の複数音源やDACストリームは未対応。Independent OPMはヘッダーのクロックを使用し、外部出力は4MHzに限定します。詳細はVGM対応範囲。高密度VGMの周期的な聴感上の不具合について、Windows録音による解消確認は未完了です。
bin\independent-mdx.exe song.mdx --pdx bank.pdx --wav output.wav --loops 2
bin\independent-mdx.exe song.vgz --wav output.wav
bin\IndependentMDX.exe --validate-folder "C:\Music"CLIの全オプションはbin/independent-mdx.exe --helpで確認できます。--validate-folderはGUIを開かず配下のMDXを検証し、エラーログと対象MDXを収集します。調査フォルダーが変わるたびにコンソールへ表示します。通常起動の--collect-error-mdxでもデータエラーを収集します。PDX未発見はエラーログ・収集の対象外です。
Visual Studio 2022 C++デスクトップ開発環境とCMakeでbuild_vs2022.batを実行します。Zig 0.13.0を使う場合はbuild_cross.shを使用します。非Windowsのコア検証は別途ビルドしたIndependent OPM共有ライブラリをINDEPENDENT_OPM_LIBRARYに指定します。音源ソースはこの配布物には含みません。
LZH用のLhasa 0.6.0(ISC)は同梱ソースから静的リンクされます。追加の解凍ソフトは不要です。
本体のライセンスはLICENSE.txt、依存物はTHIRD_PARTY_NOTICES.txtをご覧ください。Independent OPMおよびWorkbench由来の音色テキスト・ノブ処理は0BSDです。DLL・公開ヘッダー・ライセンスの整合確認は配布監査、テスト範囲と未検証事項は検証結果に記載しています。