新着表示
タイトル
記事No
投稿日
投稿者

Re^4: kbdmusic.kpi代替のMIDI再生プラグインを作成しました
251
2024/02/07(Wed) 20:29:08
You
MIDIについては概要しか知らないので詳しい話はできませんが、
本体側に kbdmusic.kpi のためのハックが有ってGS音源用データでもいくらかマシになっているのですね。
kbGuru2SMF.kpi でもMIDIデータ製作者の想定とは違う音色になっている可能性は否めませんが、
RPGツクールやWOLF RPGエディター用のBGMをゲーム内と同様の音質で聴きたいと言う動機で作成したので良しとしています。

kbdmusic.kpi のシーク・ポーズ・再開・テンポ変更の実装には、演奏時間の計算にも手を入れる必要が有りそうですね。
ボリューム変更は一応下記コードで動作しますが、min = -3000 の根拠が無くどの動作環境でも適用できるか不明です。
void WINAPI KbDMusicPlayer::SetVolume(int Volume)
{
//// TODO: 音量0の時のminの値を調査
// Volume は 0 ~ 100
long min = -3000;
long max = 0;
long range = labs(max - min);
long vol = min + range / 100 * Volume;
m_pDMP->SetGlobalParam(GUID_PerfMasterVolume, &vol, sizeof(long));
}

kbGuru2SMF.kpi → kbdmusic.kpi の切り替え後に再生できない件は、
KbDMusicPlayer のコンストラクタで CoInitializeEx(NULL, COINIT_MULTITHREADED); を実行
KbDMusicPlayer のデストラクタで CoUninitialize(); を実行することで
本体が32bit版と64bit版のどちらでも発生しなくなることを確認しています。
ただ、これで解消する根拠が断定できないので、kbGuru2SMF.kpi の方でも試行錯誤してみます。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^3: kbdmusic.kpi代替のMIDI再生プラグインを作成しました
250
2024/02/04(Sun) 15:39:58
Kobarin

> 本体が32bit版の場合は、kbGuru2SMF.kpi の %Kbmplay% セクションの
> 「別プロセス経由で使用」を true にすれば特別の操作なしに
> kbdmusic.kpi と kbGuru2SMF.kpi を切り替えられるようになります。

kbGuru2SMF_module.cpp の 20行目

static const DWORD kbGuru2SMF_MultipleInstance = KPI_MULTINST_ONE;
(wchar_t になってましたが DWORD ですね)



static const DWORD kbGuru2SMF_MultipleInstance = KPI_MULTINST_ZERO;

に変更すれば、ユーザーがこのような設定をしなくても、本体が 32bit 版で
あれば kbdmusic.kpi との切り替えも問題なくなる筈です。

ただ、デバッグ中は KPI_MULTINST_ONE の方がデバッグしやすいと思います。

本体が64bit版の場合はこれだけでは解決しません。
本体側で対処することも出来なくはありませんが、それよりは、プラグイン側で
演奏停止時に何らかのリソースを開いたままになってる(と思われる)のを閉じ
るなどの対処をすべきかと思います。

GuruGuruSMF4.dll のソースコードをざっと眺めた感じでは
KPI_MULTIINST_INIFITE にするのは無理そうですね。
dll の改変が必要になりそうです。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^2: kbdmusic.kpi代替のMIDI再生プラグインを作成しました
249
2024/02/04(Sun) 15:16:17
Kobarin

> kbGuru2SMF.kpi で MIDI を再生後、
>
> ・kbGuru2SMF.kpi 以外のプラグインで何かを再生
> ・プラグイン設定画面を閉じる
>
> の後であれば再生出来るようになります。

本体が32bit版だと駄目みたいですね。

本体が32bit版の場合は、kbGuru2SMF.kpi の %Kbmplay% セクションの
「別プロセス経由で使用」を true にすれば特別の操作なしに
kbdmusic.kpi と kbGuru2SMF.kpi を切り替えられるようになります。

本体が 64bit 版だとこの方法ではうまく行きません。
プラグイン設定画面を閉じるしかないです。

原因は何となく分かりましたがうまく説明出来ません。
同一プロセス内で kbGuru2SMF.kpi と kbdmusic.kpi を共存
して使用することが出来ないということです。

本体で対処すべき問題かどうか、と言われると微妙です。

kbGuru2SMF.kpi を使用すると、再生を停止しても同一プロセス内で
1つしか使えない何らかのリソースを開いたままなのだと思います。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: kbdmusic.kpi代替のMIDI再生プラグインを作成しました
248
2024/02/04(Sun) 14:12:46
Kobarin

ありがとうございます。
Player プラグインに対応してくれた方は初めてです。
kbdmusic.kpi より良い感じで MIDI を再生出来ますね。

> ・kbdmusic.kpiで音色が欠落するGSやXG音源向けのデータでも(多分)正常に再生可能

実は kbdmusic.kpi を使用するときは本体が

「演奏2」->「MIDI」->「Ignore BankSelect」

相当の処理を施したデータを kbdmusic.kpi に渡しているのです。
そうしないと多くの GS データでまともに音が鳴らないので。

