新着表示
タイトル
記事No
投稿日
投稿者
参照先
DECOPLAY の MWRD プラグイン
338
2024/06/04(Tue) 22:40:27
Kobarin

DECOPLAY の MWRD プラグインを使って MIMPI WRD 対応

に挑戦しています。今までも何度もプラグイン SDK を眺めては絶望して何もしない
で諦めていました。

今回は何とかなりそうな気がしたので再挑戦しています。
ウィンドウや設定画面を表示するところまでは出来たのですが、その先に進めず
また挫折しそうです。画面が真っ黒のまま再生が始まってくれない。

もしかしたら手元にある SDK(2.2/2.3) が新し過ぎるせいなのかもしれないです。
古いSDK(2.2/2.3 より古いもの) が見てみたいけどインターネットアーカイブで
探しても見つけることが出来ません。DECO さんのサイトに行っても SDK や
プログラムはニフティに置いてたみたいで辿り着くことが出来ませんでした。

v2.2/2.3 の SDK では DpwDef.h の EXT_ID_WINDOW の値が 6 ですが、この値が
5 になってる SDK が欲しいです。

MWRD プラグインが返すのは 5 になっています。

もしかしたら 6 と同じ扱いで良いのかもしれませんが、MWRD プラグインの
ドキュメントを読むと DECOPLAY 1.2 の当時の SDK で作られてるようです。

プラグインを作る場合には最新の SDK だけ見れば良いですが、プラグインを使うと
なるとそうも行かないのですよね。使いたいのは MWRD のプラグインだけですし。
他のプラグインはやるとしても MWRD の後です。ちなみに SWRD のプラグインも 5
を返します。

それか、むしろ手元にある MWRD プラグインが古すぎるとか?(v1.4)

ちなみに DECOPLAY の MWRD プラグインは

http://cgi.members.interq.or.jp/ox/izu/

こちらにあります。20年以上ほぼ管理されていないっぽいにも関わらず未だサイトが
消滅せず、掲示板には20年以上前の私の恥ずかしい書き込みが今も残っています。
戸上山さんに MWRD 再生ライブラリみたいなのを作って欲しくて書いたんですけどね。

20年以上もの間 SPAM に荒らされることもなく残ってるというのは凄いことのような
気がします。もしかして管理されてるのだろうか。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^2: kbgme.kpi v0.01
337
2024/06/04(Tue) 21:52:45
Kobarin

素晴らしいライブラリを教えて頂いてありがとうございました。

> 2年ほど前にkode54氏とfoobar2000作者のPeter氏と間になんらかのいざこざがあり、

github に foobar 関係のが全然ないと思ってましたがそんなことがあったのですね。

VGM 関係はソースの中身をきちんと検証してなかったですが、ライブラリ自体は新しい
バージョンの VGM に対応してなくて foo_input_gme は対応させてるだけなのかもしれ
ません。

SPC も補間の設定があるあたり特別な対応をしてるのでしょう。

AY はコンパイラの最適化を有効にすると明らかに再生が出来なくなるデータがあるので
ライブラリ自体に何か問題があると思うのですが、落ちるバグと違って問題の箇所が特定
出来ないので、諦めてそのうち解決されるのを待つことにします。


wsr と psf 系の foobar プラグインのいくつかが新しくなってるみたいですね。
取り敢えず wsr だけ更新しましたが再現性に関わる修正ではなかったです。
pagetop
タイトル
記事No
投稿日
投稿者

Re: kbgme.kpi v0.01
336
2024/06/03(Mon) 20:58:39
たかおか
お忙しい中対応いただきありがとうございます。
foo_input_gmeと同等の再生状況にはならないとのことですが、
手持ちのAYファイルは良く再生できるようになりました。

foo_input_gmeはもともとfoo_gepという名前でkode54氏によって開発されていました。
2年ほど前にkode54氏とfoobar2000作者のPeter氏と間になんらかのいざこざがあり、
kode54氏はgithub、gitlabからソースコードを消去して開発をやめてしまいました。
現在はPeter氏が開発しているのですが、foobar2000本体のライセンスと同じくソースコード非公開でやっているようです。
libgmeはLGPLなのでlib部分には手を加えてないと思われます。

bitbucketにkode54氏開発プラグインのソースコピーがあるのですが、古いコピーのようです。
https://bitbucket.org/chiptune-plugin-archives__not-my-release/foo_gep/src/main/
pagetop
タイトル
記事No
投稿日
投稿者
参照先
KbMedia Player Version 3.14beta5.2024.0603
335
2024/06/02(Sun) 22:41:38
Kobarin

https://kobarin.sakura.ne.jp/test/kbmed314_beta5.exe
https://kobarin.sakura.ne.jp/test/kbmed314_beta5.7z

.exe と .7z はどちらも中身は同じです。
.7z の展開の仕方が分からない方は .exe をダウンロードして下さい。

.exe だと Microsoft Edge でブロックされる方は .7z をダウンロードして下さい。
Microsoft Edge にブロックされる方は安全だと報告してくれると助かります。

起動時にエラーメッセージが表示されてプラグインが認識されない場合は
Microsoft Visual C++ 2022 再頒布可能パッケージが必要です。
https://visualstudio.microsoft.com/ja/downloads/#other-ja-family
x64 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x64.exe
x86 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x86.exe
(x64 版の動作には vc_redist.x64.exe と vc_redist.x86.exe の両方が必要です)

VS2019 のランタイムでも動作はするようですが、念のため VS2022 のランタイムを
入れて下さい。

β版は Windows XP のサポートを打ち切りました。XP 環境だと一部のプラグインが
動作しません。Windows XP で使いたい方は正式版をお使い下さい。


v3.14beta5 での変更点

・各種プラグイン/DLL の開発環境を VS2022 17.10.1 に更新
・kbmdx.kpi に関する以下の修正
 ・64bit 版が落ちるのを修正
 ・v3.14beta3 同梱の版(VS2022 17.10.0 でビルド)から発生
  (std::mutex::lock() で落ちる。kbmod.kpi が落ちるのと同じ原因?)
 ・プリプロセッサの定義に _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR を追加で回避
・kbpsf2.kpi に関する以下の修正
 ・プリプロセッサの定義に _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR を追加
 ・VS2022 17.10.0 以降でビルドすると 64bit 版が std::mutex::lock() で落ちるこ
  との対策
 ・本プラグインで実際に落ちるのを確認出来た訳ではないが std::mutex を使用して
  いる箇所があるようなので念の為


ちょっと納得行かないのですが kbmdx.kpi の 64bit 版が落ちるのを修正しました。
kbpsf2.kpi の方は念の為の修正です。
一週間ほど様子を見てから正式版にするつもりでしたが落ちる不具合はあまり
使われない形式でも早めに修正しておこうと思いました。

VS2022 17.10.0 以降の最新のプラットフォームツールセットでリリースビルドしたものは
64bit 版では

std::mutex::lock()

を呼ぶと落ちるみたいで改めて確認してみたら kbmod.kpi の64bit版が落ちるのもこれが
原因でした。

試してみると EXE 内で使う分には大丈夫だけど DLL 内だと NG っぽいですね。

https://github.com/microsoft/STL/wiki/Changelog

VS 2022 17.10

...

Fixed bugs:

Fixed mutex's constructor to be constexpr. #3824 #4000 #4339
Note: Programs that aren't following the documented restrictions on binary compatibility may encounter null dereferences in mutex machinery. You must follow this rule:
When you mix binaries built by different supported versions of the toolset, the Redistributable version must be at least as new as the latest toolset used by any app component.

You can define _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR as an escape hatch.

escape hatch(緊急の際の避難手段?) として定義?

怖くて全てのプロジェクトで定義しておきたくなるんですけど。
EXE で OK で DLL で NG なのは修正し切れてないということ?
むしろ 17.10.0 から発生するようになったような?
pagetop
タイトル
記事No
投稿日
投稿者
参照先
kbgme.kpi v0.01
334
2024/06/02(Sun) 00:36:25
Kobarin

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

game-music-emu を用いたデコーダプラグインです。
掲示板で要望頂いたので対応してみました。

ライブラリはとても使いやすいものだったので比較的簡単に対応出来ましたが、再生出来
ないデータがあります。コンパイラの最適化を有効にするだけで音が鳴らなかったり正常
に再生出来なくなるデータがありました。最適化を無効にしても(デバッグ版のままでも)
駄目なものもあります。

AY の一部と、VGM の多くが正常に再生出来ません。

これらのデータは foo_input_gme では問題ありません。foo_input_gme のソースがあれば
確認してみたいのですが入手方法が分かりませんでした。

他の形式でも foo_input_gme で再生出来て本プラグインで再生出来ないのがあるかもしれません。

libgme 0.6.4 ではなく 0.6.3 でも試してみましたが結果は変わりませんでした。
GENS と MAME のコアでも試しましたが同じです。

最適化が有効だと再生出来ないものがあったりするあたり、何か初期化し忘れてる変数や
事前に呼び出しておくべき API があるのかもしれません。
ちなみに VGM は拡張子は VGM だが GZ 圧縮されているもの(VGZ) にも対応しています。
VGZ だから音が鳴らないのではない筈です。

これ以上調査しても私には解決出来そうにありません。


kbgme.txt より

-------------------------------------------------------------------------------
【 名 称 】 game-music-emu Decoder
【ファイル名】 kbgme.kpi
【バージョン】 0.01
【対応拡張子】 .ay/.gbs/.gym/.hes/.kss/.nsf/.nsfe/.sap/.spc/.vgm/.vgz
【 Platform 】 x86(32bit)/x64(64bit)
【 公 開 日 】 2024/06/02
【 動作環境 】 KbMedia Player 本体同梱の kbzlib.dll が必要
KbMedia Player 以外のソフトから使う場合に注意が必要
KbMedia Player から使う分には何もする必要はありません
-------------------------------------------------------------------------------

【概要】

game-music-emu を用いたデコーダプラグインです。対応拡張子は

.ay/.gbs/.gym/.hes/.kss/.nsf/.nsfe/.sap/.spc/.vgm/.vgz

です。本体同梱の kbnezplug.kpi よりも .ay/.gbs の再現性が高いと思われますが、
kbnezplug.kpi で再生出来て本プラグインでは再生出来ない .ay なども少しですが存
在するようです。

他の形式については良く分かりません。VGM は音が鳴らないことが多いようです。

game-music-emu については

https://github.com/libgme/game-music-emu

を参照して下さい。

【設定】

プラグイン設定で対応拡張子を設定します。
.ay/.gbs は既定で有効としていますがそれ以外は無効としています。

本プラグインが対応する拡張子は全て本体標準同梱のプラグインと競合します。
拡張子を有効にしてもプラグイン優先度の関係で競合するプラグインの方の拡張子の無
効化も必要になることがあります。

それが煩わしい場合は「HighPriority」を true にすることで他のプラグインよりも優
先的に使用されるようになります。

本プラグインで拡張子を無効化すると、本体のプラグイン設定画面で該当拡張子を検索
してもヒットしなくなります。これは他のプラグインについても同様です。

全ての拡張子を有効にしておき、%Kbmplay% セクションで無効化するというのも一つの
方法です。

【ライセンス】

本プラグインには game-music-emu(libgme) と Nuked コアが組み込まれています。
LGPL です。

本プラグインのソースコードは本体の正式版公開時、その時点で最新版のものをプラグ
イン置き場にて公開します。

それよりも新しい版のソースコードが欲しい方は催促頂ければお送りします。

【既知の不具合】

・正常に再生出来ない AY が一部存在する
・正常に再生出来ない VGM が多数存在する

コンパイラの最適化を有効にすると再生出来なくなるデータがあり、本プラグインでは
最適化を無効にしていますが、それでも再生出来ないデータがあります。

同じ libgme をベースに作られていると思われる foo_input_gme では問題なく再生する
ことが出来るようです。

-------------------------------------------------------------------------------

【更新履歴】

Version 0.01(2024/06/02)

・初版
・libgme 0.6.4(2024/05/15)
・Nuked コア(プリプロセッサの定義に VGM_YM2612_NUKED を指定)
pagetop
タイトル
記事No
投稿日
投稿者
参照先
KbMedia Player Version 3.14beta4.2024.0601
333
2024/06/01(Sat) 00:16:16
Kobarin

