MUSIC

Aus C64-Wiki
Wechseln zu: Navigation, Suche
MUSIC
Format: MUSIC <d>, <str>
Parameter
d: Tempo (0..255)
str: Steuerstring für das Musikstück
Einordnung
Typ: Anweisung
Kontext: Soundkontrolle
Aufgabe: Festlegen und Steuern der Musik
Abkürzung: keine
Verwandte Befehle
WAVE - ENVELOPE - PLAY - VOL


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort MUSIC.

Typ: Anweisung 
Syntax: MUSIC <d>, <str>

MUSIC definiert ein Musikstück und seinen Ablauf. Simons'-Basic-Musikstücke sind dabei grundsätzlich nur einstimmig.

Der Parameter <d> legt die Basiseinheit der Dauer der kürzesten Note fest (der Vierundsechzigstel Note, einer Note mit vier Fähnchen). Alle anderen Notenlängen sind Vielfache davon (s.u.) Dieser Parameter bestimmt also das Tempo des Musikstücks.

Im Parameter <str> werden die SID-Stimmen, die zu spielenden Noten, ihre individuelle Dauer und ein paar weitere Eigenschaften des Musikstücks festgelegt. Es gibt dazu drei verschiedene Arten von Steuerzeichen.


Inhaltsverzeichnis

[Bearbeiten] Steuerung: Noten

Zuerst die Steuerzeichen für Noten. Sie entsprechen im Wesentlichen den üblichen Notennamen (wobei das h durch b dargestellt wird; h ist eine ausschließlich deutsche Notenbezeichnung).

c - d - e - f - g - a - b

Die Halbtöne (schwarze Tasten auf dem Klavier) erreicht man zusammen mit der Shift- oder der Commodore-Taste (letzteres steht nicht im Handbuch).

C   - D   - F   - G   - A     Diese Buchstaben stehen also für 
cis - dis - fis - gis - ais   bzw. für
des - es  - ges - as  - bb

Hinter dem Notennamen folgt als Ziffer die zu spielende Oktave (0..7). Akzeptiert werden auch Oktavangaben über 7 hinaus (8, 9, a, b,...) Diese Werte wurden allerdings nicht ausprobiert und sind wahrscheinlich unhörbar.

Eine Pause wird als Buchstabe z eingegeben. Auf z folget keine Oktavangabe.

[Bearbeiten] Steuerung: Notenlänge

Abschließend setzt man die zweite Art von Steuerzeichen, die Notenlänge. Sie werden durch die den Funktionstasten zugeordneten PETSCII-Zeichen eingegeben. Dabei bedeuten:

{f1} : E : 64stel Note
{f3} : F : 32stel Note
{f5} : G : 16tel  Note
{f7} : H :  Achtelnote
{f2} : I : Viertelnote
{f4} : J :  Halbe Note
{f6} : K :  Ganze Note
[f8} : L :  Brevis (Doppel-Ganze)

Die Großbuchstaben in dieser Tabelle bezeichnen die Zeichen, die beim Eingeben erscheinen sollten. Sie sind allesamt inverse Großbuchstaben. - Abweichungen von diesen Notenlängen sind nicht vorgesehen (Triolen gehen also nicht).

[Bearbeiten] Steuerung: Ablauf

Weitere steuernde Angaben werden im MUSIC-String grundsätzlich mit dem {clear}-Code eingeleitet (Taste Shift Clear/Home). Im Handbuch werden nur zwei dieser Steueranweisungen aufgeführt, es gibt jedoch zusätzlich drei undokumentierte Codes. Die Codes im Einzelnen:

{clear}+Ziffer : Stimme selektieren (Ziffer: 1, 2 oder 3). Muss jeden MUSIC-String einleiten.
{clear}+g      : aktuelle Stimme ausschalten. Sollte am Ende eines MUSIC-Strings stehen.
{clear}+t      : Sync-Bit für die aktuelle Stimme (s. WAVE) invertieren. (Zweck s.u.)
{clear}+r      : Wiederholen des ganzen MUSIC-Strings, Endlos-Spielen. Nur sinnvoll am Stringende.
{clear}+c      : Löschen der WAVE-Definition der aktuellen Stimme. Nur sinnvoll am Stringende.

Erläuterungen:

{clear}+t macht nur Sinn, wenn man zwei Stimmen kombiniert hat (was erst einmal mit Simons'-Basic-Befehlen gar nicht möglich ist), und die zweite die erste beeinflussen soll. Immerhin kann man Stimme 3 unhörbar schalten (s. VOL) und sie einen Ton abspielen lassen, der nicht aufhört (bei entsprechenden ENVELOPE-Einstellungen) und diesen auf Stimme 1 wirken lassen. Das geht aber auch nur, wenn Stimme 1 mit Dreiecksschwingung arbeitet (s. WAVE).
{clear}+r lässt ein Musikstück immer wieder ablaufen. Das macht nur Sinn, wenn man mit PLAY 2 arbeitet, da sonst das ganze Programm blockiert wäre. Für diese Funktion war der Befehl PLAY 0 ur-eigentlich vorgesehen, damit die Endlosschleife abgebrochen werden konnte. Funktionieren tut sie aber nur bei PLAY 1. Damit ist {clear}+r unbrauchbar.
{clear}+c schaltet eine Stimme komplett ab, da dann für sie keine Definitionswerte mehr existieren (s. WAVE). Nur sinnvoll bei Stücken mit Ringmodulation durch Stimme 3, wobei die Modulation irgendwo im Stück ausgeschaltet werden soll.

[Bearbeiten] Fazit

Ein MUSIC-String sollte also prinzipiell diese Form aufweisen (ohne Leerzeichen!):

"{clear}1 c1{f2} {clear}g" : spielt mit Stimme 1 den Ton c als Viertelnote in Oktave 1 und
beendet ihn nach Ablauf der ENVELOPE-Parameter.

Wie bei allen Strings ist auch der MUSIC-String auf eine maximale Länge von 255 Zeichen begrenzt. Lange Musikstücke sind mit Simons' Basic also nicht möglich. Insgesamt sind die Möglichkeiten der Musikprogrammierung unter Simons' Basic eher enttäuschend und man sollte Musiken weiterhin mit den entsprechenden Spezialprogrammen erstellen.

Wird bei MUSIC kein Parameter eingegeben, so erscheint die Fehlermeldung ?SYNTAX ERROR.

Beispiel: 

100 VOL 15
110 ENVELOPE 1,1,8,10,10
120 WAVE 1, 00100000
130 MUSIC 150, "{clear}1c2{f2}{clear}g"
140 PLAY 1
150 VOL 0

(spielt eine sehr lang dauernde Viertelnote c in der zweiten Oktave)

Ein komplettes Anwendungsbeispiel beim Simons-Basic-
Befehl MOB SET (Beipiel 2).