home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d586 / opus8.lha / Opus8 / source.lzh / Opus8.p < prev   
Text File  |  1991-10-18  |  2KB  |  79 lines

  1. PROGRAM Opus8;                                     {jOhn Safranek}
  2.         {    (C)1991 Underground Softworks     }
  3. {Converts Macintosh 8-bit sound files to Amiga 8SVX format.}
  4.  
  5. TYPE
  6.   SArray    = ARRAY [1..4] OF CHAR;
  7.  
  8. VAR
  9.   InFileName  : STRING;
  10.   InFile      : TEXT;
  11.   OutFileName : STRING;
  12.   OutFile     : TEXT;
  13.   Hz          : SHORT;
  14.   MacLength   : INTEGER;
  15.   Czech       : BOOLEAN;
  16.   SampleChunk : ARRAY [1..1000] OF CHAR;
  17.   ASample,
  18.   ChunkLength,
  19.   CounterMain,
  20.   CounterAux  : SHORT;
  21.  
  22. {$I "Include:Libraries/DOS.i"} {Needs a few AmigaDOS routines.}
  23. {$I "Opus8.i"} {Has the External references, procedures, and functions.}
  24.  
  25. BEGIN {Main Program}
  26. {Get info from the CommandLine}
  27.   InFileName := AllocString(80);
  28.   OutFileName := AllocString(80);
  29.   GetParam(1, InFileName);
  30.   IF InFileName[0] = CHR(0)
  31.     THEN Usage;
  32.   GetParam(2, OutFileName);
  33.   IF OutFileName[0] = CHR(0)
  34.     THEN Usage;
  35.   Hz := GetHz(3);
  36.   MacLength := FileSize(InFileName);
  37. {Open the Files}
  38.   Czech := REOPEN(InFileName, InFile);
  39.   IF NOT Czech
  40.     THEN NoFile;
  41.   Czech := OPEN(OutFileName, OutFile);
  42.   IF NOT Czech
  43.     THEN CannotOpen;
  44.   WriteTheHeader(Hz, MacLength);
  45.   WRITELN;
  46.   WRITELN('Opus8 - the Mac to Amiga sound converter by jOhn Safranek');
  47.   WRITELN;
  48. {Now let's start converting this puppy. No!, what's on second. Who's on first.}
  49.   WRITELN('Converting ', InFileName, ' to ', OutFileName,'.');
  50.   WRITELN('The Mac file is ', MacLength,' bytes long at ', Hz,' samples per second.');
  51.   WRITELN;
  52.   WRITE('Please wait');
  53.   WHILE MacLength > 0 DO
  54.   BEGIN {WHILE..DO}
  55.     ChunkLength := 1000;
  56.     IF MacLength > ChunkLength
  57.       THEN MacLength := MacLength - ChunkLength
  58.       ELSE
  59.       BEGIN {IF..THEN..ELSE}
  60.         ChunkLength := MacLength;
  61.         MacLength := 0;
  62.       END;  {IF..THEN..ELSE}
  63.     FOR CounterAux := 1 TO ChunkLength DO
  64.       READ(InFile, SampleChunk[CounterAux]);
  65.     WRITE('.');
  66.     FOR CounterAux := 1 TO ChunkLength DO
  67.     BEGIN {FOR..DO}
  68.       ASample := (ORD(SampleChunk[CounterAux]) - 128);
  69.       IF ASample < 0 THEN
  70.         ASample := ASample + 256;
  71.       SampleChunk[CounterAux] := CHR(ASample);
  72.     END;  {FOR..DO}
  73.     FOR CounterAux := 1 TO ChunkLength DO
  74.       WRITE(OutFile, SampleChunk[CounterAux]);
  75.   END;  {WHILE..DO}
  76.   WRITELN;
  77.   WRITELN('Done. Thanks for making a small program happy.');
  78. END.  {Main Program}
  79.