![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#91
|
||||
|
||||
![]() Цитата:
Код:
... NumSamples := wChankSize div (SampleSize * Header.wChannels); ... |
#92
|
|||
|
|||
![]() Цитата:
Код:
procedure WriteWav(const FileName: String); type TChunkID = packed array [0..3] of Char; THeader = packed record ChunkID : TChunkID; ChunkSize : Longword; Format : TChunkID; Subchunk1ID : TChunkID; Subchunk1Size : Longword; AudioFormat : Word; NumChannels : Word; SampleRate : Longword; ByteRate : Longword; BlockAlign : Word; BitsPerSample : Word; Subchunk2ID : TChunkID; Subchunk2Size : Longword; wChannels : WORD; end; var Header: THeader; NumSamples, BytsPerSample, Sample, I, J: Longword; fs: TFileStream; wChankSize : Cardinal; begin NumSamples := wChankSize div (SampleSize * Header.wChannels); BytsPerSample := 2; Header.ChunkID := 'RIFF'; Header.ChunkSize := StrToInt(Form1.Memo2.Lines[1]); Header.Format := 'WAVE'; Header.Subchunk1ID := 'fmt '; Header.Subchunk1Size := StrToInt(Form1.Memo2.Lines[4]); Header.AudioFormat := $0001; Header.NumChannels := StrToInt(Form1.Memo2.Lines[6]); Header.SampleRate := StrToInt(Form1.Memo2.Lines[7]); Header.ByteRate := StrToInt(Form1.Memo2.Lines[8]); Header.BlockAlign := StrToInt(Form1.Memo2.Lines[9]); Header.BitsPerSample := StrToInt(Form1.Memo2.Lines[10]); Header.Subchunk2ID := 'data'; Header.Subchunk2Size := StrToInt(Form1.Memo2.Lines[12]); fs := TFileStream.Create('New File.wav',fmCreate); try fs.WriteBuffer(Header, SizeOf(Header)); for I := 1 to NumSamples do begin for J := 1 to Header.NumChannels do begin Sample := 1111; fs.WriteBuffer(Sample, BytsPerSample); end; end; finally fs.Free; end; end; procedure TForm1.Button4Click(Sender: TObject); begin if SaveDialog2.Execute then begin WriteWav(SaveDialog2.FileName); end; end; end. |
#93
|
||||
|
||||
![]() Цитата:
Код:
... NumSamples := wChankSize div (SampleSize * Header.wChannels); ... |
#94
|
|||
|
|||
![]() Цитата:
|
#95
|
||||
|
||||
![]() Цитата:
|
#96
|
|||
|
|||
![]() Цитата:
|
#97
|
||||
|
||||
![]() Цитата:
![]() |
#98
|
|||
|
|||
![]() Цитата:
Код:
begin Sample := 1111; fs.WriteBuffer(Sample, BytsPerSample); end; Код:
begin fs.WriteBuffer(NumSamples); |
#99
|
||||
|
||||
![]() Цитата:
Цитата:
|
#100
|
|||
|
|||
![]() Цитата:
Код:
NumSamples := ??????? |
#101
|
|||
|
|||
![]() Цитата:
|
#102
|
||||
|
||||
![]() Цитата:
|
#103
|
|||
|
|||
![]() Цитата:
Стоп! Что-то я не то сделал. Я убрал Sample:= 1111, и стало по вышеописанному, а что, NumSamples передать уже третьим в процедуру WriteWav? Там уже и так Код:
fs.WriteBuffer(Sample, BytsPerSample); Последний раз редактировалось Dmitry_DM, 16.08.2012 в 15:08. |
#104
|
||||
|
||||
![]() Цитата:
|
#105
|
|||
|
|||
![]() Цитата:
|