げろぐぐのぶろぐ

http://gerogugu.web.fc2.com/

 

Category: スポンサー広告   Tags: ---

Response: --  

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Category: peercast   Tags: ---

Response: Comment: 0  Trackback: 0  

GSD_BBSreader

配信用に曲名表示スクリプトを作りたいけど、新しく言語覚えたりコンパイラーインスコするの面倒なので、
有り物を駆使して作ろうとしてたらある事に気づいた

GSD_BBSreader付属のgsd.dllは複数のGSD字幕を表示出来て、
Livemateだとwidth:1024以下の解像度では表示されないっぽい
Livemate付属のは1個までしか出来ないが低解像度でも表示される

気づいた理由がGSD_BBSreaderの更新履歴見てたら、
>複数同時起動できるようにした
>GSD - MoviePlayerと同時に起動できるようにした

という記述があり、昔GSD字幕の同時起動に失敗して断念してたけど、
複数同時起動出来る=字幕が同時に複数のアプリから出せる
ということなので、GSD_BBSreader付属のdllで試したら出来た

つまり曲名はGSD_BBSreader、
レス表示はLivemateでやればいいじゃん

ということにGSD_BBSreaderだけで曲名とレス表示を同時にさせるスクリプトをAHKで作ってから、
風呂に入ってたら気づいた

が、配信中は1024x576でプレイしてるからLivemateと同時には起動出来ないので、
結局GSD_BBSreaderだけで実装した方を使う事に

時間を遡ってレスを読む時大変だから、結局Livemateも横に準備してないとダメだけど
あと最新版のGSD_BBSreaderはレスが止まると自動更新間隔が長くなる仕様だから、
これ糞なんだよなぁって思って半分諦めてたら、
zipのURL変えて旧版のDL出来ないかなって試したら出来たので、間隔長くなる仕様の1個前のを使うことに

で、肝心の実装内容は、
GSD_BBSreader+Softalk+AutoHotKey(+foobar2000)を使って、
曲名はAutoHotKeyで直接取得出来たので、偽字幕少女とはお別れ
それをGSD_BBSreaderに送って字幕表示
字幕表示された結果からアンカー先のレスを読み込まないように省いて、
それをSoftalkに引数で渡して読ます

レス着信音は読み上げソフトと別に行ってるのでタイムラグとかを考えて、
AutoHotKeyに読ませて指定時間止めてから読み上げを開始させる

曲名とレス表示は前回と同じ場合は更新処理しないようにして、
ちょっとでも画面の不可を軽くしてみた

ちゃんと配信しながら長時間のテストしてないけど、
人の配信にレスしながら試したり、
人の配信つけながらローカルのジャンプマップで試したけど、不具合は今のところなし

アンカーがあるレスとAAのテストしてないから、それは後日

以下ソース

#p:: ;win+pで開始
;レス音の絶対パス
res_sound = C:\res.wav
;読み上げ遅延 (ms)
res_wait = 1000
;softalkの絶対パス
softalk = C:\SofTalk.exe

SetKeyDelay 10
WinGet, LM,, GSD - BBS reader Ver.
loop{
IfWinNotExist,ahk_id %LM% ;GSD_BBSreaderが最小化するか終了すると止まる
{
msgbox,読み上げが終了しました
Break
}
WinGetTitle, FB, ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8} ;foobar2000のクラス
if FBtemp = %FB%
{
}else{
FBtemp = %FB%
FB2 = %FB%`r`n<ext_message>`r`n<no> <name>`r`n<message>`r`n<no_anc> <name_anc>`r`n<message_anc>
ControlSetText,TMemo1,%FB2%,GSD -
sleep 1000
}
ControlGetText,ST, TMemo2, GSD - BBS reader Ver.
IfInString, ST, `r`n
{
StringGetPos, STpos, ST, `r`n
StringLeft,STe,ST,%STpos%
StringReplace, ST, ST, %STe%`r`n
if STtemp = %ST%
{
}else{
STtemp = %ST%
ank := RegExMatch(ST, ">>\d")
If ank = 0
{
}else{
StringGetPos, STpos_ank1, ST, >>
StringGetPos, STpos_ank2, ST, `r`n,,STpos_ank1
STpos_ank = % STpos_ank2 - STpos_ank1 -2
STpos_ank1 = % STpos_ank1 + 3
StringMid, STpos_ank, ST, %STpos_ank1%, %STpos_ank%
StringGetPos, STpos_ank3, ST, %STpos_ank%, R
StringLeft,ST,ST, %STpos_ank3%
}
SoundPlay, %res_sound%
sleep %res_wait%
run,%softalk% "/W:%ST%"
}
}
Sleep, 1000
}
return


Comments

09 2017 « »
SUN MON TUE WED THU FRI SAT
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
プロフィール

げろにも

Author:げろにも
pecaでTF2配信してます

検索フォーム
Twitter

Archive

RSS

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。