Appendix
Winamp2 の input プラグインを利用する (kbwinamp)
KbMedia Player には Winamp2 用の input プラグインの利用を可能にする
プラグインがあります。ただし、正常に動作しない場合もありますし、
使用できたとしても大きな制限があったりします。
さらにこのプラグインはα版であり、動作保障もありません。
少なくとも以下の説明を読んで理解できないのならば、使うべきではありません。
対応するプラグイン及び制限事項
基本的に output プラグインを使用する、Winamp2 の input プラグインのみに対応します。
output プラグインを使用しないものも一応再生出来ますが、演奏停止やスペアナ表示が
出来ないなど、制限が非常に多いです。
また Winamp3 のプラグインには対応しておりません。
使用にあたっては以下の制限が課せられます。
- input プラグインにのみ対応
- output プラグインを使用しないタイプのプラグイン (in_midi.dll など) は
基本的に再生不可 (再生だけなら出来るが演奏停止等が不可)
- プラグインによっては output プラグインを使用するタイプでも
正常動作しない可能性あり (報告を頂ければ対処してみます)
- クロスフェード再生の処理が重い
- 音飛びしやすい
- 曲長計算が遅いことがある
- 現状では設定ダイアログを開くことが出来ない
- シーク後の再生位置が不正確 (歌詞表示で支障が出るかも)
プラグインの入手とインストール
kbwinamp は本体には同梱されていません。
Kobarin のホームページの「テスト版置き場」から入手してください。
http://home7.highway.ne.jp/Kobarin/
kbwinamp***_alpha.cab というのが目的のプラグインです。
インストールの方法は、同梱のインストーラを利用してインストールする方法と、
手動でインストールする方法の二通りあります。
- インストーラ (kbwinamp_installer.exe) を使用する場合
- 1. kbwinamp_installer.exe, kbwinamp.bin, 使用したい winamp の
Input プラグインをすべてプラグインフォルダ以下の同一フォルダに置く
- 2. kbwinamp_installer.exe を実行する
プラグインを置く場所を \Plugins\kbwinamp\ にし、in_foo.dll と in_bar.dll を
使うのであれば、\Plugins\kbwinamp\ 以下に kbwinamp_installer.exe,
kbwinamp.bin, in_foo.dll, in_bar.dll を置いて、kbwinamp_installer.exe を実行します。
インストーラに引数として /i を与えると、確認メッセージを出さないようにすることが
出来ます。将来的には /u でアンインストールが出来るようにする予定です。
- 手動でインストールする場合
- kbwinamp.bin のファイル名を Input プラグインと同じファイル名
(in_foo.dll なら in_foo.kpi) にしたものを in_foo.dll と同一フォルダにコピーする
プラグインを置く場所を \Plugins\kbwinamp\ にし、in_foo.dll と in_bar.dll を
使うのであれば、\Plugins\kbwinamp\ 以下に in_foo.dll, in_bar.dll, in_foo.kpi,
in_bar.kpi を置けば OK です。
ここで、in_foo.kpi/in_bar.kpi はともに kbwinamp.bin のコピーです。
これでインストールは終了です。プラグインを正しくインストールできたかどうかは、
「ツール」 -> 「環境設定」 -> 「プラグイン」 で確認できます。
インストールが完了したら kbwinamp.bin/kbwinamp_installer.exe は削除しても構いません。
アンインストール方法
手動で in_***.kpi をすべて削除して下さい。
動作確認済みプラグイン
以下のプラグインが動作することを確認しています。
◎ : 導入するメリットが大きい (KbMedia Player 用のプラグインがない形式など)
○ : 導入するメリットが少ない (すでに KbMedia Player 用のプラグインがある)
△ : 導入するメリットがほとんどない (速度変更、スペアナ表示が効かない、
演奏停止、一時停止が出来ない等、色々制限がある)
▲ : 導入するメリットが全くない
(△と同様の制限があり、KbMedia Player が標準ですでに対応している)
更新履歴
Version 0.10α(2003/05/12)
- in_wm.dll 使用時の演奏終了検出に失敗する (終了していないのに
終了していると見なしてしまう) ことがあるのを修正
- 細かい修正
Version 0.09α(2003/05/06) (in_wm.kpi という名前で公開)
- in_wm.dll 使用時に通常のプラグインと同様に動作するようにした
- 再生開始直後の音が失われることがあったのを修正
- waveOutSetVolume を使用するプラグインが勝手にデバイスボリュームを
変更するのを防ぐようにした (WAVE デバイスのみ)
Version 0.08α(2003/01/28)
- モノラルのデータからステレオのデータに曲を切り替えたときなどに落ちるのを修正
- in_vtx.dll が動作しないのを修正
Version 0.07α(2003/01/14)
- ファイルオープン時、Out_Module::Open だけではなく、Out_Module::CanWrite も
呼ばれるまで待つようにした。これにより、プラグインによっては演奏開始に
失敗することがあったのを修正 (in_shn.dll)
- 演奏停止に関する以下の修正
- Out_Module::Write が少なくとも1回は呼ばれてから In_Module::Stop() を
呼ぶようにした。
- Out_Module::Stop を呼び出してから戻るまでの間は Out_Module::CanWrite が
常にある程度大きな値を返すように修正
- 上記 2つの修正により、プラグインによっては曲長計算に異常に時間がかることが
あったのを修正 (in_vqf.dll/in_snes.dll)
- Out_Module::Stop を呼出し後、Out_Module::CanWrite/Write が呼ばれる
スレッドが終了するまで待つようにした。これにより、プラグインによっては曲長計算、
曲切り替え時、アンロード時等に落ちることがあったのを修正 (in_vqf.dll v0.91)
- これらの修正の副作用で却って曲長計算、曲切り替え等に異常に
時間がかかるようになってしまうプラグインがあるかもしれない
- In_Module::UsesOutputPlug == 0 なプラグインを使って再生する場合は、Play() の
呼び出し前後の WAVE デバイスのボリュームが変化しないような対策を施すように
した。これにより、in_wm.dll 使用時にボリュームが 0 になってしまう問題が解決
(プラグインによってはこの方法でも問題が解決しないものがある)
- Out_Module::GetOutputTime/GetWrittenTime をきちんと処理するように修正
- 実際に再生するまでデコード用先読みバッファを確保しないようにした
(曲長計算時の無駄が少しだけ省かれる)
Version 0.06α(2003/01/06)
- 非常に重いプラグインを使用しているときや演奏開始直後、シーク直後の
CPU 負担が気休め程度軽減
- ファイルサイズが減少
- 内部的に色々修正
Version 0.05α(2003/01/02)
- メモリバッファのコピー頻度を減らして気持ち程度高速化
- In_Module::UsesOutputPlug == 0 なプラグインでも強引に再生するようにしてみた
(演奏停止、一時停止、音量調節、速度変更、エフェクト、スペアナ表示等は不可)
- シーク後の再生位置取得の精度が向上
- 内部的に色々修正
- kbwinamp_installer.exe で、In_Module::UsesOutputPlug == 0 なプラグインを
弾かないようにした
Version 0.04α(2002/12/28)
- In_Module::UsesOutput != 0 な Input プラグインが本当に Output プラグインを
使用するかどうかの判定方法を修正
- プラグインによってはファイルオープン時やシーク時にフリーズすることがあるのを修正
- 上記の修正により、in_lilith.dll が動作するようになった
Version 0.03α(2002/12/16)
- Output プラグインを使わないのに In_Module::UsesOutput != 0 な
Input プラグインを使用したときのファイルオープンの処理を修正
- C ランタイムを一切使わないようにした
- 細かい修正
- kbwinamp_installer.exe を修正 (ファイルのコピーに失敗したときは標準エラー
出力にメッセージを出力するようにした)
Version 0.02α(2002/12/15)
- プラグイン本体のファイル名を kbwinamp.bin に変更し、インストーラ経由で
プラグインをインストールするようにした
- kbwinamp_installer.exe と kbwinamp.bin と使用したい Winamp の
Input プラグインをすべて KbMedia Player のプラグインフォルダに置き、
kbwinamp_installer.exe を起動すればインストール完了
- インストール時の確認メッセージを省略したい場合は
コマンドライン引数に /i を追加する
- 手動でインストールしたい場合は kbwinamp.bin のファイル名を in_xxx.kpi に
したものを in_xxx.dll と同一フォルダにコピーする
- アンインストールは手動。in_xxx.kpi をすべて削除する
- 24bit/32bit 再生時にシークするとノイズになるのを修正
- 以下を KbMedia Player 本体の実装に依らず常に同一のスレッドで
処理されるように修正
- Input プラグインの LoadLibrary/FreeLibrary
- In_Module::hMainWindow の作成
- In_Module::Init/Quit/Play/Stop 等の呼び出し
- in_midi.dll 等、In_Module::UsesOutput != 0 なのに Output プラグインを使用しない
Input プラグインを使用時にファイルを開くとフリーズするのを多分修正
- 以下の Input プラグインを使用すると落ちる or フリーズするのを多分修正
- in_vqf.dll は未だに正常動作せず (曲の切り替えに異常に時間がかかる、
プラグインのアンロード時に落ちる等)
Version 0.01α(2002/12/08)