https://kobarin.sakura.ne.jp/test/kbmed314_beta4.exe
https://kobarin.sakura.ne.jp/test/kbmed314_beta4.7z

.exe と .7z はどちらも中身は同じです。
.7z の展開の仕方が分からない方は .exe をダウンロードして下さい。

.exe だと Microsoft Edge でブロックされる方は .7z をダウンロードして下さい。
Microsoft Edge にブロックされる方は安全だと報告してくれると助かります。

起動時にエラーメッセージが表示されてプラグインが認識されない場合は
Microsoft Visual C++ 2022 再頒布可能パッケージが必要です。
https://visualstudio.microsoft.com/ja/downloads/#other-ja-family
x64 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x64.exe
x86 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x86.exe
(x64 版の動作には vc_redist.x64.exe と vc_redist.x86.exe の両方が必要です)

VS2019 のランタイムでも動作はするようですが、念のため VS2022 のランタイムを
入れて下さい。

β版は Windows XP のサポートを打ち切りました。XP 環境だと一部のプラグインが
動作しません。Windows XP で使いたい方は正式版をお使い下さい。


v3.14beta4 での変更点

・kbmod.kpi に関する以下の修正
 ・64bit版で落ちるのを修正
 ・v3.14beta3 同梱の版(VS2022 17.10.0でビルド)から発生
 ・原因不明だがプリプロセッサの定義が libopenmpt 0.7.7 と異なっていたので同じ
  くしたら解決
・MIDI 再生時の液晶の表示方法を選択出来るようにした(スペアナ/レベルメータ)
 ・「表示」メニュー =>「MIDI スペアナ」
 ・スペアナは可能なときのみ表示される
 ・midiOut 使用時は設定は無視され、常に従来通りのレベルメータ表示
 ・デコーダプラグイン使用時は通常はスペアナ表示可能
  ・KPI_MEDIAINFO::dwFormatType が FORMAT_DOP のときは動かない
 ・演奏プラグイン使用時は環境設定の「waveIn による波形取得を行う」が有効時で波
  形を取得出来たときにスペアナ表示可能
  ・波形を取得出来ないときは動かない
  ・wawveIn による波形取得が無効時は設定は無視される(midiOut 時と同じ)
・MIDI を再生中に MIDI デバイスを切り替え時、複数回演奏開始していたのを修正
 ・「切り替え時の位置から再生」または「最初から再生」にしていた場合
・midiOut で MIDI を再生時の音量制御に関する以下の修正
 ・エクスプレッションではなくチャンネルボリュームで制御するようにした
 ・音量変更時やフェードイン/フェードアウト時のチャンネルボリュームの値を調整
・midiOut で MIDI 再生時の液晶のレベルメータの高さの計算方法を修正(音量を下げた
 ときの高さが低過ぎていた)
・Ctrl を押しながらシークバーを操作した場合は設定に応じた時間をかけてフェードイ
 ンするようにした
 ・Ctrl を押してない場合は1秒(先頭へのシークはフェードインしない)
・デバイス設定の「切り替え時の位置から再生」または「最初から再生」が有効時、停
 止状態で設定が変わった場合は再生が始まらないように仕様変更
・MIDI イベントを含むがノートオンを含まないポートがある場合は () で括って表示す
 る仕様を変更(SysEx 以外の MIDI イベントでも()で括って表示するようにした)
・その他不具合修正(3.14beta3 に伴う不具合が色々あり過ぎて忘れた)

一週間ほど様子を見て問題ないなら次を正式版にしたいと思います。

今回は MIDI 関係の修正がメインです。
やはり v3.14beta3 の修正で色々と細かい不具合が発生していました。MIDI デコーダ
プラグインのギャップレス再生は地味だけど大変だったんですよね。

Ctrl を押しながらのシークは midiOut でのフェードインのテスト用に付けましたが
そのまま採用することにしました。隠し機能みたいなものということで。

kbGuru2SMF.kpi で MIDI を再生中に液晶が動かないときは「表示」メニューの「MIDIスペアナ」
をオフにするか「環境設定」-「演奏設定」の「waveIn による波形取得を行う」をオフにして
下さい。waveIn による波形取得をオフにしてる場合は MIDI スペアナの設定は無視されます。

私の環境では「waveIn による波形取得を行う」で波形を取得出来る状況を作るのが困難な為、
この機能を廃止することを検討しています。

WAVE_MAPPER で鳴らしてる音の波形を確実に取得する方法があるなら教えて欲しいです。
昔の PC 環境では waveIn 系か DirectSoundCapture で普通に取れたのですが今の環境だと
色々と手間がかかります。


本体の修正ばかりで手を付けられずにいましたが、今度こそ game-music-emu のプラグインに
かかりたいと思います。多分。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
ファイル差し替え
332
2024/05/26(Sun) 15:12:26
Kobarin

kbsmaf.kpi v0.14α はファイルの閉じ忘れによるメモリリークがあったので差し替えました。

差し替え前のをダウンロードした人は少ないと思いますが、この投稿の時刻より前に
ダウンロードした方はお手数ですがダウンロードし直して下さい。

公開から約2時間後に一度削除しています。ごく短い時間の公開だったので差し替え後の
バージョンは変更していません。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
kbzmdrive.kpi v0.16α
331
2024/05/26(Sun) 12:49:56
Kobarin

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

kbzmdrive.txt より

-------------------------------------------------------------------------------
【 名 称 】 Z-MUSIC Decoder
【ファイル名】 kbzmdrive.kpi
【バージョン】 0.16alpha
【対応拡張子】 zms/zmd
【 Platform 】 x86(32bit)/x64(64bit)
【 公 開 日 】 2024/05/26
-------------------------------------------------------------------------------

【概要】

FIXER さん制作の ZMDRIVE を使用して Z-MUSIC を再生するためのプラグインです。対
応拡張子は zms/zmd です。

内蔵音源のみに対応します。MIDI と内蔵音源の両方を含む場合、MIDI 部分は再生され
ません。MIDI のみの場合、無音が再生されます。


【導入方法】

プラグインの置き場所については同梱の install.txt の通りです。

本プラグインを使用するには、FIXER さん制作の ZMDRIVE が必要です。
ZMDRIVE 0.4C は本プラグインに同梱されています。

