Mein Beispiel oben enthält nicht einfach die Lösung für dein konkretes Problem. Allerdings wenn man alles miteinander kombiniert, dann geht das was du haben möchtest.
Und jetzt mal etwas konkreter...
Ein minimales Beispiel...
Delphi-Quellcode:
uses ... Bass ...;
const
MaxPeak = 32768;
type
TFMain =
class(TForm)
PbLeft: TProgressBar;
PbRight: TProgressBar;
:
implementation
:
var _RecordChannel: HRECORD;
procedure TFMain.FormCreate(Sender: TObject);
begin
if not BASS_RecordInit(0)
then
raise Exception.Create('
Aufnahme kann nicht initialisiert werden');
BASS_RecordSetInput(1, BASS_INPUT_ON);
end;
procedure TFMain.FormDestroy(Sender: TObject);
begin
BASS_RecordFree;
end;
function RecordingCallback(
Handle: HRECORD; buffer: Pointer; length,
user: DWord): boolean;
stdcall;
var Left, Right:Cardinal;
Level:DWORD;
begin
Level:=BASS_ChannelGetLevel(_RecordChannel);
Left:=trunc((100 / MaxPeak) * LOWORD(Level));
Right:=trunc((100 / MaxPeak) * HIWORD(Level));
FMain.PbLeft.Position:=Left;
FMain.PbRight.Position:=Right;
Result:=true;
end;
procedure TFMain.Start;
begin
_RecordChannel := BASS_RecordStart(44100, 1, 0, @RecordingCallback, 0);
if _RecordChannel = 0
then
raise Exception.Create('
Aufnahme kann nicht gestartet werden');
end;
procedure TFMain.Stop;
begin
BASS_ChannelStop(_RecordChannel);
end;
Gruss
Thorsten