Регистрация | Вход
type TWaveHeader = record //это формат заголовка wav-файл Marker1: Array [0..3] of Char; BytesFollowing: LongInt; Marker2: Array [0..3] of Char; Marker3: Array [0..3] of Char; Fixed1: LongInt; FormatTag: Word; Channels: Word; SampleRate: LongInt; BytesPerSecond: LongInt; BytesPerSample: Word; BitsPerSample: Word; Marker4: Array [0..3] of Char; DataBytes: LongInt; end;var head1:TWaveHeader; Channels,Resolution:word; SampleRate,Duration:longint; data1:array of byte;implementationprocedure TForm1.FormCreate(Sender: TObject); //инициализацииbegin Channels:=1; //количество каналов SampleRate:=22050; //частота дискретизации Resolution:=8; //квантование Duration:=20000; //длительность в микросекундах - от неё зависит размер данных head1.BytesPerSecond:=(Channels * SampleRate * Resolution) div 8 ; head1.DataBytes:=(head1.BytesPerSecond) * (Duration div 1000); head1.Marker1:='RIFF'; head1.BytesFollowing:=head1.DataBytes + 36; head1.Marker2:='WAVE'; head1.Marker3:='fmt '; head1.Fixed1:=16; head1.FormatTag:=1; head1.SampleRate:=SampleRate; head1.Channels:=Channels; head1.BytesPerSample:=Channels * Resolution div 8; head1.BitsPerSample:=Resolution; head1.Marker4:='data'; setlength(data1,head1.DataBytes);end;procedure MakeWAVfile; var i:integer; x:tmemorystream; begin for i:=0 to high(data1) do begin data1[i]:={данные}; //тут заполняем байтами каждый звуковой канал end; x:=tmemorystream.Create; //сохраняем в файл, используя, например, tmemorystream try x.Write(head1,44); x.Write(data1[0],head1.DataBytes); x.SaveToFile('c:\temp.wav'); // имя файла finally x.Free; end; end;end.