X68000用のVGMプレイヤー作ってみました。
X68000のVGM環境って聞いたことなくてなければ作る(?)と思い、できたのがこちらです。
X68000の内蔵音源(OPMとMSM6258)に対応しています。その他の対応チップに関しては下記の当該項目をお読みください。
(VGMDRVという名前ですが音源ドライバーというよりプレイヤーです。この名前にしたかったんです!まあ駆動はさせてますし...)
使い方とコマンド
VGMDRV filename [-r -d -n -f]
filename: 必須です。VGMファイルを指定します。
-r: リピート回数を入力します(デフォルトは-r2、-r0は無限ループになります)
-d: 指定された分OPMのピッチを下げます(デフォルトは-d0※4MHz時)
-n: MSM6295の音量を微調節します(デフォルトは-n16、範囲は-n0から-n31)
-f: ループ終了時、曲の中断時にフェードアウトを設定します
・再生中にESCキー、もしくはDELキーを押すことで再生を中断できます。
・-fオプション使用時はフェードアウト開始2秒後ほどよりESCキー、DELキーを押すと中断できます。
・再生中に1-8キーを押すことでOPMのチャンネルミュートができます。9キーでADPCMも同様のことができます。
・VGZファイルに対応しています。VGZファイルを開く場合はパスが通ってる場所にtx.rを置いてください。
・OPMの入力周波数が3MHzから4MHz未満の間であれば自動的に音程調節をします(-dオプション不使用時)。
注意事項
・本プログラムはTimer-Cを使用します。
・VGZファイル読み込み時はカレントディレクトリーに _VGMDRVT.EMP という一時ファイルを作成(終了時には削除)します。そのためライトプロテクトや同名ファイルの作成は禁止です。
・テストは行っていますがすべての環境やファイルで正しい動作を保証するものではありません。使用は自己責任でお願いします。
MSM6295及びDual MSM6258への対応について
ご利用される場合はPCM8Aを常駐させてください。
このプレイヤーはMSM6295の再現が可能です。Dual MSM6295にも対応しています。
※周波数の違いにより音程の違いが発生しえます。鳴らないデータもあります(バンク切り替えには対応していません)。
Dual MSM6258に関してはPCM8Aを常駐していない場合、最初のチャンネルのみ鳴ります。パンは1系統のため最後に指定があったチャンネルのパンに依存します。
尚、上記いずれかを使用しない場合でもPCM8Aを付けたままで鳴りますがPCM8A常駐時はADPCMの鳴り方が異なってくるのと、負荷分散のため再生タイミングの精度を下げていることもあり、使用しない場合の常駐は非推奨です。
※MSM6295とMSM6258の併用はできません。
まーきゅりーゆにっとV4のFM音源(OPN3-L)への対応について
対応VGMファイルはOPNA(ADPCM非対応)/OPN/SSGです。
上記の1種類のチップx2つの再生にも対応していますが複数種類ある場合は再生できません。ファイルが対応しているかつOPN3-Lの存在が確認できた時にMercury-Opn3 ModeがONになります。
こちらは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の数値が保証されない場合!マークを表示するようにしました)