一括表示
タイトル
記事No
投稿日
投稿者
参照先
kbfmp7.kpi v0.01
310
2024/04/27(Sat) 17:01:49
Kobarin

https://kobarin.sakura.ne.jp/kpi/kbfmp7_001.7z

32bit版のみです。演奏プラグインなので Plugins ではなく Player フォルダに
置いて下さい。

kbfmp7.txt より

-------------------------------------------------------------------------------
【 名 称 】 FMP7 Player
【ファイル名】 kbfmp7.kpi
【バージョン】 0.01
【対応拡張子】 owi
【 Platform 】 x86(32bit) のみ / x64(64bit) なし
【 公 開 日 】 2024/04/27
-------------------------------------------------------------------------------

【概要】

Guu さん制作の FM/SSG/PCM音源 音楽ドライバ FMP7 を用いて FMP7 形式の曲データを
再生するための演奏プラグインです。対応拡張子は owi です。

FMP7 の曲データは

http://archive.fmp.jp/

にあります。

【FMP7.exe】

本プラグインを使用するためには FMP7.exe が必要です。
動作確認したバージョンは v7.10g です。

http://archive.fmp.jp/archives/category/program

で FMP ver7.10g をダウンロードし、kbfmp7.kpi のプラグイン設定で FMP7.exe のパス
を設定して下さい。

【既知の不具合】

・再生中に他の FMP7 データの情報を取得すると再生が停止する

再生中に Media エクスプローラで FMP7 データのタイトルを表示したり演奏リスト上で
曲長計算したときなどに停止します。

FMP7.exe の仕様上、再生中とは異なる曲データの情報を取得しようとすると曲データの
再生が停止します。停止させない為には、再生中は他の曲データの情報を取得しないよ
うにするしかありませんが、検討の結果、再生を停止させることにしました。
曲データの取得が終わったら再開するようになっています。

・曲の長さと再生が終了する時間が全然違う
・シーク後の再生位置が不正確

FMP32_GLOBALWORK::Count の値とミリ秒単位の位置の関係性が不明です。この値を 10倍
した値をミリ秒単位の曲長としていますが、実際は違うようです。
同じ理由でシーク後の再生位置も不正確です。

シークについては FMP7.exe の振る舞いも少し変です。(シークバーの位置より手前に
シークされることがある)

【アーカイブ内の曲データの制限】

曲データによっては pwi ファイルが必要になる場合があります。必要な pwi ファイル
名の取得方法が不明な為、再生する owi ファイルと同じフォルダの pwi ファイルを検
索し、最初に見つかった 10 個まで実ファイルを作成します。

アーカイブ内の同一フォルダに多数の曲データと pwi ファイルが置いてあると、必要な
pwi ファイルを認識出来なくなり、ファイルオープンに失敗して再生することが出来な
くなります。不要な pwi ファイルを何個も展開して実ファイルを作成することにもなる
為、ファイルを開くのにも余分な時間がかかります。

同一アーカイブ内に複数の owi/pwi が含まれていても、フォルダが異なっていれば問題
ありません。

foo.zip>bar/aaa.owi
foo.zip>bar/bbb.pwi
foo.zip>baz/ccc.owi
foo.zip>baz/ddd.pwi

この場合、bar/aaa.owi と baz/ccc.owi は異なるフォルダとなりますので、
bar/aaa.owi を再生時に baz/ddd.pwi が実ファイルに展開されることはありません。

【更新履歴】

Version 0.01(2024/04/27)

・初版
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: kbfmp7.kpi v0.01
311
2024/04/28(Sun) 02:00:54
Kobarin

kbfmp7.kpi の 64bit 版は KbMedia Player 本体のリンカオプションで
「高エントロピー64ビットアドレス空間のランダム化(ASLR)のサポート」
を false にすると動作しますが true だと動作しませんでした。

なので kbfmp7.kpi は 32bit 版のみの配布としていましたが、本体のリンカオプション
を変えずに解決することが出来ました。

回りくどい処理が必要で、効率面で少し心配ですがうまく行ったので良しとしますか。

あとは複数の曲データを同時に扱えない件をどうするか。

kbfpd.kpi とか kbgxscc.kpi とかでやっている API 乗っ取り方式でも試してみるかな。
CreateMutexW, CreateFileMappingW, RegisterClassW あたりを乗っ取れば FMP7.exe を
多重起動出来たり、グローバルワーク(共有メモリ)を曲データごとに区別出来そうな気が
します。

ウイルス対策ソフトに怒られる確率が高くなりますけど。
pagetop

- Web Forum v8.0 -
++ Edited by Hamel ++