トップへ
<---   取り出しトピック   --->
 
. kbgxscc.kpi Version 0.12alpha Kobarin 03/23土16:34#r57
. 曲の切り替わり時にフォーカスが奪われてしまう Kobarin 03/23土16:39#r58
. 再生周波数 Kobarin 03/23土19:25#r61
 

上の選択記事
. kbgxscc.kpi Version 0.12alpha
     Kobarin ホームページ 2019/03/23土16:34 #r57
編集&削除  
プラグイン置き場: http://hwm5.gyao.ne.jp/kobarin/kpi/kpi.htm
ファイル直リンク: http://hwm5.gyao.ne.jp/kobarin/kpi/kbgxscc_012alpha.7z

GASHISOFT さん制作の GXSCC (β236/β773) を使って MIDI を
再生するプラグインです。

念願の(?) OPLL モードとβ773 に対応しました。

GXSCC の公式サイトもつい最近移転してリニューアルされたようです。
日本語サイトはまだほとんど未完成なようですが、β236 は英語サイト
の方で入手可能です。

https://gashisoft.web.fc2.com/
https://gashisoft.web.fc2.com/E/ (英語サイト)

β773 はもう配布されていないようですので、持ってない方は残念
ですが諦めて下さい。

v0.12αでの変更点

・選択可能な周波数に誤りがあったのを修正(176000Hz->176400Hz)
・設定項目の順番を修正(SCC/OPLL モードを音色セットの手前に移動)

v0.11αでの変更点

・β236とβ773のパスを別々に設定し、どちらを使用するかを選択する方式に変更
 ・パスを設定し直す手間が省けて切り替えが容易になった
 ・v0.10αのパスに関する設定は無視されるので設定し直す必要がある
・ファイルオープン時のシステムの負荷のかかり具合等、タイミングにより正常に再生
 出来ないことがあるのを修正
・β773 の DirectSound 処理をフックするようにした
 ・一瞬でも DirectSound デバイスを開いて再生してしまうのを回避
・β236 の waveOut 処理のフックの仕方を修正
・GXSCC の終了のさせ方が乱暴だったのを修正
 ・なるべくメインウィンドウを「閉じる」ことで終了させるようにした
 ・終了時に GXSCC 内部のクリーンアップ処理が呼ばれるようになった

タイミングによって正常に再生出来なくなる不具合がおそらく完全に
修正されたと思います。

まだ検証が十分とは言えませんが、v0.10αでは1時間も連続再生してると
何回かは再生がおかしくなっていたのが、数時間の連続再生でも問題が起
きていません。
(Edited 1times)
. 曲の切り替わり時にフォーカスが奪われてしまう
     Kobarin ホームページ 2019/03/23土16:39 #r58
編集&削除  
今回のバージョンアップにより、個人的には kbgxscc.kpi はほぼ完成と
言えるレベルに到達出来たと思っていますが、あと1点だけ気になる点が
あって、再生時にウィンドウのフォーカスが奪われてしまうんですよね。

どうやってもフォーカスを奪うのを阻止出来ないので、仕方ないので

ファイルを開く直前に GetForegroundWindow してフォアグラウンドの
ウィンドウを取得しておき、再生が始まったら SetForegroundWindow
してフォーカスを元のウィンドウに戻す

という処理をしています。なので他の作業をしながら連続再生してると曲の
切り替わり時に一瞬だけウィンドウが奪われて少し作業がしづらいです。
(フォーカスを戻す処理をしてるだけマシなんですが)


GXSCC が呼び出す API に対して以下の処置をしていますがそれでも
足りません。他に対策として思い浮かぶものがあったらご指摘下さい。

・CreateWindowEx の dwExStyle に WS_EX_NOACTIVATE を付け加える
・SetActiveWindow/SetForegroundWindow/SetWindowPos/BringWindowToTop/SetFocus
 をフックして実際には何もさせない(起動してから「オーサリング」が始まる
 までの間に実際に呼ばれるのは SetActiveWindow のみのようです)

他のプロセスがフォーカスを持ってるのにそれを奪い取るというと
AttachThreadInput を使う必要があると思うんですが、GXSCC は
AttachThreadInput を呼び出していません。

GXSCC が呼び出す API は Dependency Walker で確認しています。

もしかしてウィンドウプロシージャを乗っ取る必要があるのかな。
関連するメッセージが思いつきませんが。
. 再生周波数
     Kobarin ホームページ 2019/03/23土19:25 #r61
編集&削除  
ごめんなさい。
176400Hz を 176000Hz にしていました。
なんか違和感があったんですよね…。

v0.12αで直しました。

48000Hz 超の再生周波数は GXSCC 本体では設定出来ない値
なので本来は指定すべきではないのかもしれません。

GXSCC が GXSCCPreferences.bin を開いて読み取ろうと
するときに内容を偽装して渡しています。

(Edited 1times)

上へ






RAIBPL1.23-wakatiai.halfmoon.jp 2022/01/18火10:09