Einzelnen Beitrag anzeigen

Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#13

Re: bass.dll - stereo zu mono

  Alt 13. Dez 2009, 01:02
... und da obige procedure eine Schutzverletzung verursachen konnte, und außerdem bei manchen Dateien geknackt hat, hier ddie richtige Lösung:
Delphi-Quellcode:
procedure StereoToMono (handle: HDSP; channel: DWORD; buffer: Pointer; length: DWORD; user: DWORD); stdcall;
var
  pl, pr: pSingle; // pl, pointer auf den linken Kanal, pr den rechten.
  a: DWORD; // Samplezaehler
  mono: single;
begin
  a := 1;
  length := length div SizeOf (single); // Length sind jetzt die Anzahl der Samples.
  pl := pSingle(buffer);
  pr := pSingle (Cardinal(buffer) + SizeOf(single));
  while a < length do
  begin
    mono := (pl^ + pr^) / 2;
    pl^ := mono;
    pr^ := mono;
    inc (pl, 2);
    inc (pr,2);
    a := a + 2; // weil zwei Samples verändert wurden.
  end;
end;
Marco Steinebach
  Mit Zitat antworten Zitat