ZMDRIVE には 0.4C よりも新しいバージョンが存在します。本プラグインは新版の
ZMDRIVE にも対応しています。動作確認したのは 2018/03/16 版です。

まーくん2さんのツイッター:https://twitter.com/markun2

固定されたツイートのリンクを開くと怪しげな(笑)ファイル・フォルダ群が出てきます
がその中に ZMDRIVE 2018/03/16 版があります。(「公開」フォルダの下にあります)


本プラグインには m_puusan 氏制作の X68Sound.dll の RuRuRu 氏による改造版
(2020/06/14版) が組み込まれています。

通常、ZMDRIVE の動作には X68Sound.dllが必要となりますが、本プラグインに内蔵し
ているので X68Sound.dll がなくても動作します。

内蔵ルーチンを使わず、使用する X68Sound.dll を設定することも出来ます。
X68Sound.dll はまーくん2さんのところでも配布されていますし、他にもありますの
で探してみて下さい。


【設定】

プラグイン設定画面がヘルプを兼ねていますので参照して下さい。

ZMDRIVE には、新旧ともに X68Sound を使わない再生モードがありますが、本プラグイ
ンが対応するのは X68Sound を使う再生モードのみです。


【データを再生出来ない場合】

ZMS/ZMD は厄介な形式で、単独で再生しても正しく再生出来ないものがあります。再生
出来ない(音が鳴らないか、鳴ってもおかしい)場合は以下を疑って下さい。

1.マーキュリーユニット対応
2.中身が MIDI である
3.内蔵音源と MIDI の両方を含む
4.内蔵音源だが事前に別のファイルを再生する必要がある

1.はよく分かりません。本プラグインが対応する再生モードでは ZMDRIVE も対応しな
いようです。

2.の場合は本プラグインでは対応出来ません。本体で MIDI として再生して下さい。
ZtoM 等の導入が必要です。

3.の場合は内蔵音源部分のみ本プラグインで再生するか、MIDI 部分のみ ZtoM 等で
MIDI に変換して本体での再生となります。

ZMDRIVE は MIDI にも対応していますが本プラグインでは未対応です。現状は MIDI 部
分は無音が再生されます。

内蔵音源と MIDI に関しては後述の zmsetup.ini に情報を記述することで、本プラグイ
ンで再生するか本体で MIDI に変換して再生するか判断することが出来ます。

4.は例えば a.zmd を正しく再生するために b.zmd を事前に再生しなければならなか
ったり、c.zpd も再生しなければならないが、a.zmd にその情報が含まれていないよう
なケースです。

このようなデータを ZMDRIVE で正しく再生するには、事前に再生すべきデータを再生し
てから再生することで実現出来ますが、本プラグインでは再生する度に ZMDRIVE を再起
動してしまうため、出来ません。

仮に出来るようにしてもプレイリスト上で連続再生するときに何かと支障が出ます。例
えばランダム再生が出来ませんし、そもそも .zpd ファイルはリストに追加すべき曲デ
ータとは言えません。

そこで、そのようなデータのフォルダに zmsetup.ini というファイルを置いて再生に必
要な初期化ファイルを記述することで対応することにしました。


【zmsetup.ini】

音源の設定をするためのファイルと演奏ファイルが分かれているものがあります。
例えば foo.zmd を再生するために bar.zmd が必要になることがあります。
ZMDRIVE では先に bar.zmd を再生してから foo.zmd を再生させなければならないよう
なデータです。

このようなデータを正しく再生するためには、演奏ファイルと同じフォルダに
zmsetup.ini というファイルを作成し、

[foo.zmd]
SetupFile=bar.zmd

のように記述します。同じフォルダにある全ての演奏ファイルが bar.zmd を必要とす
る場合は、[Default] セクションに記述することも出来ます。

例:
[Default]
SetupFile=bar.zmd


例えば、

https://web.archive.org/web/20071121130328/http://www27.tok2.com/home/studioMM/MusicRoom/msc_index.html

にある「LAST FORCE」の ZMD を正しく再生するためには、

[Default]
SetupFile=LastForce [00] SET UP.ZMD

という内容の zmsetup.ini を LastForce [00] SET UP.ZMD と同じフォルダに作成しま
す。

同様に、「Royal Squash」を正しく再生するためには

[Default]
SetupFile=RoyalSquash(YM2151) [00] SetUp_ZPD_BlockData.ZMD

という内容の zmsetup.ini を RoyalSquash(YM2151) [00] SetUp_ZPD_BlockData.ZMD
と同じフォルダに作成します。

SetupFile に指定できるファイルの拡張子は ZMD/ZMS のいずれかのみです。


同様に、再生するために ZPD ファイルが必要なのに自動的に ZPD が読み込まれないよ
うな曲データを再生するには、「SetupFile」キーではなく、「ZPDFile」キーに必要な
ZPD ファイル名を記述します。

例:
[Default]
ZPDFile=aaa.zpd

ZPDFile に指定できるファイルの拡張子は ZPD のみです。


SetupFile と ZPDFile の両方を指定しないと正しく再生出来ない曲があります。

例えば、

https://web.archive.org/web/20070811231625/http://www.xacs.jp/zmusic.html

にある「Cylips」の曲データを正しく再生するには、

[Default]
SetupFile=CY_VOICE.ZMD
ZPDFile=VA.ZPD

のように記述します。


また、「FMADPCM」キーと「MIDI」キーに記述することで対象データが内蔵音源や MIDI
を含むか本プラグインに判別させることが出来ます。

例えば対象データと同じフォルダのデータは全て内蔵音源と MIDI の両方を使用する場
合は

[Default]
FMADPCM=1
MIDI=1

のように記述します。

FMADPCM キーと MIDI キーがない場合は自動判別するようにする予定ですが現状では未
対応です。それぞれ FMADPCM=1, MIDI=0 と見なします。


圧縮ファイル内に zmsetup.ini が存在する場合にも正常に再生されます。


【既知の不具合】

・ZMDRIVE を(本プラグインを介さずに)起動中、本プラグインで開いてる曲を再生出来
 ない(演奏を停止していても)
 ・ZMDRIVE のファイルオープン時の共有モードと KbMedia Player 本体の相性問題で
  対応は困難(プラグイン側では対応不可)

【使用上の注意】

