Sammlung mehrstimmiger Musikstücke

Das Grundkonzept stammt aus einem einstigen Programmierhandbuch für den Commodore 64. Ausserdem spielte ich eine Zeit lang ein Musikinstrument und hatte dabei das Bedürfnis, den Rechner als Ersatzspieler sowie als perfekter Vorspieler einzusetzen. Alle Stücke sind übrigens in Stereoton gesetzt.

Warum keine DOS-Version?

Aufgrund der bereits am Commodore 64 hervorragenden Soundfähigkeiten war für mich mehrstimmige Musik von Anfang an eine Selbstverständlichkeit, weshalb ich mich eigentlich nie mit PLAY und SOUND von GWBASIC.EXE anfreunden konnte und daher gar nicht erst Versuche unternahm. Falls Sie aber nur einen PC mit Windows besitzen, lassen sich die Stücke auch wunderbar mit UAE, einem hervorragenden und kostenlosen Amiga-Emulator anhören.

Die Musikbox entstand übrigens erst viel später aus einem anderen Anlass heraus.

Bedienung

Für diese Programme erübrigt sich eine lange Erkärung: Starten Sie lediglich das jeweilige Programm und lehnen Sie sich zurück :-). Bei einigen Stücken ist lediglich ein Tastendruck nach der Berechnung nötig, um das Abspielen zu starten.

Hinweise bei AmigaBASIC

Einige Stücke sind recht umfangreich, so dass Sie mit clear ,262144 den BASIC-Speicher vorher vergrössern müssen.

Hinweise bei UAE

Bei WinUAE müssen Sie in den Sound-Einstellungen die bestmögliche Stufe einstellen, dafür können Sie die Grafik-Wiederholrate extrem tief einstellen.

Hintergründiges

Die Programme bestehen im wesentlichen immer aus zwei Teilen; einem Abspieler und einem Musiknoten-Datenteil. Im folgenden gehe ich auf die verschiedenen Abspieler-Versionen ein, denn ich optimierte das Programm im Laufe der Zeit fortlaufend.

Die Urversion für den AmigaBASIC-Interpreter: Online-Umsetzung

Bei dieser Versionen werden die DATA-Zeilen während des Abspielens verarbeitet. Dabei wird jeweils die Rechenzeit zwischen zwei Takten ausgenutzt. Stücke mit Online-Verarbeitung:

Die Fortsetzung: Datenvorbereitung

Die Online-Verarbeitung stösst rasch an ihre Grenze, sobald Achtel- oder gar Sechszehntelnoten ins Spiel kommen, da der MC 68000 mit 7 MHz nicht unbegrenzte Rechenleistung anbot. Gleichzeitig war auch eine weitere Anforderung, erfasste Musikstückpartien mehrfach wiederverwenden zu können, woraus das Blockkonzept entstand. Ausserdem war noch eine tontechnische Optimierung notwendig, um zerhackte Töne zu vermeiden: Rythmus durch TIMER steuern anstelle von stillen SOUND-Aufrufen. Stücke mit diesem Prinzip:

Der grosse Quantensprung: Erweiterung auf acht Stimmen

Die vorhergehende Version bietet schon recht viele Einsatzmöglichkeiten, dennoch stösst man bei Partituren an die Grenzen, sobald man Orchestermusik mit mehreren Spielerstimmen setzen wollte. Mit der im Artikel über achtstimmige Musik beschriebenen Programmiertechnik konnte dieser Rahmen an Möglichkeiten erweitert werden. Stücke in dieser Abspieltechnologie:

Einsatz des MaxonBASIC-Compilers

Der grosse Nachteil der achtstimmigen Version ist die mittlerweile recht aufwendig gewordene Vorberechnung. Etwas später schaffte ich mir den BASIC-Compiler von Maxon Computer GmbH an. Dabei stellte sich eine kleine Inkompatibilität beim WAVE-Befehl heraus: Die MaxonBASIC-Implementation dieses Befehls erlaubt keinen Startindex, was die Verwendung von WAVE 0, wf%(0) und WAVE 0, wf%(256) verunmöglichte. Die MaxonBASIC-Version ist daher lediglich eine reine Anpassung an den Compiler, funktionell ist sie mit derjenigen für den AmigaBASIC-Interpreter identisch.

Um die MaxonBASIC-Musikstücke auch mit dem AmigaBASIC-Interpreter anhören zu können, genügt es, den Abspieler einer AmigaBASIC-Version mit den DATA-Zeilen einer MaxonBASIC-Version zu kombinieren (Copy&Paste im Quelltext-Editor). Das Umgekehrte ist selbstverständlich auch möglich.

Stücke für den Compiler:

Schreiben Sie Ihre eigenen Stücke!

In diesem Abschnitt wird das DATA-Zeilenformat im Detail beschrieben, damit Sie selber Musikstücke erfassen können.

Gemeinsam in allen Versionen: Das Drehorgelprinzip

Die DATA-Zeilen sind vom Grundaufbau her gesehen wie dem Papierband einer Drehorgel aufgebaut. Im Sinne der konstanten Geschwindigkeit dieses Bandes werden auch in diesem Programm die DATA-Zeilen in einem regelmässigen Takt verarbeitet, dessen Geschwindigkeit Sie zu Beginn einstellen. Daher kommen keine Notenlängen in Form von expliziten Zahlen vor, sondern stattdessen die Vorschrift, ob der Ton weiterklingen soll (***) oder ob ein neuer Ton bzw. Pause (---) folgen soll.

