C128 NetLex

Commodore 128 Bedienungshandbuch
Commodore 128 System Guide



4. C128-Modus

4.8 Klänge und Musik mit dem C128

Der C128 hat im Vergleich zu anderen Microcomputern eine äußerst leistungsfähigen Musik- und Geräusch-Synthesizer. Der Klangbaustein (SID-Chip) befähigt den C128, drei verschiedene Töne gleichzeitig zu erzeugen. Jeder Ton kann außerdem in vier verschiedenen Klangfarben gespielt werden. Der Synthesizer erlaubt programmierbare Anschlagzeit, Abschwellzeit, Haltezeit und Ausklingzeit (ADSR-Parameter) und hat die Fähigkeit, bestimmte Töne hervorzuheben oder auszublenden. Außerdem besitzt der SID ein programmierbares Filter, mit dem Klänge und Geräusche verändert werden können.

Um die Möglichkeiten des SID-Bausteins voll zu nutzen, bietet das BASIC 7.0 des C128 eine Reihe neuer Anweisungen. Sie machen das Programmieren von Musik schneller und einfacher.

Um Ihre eigenen "Videoclips" zu erstellen, können Sie jetzt Ihre Grafikprogramme mit eigener Musik kombinieren. Dies sind die neuen Musik-Anweisungen dafür:

SOUND
ENVELOPE
VOL
TEMPO
PLAY
FILTER


Wie in den vorherigen Abschnitten wird jeder einzelne Befehl kurz erklärt. Im Laufe dieser Beschreibungen entsteht dann wieder ein kleines Programm.


Unterkapitel:

Klangeffekte mit dem C128
Geräusche und Musik im C128-Modus
Musikerzeugung mit dem C128
Schreiben eines Musikprogramms
Weitere Möglichkeiten des Filters


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.


Geräusche und Musik im C128-Modus

Zu Beginn einige Grundlagen:

Jeder Ton, den sie hören, ist eine durch die Luft übertragene Welle. Diese Tonwelle bewegt sich mit einer bestimmten Geschwindigkeit (Frequenz).

Anmerkung: Die hier im vorstehenden Satz versuchte Erklärung des Begriffs Frequenz ist etwas verwirrend. Eine Tonwelle hat eine Ausbreitungsgeschwindigkeit mit der sie sich im Raum "bewegt" (Wikipedia: Schallgeschwindigkeit) und eine Schwingungshäufigkeit (Wikipedia: Frequenz).

Frequenz


Die Klangfarbe der Töne wird durch ihre Wellenform bestimmt.

Der C128 kann vier verschiedene Wellenformen erzeugen:

• Dreieck Wellenformen
• Sägezahn
• Rechteck
• Rauschen



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

Tiefpass

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.


Hochpass
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.


Bandpass 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.


Schreiben eines Musikprogramms

Lassen Sie uns einmal die einzelnen Bestandteile eines Musikprogramms zusammenfügen.

Hier ist ein Beispielprogramm:

10 ENVELOPE 9,10,5,10,5,2,4000:PLAY"T9"
20 VOL 8
30 TEMPO 30
35 FILTER 1024,0,1,0,10
40 PLAY"C D E F G A B"
50 PLAY"U5 V1 O5 C D E F G A B"
60 PLAY"U7 V2 O6 X1 C D E F G A B"
70 PLAY"U7 V2 O6 X1 H CD Q# EF I$ GA . S# B"
80 PLAY"U8 V1 O4 X0 . H CD Q# EF I$ GA . S# B"

Es folgt eine systematische Erklärung der einzelnen Programmzeilen.

Zeile 10 wählt die Hüllkurve 9. Die PLAY-Anweisung übernimmt die neuen ADSR-Parameter.
Zeile 20 setzt die Lautstärke auf die Stufe 8.
Zeile 30 bestimmt das Tempo.
Zeile 35 filtert die Noten der Zeilen 60-70. Die Grenzfrequenz wird bei 1024 festgelegt. Das Hochpaßfilter wird eingeschaltet und die Resonanzfrequenz bei 10 festgelegt.
Zeile 40 spielt die Noten C D E F G A B (Tonleiter).
Zeile 50 spielt die gleichen Noten wie Zeile 40. Setzt die Oktave und die Lautstärke auf 5 fest.
Zeile 60 spielt die gleichen Noten wie in Zeile 40 und 50, nur mit geänderter Lautstärke, anderer Stimme und anderer Oktave. Das Filter ist eingeschaltet.
Zeile 70 unterscheidet sich von den vorherigen Zeilen, indem ihre Töne auf halbe, viertel, achtel, sechzehntel Noten geändert werden.
Zeile 80 spielt die gleiche Melodie wie Zeile 70, das Filter ist jedoch ausgeschaltet.

Nun haben Sie alle Informationen, die Sie brauchen, um Ihre eigenen Musikprogramme zu schreiben.

Versuchen Sie einmal, die Noten eines bekannten Musikstücks in den Computer einzugeben und verbinden Sie ein Grafikprogramm mit Ihrem Musikprogramm.


Weitere Möglichkeiten des Filters

Bisher haben Sie immer nur jeweils eine Filterkombination benutzt. Sie können aber auch alle drei Filtermöglichkeiten kombinieren.

Kerbfilter
Das Kerbfilter (Notch reject Filter) läßt alle Frequenzen oberhalb und unterhalb der Grenzfrequenzen durch, außer den Frequenzen, die im Bereich des Bandpaßfilters liegen.



FilterMix 2
Sie können auch Tiefpaß-, Hochpaß- und Bandpaßfilter miteinander verbinden. Verbinden sie z.B. das Bandpaßfilter mit dem Tiefpaßfilter, so werden alle Frequenzen, die in diesem Bereich liegen, angehoben.



FilterMix 3
Durch das Kombinieren von Bandpaß- und Hochpaßfilter werden alle Frequenzen oberhalb der Grenzfrequenz hervorgehoben.


Experimentieren Sie einmal mit den Filtern, um die verschiedenen Möglichkeiten der Musikgestaltung kennenzulernen.



Auszug aus dem Commodore C128 (D) Bedienungshandbuch: Seite 4-152 bis 4-166
Überarbeitet und ergänzt von WTE


[Seitenanfang] [Infos] [Links] [Lexikon] [Home]
Erstellt von WTE, am 29. Februar 2012; überarbeitet am 01. Februar 2014