PLAY
PLAY | |
Syntax: | PLAY <n> |
Parameter | |
n: Abspielmodus (0..2) | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Soundkontrolle |
Aufgabe: | Abspielen der Musik |
Abkürzung: | keine |
Token: | $64 $21 (100 33) |
Verwandte Befehle | |
WAVE - ENVELOPE - MUSIC - VOL |
Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort PLAY.
Typ: Anweisung
Syntax: PLAY <n>
PLAY startet das Abspielen des mit MUSIC definierten Musikstücks (er setzt dazu das Gate-Bit, siehe auch WAVE).
Der Parameter <n> steuert dabei die Art und Weise, wie der Interpreter abspielt:
n = 1 : Simons' Basic wartet, bis das Musikstück zu Ende ist und fährt erst danach im Programm fort. Durch Aneinanderreihung von mehreren MUSIC-Befehlen kann man damit beliebig lange Musikstücke spielen.
n = 2 : Simons' Basic setzt den Programmlauf ohne anzuhalten fort (Interrupt-Betrieb). Das Stück spielt im Hintergrund, während das Programm weiter läuft. Es ist dabei nur ein MUSIC-Befehl anwendbar.
n = 0 : Hiermit beendet Simons' Basic den Interrupt-Betrieb. Entgegen den Angaben im Handbuch läuft die Musik weiter, jedoch nicht mehr parallel zum Programm, sondern wie nach PLAY 1.
Bei einem Programmabbruch endet auch die Abarbeitung des MUSIC-Strings und der zuletzt angeschlagene Ton bleibt aktiv. Mit WAVE <stimme>,00000000
kann man ihn verstummen lassen (in TSB: WAVE <stimme>,0
).
Wird kein Parameter eingegeben, so erscheint die Fehlermeldung ?SYNTAX ERROR. Der Interpreter akzeptiert Werte für <n> zwischen 0 und 255, wobei alle Werte außer 1 und 2 wie 0 behandelt werden. Werte außerhalb des Bereichs werden mit dem Fehler ?ILLEGAL QUANTITY ERROR quittiert.
In TSB kann man statt PLAY 0
auch PLAY OFF
verwenden. PLAY ON
schaltet die Musik wieder im Hintergrund spielend ein (also entsprechend n = 2).
Beachten: Da PLAY davon ausgeht, dass in MUSIC eine abspielende Stimme festgelegt wurde, stürzt Simons' Basic ab, wenn dies nicht erfolgt ist (behoben in TSB).
Beispiele[Bearbeiten | Quelltext bearbeiten]
Ein Anwendungsbeispiel findet sich beim Simons-Basic-Befehl MOB SET Beispiel 2.
Beispiel 1: PLAY 1[Bearbeiten | Quelltext bearbeiten]
100 VOL 15 110 ENVELOPE 1,1,8,10,10 120 WAVE 1, 00100000 130 MUSIC 150, "{clear}1c2{f2}{clr}g" 140 PLAY 1 150 VOL 0
Der Befehl VOL 0
wird erst durchgeführt, wenn das Abspielen der Musik beendet ist.
Beispiel 2: PLAY 2[Bearbeiten | Quelltext bearbeiten]
Im folgenden Beispiel, das (wenig verändert) aus dem Trainingsbuch zum Simon's Basic stammt, wird die Stimme im Interrupt abgespielt und angepasst dazu der Text am Bildschirm ausgegeben. Der Wert 1815 in Zeile 610 muss daher mitgeändert werden, wenn man das Tempo des Stücks (in Zeile 370 den Wert 10) verändert.
100 REM quelle: das trainingsbuch zum simon's basic s.361 110 REM" korrigiert von A. Dettke 120 REM ### music/play-beispiel ### 190 REM ### ade zur guten nacht ### 220 REM 240 REM 250 REM noten 260 REM 270 a$="{clr}1c4{f3}f4{f7}g4{f3}{cbm-b}4{f3}a4{f3}xa4{f1}g4{f1}f4{f3}g4{f3}a4{f7}{cbm-b}4{f3}d5{f3}c5{f3}xc5{f1}{cbm-b}4{f1}a4{f3}" 280 a$=a$+"c5{f3}xc5{f3}{cbm-b}4{f1}a4{f1}{cbm-b}4{f3}c5{f3}a4{f7}zz{f3}" 290 b$="c5{f3}a4{f7}c5{f3}f5{f3}d5{f3}xd5{f1}c5{f1}{cbm-b}4{f3}x{cbm-b}4{f3}g4{f7}{cbm-b}4{f3}d5{f3}c5{f3}x" 300 b$=b$+"c5{f1}{cbm-b}4{f1}a4{f3}c5{f3}xc5{f3}{cbm-b}4{f1}a4{f1}{cbm-b}4{f3}c5{f3}a4{f7}zz{f3}{clr}g" 320 REM 325 VOL 15 : REM lautstaerke 330 REM dreieck : 340 ENVELOPE 1,4,5,5,9 350 WAVE 1,00010000 360 REM 370 MUSIC 10,a$ + b$ + b$ 380 PLAY 2 390 REM" textausgabe (synchronisiert auf Tempo 10) 400 PRINT CHR$(147): CSET 1 410 PRINT "Ade zur gu-ten Nacht," 420 EXEC warte 430 PRINT "jetzt wird der Schluss gemacht," 440 REM 450 EXEC warte 460 PRINT " dass ich muss schei-den." 470 EXEC warte 480 FOR x=1 TO 2 490 PRINT 500 PRINT "Im Sommer, da waechst der Klee," 510 EXEC warte 520 PRINT "im Winter, da schneit's den Schnee," 530 EXEC warte 540 PRINT " da komm ich wie-der." 550 EXEC warte 560 NEXT x 570 WAVE 1,0: PLAY 0: VOL 0 590 END 600 PROC warte 610 FOR w=1 TO 1815 : NEXT w 620 END PROC
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE