Hi,
also, ich will mit Delphi eine wave datei rausschreiben. Leider gibt es Probleme den Wave Header rauszuschreiben, der stimmt (in Länge und so weiter). Wäre toll wenn jemand mir helften kann.
MfG PCM
Vielleicht hilft dir
die Seite zum Aufbau von wave Dateien weiter.
Hi,
ja, theoretisch weis ich schon wie so ein wave dann aussehen muss, aber mein Problem liegt eher darin, wie ich das Zeug hübsch Byte für Byte rausschreiben kann. Tja, noch zu wenig Delphi Erfahrung

MfG PCM
Zum auslesen der Daten empfehlen sich Streams. Hier mal ein Beispiel zum auslesen der ganzen Header Infos:
type
TBeforeWaveHeader = object
RiffId: Array[1..4] of Char;
RiffCount: DWORD;
WaveId: Array[1..4] of Char;
fmtId: Array[1..4] of Char;
TempInt: DWORD;
end;
TWaveHeader = object
wFormatTag: WORD;
nChannels: WORD;
nSamplesPerSec: DWORD;
nAvgBytesPerSec: DWORD;
nBlockAlign: WORD;
wBitsPerSample: WORD;
cbSize: WORD;
end;
TAfterWaveHeader = object
DataId: Array[1..4] of Char;
DataCount: DWORD;
end;
TWaveData = object
BeforeWaveHeader: TBeforeWaveHeader;
WaveHeader: TWaveHeader;
AfterWaveHeader: TAfterWaveHeader;
end;
Den Teil setzt du einfach in den Interface Teil. Jetzt kommt der eigentliche Teil zum auslesen der Daten.
procedure ReadWaveData;
Var
WaveFile: TStream;
WaveData: TWaveData;
begin
//Stream öffnen
WaveFile := TFileStream.Create('MyFile.wav', fmOpenRead);
//Wave Data auslesen
WaveFile.ReadBuffer(WaveData, sizeof(TWaveData));
end;
Mit TFileStream.Create wird die Datei angesprochen, der Parameter fmOpenRead gibt an, dass die Datei zum lesen geöffnet werden soll. ReadBuffer ließt dann die Daten aus der Datei, man hätte hier auch einfach Read verwenden könne, ReadBuffer hat aber einfach den Vorteil das es die Datei Operation vorher erst noch prüft.
Anstatt TWaveHeader kannst du auch TWaveFormatEx aus der Unit MMSystem verwenden. Die Wave Datei hab ich mit der Funktion MakeSound von Delphi Fundgrube erstellt.
Danke, hat was gebracht, ich habe es jetzt geschafft. Manchmal kommt zwar noch ein bisschen Müll hinter den Waves an, und man kann sie nicht mit wmp abspielen, aber sonst ist alles OK.
MfG PCM