
10.04.2016, 19:40
|
Прохожий
|
|
Регистрация: 08.04.2016
Сообщения: 25
Версия Delphi: XE8
Репутация: 10
|
|
Код:
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;
Админ: Для вставки кода существует специальный тег CODE, а цитата - соотв. используется для цитирования текста.
Invalid floating point operation
Я незнаю, может в bass.dll есть какой то определенный поток который отвечает за все звуки компьютера?
|