1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-03 15:51:20 +00:00
QB64-PE/tests/qbasic_testcases/misc/audio.bas
Matthew Kilgore 9ee89d6ff4 Add QBasic tests
These tests use a variety of sample code (with some of the larger files
removed, so they are not complete!) and verifies that they all compile
successfully.
2022-04-28 23:00:07 -04:00

128 lines
2.1 KiB
QBasic

DEFLNG A-Z
WIDTH 80, 50
COLOR 15
CLS
PRINT "QB64 AUDIO (ESC=QUIT, H=SELECT HANDLE)"
PRINT "Basics: O=OPEN C=CLOSE ENTER=PLAY S=STOP L=LOOP"
PRINT "Extras: V=VOL B=BAL SPACE=PAUSE A=SETPOS Z=COPY"
PRINT "Info: Q=PLAYING&GETPOS W=LEN P=PAUSED"
PRINT "Macros: F=PLAYFILE X=PLAYCOPY"
PRINT STRING$(80, "_")
VIEW PRINT 8 TO 50
LOCATE , , 1
DO
SLEEP 'lowers CPU usage
k$ = UCASE$(INKEY$)
IF k$ = CHR$(27) THEN END
IF k$ = "H" THEN
h2 = h
INPUT "handle=", h
IF h = 0 THEN PRINT "Invalid handle": h = h2
END IF
IF k$ = "O" THEN
PRINT "handle=_SNDOPEN(filename$,[requirements$])"
INPUT ; "handle=_SNDOPEN(", f$, r$
PRINT ")"
h2 = h
h=_SNDOPEN(f$, r$)
IF h=0 THEN
IF h2 THEN h = h2
PRINT "Failed"
ELSE
PRINT "handle="; h
END IF
END IF
IF k$ = "C" THEN
PRINT "_SNDCLOSE"; h
_SNDCLOSE h
END IF
IF k$ = CHR$(13) THEN
PRINT "_SNDPLAY"; h
_SNDPLAY h
END IF
IF k$ = "S" THEN
PRINT "_SNDSTOP"; h
_SNDSTOP h
END IF
IF k$ = "L" THEN
PRINT "_SNDLOOP"; h
_SNDLOOP h
END IF
IF k$ = "V" THEN
PRINT "_SNDVOL handle&,volume!{0-1}"
PRINT "_SNDVOL"; h; ",";
INPUT "", volume!
_SNDVOL h, volume!
END IF
IF k$ = "B" THEN
PRINT "_SNDBAL handle&,[x!],[y!],[z!]"
PRINT "_SNDBAL"; h; ",";
INPUT "", x!, y!, z!
_SNDBAL h, x!, y!, z!
END IF
IF k$ = " " THEN
PRINT "_SNDPAUSE"; h
_SNDPAUSE h
END IF
IF k$ = "A" THEN
PRINT "_SNDSETPOS handle&,offsetinseconds!"
PRINT "_SNDSETPOS"; h; ",";
INPUT "", offset!
_SNDSETPOS h, offset!
END IF
IF k$ = "Z" THEN
PRINT "handle=_SNDCOPY("; h; ")"
h2 = _SNDCOPY(h)
if h2 then
h = h2
PRINT "handle="; h
ELSE
PRINT "Failed"
END IF
END IF
IF k$ = "Q" THEN
PRINT "PRINT _PLAYING("; h; ")"
PRINT _SNDPLAYING(h)
PRINT "PRINT _GETPOS("; h; ")"
PRINT _SNDGETPOS(h)
END IF
IF k$ = "W" THEN
PRINT "PRINT _SNDLEN("; h; ")"
PRINT _SNDLEN(h)
END IF
IF k$ = "P" THEN
PRINT "PRINT _SNDPAUSED("; h; ")"
PRINT _SNDPAUSED(h)
END IF
IF k$ = "F" THEN
PRINT "_SNDPLAYFILE filename$,sync%{0/1},volume!{0-1}"
INPUT "_SNDPLAYFILE ", filename$, sync%, volume!
_SNDPLAYFILE filename$, sync%, volume!
END IF
IF k$ = "X" THEN
PRINT "_SNDPLAYCOPY"; h
_SNDPLAYCOPY h
END IF
LOOP