home *** CD-ROM | disk | FTP | other *** search
- PROGRAM PlaySnd;
-
- USES DOS,SBdrv,SBAPI;
-
- VAR ASound : SoundRec;
- F : File;
- PSound : Pointer;
- AnInt : Integer;
- Result1,Result2,More : integer;
-
- BEGIN
- If ParamCount IN [1,2] THEN
- BEGIN
- IF SBAvailable THEN
- BEGIN
- WritelN('SoundBlaster Detected');
- Assign(F,ParamStr(1));
- {$I-}
- Reset(F,1);
- {$I+}
- If IOResult<>0 THEN
- BEGIN
- WriteLn('Error Opening :',ParamStr(1));
- Halt;
- END;
- If FileSize(F) > 65530 THEN
- BEGIN
- Close(F);
- WriteLn('Sound file to big for this program');
- Halt;
- END;
-
- ASound.Frequency := 0;
- If ParamCount = 2 THEN
- BEGIN
- Val(ParamStr(2),ASound.Frequency,Result1);
- If Result1<>0 THEN
- BEGIN
- Writeln('Second Parameter must be numeric');
- WriteLn(ParamStr(2),' NOT VALID');
- Halt;
- END;
- END;
-
- If ASound.Frequency = 0 THEN
- ASound.Frequency := 12000
-
- ELSE
-
- BEGIN
- If ASound.Frequency < 100 THEN
- ASound.Frequency := ASound.Frequency * 1000;
-
- If (ASound.Frequency > 100) and (ASound.Frequency < 1000)
- THEN
- ASound.Frequency := ASound.Frequency * 100;
- END;
-
-
- GetMem(PSound,FileSize(F));
- BlockRead(F,PSound^,FileSize(F));
- With ASound DO
- BEGIN
- SoundData := PSound;
- SndLen := FileSize(F);
- IsPlaying := @AnInt;
- END;
-
- WriteLn('Playing :', ParamStr(1));
- WriteLn('Frequency: ',ASound.Frequency,' Khz');
- PlaySound(ASound);
- Repeat UNTIL NOT SoundPlaying;
- END
- ELSE WriteLn('Sound Blaster NOT FOUND or Driver Load failed');
- END
- ELSE
- BEGIN
- WriteLn(Chr(7));
- WriteLn;
- WriteLn('USAGE: PLAYSND FileName.ext n ');
- WriteLn;
- WriteLn('n = frequency, default 12000');
- WriteLn;
- END;
-
-
- END.
-