"SBDSP.PAS(572,3) Fatal: Selected assembler reader not supported"
Code: Alles auswählen
unit Wave;
interface
procedure PlayWaveFile(Filename: String);
procedure DisplayWaveHeader(Filename: String);
implementation
uses Crt, SB_DSP;
type
TWaveHeader = record
RiffID: Array[1..4] of Char; //'RIFF'
FileSize: DWord; //Size of the file
WaveID: Array[1..4] of Char; //'WAVE'
fmtID: Array[1..4] of Char; //'fmt '
SizeOfHeader: DWord; //Size of the header till now
FormatTag: Word; //data format
Channels: Word; //amount of channels
SamplingRate: DWord; //samples per second
AverageBytesPerSecond: DWord; //normaly same as SamplingRate
BlockAlign: Word; //Block align
BitsPerSample: Word; //Bits per sample
dataID: Array[1..4] of Char; //'data'
SizeOfSample: Word; //number of Bytes in the sample
end;
procedure PlayWaveFile(Filename: String);
var
WaveHeader: TWaveHeader;
F: File;
Tone: Byte;
begin
Assign(F, Filename);
Reset(F, 1);
//Get wave file header
BlockRead(F, WaveHeader, SizeOf(TWaveHeader));
repeat
BlockRead(F, Tone, SizeOf(Byte));
if IOResult <> 0 then
begin
WriteLn('Error, could not read next byte');
WriteLn('Press any key to exit...');
ReadKey;
Halt;
end;
Play8BitSound(Tone);
until EOF(F);
Close(F);
end;
procedure PlayWaveFile(Filename: String);
var
WaveHeader: TWaveHeader;
F: File;
begin
Assign(F, Filename);
Reset(F, 1);
//Get wave file header
BlockRead(F, WaveHeader, SizeOf(TWaveHeader));
//Print information out of the header
WriteLn('File size: ', WaveHeader.FileSize);
WriteLn('Format Tag: ', WaveHeader.FormatTag);
WriteLn('Channels: ', WaveHeader.Channels);
WriteLn('Sampling Rate: ', WaveHeader.SamplingRate);
WriteLn('Average Bytes per Second: ', WaveHeader.AverageBytesPerSecond);
WriteLn('Block Align: ', WaveHeader.BlockAlign);
WriteLn('Bits per sample: ', WaveHeader.BitsPerSample);
WriteLn('Size of sample: ', WaveHeader.SizeOfSample);
Close(F);
end;
end.