Die »Auflösung« des Musikstücks: Das Ganzzahl-Mikrotaktprinzip

Bevor Sie gleich mit der Musiknoten-Erfassung loslegen, sollten Sie das gesamte Notenblatt durchsehen nach den kürzesten Noten. Sie müssen dabei den grösstmöglichen Mikrotakt suchen, wo der Beginn eines Ton immer auf einen Taktschlag erfolgen kann. Im Mikrotaktsystem können also die Notenlängen immer ganzzahlig dargestellt werden. Bei Triolen müssen Sie wie beim Bruchrechnen arbeiten: Suchen Sie dort gewissermassen den »gemeinsamen Nenner«. Beispiel: Ein Stück hat Achtelnoten sowie Viertelnoten lang dauernde Triolen => in diesem Fall müssen Sie also einen 1/24-Noten-Mikrotakt verwenden, wo dann ein Triolenton 2 Mikrotakte dauert und die Achtelnote 3 Mikrotakte.

Datenaufbau Online-Abspieler

Zu Beginn geben Sie die Startlautstärken (0-255) von jedem Tongeneratoren an, anschliessend die vorhin diskutierte Notenauflösung (für das obige Beispiel wäre dies 24) das Tempo in Anzahl Viertelnoten pro Minute (=Metronom-Takt!) sowie die Pausenlücke: 0 würde alles legato-mässig wie mit einem Bindebogen spielen. Je grösser die Pauenlücke gewählt wird, desto staccato-mässiger wird das Stück gespielt. Diese Pausenlücke wird übrigens in 55 ms-Einheiten wie im Grundlagenartikel über die Tonprogrammierung beschrieben, angegeben.

Aufbau Musiknoten

Die eigentlichen Musiknoten-Daten sind als Zeichenketten für jeden Mikrotakt dargestellt, jeder 24 Zeichen lang. Je 6 Zeichen beschreiben das weitere Vorgehen für eine Stimme. Bedeutung der ersten drei Zeichen einer solchen 6er-Gruppe:

In den drei verbleibenden Zeichen der 6er-Gruppe folgt die Lautstärkenveränderung, so dass Sie auch die Dynamik, also forte und piano umsetzen können. Ganz am Schluss folgt noch das Ende-Kennzeichen Ende.

Bemerkungen

Version mit Datenvorbereitung

Diese Version wurde etwas vereinfacht: Gemeinsame Lautstärke für alle Stimmen, daher nur noch 15 Zeichen lange Notentakte. Daher enthält die erste DATA-Zeile nur noch 4 Werte: Notenauflösung, Metronom-Tempo, Startlautstärke und Lücke.

Das Blockkonzept

Die Noten sind wie bei der Interpreterversion aufgebaut, wobei für jede Stimme nur noch je drei Zeichen die Note beschreiben und die letzen drei Zeichen die für alle Kanäle gültige Lautstärkenveränderung.

Dagegen neu ist das Blockkonzept: Wiederholungen müssen Sie nur noch einmalig erfassen, was die Anzahl DATA-Zeilen markant reduziert. Zu diesem Zweck sollten Sie das gesamte Musikstück auch wieder vorranging analysieren und dabei in Blockelemente aufteilen. Sie geben die Daten jeweils als Blockpaket ein, so dass EndBlock jeweils den Block abschliesst. Am Schluss nach Ende-Eintrag folgt die Reihenfolge, wie die Blöcke abgespielt werden sollen. Dabei können Sie einen Block auch mehrfach nennen und so Wiederholungen erzeugen. Dabei werden die Blöcke ab 1 aufsteigend numeriert. Der Eintrag 0 schliesst die Blocksequenzliste ab.

Bemerkungen

Achtstimmige Version

Nebst den acht Stimmen wurde auch das Lautstärkenkonzept überarbeitet, damit es sich besser an die übliche Notation der Musik anlehnt.

Lautstärken
CodeNotationBedeutung
Spppppianissimo
sppppianissimo
Ppppianissimo
pppiano
mmfmezzo-forte
ffforte
Ffffortissimo
xffffortefortissimo
Xfffffortefortissimo

Zwei weitere Codes sind < und >, mit welchen Sie ein kontinuierliches Ansteigen und Abschwellen der Lautstärke bewirken. Zu Beginn geben Sie auch wieder die Notenauflösung, Tempo und staccato-Lücke an. Bezüglich Stereo folgt anschliessend eine Zuordung der Stimmen zu den Tongeneratoren, sodass Sie also nicht mehr die L-R-R-L-Reihenfolge beachten müssen und ausserdem auch einzelne Stimmen mit 0 ausschalten können.

Notendaten

Die Notendaten sind als Blöcke wie bei der vorhin beschriebenen Version aufgebaut und haben ausserdem denselben Aufbau. Bedingt durch das im Artikel über 8-stimmige Musik beschriebene Prinzip können Sie die Stimmen nicht mehr beliebig asynchron ausgestalten; innerhalb eines Stimmpaares müssen immer beide Stimmen synchron aufgebaut sein, d.h. entweder einen neuen Ton/Pause ansetzen oder den Ton halten. Diese Einschränkung fällt in der Praxis kaum ins Gewicht, da die Mehrheit aller Musikstücke aus Akkorden zusammengesetzt sind.


Workbench-Icon von AmigaBASICVersion für AmigaBASIC herunterladen

Umfang: 23 KB


Workbench-Icon von MaxonBASIC Version für MaxonBASIC herunterladen

Umfang: 36 KB


Zurück ins Downloadmenü


© 2000 by Andreas Meile