Einzelnen Beitrag anzeigen

tobif

Registriert seit: 11. Jul 2003
27 Beiträge
 
#1

Aufnahmen mit Puffer: Pufferstream mit bass.dll

  Alt 17. Mär 2006, 18:28
Hallo,

ich nehme etwas auf und zwar mit dem beispiel der bass.dll record Test. Dabei will ich immer die letzten z.b. 7 Sekunden Puffern und sobald ich eine Taste drücke ab dort aufnehmen und später speichern. Das klappt auch schon etwas. Leider ist mir keine andere Methode eingefalln als immer in einem Pufferstream(puffer) im Kreislauf alles zu speichern und dann später an den Anfanng des richtigen Streams hängen. Wie geht das besser? Ich habe immer ruckler.

Angehängt ist der veränderte Quelltext(etwas sehr unorndentlich);

Hier die callback(ist lauf true soll richtig aufgezeichnet(Wavestream) werden, es wird immmer in den Pufferstream(puffer) im Kreislauf geschrieben.)
Delphi-Quellcode:
function RecordingCallback(Handle: HRECORD; buffer: Pointer; length, user: DWord): boolean; stdcall;
begin
    // Copy new buffer contents to the memory buffer

  if form1.puffer.Position>1000000 then
  begin
  form1.puffer.Position:=0;
  end;
  Form1.puffer.Write(buffer^, length);
  form1.label2.Caption:=inttostr(Form1.puffer.Position);
    // Allow recording to continue
  if form1.lauf then
  Form1.wavestream.Write(buffer^, length);
   Result := True;
end;
So wirds dann vorne drangehängt:
Delphi-Quellcode:
procedure TForm1.anh;
var
  i: Integer;
  spos: Int64;
  t: Extended ;
begin
  spos := puffer.Position;
  for i := 1 to ((puffer.Size - spos) div 10) do
  begin
    puffer.Read(t, 10);
    wavestream.Write(t, 10);
  end;
  puffer.Position := 0;
  caption := inttostr(puffer.Position);
  for i := 1 to ((spos) div 10) do
  begin
    puffer.Read(t, 10);
    wavestream.Write(t, 10);
  end;
  puffer.Position:=spos;
end;
Wie kann ich alles in eine Stream machen und rucekfrei machen. Also wie kann ich in einen Stream Daten schreiben und die alten immer wieder löschen, sodass der Stream immer die gleiche Größe behält.

cu
tf
Angehängte Dateien
Dateityp: dfm unit1_709.dfm (2,6 KB, 12x aufgerufen)
Dateityp: pas unit1_198.pas (8,5 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat