記事No |
: 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 の方でも試行錯誤してみます。
記事編集