APPLICATIONSCREATION MUSICAL ★ MUSIK-COMPILER|CPC MAGAZIN) ★

Musik-Compiler (CPC Magazin)Applications Creation Musical
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

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
DES : D : DIS
ES : E : (EIS)
(FES) : F : FIS
GES : G : GIS
AS : A : AIS
H B : (BIS)

Tabelle 2: Tondauer GA 1/1 Note

HA 1/2 Note
VI 1/4 Note
AC 1/8 Note
SE 1/16 Note
HP 1/2 Note punktiert
VP 1/4 Note punktiert
AP 1/8 Note punktiert
HT 1/2 Triole
VT 1/4 Triole
AT 1/8 Triole
ST 1/16 Triole
ZT 1/32 Triole

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.
Abhilfe: |MUSIC.STOP, 7 nach |MUSIC.OFF

|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.
2. Mit Parameter: Die angegebenen Kanäle werden "eingefroren”, sobald ihr momentaner Ton zu Ende ist. Danach kann man sie mit |MUSIC.CONT.x wieder aktivieren, nicht aber mit |MUSIC.CONT.

|MUSIC.CONT,x - Die Musikausgabe wird dort fortgesetzt, wo sie unterbrochen wurde. Weiteres entnehmen Sie der Erklärung des Befehls |MUSIC.STOP.
Hinweis: Der Befehl |MUSIC.CONT,x sollte erst dann angewendet werden, wenn sichergestellt ist, daß der letzte Ton schon fertiggespielt wurde, weil es sonst zu Störungen kommen kann. Den Befehl |MUSIC.CONT kann man jederzeit nach |MUSIC.STOP einsetzen.

|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.
Bereich: 0 <= X <= 15

ENT: X - Die mit X angegebene Tonhüllkurve wird in den momentan angesprochenen Kanälen bei allen folgenden Tönen aktiviert.
Bereich: 0 <= X <= 15

T:X - Das Tempo wird für alle folgenden Töne auf den neuen Wert gesetzt.
Bereich: 1 <= X <= 31

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:
1 ... Kanal 1
2 ... Kanal 2
3 ... Kanal 3

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.
Achtung: Bei der Verwendung von darf kein Leerzeichen zwischen und "BEGIN” stehen. Benutzt man "REM”, ist ein Leerzeichen zwischen "REM” und "BEGIN” erforderlich.
Achtung: Der Rest der Zeile wird überlesen.

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.
Bereich: -24 <= X Y Z <= 24

Alle Befehle können sowohl in Groß- als auch in Kleinbuchstaben notiert werden.

Eintipphilfe

  1. Tippen Sie Listing 1 ab und speichern es sofort als MU-SIK.GO ab. Es handelt sich hier um das Vorprogramm, das Sie später benötigen, um die beiden Hauptprogramme MUSIK.MC1 und MUSIK.MC2 starten zu können.
  2. Tippen Sie nun Listing 2 ab und speichern es sofort als MUSIK.LDR ab. Da "Musik-System” zu 100% aus Maschinencode besteht, ist die Tipperei etwas mühsam. Aber keine Angst; dank der Prüfsumme am Ende einer jeden Zeile erkennt das Programm Eingabefehler von selbst und nennt Ihnen die fehlerhafte Zeile. Um noch einmal darauf hinzuweisen: Vergessen Sie das Abspeichern nicht! Erst dann starten Sie das Programm mit RUN. Wenn Sie nämlich einen Fehler im MC-Generator haben, könnte Ihr CPC jede weitere Mitarbeit verweigern, und Sie müßten alles noch einmal abtippen.
    Falls alles in Ordnung war, speichert das Programm sich selbst (eine vorhergehende, falsche Version wird also überschrieben) sowie die beiden Binär-Files MUSIK.MC1 und MUSIK.MC2 ab. Da aus diesen Files an zwei Stellen direkt auf ROM-Routinen zugegriffen wird, müssen sie zuvor noch an den jeweiligen CPC-Typ angepaßt werden. Dies geschieht vor dem Abspeichern, natürlich automatisch. Die erzeugen Musikdateien laufen jedoch auf allen drei CPC.
  3. Wenn Sie Listing 2 erfolgreich abgetippt und gestartet haben, können Sie sich an Listing 3 heranwagen. Speichern Sie es als MUSIK-D.GO ab. Es ist das Ladeprogramm für den Musik-Code MUSIK-D.MC, der durch Listing 4 erzeugt wird. Natürlich lädt es auch andere Melodien, die Sie selbst mit dem Musik-Compiler erzeugt haben. Die Ton- und Lautstärkehüllkurven am Ende des Listings sind nur Beispiele, die zum Experimentieren anregen sollen.
  4. Listing 4 ist ein Beispiel dafür, wie ein Quelltext für den Musik-Compiler aussehen könnte. Es handelt sich um eir fertiges Musikstück. Das Listing speichern Sie am bester als MUSIK-D.LDR ab, bevor Sie es mit RUN starten. Der eigentliche Musik-Code wird dann erzeugt und ist als MUSIK-D.MC abzuspeichern. Sie können auch die Befehlszeile, die nach dem Durchlauf ausgegeben wird, mit der COPY-Taste kopieren.

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.

Markus Bühler , CPC Magazin

★ PUBLISHER: CPC Magazin
★ YEARE: 1986 , 1987
★ CONFIG: AMSDOS + 64K
★ LANGUAGE:
★ TAG: /RSX/
★ LICENCE: LISTING
★ AUTHOR: Markus Bühler

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Musik-Compiler    (CPC  Magazin)    GERMANDATE: 2020-06-13
DL: 33 fois
TYPE: ZIP
SIZE: 11Ko
NOTE: 40 Cyls
.HFE: NON

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Fast Fill (Computing With the Amstrad)
» Info » Laurent Fillion
» Applications » Pattern-Fill / Pattern-Draw (CPC Amstrad International)
» Applications » Fill 464 (AM-Mag)
» Applications » CPC464 Fill Subroutine
» Info » Alain Fillion

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 242 millisecondes et consultée 270 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.