Akhirnya ketemu lagi coding buat Write WAV pake Rutin Bass23..dan hasilnya sama
headernya 44 byte...
nih codingnya...
procedure TForm1.Button9Click(Sender: TObject);
var
temp : string;
i : longint;
RecStream : TFileStream;
nChannels : Word; // number of channels (i.e. mono, stereo, etc.)
nSamplesPerSec : DWORD; // sample rate
nAvgBytesPerSec : DWORD; // transfer rata-rata per detik
nBlockAlign : Word;
wBitsPerSample : Word; // number of bits per sample of mono data
Data : Array of SmallInt;
begin
SetLength(Data, Length(hasil_inversedct1));
for i := 0 to Length(hasil_inversedct1) - 1 do
begin
Data[i] := Round(hasil_inversedct1[i]);
end;
nChannels := 1;
wBitsPerSample := 16;
nBlockAlign := nChannels * wBitsPerSample div 8;
nSamplesPerSec := 22050;
nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;
RecStream := TFileStream.Create('c:\Cinta.wav',fmCreate);
// Write header portion of wave file
temp := 'RIFF';
RecStream.write(temp[1], length(temp));
temp := #0#0#0#0;
RecStream.write(temp[1], length(temp)); // File size: to be updated
temp := 'WAVE';
RecStream.write(temp[1], length(temp));
temp := 'fmt ';
RecStream.write(temp[1], length(temp));
temp := #$10#0#0#0;
RecStream.write(temp[1], length(temp)); // Fixed
temp := #1#0;
RecStream.write(temp[1], length(temp)); // PCM format
if nChannels = 1 then
temp := #1#0
else
temp := #2#0;
RecStream.write(temp[1], length(temp));
RecStream.write(nSamplesPerSec, 2);
temp := #0#0;
RecStream.write(temp[1], length(temp)); // SampleRate is given as dWord
RecStream.write(nAvgBytesPerSec, 4);
RecStream.write(nBlockAlign, 2);
RecStream.write(wBitsPerSample, 2);
temp := 'data';
RecStream.write(temp[1],length(temp));
temp := #0#0#0#0;
RecStream.write(temp[1],length(temp)); // Data size: to be updated
RecStream.Write(Data[0], Length(Data) * SizeOf(SmallInt));
{complete WAV header
Rewrite some fields of header }
i := RecStream.Size - 8; // size of file
RecStream.Position := 4;
RecStream.write(i, 4);
i := i - $24; // size of data
RecStream.Position := 40;
RecStream.write(i, 4);
RecStream.Free;
edit5.Text := 'Selesai';
end;
Jumat, 14 Desember 2007
Write File WAV dengan Rutin Bass23
Diposting oleh
NURSYAFRIADY
di
02.17
Langganan:
Posting Komentar (Atom)
0 komentar:
Posting Komentar