本プラグインは動作原理が極めて特殊です。ZMDRIVE は動作確認に用いたものと「全く
同じ」バージョンをお使い下さい。

動作確認した ZMDRIVE のバージョンと更新日時は

ZMDRIVE(旧版): バージョン0.4C 更新日時 2002/06/15 00:35 (本プラグインに同梱)
ZMDRIVE(新版): バージョン不明 更新日時 2018/03/16 15:03

となります。

確認しているより新しいものでも動作するかどうかは分かりません。使用する ZMDRIVE
のパスを設定時にハッシュ値をチェックし、動作確認したのと異なるものであった場合
には警告を出すようになっています。

警告を無視して動作確認したのと異なるバージョンを使うことも出来ますが、予期せぬ
結果になることがありますのでくれぐれもご注意下さい。

このプラグインは永久にα版です。自己責任で使用して下さい。

-------------------------------------------------------------------------------

【更新履歴】

Version 0.16α(2024/05/26)

・WindowsXP で動作しないのを修正
 ・PROCESS_ALL_ACCESS フラグが大きすぎて OpenProcess に失敗していた為

/*---------------------------------------------------------------------------*/

Version 0.15alpha(2021/05/03)

・「ウィンドウ表示」有効時、ZMDRIVE に対するキーボード操作、右クリック、ドラッ
 グアンドドロップを受け付けないようにした(フリーズ回避)
・ループしない曲の演奏終了検出に対応
 ・0.12alpha まで(処理方法は異なるが)実装していたが 0.13alpha で廃止していた
 ・処理済みの位置と ZMDRIVE が表示する再生位置との差が一定値を超えたら終了と見
  なす
 ・本体の無音検出より早く検出されるので無音の再生時間が短くて済む(ZMDRIVE が正
  しい曲長を返さない場合は特に)
・zmsetup.ini に関する設定項目追加
 ・詳細は設定画面のヘルプ参照
・zmsetup.ini に MIDI キーと FMADPCM キーにより MIDI 使用か内蔵音源使用か記述可
 能にした
 ・記述がない場合は自動判別とする予定(現状未対応。FMADPCM=1, MIDI=0 と見なす)
 ・プラグインの設定により MIDI 使用データを本体に任せるかプラグインが再生する
  か選択可能にした(プラグインで再生しても MIDI の音は鳴らない)
・ZMDRIVE 起動時にカレントフォルダをプラグインが作成する一時フォルダに設定する
 ようにした(エラーがあるとカレントに ZM_ERROR.ERR が作成されるため)
・タイミング次第で曲長を正しく取得出来ないことがあるのを修正(?)(まだ自信がない)

/*---------------------------------------------------------------------------*/

Version 0.14alpha(2021/05/01)

・新ZMDRIVE 使用時に関する以下の改善
 ・シークが大幅に高速化
 ・「ウィンドウ表示」有効時のタイトルのスクロール速度が新ZMDRIVE をプラグイン
  を介さずに起動したときとほぼ同じになった
 ・「ウィンドウ表示」有効時、ZMDRIVE を終了したときのウィンドウの位置によって
  は ZMDRIVE が行方不明になるのを修正
 ・「ウィンドウ表示」有効時、タイトル等が正常に描画されないことがあるのを修正
 ・本プラグインが新ZMDRIVE を使用中だと新ZMDRIVE を起動出来ないのを修正
 ・曲長が 0 のデータを開くと ZMDRIVE がフリーズするのを修正
 ・再生中に ZMDRIVE のウィンドウを閉じてもフリーズしなくなった
  ・フリーズする原因は他にもあるので完全ではない
・設定画面で ZMDRIVE 2018/03/16 版のハッシュ値が間違ってた(2018/03/16版を指定し
 ても警告ダイアログを出していた)のを修正

/*---------------------------------------------------------------------------*/

Version 0.13alpha(2021/04/27)

・64bit 版作成
・内蔵 X68Sound.dll を Rururu 氏の 2020/06/14 版に更新
 ・44100Hz/48000Hz の再生音が 2013/08/03 版や他所で入手可能な X68Sound.dll と
  明らかに異なるので、気に入らない場合は他所で入手可能な X68Sound.dll を使っ
  て下さい
・ZMDRIVE の新版に対応(動作確認したのは 2018/03/16 版)
・X68Sound.dll を内蔵ルーチンか外部 DLL を使用するか選択出来るようにした
・ZMDRIVE を旧版(同梱v0.4C) か新版か選択出来るようにした
・設定項目追加
 ・X68Sound.dll のパス
  ・未指定の場合は内蔵ルーチンを使う
  ・64bit 版プラグインでも X68Sound.dll は 32bit 版でなければならない
 ・X68Soundl.dll を使う
 ・新ZMDRIVE のパス
 ・新ZMDRIVE を使う
 ・再生周波数(22050/44100/48000/62500/96000Hz)(62500と96000は新ZMDRIVEのみ)
 ・音量
 ・ウィンドウ表示(動作確認用)
・ZMDRIVE.exe から応答がないときにダイアログを表示して強制終了出来るようにした
・メモリリーク修正

/*---------------------------------------------------------------------------*/

Version 0.12alpha3(2016/10/03)

・v2.80beta29 のプラグイン仕様に対応(インターフェースのみ)
・インターフェースのみの対応なのでバージョン番号変更せず

/*---------------------------------------------------------------------------*/

Version 0.12alpha2(2016/08/22)

・v2.80beta23 のプラグイン仕様に対応(インターフェースのみ)
・インターフェースのみの対応なのでバージョン番号変更せず

/*---------------------------------------------------------------------------*/

Version 0.12alpha(2016/08/16)

・v2.80beta21 のプラグイン仕様に対応(インターフェースのみ)
・コンパイラを VS2015 update 3 に変更

/*---------------------------------------------------------------------------*/

Version 0.11alpha(2016/01/25)

・新プラグイン仕様に対応
・ZMDRIVE の新バージョン(2013/05/16 版が最新?)には未対応
・アーカイブ内の zmsetup.ini や zpd ファイル等にきちんと対応
・X68Sound.dll を 2013/08/03 版相当に差し替え
 ・ZMDRIVE.exe が X68Sound.dll を LoadLibrary するのをフックして kbzmdrive.kpi
  が X68Sound.dll のフリをする。そのルーチンの差し替え
 ・X68Sound.dll の内部実装にも依存するため、X68Sound.dll をプラグインから切り
  離す(kbzmdrive.kpi の修正なしに X68Sound.dll を差し替える)ことは出来ない
・本体が 2.70alpha 以降だと再生位置を戻すと演奏が止まる現象等を回避
 ・ZMDRIVE.exe がファイルを開くときの共有モードと新プラグイン仕様(に伴う本体
  の仕様変更)との相性問題
 ・再生するファイルとその関連ファイルのコピーをテンポラリフォルダに作成して
  コピーを開くことで対処
 ・v0.10alpha(公開し忘れ?) の対処法は Windows10 では機能しない

/*---------------------------------------------------------------------------*/

Version 0.10alpha(2005/11/??)(公開し忘れ?)

・CreateFileA の共有モードを強制的に FILE_SHARE_READ|FILE_SHARE_WRITE にする
 ようにした
 ・再生中のファイルを同時に開けない(&2.70alpha 以降ではシークすると演奏が止ま
  る)のを回避するため
 ・MFC42.dll のバージョンによっては kernel32.dll の CreateFileA のフックが出
  来ないため機能しない(少なくとも Windows10 では NG)

/*---------------------------------------------------------------------------*/

Version 0.09α(2005/03/15)

・曲を切り替えるとき(ファイルを閉じるとき)に落ちることがあるバグを修正
・zmsetup.ini に関する以下の修正
・SetupFile キーではなく、ZPDFile キーで ZPD を指定するように仕様変更
・細かい修正

/*---------------------------------------------------------------------------*/

Version 0.08α(2005/03/13)

・zmsetup.ini に関する以下のバグを修正
・SetupFile を指定するとフリーズすることがあるのを修正
・ZPD を指定しても反映されないのを修正
・ファイル名によっては反映されないことがあるバグを修正

/*---------------------------------------------------------------------------*/

Version 0.07α(2005/03/13)

・ZMDRIVE.exe の終了処理を修正
・ZMDRIVE.exe のプロセス優先を「高」ではなく「通常」にした
・CreateRemoteThread が使える環境(NT 系)では CreateRemoteThread を使うように
した
・音源設定用に事前にファイルを開いておかないと正常に再生出来ないデータに対応

/*---------------------------------------------------------------------------*/

Version 0.06α(2005/03/11)

・データによっては演奏開始後直ちに演奏終了してしまうバグを修正

/*---------------------------------------------------------------------------*/

Version 0.05α(2005/03/10)

・曲長計算が高速化
・演奏終了の検出結果がタイミングに依存しなくなった
・ZMDRIVE.exe の midiOut 系 API 呼び出しを防止するようにした

/*---------------------------------------------------------------------------*/

Version 0.04α(2005/03/08)

・プロセス・スレッド間の同期処理を改良して動作が少し高速化
・ループしない曲の演奏終了を検出するようにした
・FIXER 氏(の代理人?)の許可を頂いたので、ZMDRIVE 0.4C を同梱することにした
・kmp_Config を廃止(ZMDRIVE の同梱により、パスを設定する必要がなくなったため)

/*---------------------------------------------------------------------------*/

Version 0.03α(2005/03/07)

・音とびやテンポよれを大幅に改善
・等速以外の速度でもきちんと再生されるようになった

/*---------------------------------------------------------------------------*/

Version 0.02α(2005/03/05)

・再生周波数要求に応じるようにした(48000Hz, 44100Hz, 22050Hz のみ)
・X68Sound.dll の細かいバグ(稀に演奏が始まらないことがある)を修正して
kbzmdrive.kpi に内蔵。これにより、
・X68Sound.dll が導入されていなくても動作するようにした
・稀に演奏が始まらずにいきなり演奏終了してしまうことがあるのを修正

/*---------------------------------------------------------------------------*/

Version 0.01α(2005/03/05)

・初版
pagetop
タイトル
記事No
投稿日
投稿者
参照先
kbsmaf.kpi v0.14α
330
2024/05/26(Sun) 12:47:39
Kobarin

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

kbsmaf.txt より

-------------------------------------------------------------------------------
【 名 称 】 MidRadio SMAF/MIDI Decoder
【ファイル名】 kbsmaf.kpi
【バージョン】 0.14alpha
【対応拡張子】 mid/mmf
【 Platform 】 x86(32bit)/x64(64bit)
【 公 開 日 】 2024/05/26
-------------------------------------------------------------------------------

【概要】

MidRadio Player を使用して SMAF/MIDI を再生するためのプラグインです。対応拡張子
は .mid 及び .mmf です。

【導入方法】

このプラグインを使用するには、YAMAHA MidRadio Player 7.2.1 が必要です。

http://download.music-eclub.com/

でダウンロードして下さい。2024年5月現在の最新版は 7.2.1 です。

MidRadio Player のインストール先は任意ですが、インストーラ既定のフォルダにイン
ストールしない場合は「プラグイン設定」で設定する必要があります。インストール先
フォルダを自動で検出することは出来ません。

インストールしたら、「ツール」->「プラグイン設定」で kbsmaf.kpi を選択し、「Gen
eral」セクションの「MidRadio Player」のパスで MidRadio.exe のパスを設定して下さ
い。インストーラ既定のフォルダにインストールしたのであれば、始めから正しいパス
が設定されているはずです。

なお、kbsmaf.kpi v0.09αが MidRadio Player 7.2.1 で使用出来なかったのは、インス
トール先フォルダの検出が出来ていなかったためです。それさえクリアすればほとんど
何もしなくても対応出来ていたのでした。もっと早く調べておくべきでした。

【再生出来ない SMAF(*.mmf) が存在する】

Graphics Track を含む SMAF(*.mmf) は再生出来ません。
音は鳴るのですが、プレイヤー本体の操作が出来ずにフリーズしてしまうため、ファイ
ルオープンに失敗させるようにしています。演奏プラグインとしてであれば対応出来る
かもしれません。(いずれ試してみます)

【MIDI 再生時の音質】

KbMedia Player に標準同梱の kbvsti_x86.kpi で MidRadio Player の sgp2.dll を使
用したときの音質と近いですが、同じではないようです。「サウンドエフェクト」の設
定を変えたりすると kbvsti_x86.kpi + sgp2.dll と同じになるのかもしれません。

