[Back to SOUND SWAG index] [Back to Main SWAG index] [Original]
{
Well, I saw your message and so I thought that you could use this. It
is a .VOC player that doesn't use CT-Voice.DRV. If you don't have a
copy of DSP (It has been posted here many times before) then just mail
me and I'll post a copy of it for you. This program should work fine
(at least it does on my computer). Hope you like it...
}
program play_voc; { without ct-voice.drv }
uses DSP, crt;
Type SoundBufType = Array[1..65528] of byte;
var SoundDat: ^SoundBufType;
Filename: String;
f : file;
s : word;
freq : word;
h : record
signature : array[1..19] of char; { vendor's name }
Terminator : Byte;
data_start : word; { start of data in file }
version : integer; { min. driver version required }
id : integer; { 1-complement of version field+$1234 }
end; { used to indentify a .voc file }
d : record
id : byte; { = 1 }
len : array[1..3] of byte; { length of voice data (len data +
2)}
sr : byte; { sr = 256 - (1,000,000 / sampling rate) }
pack : byte; { 0: unpacked, 1: 4-bit, 2: 2.6 bit, 3: 2 bit
packed} end;
begin
{$i-}
clrscr;
New(SoundDat);
ResetDSP(2);
SpeakerOn;
Filename:=ParamStr(1);
if pos('.', filename) = 0 then filename := filename + '.voc';
assign(f, filename);
reset(f, 1);
blockread(f, h, 26);
blockread(f, d, 6);
seek(f,h.data_start);
freq := round(1000000 / (256 - d.sr));
s := ord(d.len[3]) + ord(d.len[2]) * 256 + ord(d.len[1]) * 256 * 256;
blockread(F, SoundDat^, S);
writeln('-----------header----------');
writeln('signature: ', h.signature);
writeln('data_start: ', h.data_start);
writeln('version: ', hi(h.version), '.', lo(h.version));
writeln('id: ', h.id);
writeln;
writeln('------------data-----------');
writeln('len: ', s);
writeln('freq: ', freq);
writeln('pack: ', d.pack);
writeln('Filepos: ', FilePos(F));
readkey;
close(f);
{$i-}
if ioresult <> 0 then
begin
writeln('Can''t play voc file "' + filename + '".');
halt(1);
end;
playback(SoundDat, s, freq);
end.
[Back to SOUND SWAG index] [Back to Main SWAG index] [Original]