この処理を施すかどうかはプラグインのファイル名だけで判定しているので、
例えばファイル名を _kbdmusic.kpi などにすれば余計なことはしないで
再生出来ますが、まともに再生出来るデータはほとんどありません。

本当はプラグイン側でその処理を施すべき(設定出来るようにすべき)
なんですけどね。


本プラグインのソースコードを参考にすれば kbdmusic.kpi でもシークなど
にも対応出来るようになるかもしれませんね。


kbGuru2SMF.txt の

>【既知の不具合】
>
> ・kbGuru2SMF.kpi で MIDI ファイルを再生後、kbdmusic.kpi に切り替えると再生出来ない。

直接の原因は分かりませんが、kbGuru2SMF.kpi をアンロードすると
再生出来るようにはなりますね。

今の本体の仕様だとそれを明示的に行うことは出来ませんが、

kbGuru2SMF.kpi で MIDI を再生後、

・kbGuru2SMF.kpi 以外のプラグインで何かを再生
・プラグイン設定画面を閉じる

の後であれば再生出来るようになります。

プラグイン設定画面を閉じるとき、それまでロードしていた
プラグインのうち、その時点で使用されていないものは全て
アンロードする仕様になっています。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: scdファイルを再生するには
247
2024/02/04(Sun) 14:11:00
Kobarin

返事遅くなりすみません。

> タイトルの通り、kbm Playerで拡張子"scd"の音楽ファイルを再生する方法をご存知の方がいましたらご享受願えますと幸いです。

拡張子 .scd が何のファイル形式なのか私も知りません。
Super Audio CD でしょうかね。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: kbvgmでは再生できないvgm
246
2024/02/04(Sun) 14:09:42
Kobarin

返事遅くなりすみません。
不具合報告ありがとうございます。

> kbvgm.kpi 0.12を使用してvgmデータを再生していたのですが
> 参照先で配布しているvgmデータが再生できませんでした。
> kbwinamp 0.17α+in_vgm v0.51.1
> を使用すると再生できました。

01_Prelude.vgm から 21_Ending.vgm まで全て試してみましたが
全て再生できました。

再生結果が kbwinamp+in_vgm と違うということでしょうか。

> 上のデータはAY-3-8910+YM2413を使用しているので
> 複数の音源を使用したデータがまずいのかと思いましたが、試した限りにおいて他のデータでは再生可能でした。

プラグイン設定の

EmulationCore セクションの AY8910 と YM2413
(どちらかが Disbaled になっている)

が怪しい気がしますがどうでしょうか

少なくともご指摘頂いたデータでは General セクションの yrw801.rom は
関係ないようです。
pagetop
タイトル
記事No
投稿日
投稿者

Re^5: 修正版
245
2024/01/31(Wed) 22:09:36
El-halo
> ○ kbmed312_beta\x86\Player\
演奏プラグインということを失念しておりました。
上記のディレクトリに配置して、無事再生を確認しました。
pagetop
タイトル
記事No
投稿日
投稿者

Re^4: 修正版
244
2024/01/31(Wed) 16:46:48
You
kbGuru2SMF.kpiはKbMedia Player Ver3系 32bit版用の演奏プラグインなので、
x86のPlayerフォルダ以下に配置してみてください。

○ kbmed312_beta\x86\Player\
× kbmed312_beta\x86\Plugins\
× kbmed312_beta\x64\Player\
× kbmed312_beta\x64\Plugins\
上記×のフォルダに配置した場合は「Failed to load Plug-in」になることを確認しています。

「Microsoft Visual C++ 2022 再頒布可能パッケージ」がインストールされていて
KbMedia Playerがエラー無く起動するなら、他にDLL等は不要です。

pagetop
タイトル
記事No
投稿日
投稿者

Re^3: 修正版
243
2024/01/31(Wed) 10:35:11
El-halo
こんにちは。

kbGuru2SMF.kpiを試してみたのですが、
プラグイン設定のTypeがFailed to load Plug-inとなって使用不能状態になります。
本体は64bit 32bitともに挙動は同じです。

なにか必要なDLLはありますか?
Visual Studio 2015-2022 Redistributable Package 14.38.33130.0
は導入済みです。
pagetop
タイトル
記事No
投稿日
投稿者

Re^2: 修正版
242
2024/01/31(Wed) 01:30:08
You
しょうもない誤字が有ったので修正版を添付します。

VirusTotalのチェックは相変わらず kbGuru2SMF.kpi で1件誤検知されるようです。
kbGuru2SMF.zip https://www.virustotal.com/gui/file/91e249530deb13d913733684924892ec5811c29279bde313a552198eeecc0a0a
kbGuru2SMF_src.7z https://www.virustotal.com/gui/file/9335b6f008c4c26d21d4d8a015c9e0ec4118625d1cc50936cc771cda1dfea865
kbGuru2SMF.kpi https://www.virustotal.com/gui/file/1d2f28406bbaf0a0d0c7e90787b9863f26d7797cacb99e3a73c56042569b3e2a

(138KB)

pagetop

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