【使用上の注意】

このプラグインは極めて特殊です。MidRadio Player のバージョンは出来るだけ動作確
認に用いたのを「全く同じ」バージョンをお使い下さい。

動作確認した MidRadio Player のバージョンは 7.2.1 です。
動作確認した MidRadio.exe の更新日時は 2007/04/26 17:37 となっています。
本プラグイン公開時点での最新バージョンです。

このバージョンより古くても新しくても駄目です。これより新しいバージョンでも、運
が良ければ動作してくれるかもしれませんが、動作しなくても仕方ないです。

このプラグインは永久にα版です。自己責任で使用して下さい。

【設定】

プラグイン設定画面がヘルプを兼ねていますので参照して下さい。

-------------------------------------------------------------------------------

【更新履歴】

Version 0.14α(2024/05/26)

・WindowsXP で動作しないのを修正
 ・PROCESS_ALL_ACCESS フラグが大きすぎて OpenProcess に失敗していた為
・MidRadio Player のパスを設定時、XP 版の MidRadio.exe を指定した場合にハッシュ
 値の警告を出していたのを修正
・XP 32bit 環境で MidRadio Player のパスの既定値(Program Files フォルダ)を正し
 く取得出来てなかったのを修正
・v3.14beta3 の本体から呼ばれると落ちることがあるのを修正

/*---------------------------------------------------------------------------*/

Version 0.13α(2019/05/05)

・DLL 検索パスに作業ディレクトリを含まない環境だと動作しないのを修正
・SMAF のタグ取得に対応
・Graphics Track を含む SMAF はオープンに失敗させるようにした
 ・音は鳴るが(mrgplay.exe を強制終了するまで)制御不能な状態になるため

/*---------------------------------------------------------------------------*/

Version 0.12α(2019/04/07)

・リソースリーク(イベントハンドルの閉じ忘れ)を修正
・64bit版で「MidRadio Player のパス」の既定値が 64bit 版の Program Files にな
 るのを修正
・リセットを含まない場合の処理を以下のように修正
 ・GS 系 SysEx を使う場合は SYSTEM MODE SET を送信
  (MidRadio Player は SYSTEM MODE SET を受信する)
 ・XG 系 SysEx を使う場合は XG SYSTEM ON を送信
 ・それ以外の場合は GM SYSTEM ON を送信

/*---------------------------------------------------------------------------*/

Version 0.11α(2019/04/04)

・マルチポートMIDIを分割再生時に関する以下の修正
 ・%TEMP% フォルダに作成した一時ファイルが削除されないのを修正
 ・再生位置を戻すと落ちるのを修正
 ・リセット系とマスターボリューム系の SysEx は全ポートに送信するようにした
・リセット系の SysEx を含まない場合は GS RESET を送信するようにした
 ・該当データを再生時は %TEMP% フォルダに一時ファイルが作成される
・ファイル名に Shift-JIS で表現出来ない文字を使用していると再生出来ないのを修正

/*---------------------------------------------------------------------------*/

Version 0.10α(2019/03/30)

・新kpi仕様に対応
・下記設定項目を追加
 ・MidRadio Player のパス
  ・ハッシュ値(MD5)が確認済の値と一致しない場合は警告ダイアログを出す
 ・複数ポート使用MIDIの処理方法
  ・複数のMIDIファイルに分割して複数の MidRadio Player を起動
  ・分割しないで MidRadio Player を単独起動
 ・SMAF の再生周波数
  ・MIDI 再生時は 44100Hz 固定
 ・サウンドエフェクト関係
  ・MidRadio Player の「オプション」->「MIDI出力先の選択」->「サウンドエフェ
   クトを使う」のチェックと「詳細」ボタン押下時の設定に相当
  ・In Gain(dB)
  ・Reverb Mix(dB)
  ・Reverb Time(ms)
  ・HighFreq RT Ratio
 ・MidRadio Player を起動
  ・サウンドエフェクトの「詳細」設定用
・MidRadio Player から応答がない場合はダイアログを表示して強制終了させ
 るか確認するようにした
・64bit 版を作成

/*---------------------------------------------------------------------------*/

Version 0.09α(2005/01/31)

・ある条件で落ちる or 演奏中にノイズが入ることがあるバグを修正

/*---------------------------------------------------------------------------*/

Version 0.08α(2004/09/06)

・プラグインアンロード時に落ちることがあったのを修正

/*---------------------------------------------------------------------------*/

Version 0.07α(2004/07/05)

・曲の冒頭部分で音とびしやすかったのを多分修正

/*---------------------------------------------------------------------------*/

Version 0.06α(2004/06/28)

・出来るだけ mrgplay.exe を再利用することにより、曲切り替えが高速化
・しかし、↓の対応のため、MIDI 再生時は曲切り替えが若干低速化したかも(ぉぃ)
・MIDI 再生時、マルチポートに対応(最大4ポート)

/*---------------------------------------------------------------------------*/

Version 0.05α(2004/06/18)

・MidRadio.exe ではなく、MidRadio.ocx を使うようにした
・曲長取得に対応
・ファイルオープンが高速化

/*---------------------------------------------------------------------------*/

Version 0.04α(2004/06/15)

・Windows98/ME でも動作するようになった(はず)
(Windows95 は多分無理。MMF は再生できるかもしれないが、MIDI の再生は
MidRadio Player 自体が対応してないはず)
・kbsmaf.kpi が動作中でも、MidRadio Player を実行できるようになった(お互いに
干渉し合わないようになった)

/*---------------------------------------------------------------------------*/

Version 0.03α(2004/06/13)

・MIDI に対応し、MIDI の再生は「内蔵ソフトシンセサイザーを使う」設定で行うよう
にした
・プラグインを呼び出した本体(KbMedia Player 本体)の異常終了検出のバグを修正
・クロスフェード時に kbrunkpi.exe が起動しないようにした
(KMPMODULE::dwReentrant = 1 にした)
・midradiohook.dll のファイル名を mrghook.dll に変更

/*---------------------------------------------------------------------------*/

Version 0.02α(2004/06/11)

・MidRadio が動作中でも kbsmaf.kpi が動作するようになった
(kbsmaf.kpi が動作中に MidRadio.exe を起動した場合の問題は未解決)
・クロスフェードが使えるようになった
・バックグラウンドでの曲長計算が出来るようになった(「デフォルトの演奏時間」に
なるだけだけど)
・曲の冒頭に 5 秒近い無音が入ったり、シーク後の演奏位置が 5 秒程度ずれたりする
のをある程度修正(完璧ではない)

/*---------------------------------------------------------------------------*/

Version 0.01α(2004/06/09)

・初版
pagetop
タイトル
記事No
投稿日
投稿者
参照先
kbhtsfms.kpi v0.08α
329
2024/05/26(Sun) 12:45:28
Kobarin

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

kbhtsfms.txt より

-------------------------------------------------------------------------------
【 名 称 】 htsfms MIDI Decoder
【ファイル名】 kbhtsfms.kpi
【バージョン】 0.08alpha
【対応拡張子】 mid
【 Platform 】 x86(32bit)/x64(64bit)
【 公 開 日 】 2024/05/26
-------------------------------------------------------------------------------

【概要】

石村仁志さん制作の htsfms v0.96 を使用して MIDI を再生するためのデコーダプラグ
インです。対応拡張子は .mid です。

htsfms については

http://hp.vector.co.jp/authors/VA024632/

を参照して下さい。

【導入方法】

このプラグインを使用するには、htsfms Version 0.96 が必要です。

http://hp.vector.co.jp/authors/VA024632/

でダウンロードして下さい。

ダウンロードしたら、「ツール」->「プラグイン設定」で kbhtsfms.kpi を選択し、
「General」セクションの「mid2wav」のパスで mid2wav.exe のパスを設定して下さい。
mid2wav.exe は htsfms に同梱されています。ファイル名に player.exe, mienum.exe,
module.exe を指定してはいけません。

【使用上の注意】

このプラグインは極めて特殊です。htsfms(実際に使うのは mid2wav.exe) は必ず動作確
認に用いたのと「全く同じ」バージョンをお使い下さい。動作確認した htsfms のバー
ジョンは 0.96 で、mid2wav.exe のタイムスタンプは 2005/03/02 10:47 です。
本プラグイン公開時点での最新バージョンです。

このバージョンより古くても新しくても駄目です。これより新しいバージョンでも、運
が良ければ動作してくれるかもしれませんが、動作しなくても仕方ないです。

このプラグインは永久にα版です。自己責任で使用して下さい。

【設定】

プラグイン設定画面がヘルプを兼ねていますので参照して下さい。

v0.05 以前とは異なり、プラグインファイル名を変えても使用する音色ファイルを変更
することは出来ませんが、プラグイン設定画面で音色ファイルを選択することが出来ま
す。自分で作った音色ファイルを使いたい場合は、mid2wav と同じフォルダの tone フ
ォルダ以下に拡張子 .dat として置くことで選択出来るようになります。

-------------------------------------------------------------------------------

【更新履歴】

Version 0.08α(2024/05/26)

・WindowsXP で動作しないのを修正
 ・PROCESS_ALL_ACCESS フラグが大きすぎて OpenProcess に失敗していた為

/*---------------------------------------------------------------------------*/

Version 0.07α(2019/04/07)

・マスターボリューム系SysExに対応
 ・htsfms(mid2wav) から取得した PCM を加工する方式
・64bit版で 32bit モジュールの LoadLibrary のアドレス取得(mid2wav.exe に
 hook_htsfms.dll をロードさせる為に必要)の方法を変更
・マルチポートMIDIを分割再生時に関する以下の修正
 ・リセット系の SysEx は全ポートに送信するようにした

/*---------------------------------------------------------------------------*/

Version 0.06α(2019/03/17)

・新kpi仕様に対応
・下記設定項目を追加
 ・mid2wav のパス
  ・ハッシュ値(MD5)が確認済の値と一致しない場合は警告ダイアログを出す
 ・音色ファイルの選択
  ・v0.05 以前と異なり、プラグインファイル名で音色ファイルを指定することは出
   来ない
  ・自分で作成した音色ファイルを tone フォルダ以下に置けば選択出来る
 ・複数ポート使用MIDIの処理方法
  ・複数のMIDIファイルに分割して複数の mid2wav を起動(従来より演奏精度向上)
  ・分割しないで mid2wav を単独起動(従来の処理)
 ・htsfms のフォルダを開く
  ・添付ドキュメントの参照や音色ファイル作成用
 ・コンソール画面表示
  ・mid2wav の処理の進捗状況が分かる
  ・デバッグ用、通常は非表示にする
・mid2wav から応答がない場合はダイアログを表示して強制終了させるか確認するよう
 にした
・mid2wav の終了処理が乱暴だったのを修正
 ・mid2wav が最後まで出力し終わった場合は ExitProcess しない
 ・途中で終了要求が来たら ExitProcess してたのを Ctrl+C 押下に変更
・64bit版を作成
 ・mid2wav は32bit版で OK

/*---------------------------------------------------------------------------*/

Version 0.05α(2012/09/30)

・ファイルオープン時に固まることがあったのを修正
・プラグインファイル名で使用する音色ファイル名を指定出来るようにした
・_ を不使用の場合は config.ini に従う
・kbhtsfms.kpi => config.ini に従う
・kbhtsfms_c050.kpi => tone/c050.dat
・kbhtsfms_c070.kpi => tone/c070.dat
・kbhtsfms_std.kpi => tone/std.dat
・再生すると mid2wav.exe と同じフォルダに output.wav という名前の空の
ファイルが生成されるのを修正

/*---------------------------------------------------------------------------*/

Version 0.04α(2012/09/23)

・Windows7 で動作しなかったのを修正
・Windows9x での動作を打ち切った(動作確認出来る環境を構築出来れば検討)
・mid2wav.exe のパスを設定出来るようにした

/*---------------------------------------------------------------------------*/

Version 0.03α(2005/03/01)

・まともに動作してなかったのを修正(ぉ
・Win9x でも動作するようになった(はず)
・htsfmshook.dll を必要としなくなった

/*---------------------------------------------------------------------------*/

・htsfms Version 0.95 の mid2wav.exe に対応

/*---------------------------------------------------------------------------*/

Version 0.01α(2005/02/20)

・初版
pagetop

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