function StreamProc_Push(channel: HRECORD; buffer: pointer; length: DWord; user: pointer): Boolean;
stdcall;
begin
Result := true;
end;
function RecordingCallback(channel: HRECORD; buffer: pointer; length: DWord; user: pointer): Boolean;
stdcall;
begin
Bass_StreamPutData(ChannelOR, buffer, length);
Result := true;
end;
function DuffRecording(
handle : HRECORD;
const Buffer : Pointer; Length : DWORD; user : Pointer) : Boolean;
stdcall;
var rueck: Boolean;
begin
rueck:=False;
if Length > 0
then
begin
fRec.
Write(Buffer^, Length);
rueck:=True;
end;
Result:=rueck;
end;
procedure TForm1.StartAufnahmeClick(Sender: TObject);
begin
bassret:=BASS_RecordGetDeviceInfo(audioein2, bassinfo);
if bassret
then
begin
if BASS_Init(-1, 44100, 0,
Handle,
nil)
then
begin
if (BASS_RecordInit(-1))
then
begin
ChannelIR:=BASS_RecordStart(44100, 1, 0, @DuffRecording,
nil);
if ChannelIR > 0
then
begin
BASS_ChannelPlay(ChannelIR, FALSE);
ChannelOR:=Bass_StreamCreate (44100,1,Bass_Sample_Float,@StreamProc_Push,
nil);
if ChannelOR > 0
then
begin
BASS_ChannelPlay(ChannelOR, TRUE);
basslauf:=True;
StartAufnahme.Visible:=False;
StopAufnahme.Visible:=True;
if FileExists('
E:\DARC\RTTY\Win32\Debug\WAV\Test.mp3')
then
begin
DeleteFile('
E:\DARC\RTTY\Win32\Debug\WAV\Test.mp3');
end;
fRec:=TFileStream.Create('
E:\DARC\RTTY\Win32\Debug\WAV\Test.mp3', fmCreate);
// create the file
while basslauf
do
begin
sleep(10000);
basslauf:=False;
end;
BASS_ChannelPlay(ChannelIR, FALSE);
BASS_ChannelPlay(ChannelOR, FALSE);
bassret:=BASS_StreamFree(ChannelOR);
bassret:=BASS_RecordFree();
fRec.Free;
BASS_Free;
StartAufnahme.Visible:=True;
StopAufnahme.Visible:=False;
end else begin
Label2.Caption:='
Output Audiostream konnten nicht kreiert werden';
end;
end else begin
Label2.Caption:='
Input Audiorecord konnten nicht kreiert werden';
end;
end else begin
Label2.Caption:='
Input Audiorecord konnten nicht initialisiert werden';
end;
end else begin
Label2.Caption:='
Input Audiodaten konnten nicht initialisiert werden';
end;
end else begin
Label2.Caption:='
Input Audiodevice konnten nicht abgerufen werden';
end;