home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / sound / digpak / playsnd.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-02-21  |  2.4 KB  |  88 lines

  1. PROGRAM PlaySnd;
  2.  
  3. USES DOS,SBdrv,SBAPI;
  4.  
  5. VAR ASound : SoundRec;
  6.          F : File;
  7.     PSound : Pointer;
  8.     AnInt  : Integer;
  9.     Result1,Result2,More   : integer;
  10.   
  11.   BEGIN
  12.     If ParamCount IN [1,2] THEN 
  13.        BEGIN
  14.          IF SBAvailable THEN
  15.             BEGIN
  16.               WritelN('SoundBlaster Detected');
  17.               Assign(F,ParamStr(1));
  18.               {$I-}
  19.               Reset(F,1);
  20.               {$I+}
  21.               If IOResult<>0 THEN
  22.                  BEGIN 
  23.                    WriteLn('Error Opening :',ParamStr(1));
  24.                    Halt;
  25.                  END;
  26.               If FileSize(F) > 65530 THEN
  27.                  BEGIN
  28.                    Close(F);
  29.                    WriteLn('Sound file to big for this program');
  30.                    Halt;
  31.                  END;
  32.  
  33.               ASound.Frequency := 0;
  34.               If ParamCount = 2 THEN
  35.                  BEGIN
  36.                    Val(ParamStr(2),ASound.Frequency,Result1);
  37.                    If Result1<>0 THEN
  38.                       BEGIN
  39.                         Writeln('Second Parameter must be numeric');
  40.                         WriteLn(ParamStr(2),' NOT VALID');
  41.                         Halt;
  42.                       END;
  43.                  END;
  44.  
  45.               If ASound.Frequency = 0 THEN
  46.                  ASound.Frequency := 12000
  47.  
  48.               ELSE
  49.  
  50.                 BEGIN
  51.                   If ASound.Frequency < 100 THEN
  52.                      ASound.Frequency := ASound.Frequency * 1000;
  53.  
  54.                   If (ASound.Frequency > 100) and (ASound.Frequency < 1000)
  55.                      THEN
  56.                        ASound.Frequency := ASound.Frequency * 100;
  57.                 END;
  58.  
  59.  
  60.               GetMem(PSound,FileSize(F));
  61.               BlockRead(F,PSound^,FileSize(F));
  62.               With ASound DO
  63.                    BEGIN
  64.                      SoundData := PSound;
  65.                      SndLen := FileSize(F);
  66.                      IsPlaying := @AnInt;
  67.                    END;
  68.  
  69.        WriteLn('Playing :', ParamStr(1));
  70.        WriteLn('Frequency: ',ASound.Frequency,' Khz');
  71.        PlaySound(ASound);
  72.        Repeat UNTIL NOT SoundPlaying;
  73.      END
  74.   ELSE WriteLn('Sound Blaster NOT FOUND or Driver Load failed');
  75.  END
  76. ELSE 
  77.   BEGIN
  78.    WriteLn(Chr(7));
  79.    WriteLn;
  80.    WriteLn('USAGE: PLAYSND FileName.ext n ');
  81.    WriteLn;
  82.    WriteLn('n = frequency,  default 12000');
  83.    WriteLn;
  84.   END;
  85.       
  86.  
  87. END.
  88.