title image


Smiley Re: wie sind wave-datein aufgebaut?
Hallo,anbei eine Definition des Waves-Kopfes am Anfang eines Wave-Files und ein Beispiel wie er mit Inhalt gefüllt wird.Damit kannst Du gezielt arbeiten und musst nicht rumprobieren.Viel Erfolg: KlausPPCMWaveHeader = ^TPCMWaveHeader;TPCMWaveHeader = record rID : array[0..3] of char; { 'RIFF' Identifier } rLen : longint; wID : array[0..3] of char; { 'WAVE' Identifier } fId : array[0..3] of char; { 'fmt ' Identifier } fLen : longint; { Fixed, must be 16 } wFormatTag : word; { Fixed, must be 1 } nChannels : word; { Mono=1, Stereo=2 } nSamplesPerSec : longint; { SampleRate in Hertz } nAvgBytesPerSec : longint; nBlockAlign : word; nBitsPerSample : word; { Resolution, e.g. 8 or 16 } dId : array[0..3]of char; { 'data' Identifier } dLen : longint; { Number of following data bytes }{ The rest of the file is the wave data. Order is low-high for left channel, low-high for right channel, and so on. For mono or 8 bit files make the respective changes. }end;function InitializePCMWaveHeader(pHeader : PPCMWaveHeader; Samples : longint; Resolution : word; Channels : word; SampleRate : longint) : boolean;{ Initializes a Header in Windows PCM format Samples : Number of samples per Channel Resolution : Resolution in Bit, e.g. 8 or 16 Channels : Mono=1, Stereo=2 SampleRate : Given in Hertz, e.g 44100}var DataBytes : longint;begin { First calculate number of data bytes } DataBytes:=Samples; DataBytes:=DataBytes * Channels; { double if stereo } DataBytes:=DataBytes * (Resolution div 8); { double if 16 Bit } FillChar(pHeader^,SizeOf(TPCMWaveHeader),#0); { Initialize } with pHeader^ do begin rID[0]:='R';rID[1]:='I';rID[2]:='F';rID[3]:='F'; { 1st identifier } rLen:=DataBytes+36; wID[0]:='W';wID[1]:='A';wID[2]:='V';wID[3]:='E'; { 2nd identifier } fId[0]:='f';fId[1]:='m';fId[2]:='t';fID[3]:=Chr($20); { 3rdidentifier ends with a space character } fLen:=$10; { Fixed, must be 16 } wFormatTag:=1; { Fixed, must be 1 } nChannels:=Channels; { Channels } nSamplesPerSec:=SampleRate; { Sample rate in Hertz } nAvgBytesPerSec:=SampleRate*Channels*trunc(Resolution div 8); nBlockAlign:=Channels*(Resolution div 8); { Byte order, see below } nBitsPerSample:=Resolution; dId[0]:='d';dId[1]:='a';dId[2]:='t';dId[3]:='a'; { Data identifier } dLen:=DataBytes; { number of following data bytes } end; { The rest of the file is the wave data. Order is low-high for left channel, low-high for right channel, and so on. For mono or 8 bit files make the respective changes. }end;

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: