|
#1
|
|||
|
|||
Визуализация
Здравствуйте, у меня один вопрос по визуализации. Как можно визуализировать все звуки компьютера?
Я пытался совместить визуализацию bass.dll и mixerGetLineInfo(mixer,@FFTFata,MIXER_GETLINEINFOF _LINEID); Но постоянно выходит ошибка... |
#2
|
||||
|
||||
Цитата:
Что хоть за ошибка-то? Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
Код:
procedure TForm1.Button3Click(Sender: TObject); var FFTFata:TFFTData; mixer: HMIXER; i:integer; begin BASS_RecordInit(-1); rchan := BASS_RecordStart(11025,2,0,nil,0); mixerOpen(@mixer,0,handle,0,CALLBACK_WINDOW); mixerGetLineInfo(mixer,@FFTFata,MIXER_GETLINEINFOF_LINEID); //BASS_ChannelGetData(, @FFTFata, BASS_DATA_FFT512); Draw (pb1.Canvas.Handle, FFTFata, 0,-5); end; Процедура Draw Код:
procedure TForm1.Draw(HWND : THandle; FFTData : TFFTData; X, Y : Integer); var i, YPos : LongInt; YVal : Single; begin pb1.Canvas.Pen.Color := clBlack; pb1.Canvas.Brush.Color := clBlack; pb1.Canvas.Rectangle(0, 0, pb1.Width, pb1.Height); for i := 1 to 5 do begin YVal := Abs(FFTData[i]); YPos := trunc((YVal) * 500); if YPos > pb1.Height then YPos := pb1.Height; if YPos >= FFTPeacks[i] then FFTPeacks[i] := YPos else FFTPeacks[i] := FFTPeacks[i] - 1; if YPos >= FFTFallOff[i] then FFTFallOff[i] := YPos else FFTFallOff[i] := FFTFallOff[i] - 3; pb1.Canvas.Pen.Color := clYellow; pb1.Canvas.MoveTo(X + i*(3+1) , Y + pb1.Height - FFTPeacks[i]); pb1.Canvas.LineTo(X + i*(3+1) + 3, Y + pb1.Height - FFTPeacks[i]); pb1.Canvas.Pen.Color := clRed; pb1.Canvas.Brush.Color := clRed; pb1.Canvas.Rectangle(X + i*(3+1) , Y + pb1.Height - FFTFallOff[i], X + i*(3+1) + 3, Y + pb1.Height); end; end; Invalid floating point operation Я незнаю, может в bass.dll есть какой то определенный поток который отвечает за все звуки компьютера? Последний раз редактировалось Admin, 14.04.2016 в 09:36. |
#4
|
|||
|
|||
Ну так что?
|