PLAY (BASIC 7.0)

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Begriffsklärung Der Titel dieses Artikels ist mehrdeutig. PLAY (Begriffsklärung).


PLAY (BASIC 7.0)
Syntax: PLAY <Tonfolge>
Parameter
<Tonfolge>: Zeichenkettenausdruck
Einordnung
Typ: Anweisung
Kontext: Tonerzeugung
Aufgabe: Abspielen von Musiknoten
Abkürzung: pL
Token: $fe $04 (254 4)
Verwandte Befehle
ENVELOPE, FILTER, SOUND, TEMPO, VOL

Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl PLAY ab Commodore BASIC V7.0 oder höher.


Die Anweisung PLAY spielt die im Zeichenketten-Parameter Tonfolge definierten Musiknoten ab. Zusätzliche Steuerzeichen ermöglichen die Auswahl vorgegebener Hüllkurven, Lautstärkeänderungen und Tempovorgaben oder die Verwendung von Filtern. Damit sind in Hinblick auf Musikwiedergabe die Fähigkeiten des SID grundlegend abgedeckt. Der Gebrauch ist im Gegensatz zum SOUND-Befehl nahezu ohne jegliche Vorkenntnisse und Details hinsichtlich Tongenerierung auf einfachste Weise möglich.

Sofern nicht anders bestimmt, sind die zuletzt mittels TEMPO, VOL, FILTER und ENVELOPE gemachten Einstellungen maßgebend.

Eine einzelne Aktion aus der in der Zeichenkette enthaltenen Sequenz wird vorerst im Hintergrund abgearbeitet und das BASIC-Programm läuft weiter, außer für die gewählte Stimme folgt eine weitere Aktion oder es ist noch eine Aktion aktiv. Das heißt, unmittelbar nach dem Einsetzen des letzten Tons oder nach Start der letzten Aktion gemäß Tonfolge, setzt die Programmausführung bereits beim nächsten BASIC-Kommando fort.

Der Parameter Tonfolge muss gegeben und alleine sein, andernfalls kommt es zur Fehlermeldung ?SYNTAX ERROR. Ist das Argument nicht vom Typ Zeichenkette wird mit ?TYPE MISMATCH ERROR abgebrochen. Die Zeichenkette kann auch leer sein, darf aber - wie bei Zeichenketten technisch vorgegeben - eine Länge von 255 Zeichen nicht überschreiten.

Die Zeichen in der Zeichenkette Tonfolge haben folgende Bedeutung (in Klammer die jeweilige englische Herkunft):

Zeichen
bzw.
Zeichensequenz
Bedeutung
C D E F G A B Note C, D, E, F, G, A, H (dt. für das engl. B), siehe Tonleiter[1]
W (whole) Folgende Noten werden als ganze Noten gespielt.
H (half) Folgende Noten werden als halbe Noten gespielt.
Q (quarter) Folgende Noten werden als viertel Noten gespielt.
I (eighth) Folgende Noten werden als achtel Note gespielt.
S (sixteenth) Folgende Noten werden als sechzehntel Noten gespielt.
M (playing to end the current measure) Wartet bis die letzte Note fertig gespielt hat.
R (rest) Entsprechend der gerade gewählten Notendauer eine Pause einlegen.
#<Note> (sharp) Die unmittelbar folgende Note wird um einen halben Ton höher gespielt.
$<Note> (flat) Die unmittelbar folgende Note wird um einen halben Ton niedriger gespielt.
.<Note> (dotted) Die unmittelbar folgende Note wird um die Hälfte länger gespielt.
U<Ziffer> (volume) Ein Wert von 0-9 setzt die Lautstärke wie VOL, allerdings skaliert auf den Wertebereich 0-9.
Voreinstellung: 9
Abbildung auf die Lautstärke gemäß VOL-Befehl: (Ziffer -> VOL-Lautstärke)
  • 0 -> 0
  • 1 -> 1
  • 2 -> 3
  • 3 -> 5
  • 4 -> 7
  • 5 -> 8
  • 6 -> 10
  • 7 -> 13
  • 8 -> 14
  • 9 -> 15
T<Ziffer> (tune) Eine Ziffer von 0-9 eine der vorgegebenen Hüllkurven für die aktuelle Stimme.
Voreinstellung: 0
V<Ziffer> (voice) Ein Wert von 1-3 wählt die aktuelle Stimme aus, auf die sich folgende Angaben beziehen.
Voreinstellung: 1
X<Ziffer> 0: Filter aus, 1: Filter ein (laut letztem FILTER-Aufruf)
Voreinstellung: 0
O<Ziffer> (octave) Die Ziffer im Bereich 0-6 wählt eine der 7 möglichen Oktaven.
Voreinstellung: 4
" " (Leerzeichen) Werden ignoriert.

Die Verwendung anderer Zeichen löst ein ?ILLEGAL QUANTITY ERROR aus.

  • Lautstärke ist vorgegeben durch den letzten VOL-Aufruf oder vom zuletzt vorgekommenen PLAY-Steuerzeichen "U".
  • Das Tempo bzw. die Notendauer bestimmt der letzte TEMPO-Aufruf.
  • Ein Filter gemäß FILTER-Befehl wird wirksam, wenn mit PLAY-Steuerzeichensequenz "X1" der Filter aktiv ist.
  • Die Hüllkurve des letzten ENVELOPE-Aufrufs oder einer mit der PLAY-Steuerzeichensequenz "T<Ziffer>" gewählten ist aktiv.

Hüllkurven[Bearbeiten | Quelltext bearbeiten]

Die bereits fest vorgegebenen Hüllkurven des PLAY-Kommandos:
Zu den Hüllkurvenparametern A, D, S, R siehe Details. Werte in Klammern haben auf den Klang keinen Einfluss.

Hüllkurvennummer
Klang
A
Anschlagzeit
D
Abschwellzeit
S
Haltepegel
R
Ausklangzeit
Wellenform Impulsbreite
0
Klavier
0
2 ms
9
0,75 s
0 (0)
(6 ms)
2
Rechteck
1536
1
Akkordeon
12
1 s
0
6 ms
12 0
6 ms
1
Sägezahn
-
2
Zirkusorgel
0
2 ms
(0)
(6 ms)
15 0
6 ms
0
Dreieck
-
3
Trommel
0
2 ms
5
168 ms
5 0
6 ms
3
Rauschen
-
4
Flöte
9
0,25 s
4
114 ms
4 0
6 ms
0
Dreieck
-
5
Gitarre
0
2 ms
9
0,75 s
2 1
24 ms
1
Sägezahn
-
6
Cembalo
0
2 ms
9
0,75 s
0 (0)
(6 ms)
2
Rechteck
512
7
Orgel
0
2 ms
9
0,75 s
9 0
6 ms
2
Rechteck
2048
8
Trompete
8
0,1 s
9
0,75 s
4 1
24 ms
2
Rechteck
512
9
Xylophon
0
2 ms
9
0,75 s
0 (0)
(6 ms)
0
Dreieck
-

Wellenformen[Bearbeiten | Quelltext bearbeiten]

Wellenformnummer Wellenform
0 Dreieck
1 Sägezahn
2 Rechteck
3 Rauschen


Beispiel[Bearbeiten | Quelltext bearbeiten]

10 TEMPO 50
20 PLAY "V1 T7 C D E F G A B"

Tonleiter im Orgelstil bei halber Lautstärke flott abspielen.


Referenzen[Bearbeiten | Quelltext bearbeiten]