Klangeffekte mit
dem C128
Die
SOUND-Anweisung ermöglicht es Ihnen, schnell
und einfach
Ton- oder Klangeffekte wählbarer Frequenz und Dauer zu erzeugen und sie
über den Monitor oder ein Fernsehgerät auszugeben:
SOUND |
Stimme,Frequenz,Dauer[,[Richtung][,[Maxfr][,[Stufe][,[Welle][,Impbr]]]]] |
Die einzelnen Parameter bedeuten:
Stimme –
Sie können von 1 bis 3 wählen:
1 |
Stimme 1 (Ton) |
2 |
Stimme 2 (Ton) |
3 |
Stimme 3 (Ton) |
Frequenz –
Ein ganzzahliger Wert zwischen 0 und 65535 wählt
die Frequenz (s.
Anhang F).
Dauer –
Sagt, wie lange der Ton anhalten soll (in Schritten
von 60stel Sekunden). Ein ganzzahliger Wert zwischen 0
und 32767.
Richtung –
ganzzahliger Wert zwischen 0 und 2.
Maxfr –
ganzzahliger Wert zwischen 0 und 65535.
Stufe –
ganzzahliger Wert zwsichen 0 und 32767.
Welle –
ganzzahliger Wert zwischen 0 und 3 mit folgender
Bedeutung:
0 |
Dreieck |
1 |
Sägezahn |
2 |
Rechteck |
3 |
Rauschen |
Voreingestellt ist 2.
Impbr –
ganzzahliger Wert zwischen 0 und 4095. Bestimmt
das Tastverhältnis.
Nähere Angaben über die
SOUND-Anweisung
entnehmen Sie bitte dem
Kapitel 4.6.
Wollen
sie z.B. einen Ton von 1 Sekunde erzeugen, muß der Wert für die Dauer
von einer Sekunde 60, für 10 Sekunden 600 usw. sein.
Nun probieren Sie bitte folgendes kurzes Programm:
10 VOL 5
20 SOUND 1,512,60
Lassen
Sie das Programm laufen. Der C128 spielt einen kurzen Ton. Die Zeile 10
bestimmt die Lautstärke. Die Zahl 512 in Zeile 20 bestimmt die Frequenz.
Ändern Sie jetzt die Tonhöhe mit folgender Zeile:
30 SOUND 1,1000,60
Sie hören, daß der Ton wesentlich höher ist, als der vorhergehende.
Allerdings werden beide Töne nur eine Sekunde gespielt.
Versuchen Sie folgendes:
40 SOUND 1,0,60
Sie hören den tiefsten Ton, der möglich ist.
Nun durchlaufen Sie die von 0-65535 reichenden Tonhöhen in einer
Schleife (FOR ... NEXT):
50 FOR I=0 TO 65535
60 SOUND 1,I,1
70 NEXT
Dieser Programmteil durchläuft den gesamten definierbaren
Frequenzbereich von unten nach oben.
Ersetzen Sie jetzt die Zeile 60 durch die folgende:
60 SOUND 3,I,1,,,,3
Jetzt
durchläuft das Programm den gesamten Bereich des Rauschgenerators. Die
niedrigen Frequenzen klingen wie Rumpeln, die hohen Frequenzen wie eine
startende Rakete.
Probieren Sie einmal folgende Variante aus. Es
handelt sich dabei um ein Programm, das eine Flugzeugschlacht durch
verschiedene Geräusche simuliert.
10 REM FLUGZEUGSCHLACHT
20 VOL 5
30 FOR I=850 TO 1015
40 SOUND 3,I,1
50 SOUND 1,1015-I,1
60 NEXT
70 SOUND 3,965,60,,,,3
80 FOR I=1023 TO 850 STEP -1
90 SOUND 3,I,1
100 SOUND 1,I-150,1
110 NEXT
120 FOR J=1000 TO 0 STEP -7
130 SOUND 3,J,1
140 NEXT
150 SOUND 3,965,60,,,,3
160 GOTO 30 |
Durch Drücken der STOP-Taste können Sie das Programm beenden.
Im folgenden werden noch einmal die einzelnen Befehlszeilen erläutert:
Zeile 20 |
stellt die
Lautstärke auf 5. |
Zeilen 30-60 |
bewirken das eigentliche Fluggeräusch. Wie Sie
sehen und hören, nimmt die Tonhöhe bei Zeile 30 ab und bei
Zeile 50 zu. |
Zeile 70 |
erzeugt ein Maschinengewehrgeräusch. |
Zeile 80-110 |
produzieren das Geräusch eines abstürzenden
Flugzeugs. Damit der
Absturz realistischer wirkt, setzen die Tonhöhen
unterschiedlich ein
(s. Zeile 90 u. 100). |
Zeilen 120-140 |
erzeugen das Detonationsgeräusch des Flugzeugs beim
Aufprall. |
Zeile 150 |
entspricht der Zeile 70. |
Zeile 160 |
veranlaßt die Programmwiederholung ab Zeile 30. |
Die SOUND-Anweisung ist eigentlich nur dazu
gedacht, musikalische Nebeneffekte zu erzielen. Wollen Sie richtige
Lieder auf ihrem C128 spielen, können Sie andere Befehle nutzen.
Musikerzeugung
mit dem C128
Zum Verändern der Klangfarbe eines Tones können Sie die
ENVELOPE-Anweisung
benutzen. Sie kontrolliert die ADSR-Parameter und die Wellenform.
Das allgemeine Format der ENVELOPE-Anweisung ist wie folgt:
ENVELOPE |
n[,[An][,Ab][,[Ha][,[Au][,[Wf][,[Ib]]]]]]
|
Die
einzelnen Parameter bedeuten:
n - |
Nummer der Hüllkurve (0 bis 9). |
An
- |
Anschlagzeit (0
bis 15). |
Ab
- |
Abschwellzeit (0
bis 15). |
Ha
- |
Haltezeit (0 bis
15). |
Au
- |
Ausklingzeit (0
bis 15). |
Wf
- |
Wellenform:
0 |
Dreieck |
1 |
Sägezahn |
2 |
Rechteck |
3 |
Rauschen |
4 |
Ringmodulation |
|
Ib
- |
Impulsbreite (0
bis 4095). |
Lassen Sie uns die einzelnen Begriffe wie Hüllkurve, Wellenform und
Impulsbreite erläutern:
Die
Hüllkurve ist das Zusammenspiel der einzelnen
Faktoren
(ADSR-Parameter), die den Lautstärkeverlauf eines Tones ausmachen
(Anschlagzeit,
Abschwellzeit, Haltezeit und Ausklingzeit). Eine Gitarre hat z.B.
andere
ADSR-Parameter als eine Flöte.
Unter der
Wellenform versteht man die Art der
Wellen, die z.B. ein
Musikinstrument erzeugt. Sie enstehen durch die Kombination von
musikalischen Harmonischen eines Tones. Harmonische sind das Vielfache
des Grundtones.
Die
Impulsbreiten sind Veränderungen der
Rechteckform, wodurch sich
auch das Verhältnis der Harmonischen zueinander verändert.
Sie sehen also, daß die ENVELOPE-Anweisung die Programmierung der
grundlegenden Musikbestandteile erlaubt.
Der C128 bietet bereits Klangarben für 10 verschiedene
Musikinstrumente, deren ADSR-Parameter bereits voreingestellt sind und
die mit der
ENVELOPE-Anweisung noch verändert werden können. Sie brauchen nur die
entsprechende
Hüllkurven-Nummer einzugeben und der C128 liefert die vorprogrammierten
Parameter
selbst.
Wenn Sie eigene Hüllkurven mit neuen Klangformen erstellen wollen,
müssen Sie die einzelnen Parameter der ENVELOPE-Anweisung ändern.
Weitere Einzelheiten zu den vorprogrammierten Hüllkurven entnehmen Sie
bitte der nachfolgenden Tabelle:
n
|
An
|
Ab
|
Ha
|
Au
|
Wf
|
Ib
|
|
Instrument
|
0 |
0 |
9 |
0 |
0 |
2 |
1536 |
|
Klavier |
1 |
12 |
0 |
12 |
0 |
1 |
|
|
Akkordeon |
2 |
0 |
0 |
15 |
0 |
0 |
|
|
Zirkusorgel |
3 |
0 |
5 |
5 |
0 |
3 |
|
|
Trommel |
4 |
9 |
4 |
4 |
0 |
0 |
|
|
Flöte |
5 |
0 |
9 |
2 |
1 |
1 |
|
|
Gitarre |
6 |
0 |
9 |
0 |
0 |
2 |
512 |
|
Cembalo |
7 |
0 |
9 |
9 |
0 |
2 |
2048 |
|
Orgel |
8 |
8 |
9 |
4 |
1 |
2 |
512 |
|
Trompete |
9 |
0 |
9 |
0 |
0 |
0 |
|
|
Xylophon |
Geben Sie nun die folgende Programmzeile ein.
10 ENVELOPE 9,10,5,10,5,2,4000:PLAY"T9"
Der nächste Schritt bestimmt die Lautstärke ihres Musikprogramms.
20 VOL 8
Die
VOL-Anweisung
gibt die Lautstärke zwischen 0 und 15 an, wobei 0 das Minimum (aus) und
15 das Maximum ist.
Mit der
PLAY-Anweisung
können Sie Noten spielen:
PLAY"Zeichenkette"
Zeichenkette - ist eine
Zeichenkette aus speziellen Buchstabenbefehlen,
die die Tonerzeugung und Abspielfolge festlegen. Die Bedeutung der
einzelnen Parameter entnehmen Sie bitte dem
Kapitel 4.6 (bzw. dem
nachfolgenden Text).
Der nächste Schritt kontrolliert das Spieltempo für die gewünschten
Noten. Die
TEMPO-Anweisung
hilft Ihnen dabei.
Hier ist die allgemeine Form:
TEMPO n
n muß ein ganzzahliger Wert
zwischen 0 und 255 sein. Fehlt in ihrem
Programm dieser Befehl, so setzt der Computer die Länge 16 fest. Die
tatsächliche Dauer berechnet sich:
Dauer = 23.06/
n in Sekunden
Setzen Sie das Tempo = 0, so wird die Note gehalten.
Schreiben Sie nun folgende Programmzeile:
30 TEMPO 100
Es wird jetzt Zeit, zu lernen, wie Sie ein Lied spielen können. Dies
geschieht analog zum PRINT-Befehl, indem Sie die gewünschten Noten bei
der PLAY-Anweisung in Anführungszeichen eingeben.
Mit folgender PLAY-Anweisung spielt der Computer die Tonleiter:
40 PLAY"C D E F G A B"
|
Anm.: Der Note B entspricht im Deutschen die Note H. |
Sie können nun folgende Zeichen vor die einzelnen Noten setzen.
# - |
Die Note wird einen halben Ton höher gespielt. |
$ - |
Die Note wird einen halben Ton niedriger gespielt. |
. - |
verlängert die Note um die Hälfte ihres Wertes. |
Sie können außerdem die Dauer der Töne variieren, indem Sie folgende
Buchstaben vor die einzelnen Noten setzen:
W - |
Die folgende Note wird als ganze Note gespielt. |
H - |
Die folgende Note
wird als halbe Note gespielt. |
Q - |
Die folgende Note
wird als viertel Note gespielt. |
I - |
Die folgende Note
wird als achtel Note gespielt. |
S - |
Die folgende Note
wird als sechzehntel gespielt. |
Durch ein in Anführungsstriche gesetztes "R" erreichen sie, daß der Ton
angehalten wird. [
Hinweis:
Das ist im Handbuch etwas unglücklich formuliert. Gemeint ist ein
R
innerhalb der PLAY-Zeichenkette.
R spielt
eine Pause.]
Es ist weiter möglich, den Synthesizer des C128 durch zusätzliche
Steuerzeichen in der PLAY-Anweisung für unterschiedliche Effekte beim
Abspielen von Musik zu programmieren.
Diese folgen in einer Tabelle:
Kontrollzeichen |
Beschreibung |
Bereich |
Voreinstell. |
|
Un |
Lautstärke |
0 - 9 |
9 |
Tn |
Hüllkurve |
0 - 9 |
0 |
Vn |
Stimme |
1 - 3 |
1 |
Xn |
Filter |
0=aus, 1=an |
0 |
On |
Oktave |
0 - 6 |
4 |
Normalerweise brauchen Sie die Steuerzeichen nicht zu benutzen. Sie
können jedoch damit die Möglichkeiten des Synthesizers erheblich
differenzierter ausschöpfen. Wenn Sie in der PLAY-Anweisung mit
Tn eine
Hüllkurve
definieren, so achten Sie darauf, daß der gewählte Wert die Hüllkurve
betrifft, für
die Sie mit der ENVELOPE-Anweisung Ihre spezifische Parameter gesetzt
haben.
Weil der SID-Chip nur ein Filter hat, wird es bei allen drei Stimmen
genutzt.
Fügen Sie folgende Programmzeilen an Ihr bisheriges Programm und achten
Sie auf den Unterschied zu Zeile 40:
50 PLAY"U5 V1 O5 C D E F G A B"
Diese Zeile spielt ebenfalls die Tonleiter, allerdings ist die
Lautstärke auf 5 heruntergesetzt, die Stimme 1 wurde gewählt und die
Noten werden eine
Oktave (5) höher gespielt. Nun spielt Ihr Programm zwei parallele
Stimmen.
Eine 3. Stimme bei eingeschaltetem Filter können Sie durch die folgende
Zeile erreichen:
60 PLAY"U7 V3 O6 X1 C D E F G A B"
Hier werden noch einmal die einzelnen Zeichen der Zeile 60 kurz erklärt.
U7 - |
setzt die Lautstärke auf 7 |
V3 - |
wählt die 3. Stimme |
O6 - |
setzt die 3. Stimme auf die 6. Oktave |
X1 - |
stellt das Filter an |
Nähere Angaben entnehmen Sie bitte der Beschreibung der
PLAY-Anweisung
in Kapitel 4.6.
Ihr Programm spielt nun alle drei Stimmen. Jede eine Oktave höher als
die vorhergehende.
Bis zu diesem Zeitpunkt haben Sie nur ganze Noten gespielt. In einem
weiteren Programmbeispiel sollen auch halbe, achtel usw. Noten gespielt
werden.
Ändern Sie die Noten, indem Sie die oben genannten Buchstaben einfügen:
70 PLAY"U7 V2 O6 X1 H CD Q EF I GA S B"
Zeile 70 spielt in der 6. Oktave mit der Stimme 2 in der Lautstärke 7.
Das Filter ist eingeschaltet.
Hier eine Erläuterung der zusätzlichen Steuerzeichen in der
PLAY-Anweisung:
C und D werden als halbe Noten gespielt.
E und F werden als viertel Noten gespielt.
G und A werden als achtel Noten gespielt.
B wird als sechzehntel Note gespielt.
Nun ergänzen Sie die Noten, indem Sie die Töne um eine halbe Oktave
erhöhen, erniedrigen oder die Töne verlängern:
80 PLAY"U8 V0 O4 X0 . H CD Q# EF I$ GA . S# B"
C und D werden als halbe Noten um die Hälfte ihres Wertes verlängert.
E und F werden als viertel Noten eine halbe Oktave höher
gespielt.
G und A werden als achtel Noten eine halbe Oktave niedriger
gespielt.
B wird um die Hälfte des Wertes verlängert und einen halben
Ton höher gespielt.
Wenn Sie schon die Wellenform, ADSR-Parameter, Lautstärke und Tempo
gewählt haben, sollten Sie nun das Filter wählen. Die FILTER-Anweisung
verändert ebenfalls Klangfarbe und -höhe.
Das im SID eingebaute Filter gibt Ihnen die Möglichkeit die Wellenform
hervorzuheben oder zu eleminieren. Damit ändert das Filter das Timbre
(Klangfarbe) eines Tons.
Der SID-Chip kann drei verschiedene Filtertypen simulieren:
1. Tiefpaß Filter
2. Hochpaß Filter
3. Bandpaß Filter
|
Der Tiefpaß schneidet alle Frequenzen ab,
die oberhalb der Grenzfrequenz liegen und läßt alle Töne
durch, die unterhalb liegen. Der Ton klingt voluminös bis
dumpf. |
|
Analog dazu läßt der Hochpaß nur Frequenzen durch,
die oberhalb der Grenzfrequenz liegen. Die darunterliegenden
werden abgeschnitten. Der Ton klingt dünn bis scharf. |
|
Der Bandpaß läßt nur Frequenzen durch,
die oberhalb
einer unteren und unterhalb einer oberen Grenzfrequenz liegen.
Der Ton klingt hohl oder wie ein Stimmlaut. |
Die
FILTER-Anweisung
legt die Grenzfrequenz, den Filtertyp sowie die
Resonanz fest.
Die allgemeine Form lautet:
FILTER |
[Freq][,[Typ][,[Bp][,[Hp][,[Res]]]]]
|
Die Erklärung der einzelnenen Parameter:
Freq |
Ein ganzzahliger Wert zwischen 0 und 2047, der
die Filterfrequenz festlegt.
|
Tp |
schaltet den Tiefpaß
(0 = aus, 1 = an)
|
Bp |
schaltet den Bandpaß
(0 = aus, 1 = an)
|
Hp |
schaltet den Hochpaßfilter
(0 = aus, 1 = an)
|
Res |
Ein ganzzahliger Wert zwischen 0 und 15, der die
Resonanz festlegt. |
Ergänzen Sie ihr Programm um die folgende Zeile:
35 FILTER 1023,1,0,0,10
Die Zeile 35 setzt die Grenzfrequenz auf 1023 und schaltet das
Tiefpaßfilter ein. Das Hochpaßfilter und der Bandpaß werden
ausgeschaltet. Außerdem wird die Resonanz auf 10 eingestellt. Hören
sie, wie die Töne klingen.
Jetzt ändern Sie die Zeile 35 wie folgt:
35 FILTER 1023,0,1,0,10
Dies bewirkt, daß das Tiefpaßfilter aus und gleichzeitig das
Bandpaßfilter eingeschaltet wird. Hören Sie sich jetzt noch einmal die
Töne an.
Ändern Sie die Zeile 35 wie folgt ab:
35 FILTER 1023,0,0,1,10
Achten Sie auf den Unterschied, wenn ein Filter nach dem anderen
ausgeschaltet wird. Experimentieren Sie noch ein wenig mit den
einzelnen Filtern. Hier sind einige Beispiele für Filterbefehle mit
anderem Grenzfrequenzen.
35 FILTER 2000,0,0,1,15
35 FILTER 1500,0,1,0,5
35 FILTER 1000,1,0,0,8
Das erste Beispiel setzt die Grenzfreuenz auf 2000 und wählt die
Resonanz 15. Das Hochpaßfilter ist eingeschaltet.
Das zweite Beispel setzt die Grenzfrequenz auf 1500, legt die Resonanz
auf 5 fest und schaltet das Bandpaßfilter ein.
Beim dritten Beispiel ist die Grenzfrequenz auf 1000 festgelegt und die
Resonanz auf 8. Das Tiefpaßfilter ist eingeschaltet.