home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Current Shareware 1994 January
/
SHAR194.ISO
/
sounds
/
sam2far2.zip
/
SAM2FAR.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1993-09-02
|
4KB
|
215 lines
Program sam2far;
uses crt;
type
memblk=array [1..64000] of byte;
fsm=record
magic:array[1..4] of byte;
name:array[1..32] of char;
nums:array[1..3] of byte;
len:longint;
finetune:byte;
volume:byte;
RepeatStart:longint;
RepeatEnd:longint;
SampleType:byte;
loopingmode:byte;
end;
var
header:fsm;
fin,fout:file;
i,i2:integer;
b:byte;
s1,s2,str:string;
work:string[32];
cnt,finish:longint;
me:^memblk;
procedure stext(c,b:integer);
begin
textcolor(c);
textbackground(b);
end;
function fileexists(fname:string):boolean;
var
f:file of byte;
begin
assign(f,fname);
{$I-}
reset(f);
{$I+}
if ioresult=0 then
begin
close(f);
fileexists:=true;
end
else
fileexists:=false;
end;
function itos (num:longint):string;
var i:longint;
s:string;
begin
s:='';
if num=0 then
s:='0'
else
while num<>0 do
begin
i:=num mod 10;
i:=i+48;
num:=num div 10;
s:=concat(chr(i),s);
end;
itos:=s;
end;
procedure initheader;
var
i:integer;
begin
with header do
begin
work:='FSM■';
move(work[1],magic,4);
for i:=1 to 32 do
name[i]:=' ';
nums[1]:=10;
nums[2]:=13;
nums[3]:=26;
len:=finish-1;
finetune:=0;
volume:=0;
repeatstart:=0;
repeatend:=finish-1;
sampletype:=0;
loopingmode:=1;
end;
end;
function filesiz(str:string):longint;
var
f:file of byte;
l:longint;
begin
assign(f,str);
{$I-}
reset(f);
{$I+}
if ioresult=0 then
begin
l:=filesize(f);
close(f);
end
else
l:=0;
filesiz:=l;
end;
begin
new(me);
if paramcount=2 then
begin
s1:=paramstr(1);
s2:=paramstr(2);
for i:=1 to length(s1) do
s1[i]:=upcase(s1[i]);
for i:=1 to length(s2) do
s2[i]:=upcase(s2[i]);
end;
if (paramcount=2) and fileexists(s1) then
begin
cnt:=1;
finish:=filesiz(s1);
initheader;
assign(fin,s1);
reset(fin,1);
blockread(fin,me^[1],finish);
close(fin);
writeln;
stext(14,0);
writeln('SAM to USM Sample Converter');
writeln(' For Farandole Composer');
writeln;
stext(1,0);
Write(' ORIGINAL FILE: ');
stext(15,0);
writeln(s1);
stext(1,0);
WRITE('CONVERTED FILE: ');
stext(15,0);
write(s2);
stext(7,0);
writeln;
writeln;
stext(1,0);
write(' Filesize: ');
stext(15,0);
write(finish);
stext(1,0);
writeln(' Bytes');
stext(1,0);
write(' Complete: Bytes');
for i:=1 to 5 do
write(chr(8));
while (cnt<=finish) do
begin
me^[cnt]:=(me^[cnt]+128) mod 256;
cnt:=cnt+1;
str:=itos(cnt);
if ((cnt mod 100)=0) then
begin
while length(str)<6 do
str:=str+' ';
for i:=1 to 6 do
write(chr(8));
stext(15,0);
write(str);
stext(0,0);
end;
end;
str:=itos(cnt-1);
while length(str)<6 do
str:=str+' ';
for i:=1 to 6 do
write(chr(8));
stext(15,0);
write(str);
stext(7,0);
writeln;
writeln;
{ write('Internal File Desc: ');
stext(15,1);
for i:=1 to 32 do
write(' ');
for i:=1 to 32 do
write(chr(8));
readln(work);
stext(7,0);
for i:=1 to length(work) do
header.name[i]:=work[i];}
assign(fout,s2);
rewrite(fout,1);
{ blockwrite(fout,header,55);}
blockwrite(fout,me^[1],finish);
close(fout);
writeln;
writeln;
dispose(me);
end
else
begin
if not(fileexists(s1)) then
write('Could Not Open Input File')
else
write('FORMAT: sam2far <infilename> <outfilename>');
end;
end.