X68000用のVGMプレイヤー作ってみました。
X68000のVGM環境って聞いたことなくてなければ作る(?)と思い、できたのがこちらです。
X68000の内蔵音源(OPMとMSM6258)に対応しています。その他の対応チップに関しては下記の当該項目をお読みください。
(VGMDRVという名前ですが音源ドライバーというよりプレイヤーです。この名前にしたかったんです!まあ駆動はさせてますし...)
使い方とコマンド
VGMDRV filename [options]
filename: 必須です。VGMファイルを指定します。
-r: リピート回数を入力します(デフォルトは-r2、-r0は無限ループになります)
-d: 指定された分OPMのピッチを下げます(デフォルトは-d0※4MHz時)
-n: MSM6295の音量を微調節します(デフォルトは-n16、範囲は-n0から-n31)
-f: ループ終了時、曲の中断時にフェードアウトを設定します。
-a: OPNA/OPN/SSG/OPN2の音程調節機能を無効化します。
・再生中にESCキー、もしくはDELキーを押すことで再生を中断できます。
・-fオプション使用時はフェードアウト開始2秒後ほどよりESCキー、DELキーを押すと中断できます。
・再生中に1-8キーを押すことでOPMのチャンネルミュートができます。9キーでADPCMも同様のことができます。
・VGZファイルに対応しています。VGZファイルを開く場合はパスが通ってる場所にtx.rを置いてください。
・OPMの入力周波数が3MHzから4MHz未満の間であれば自動的に音程調節をします(-dオプション不使用時)
・-rオプションはループが設定されているファイルに対して有効です。
・-fオプションはまーきゅりーゆにっとV4利用時は無効です。
注意事項
・本プログラムはTimer-Cを使用します。
・VGZファイル読み込み時はカレントディレクトリーに _VGMDRVT.EMP という一時ファイルを作成(終了時には削除)します。そのためライトプロテクトや同名ファイルの作成は禁止です。
・ストリーム形式のMSM6258のデータには対応していません。
・テストは行っていますがすべての環境やファイルで正しい動作を保証するものではありません。使用は自己責任でお願いします。
MSM6295及びDual MSM6258への対応について
ご利用される場合はPCM8Aを常駐させてください。
このプレイヤーはMSM6295の再現が可能です。Dual MSM6295にも対応しています。
※入力周波数の違いにより音程の違いが発生しえます。
Dual MSM6258に関してはPCM8Aを常駐していない場合、最初のチャンネルのみ鳴ります。パンは1系統のため最後に指定があったチャンネルのパンに依存します。
尚、上記いずれかを使用しない場合でもPCM8Aを付けたままで鳴りますがPCM8A常駐時はADPCMの鳴り方が異なってくるのと、負荷分散のため再生タイミングの精度を下げていることもあり、使用しない場合の常駐は非推奨です。
※MSM6295とMSM6258の併用はできません。
まーきゅりーゆにっとV4のFM音源(OPN3-L)への対応について
対応VGMファイルはOPNA/OPN/SSG/OPN2/SEGA PSGです。
※OPNAはADPCM、OPN2はPCM、SEGA PSGはノイズチャンネル、それぞれに非対応です。
上記の1種類のチップ2つの再生にも対応していますが複数種類ある場合(OPN2/SEGA PSGもしくはOPN2/SSGの組み合わせは除く)は再生できません。ファイルが対応しているかつOPN3-Lの存在が確認できた時にMercury-Opn3 ModeがONになります。
入力ファイルにより自動的に音程調節をします。OPN3-LはOPMと違いこの音程調節機能のみ利用できます。
2023/08/13: Version 0.90公開
2023/08/24: Version 0.91公開 3.58MHz時の変換再生機能追加。-dオプション追加。チューンナップ等
2023/08/28: Version 0.95公開 ⭐が流れるようになりました!それと再生中断機能の修正等
2023/08/30: Version 0.96公開 開始時に異音が鳴る場合があることを確認したので修正しました。
2023/08/31: Version 0.97公開 初期化時にTest Modeをオンにしてしまっていたのを修正しました。
2023/09/12: Version 0.98公開 OPM入力周波数3MHz-4MHzの間であれば自動で変換再生できるようにしました。他、ADPCMのパンの修正、ADPCMの⭐追加等
2023/09/15: Version 1.00公開 380KiBの上限を開放し、メモリーが許すまで読み込めるようになりました。VGZファイルに対応しました。再生時間を表示するようにしました。DELキーでの中断を追加。一部中断できないファイルを中断できるように修正。
2023/10/07: Version 1.01公開 OKIM6295に限定対応→PCM8Aに対応。再生時間の計算方法変更
2023/10/15: Version 1.02公開 再生中に非対応チップがあった場合、中断していたのをスキップするようにしました。無限ループに対応しました。
2023/10/23: Version 1.04公開 曲の現在位置と現在のリピート回数を表示するようにしました。-fオプション追加。再生時間を60分表示から24時間表示に変更。OKIM6295再生時にPCM8Aを常駐していなくてもエラー終了しないようにしました。※ただし、この場合ADPCMは鳴りません
2023/10/25: Version 1.05公開 OPMのチャンネルのミュートができるようになりました。それとフェードアウト機能の改善
2023/11/09: Version 1.06公開 稀にフェードアウト時にクラッシュする現象を見つけたので修正しました。
2023/11/17: Version 1.07公開 Opm-Tone Mode, Refresh Rate, Processed Data/s, Sampling Dataの表示項目を追加しました。←の変更により起動時の4MHzじゃないメッセージは廃止。VGMデータの待ち時間が長すぎる場合にキー入力を受け付けなくなる問題の修正
2023/11/19: Version 1.08公開 Refresh RateをFrame Rateに変更。どのファイルでもFrame Rate=60ぐらいで動くように調節。ADPCMの一時停止・再開を可能にしました。
2023/11/23: Version 1.09公開 非常にレアケースだと思いますがADPCM初期設定時、OKIM6295の一時停止・再開時に起こりうる可能性がある問題の修正
2023/11/25: Version 1.10公開 コマンドライン引数で前回起動時の値が反映されることがあったので修正しました。
2023/12/05: Version 1.11公開 VGM Size[KiB]を表示するようにしました。
2024/07/23: Version 1.13公開 まーきゅりーゆにっとV4のFM音源に対応しました。
2024/07/25: Version 1.14公開 OPN3-Lの初期化手順の修正(多分Version 1.13でも大丈夫なのでしょうが念のため)
2024/09/10: Version 1.15公開 画面レイアウトの調節。Sampling Dataの計算を初回以外は行わないように修正。フェードアウトからの中断可能時間を3秒から2秒に変更
2024/09/22: Version 1.16公開 軽量化しました(多分Version 1.15と変わりません)
2024/12/21: Version 1.17公開 一部ファイルにおいてOKIM6258の再生レートを間違う問題を修正しました。
2026/07/01: Version 1.20公開 再生テンポの精度の向上。Timer-Cに変更。Dual MSM6258モード追加。オプションが大文字に対応してなかったのを対応。ファイル名とオプションの順序逆に対応。ループ処理時の負荷を低減。一部名称の変更(OKIM6258→MSM6258等)。OPMタイマーレジスターへのアクセスをしないように修正
2026/07/07: Version 1.21公開 MSM6295データの変換処理を追加。Dual MSM6295に対応。-r/-nオプションの仕様の変更。Sampling Dataの数値が保証されない場合!マークを表示するようにしました。
2026/07/11: Version 1.23公開 バンク切り替えがあるMSM6295データに対応しました。
2026/07/26: Version 1.25公開 (最後以外はまーきゅりーゆにっとV4用の更新)音程調節機能を追加しました。OPN2/SEGA PSGに対応しました。-aオプションの追加。Loop Samplesが0の時はループがないデータとして識別するようにしました。
2026/07/29: Version 1.26公開 OPN2書き込み時にSSGレジスター書き込みや発音数変更をできないように修正しました。