★ APPLICATIONS ★ CREATION MUSICAL ★ MUSIK-COMPILER (CPC MAGAZIN) ★ |
Musik-Compiler (CPC Magazin) | Applications Creation Musical |
Mit unserer Anwendung des Monats kann der unkomfortable SOUND-Befehl vergessen werden. Einfache Eingabe und Maschinencode als Ergebnis machen den CPC mit diesem Programm musikalisch. Wenn man dem CPC ein paar Töne entlocken will, muß man sich immer mit dem etwas komplexen SOUND-Befehl herumquälen. Zunächst ist die Reihenfolge der Parameter zu beachten. Kommt die Periode vor der Lautstärke oder umgekehrt? Da hilft nur noch ein Blick ins Handbuch. Bei der Eingabe der Töne stört dann das umständliche Blättern in der Tabelle der Tonperioden. Hat man endlich alles eingegeben, muß man, falls sich ein Fehler eingeschlichen hat, die unendlich langen Zahlenreihen noch einmal durch-gehen. Auch die Abarbeitung verschiedener Stimmen in einem Basic-Programm gestaltet sich nicht gerade besonders einfach. Dieses ganze komplizierte Verfahren hat bestimmt schon viele geärgert. Um die Eingabe von Musikstücken etwas zu vereinfachen, habe ich das Programm "Musik-System” geschrieben und versucht, es so zu gestalten, daß man die Töne einfach so eingeben kann, wie sie in Notenblättern stehen. Nach der Eingabe muß ein Musikstück nur noch compiliert werden; danach kann man es dann als Hintergrundmelodie zu jedem beliebigen Programm ablaufen lassen, ohne sich weiter um die Musikausgabe kümmern zu müssen. Die Noteneingabe Die Eingabe der Noten erfolgt in REM-Zeilen in einem Basic-Programm. Auf diese Weise konnte ich mir die aufwendige Programmierung eines Editors ersparen. Auch ist wohl jeder bestens mit dem des Basic-Interpreters vertraut, so daß man nicht extra umdenken muß. Eine Note wird folgendermaßen eingegeben: Note: Oktave: Tondauer Man kann jeden dieser drei Werte weglassen. Dann wird einfach der Wert der vorhergehenden Note genommen. Allerdings muß man bei Angabe der Oktave auch die Tondauer bestimmen. Die Oktave muß zwischen null und sieben liegen. Tabelle 1: Tonleiter (CES) : C : CIS Tabelle 2: Tondauer GA 1/1 Note HA ½ Note RSX-Befehle |COMPILE - Der eingegebene Text wird compiliert. Alle REM-Zeilen zwischen BEGIN und END werden als Musikprogramm betrachtet, andere Zeilen hier nicht beachtet. Falls man kein END angegeben hat, wird bis zum Schluß des Programms compiliert. Bei auftretenden Fehlern erfolgt ein Abbruch mit Angabe der Zeile; in der der Fehler auftrat. Nach Beendigung der Compilierung werden Startadresse und Länge des generierten Codes ausgegeben. Diesen kann man nun abspeichern und später an jede beliebige Speicherstelle oberhalb von &4000 laden. Er wird dann einfach mit CALL Ladeadresse aktiviert und reloziert sich von selbst. Nach der Initialisierung können Sie MEMORY um &100 erhöhen, weil hier der Relokator liegt, der jetzt nicht mehr benötigt wird. Folgende Befehle stehen Ihnen dann zur Verfügung: |MUSIC.ON, |MUSIC.OFF, |MUSIC.STOP, |MUSIC.CONT, |WEND und |NOWEND. |HELP - Dieser Befehl schaltet automatisch auf Modus 2 und bringt eine Hilfsseite auf den Bildschirm, auf der alle Befehle aufgelistet und zum Teil kurz erläutert sind. |MUSIC.ON,x - Die Musik wird angeschaltet. Wird kein Parameter angegeben, trifft der Befehl für alle Kanäle zu. Ansonsten gilt Bit 0 für Kanal 1, Bit 1 für Kanal 2 und Bit 2 für Kanal 3. Alle anderen Bits werden nicht beachtet. Beispiel: |MUSIC.ON, 5 Kanal 1 und 3 werden angeschaltet und beginnen von vorne. Kanal 2 spielt normal weiter, falls er angeschaitet war. |MUSIC.OFF - Alle Kanäle werden sofort abgeschaltet. Eine Fortsetzung mit |MUSIC.CONT ist nicht möglich. Sollten Sie danach den Befehl |MUSIC.ON,x eingeben, spielen die nicht angegebenen Kanäle dort weiter, wo sie unterbrochen wurden. |MUSIC.STOP,x -1. Ohne Parameter: Die Musikausgabe wird sofort angehalten. Eine Fortsetzung kann mit |MUSIC.CONT erfolgen. Eine Aktivierung mit |MUSIC.CONT.x ist nicht möglich. |MUSIC.CONT,x - Die Musikausgabe wird dort fortgesetzt, wo sie unterbrochen wurde. Weiteres entnehmen Sie der Erklärung des Befehls |MUSIC.STOP. |WEND,X- Der angegebene Kanal fängt nach Beendigung seiner Melodie wieder von vorne an. Der Parameter x (Erklärung bei |MUSIC.ON) kann weggelassen werden. |NOWEND,X - Die Wiederholfunktion des betreffenden Kanals kann abgeschaltet werden. Der Parameter x darf fehlen (Erklärung bei |MUSIC.ON). Programmbefehle ENV:X - Die mit X angegebene Lautstärkenhüllkurve wird in den momentan angesprochenen Kanälen bei allen folgenden Tönen aktiviert. ENT: X - Die mit X angegebene Tonhüllkurve wird in den momentan angesprochenen Kanälen bei allen folgenden Tönen aktiviert. T:X - Das Tempo wird für alle folgenden Töne auf den neuen Wert gesetzt. S:X - Die folgenden Befehle und Noten gelten für die angegebenen Kanäle (Erklärung von X siehe |MUSIC.ON). ON:X - Der Kanal wird angeschaltet, jedoch nur, wenn dies nicht durch einen RSX-Befehl geschehen ist. Werte für X: OFF:X - Kanal abschalten. Erklärung siehe ON:X. W:X - Warte, bis der durch X bestimmte Kanal seinen momentanen Ton fertiggespielt hat. Erklärung siehe ON:X. N:X - Setzt die Geräuschperiode in den mit S:X aktivierten Kanälen. Bereich: 0 <= X <= 32 BEGIN - Beginn des Musikprogramms. Ab hier werden alle REM-Zeilen als Musikprogramm betrachtet. END - Ende des Musikprogramms. Diesen Befehl kann man auch weglassen. \ — Entspricht einem REM in einem normalen Basic-Programm. Danach muß ein Leerzeichen folgen. SIM X Y Z - Die Werte X, Y, Z geben an, um wie viele Halbtöne niedriger oder höher die Töne gespielt werden sollen, ausgehend von der eigentlichen Benennung der Töne. X gilt für Kanal 1, Y für Kanal 2 und Z für Kanal 3. Dies ist sicher einer der leistungsfähigsten Befehle. Man kann damit dreistimmig spielen, obwohl nur eine Stimme notiert wurde. Alle Befehle können sowohl in Groß- als auch in Kleinbuchstaben notiert werden. Eintipphilfe
Noch ein Tip: Sie sollten Ihren CPC unbedingt an eine Stereoanlage anschließen, um in den vollen Genuß des Demos zu kommen. Der eingebaute Lautsprecher ist nämlich hoffnungslos überfordert.
|