ある一定のレベルに達すると画像が入れ替わるようにして、
マイクから音声にあわせて顔の画像の口元がパクパクしゃべってるように
見えるツールを作成しています。
http://hsptv.sakura.ne.jp/play/pforum.php?mode=pastwch&num=19810
の下側に記載してあったスクリプトを参考に作成しています。
スクリプトを転載します。
#uselib "winmm.dll" #func waveInOpen "waveInOpen" sptr, sptr, sptr, sptr, sptr, sptr #func waveInPrepareHeader "waveInPrepareHeader" sptr, sptr, sptr #func waveInAddBuffer "waveInAddBuffer" sptr, sptr, sptr #func waveInStart "waveInStart" sptr #func waveInStop "waveInStop" sptr #func waveInUnprepareHeader "waveInUnprepareHeader" sptr, sptr, sptr #func waveInClose "waveInClose" sptr #define SAMPRATE 1000 oncmd gosub *OnWimData, $000003C0/*MM_WIM_DATA*/ onexit *ExitProc hWaveIn = 0 dim wfe, 5 wfe(0) = 1 + ($00000001/*WAVE_FORMAT_PCM*/<<16) wfe(1) = SAMPRATE wfe(2) = SAMPRATE wfe(3) = (1*8/8) + (8<<16) wfe(4) = 18 sdim bWave, 1 dim whdr, 8 whdr(0) = varptr(bWave) whdr(1) = 1 whdr(2) = 1 waveInOpen varptr(hWaveIn), $FFFFFFFF/*WAVE_MAPPER*/, varptr(wfe), hwnd, 0, $00010000/*CALLBACK_WINDOW*/ waveInPrepareHeader hWaveIn, varptr(whdr), 32 waveInAddBuffer hWaveIn, varptr(whdr), 32 waveInStart hWaveIn width 640, 300 i = 0 stop *OnWimData val = peek(bWave, 0) waveInAddBuffer hWaveIn, varptr(whdr), 32 redraw 0 if i\ginfo_winx=0 { color : boxf color 128, 128, 128 line 0, ginfo_winy/2, ginfo_winx, ginfo_winy/2 line 0, ginfo_winy/2-128, ginfo_winx, ginfo_winy/2-128 line 0, ginfo_winy/2+128, ginfo_winx, ginfo_winy/2+128 pos 0, ginfo_winy/2+(val-128) } color 0, 255, 0 : line i\ginfo_winx, ginfo_winy/2+(val-128) redraw 1 i ++ return *ExitProc waveInStop hWaveIn waveInClose hWaveIn WaveInUnprepareHeader hWaveIn, varptr(whdr), 32 end
これを用いて、動くところまでいけましたが、ステレオミックスにした場合、
バックに流れる曲等にも反応して動いてしまいます。
ステレオミックス時でもマイクの入力信号だけを監視したいのですが、
どこをどう変更したらいいのかわかりません。
お分かりの方がいらっしゃいましたら、教えていただけますでしょうか?