ENVELOPE (BASIC 7.0)

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


ENVELOPE (BASIC 7.0)
Syntax: ENVELOPE <n>, [<A>], [<D>], [<S>], [<R>], [<Wellenform>], [<Impulsbreite>]
Parameter
<n>: numerischer Ausdruck im Wertebereich von 0 bis 9
<A>: numerischer Ausdruck im Wertebereich von 0 bis 15
<D>: numerischer Ausdruck im Wertebereich von 0 bis 15
<S>: numerischer Ausdruck im Wertebereich von 0 bis 15
<R>: numerischer Ausdruck im Wertebereich von 0 bis 15
<Wellenform>: numerischer Ausdruck im Wertebereich von 0 bis 4
<Impulsbreite>: numerischer Ausdruck im Wertebereich von 0 bis 4095
Einordnung
Typ: Anweisung
Kontext: Tonerzeugung
Aufgabe: Ändern der Klangeinstellungen für die Musikausgabe mit PLAY
Abkürzung: eN
Token: $fe $0a (254 10)
Verwandte Befehle
FILTER, PLAY, TEMPO, VOL

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

Die Anweisung ENVELOPE (engl. für Hülle, Hüllkurve) dient zum Ändern der Klangeinstellungen für die Musikausgabe mit PLAY. Definiert werden kann die Hüllkurve sowie die Wellenform.

Der Befehl verfügt über 7 Parameter, wobei bis auf den ersten alle optional sind. Optionale Parameter können durch ein Komma ersetzt werden. Die Parameterliste muss aber stets mit einem angegeben Wert abschließen (d.h. maximal 6 aufeinanderfolgende Kommas sind möglich), sonst wird mit einem ?SYNTAX ERROR abgebrochen.

  • <n>: Gibt die zu modifizierende Instrumentendefinition an. Erlaubt sind die Werte von 0 bis 9. Dieser Parameter muss angegeben werden.
  • <A>,<D>, <S>, <R>: Bestimmt die Hüllkurvenkomponenten Attack, Decay, Sustain und Release. Erlaubt sind die Werte von 0 bis 15. Für die Bedeutung der Parameter, siehe ADSR.
  • <Wellenform>: Die Wellenform, die der Ton haben soll. Zulässig sind die Werte 0 (Dreieck), 1 (Sägezahn), 2 (Rechteck), 3 (Rauschen), 4 (Ringmodulation).
  • <Impulsbreite>: Dieser Parameter bestimmt bei einer Rechteckwelle die Impulsbreite, bei den anderen Wellenformen ist er bedeutungslos. Die Impulsbreite darf einen Wert von 0 bis 4095 annehmen, wobei bei den Extremwerten kein Ton ausgegeben wird, bei 2048 wird eine symmetrische Rechteckwelle erzeugt.

Parameterwerte außerhalb der angegebenen Geltungsbereiche führen zu einem ?ILLEGAL QUANTITY ERROR bzw. Werte mit falschem Datentyp zur Meldung ?TYPE MISMATCH ERROR.

Der C128 hat folgende 10 vordefinierte Instrumentendefinitionen:
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
-

Diese Werte werden bei einem Reset oder bei Betätigen von RUN/STOP +RESTORE  initialisiert, aber nicht durch RUN. Daher sollten beim Starten eines Programms die Instrumentendefinitionen initialisiert werden, entweder mittels ENVELOPE oder durch Aufruf der Systemroutine CHIME, z.B. mittels BANK 15:SYS DEC("4112"). Die Systemroutine beendet zusätzlich alle laufenden Sound-Ausgaben und initialisiert neben den ENVELOPE-Definitionen auch den SID.

Beispiele[Bearbeiten | Quelltext bearbeiten]

ENVELOPE 3,,,,,4
PLAY "V1 T3 O0":FOR I=1 TO 3:PLAY "WA HR":NEXT

Ändert die Wellenform von Instrument 3 (Trommel) auf Ringmodulation. Der anschließend damit abgespielte Ton klingt wie das Läuten eines Telefons.