Musik aus dem Chaos

Daniel Schlich, Mario Simons, Axel Wilberg

  1. Einleitung
  2. Theoretische Vorüberlegungen
    1. Chaotische Funktionen
    2. Musikalische Nutzbarkeit des Chaos
  3. Die Programmierung der Sound-Blaster Karte
    1. Musik in der Theorie
    2. Töne aus dem Computer
    3. FM-Synthese
    4. Die Programmierung
    5. MIDI - die Alternative
    6. Programmierung unter Windows
  4. Praktische Versuche
    1. Die ersten Probleme
    2. Beurteilung der musikalischen Ergebnisse
  5. Anhang A: Literarurverzeichnis
  6. Anhang B: Musikbeispiele
  7. Anhang C: Copyright
Musik aus dem Chaos: Noten und Mandelbrotmenge
"jugend forscht" Arbeit 1996 von
Daniel Schlich
Mario Simons
Axel Wilberg

© 1996 by Neptun Software

Inhalt

1. Einleitung

Chaotische Funktionen sind seit einigen Jahren nicht mehr aus Wissenschaft und Forschung wegzudenken. Selbst in unserem alltäglichen Leben spielen sie eine, wenn auch unbewußte, Rolle. Wer denkt schon bei einer Wettervorhersage an Mathematik und Chaos. Deshalb ist es nicht Verwunderlich, daß in der Fachpresse immer wieder bizarre Fraktale abgedruckt sind, die Wissenschaft und Kunst miteinander vereinigen. Das bekannteste Beispiel hierfür ist die Mandelbrotmenge, die eine nahezu unendliche Vielzahl fraktaler Geheimnisse birgt. Sie ist benannt nach Benoit B. Mandelbrot, einem Wissenschaftler am Thomas J. Watson-Forschungszentrum der Firma IBM in Yorktown Heights.

Farn

Abb. 1.1: Chaotisch erzeugter Farn

Doch weshalb wirken Fraktale auf Wissenschaftler so anziehend? Es ist zum einen die Einfachheit der verwendeten Funktionen, die in der Lage sind komplexe Gebilde zu schaffen, die wir als schön empfinden, zum anderen hat sie Entdeckung der chaotischen Funktionen entscheidend dazu beigetragen die Vorgänge in der Natur zu verstehen. Wolken sind keine Kugeln, Berge keine Kegel und Blitze keine Linien. Die Euklidsche Geometrie scheint also bei der Beschreibung der Natur zu versagen. An ihre Stelle tritt in letzter Zeit die fraktale Geometrie, die, wie der Farn oben zeigt, wesentlich besser zur Beschreibung der Natur geeignet ist.

In unserer Arbeit untersuchten wir die Fähigkeiten der chaotischen Mathematik sich von der statischen Darstellung der Fraktale loszureißen und einen dynamischen Prozesse wie Musik zu beschreiben. Wir erzeugten Ausgehend von der fraktalen Geometrie "Musik aus dem Chaos".

Inhalt

2. Theoretische Vorüberlegungen

Will man "Musik aus dem Chaos" erzeugen, benötigt man drei Dinge: erstens chaotische Funktionen, die die Werte für die Musik liefern und mit einem Computer errechnet werden können, zweitens geeignete Software, mit der man die errechneten Werte in Töne umsetzen kann, und drittens eine Idee, wie man die chaotischen Töne in harmonische Musik wandelt. Was läge also näher, als mit dem ersten Punkt zu beginnen und chaotische Funktionen zu programmieren.

Inhalt

2.1 Chaotische Funktionen

Das bekannteste Beispiel für eine chaotische Funktion ist die Mandelbrotmenge, wegen ihrer charakteristischen Form auch bekannt als "Apfelmännchen". Die Mandelbrotmenge dient als Lieferant für eine unendlich große Anzahl chaotischer Werte und schien wie geschaffen für die Lösung unseres Problems. Der zweite Vorteil der Mandelbrotmenge ist die Selbstähnlichkeit, das heißt, so sehr man die Menge auch vergrößert, es treten immer wieder ähnliche Strukturen auf. Im Zusammenhang mit Musik ist das sehr wichtig, da auch in der Musik häufig Wiederholungen vorkommen, man sagt auch, die Musik lebt von der Wiederholung.

Wie aber gelangt man zu der Mandelbrot-Menge? Die Mandelbrot-Menge liegt in einer komplexen Zahlenebene, in der jeder Punkt durch die Koordinaten a und bi dargestellt wird. Der Punkt a ist der Realanteil der komplexen Zahl, der Punkt bi der Imaginäranteil. Die Zahl i dient unter anderem der Unterscheidung der beiden Koordinaten. Für späteren Berechnungen ist es hilfreich zu wissen, daß der Wert der imaginären Zahl i gleich der Quadratwurzel von -1 ist, das Quadrat der Zahl i also -1 ist.

Die entscheidende Funktion, die es nicht nur erlaubt, Mandelbrot-Mengen, sondern auch deren Julia-Mengen, zu berechnen, heißt zn+1 = znê + c. Darin sind z und c komplexe Zahlen mit Real- und Imaginäranteil. Sie erwacht zum Leben sobald man sie iteriert, d. h. den alten Wert von z erneut in die Funktion einsetzt und dies wieder und wieder tut. Als Startwerte wählt man für z den Wert 0 und für c die Koordinate der komplexen Zahlenebene bei der die Funktion starten soll.

Die Funktion wird bei großer Anzahl Iterationen zwei verschiedene Verhaltensweisen zeigen. Bei einigen Startwerten c werden die Funktionswerte sich irgendwann ins Unendliche davonmachen, bei anderen Startwerten dagegen tanzen sie auf ewig innerhalb eines bestimmten Bereichs um c herum.

Der Berechnung mit dem Computer stehen allerdings noch zwei Fragen gegenüber: Wie viele Iterationen werden benötigt, um die Mandelbrot-Menge möglichst realistisch darzustellen, und woran erkennt man, ob sich ein Funktionswert irgendwann ins Unendliche davonmachen wird? Für die präzise Darstellung der Mandelbrot-Menge genügen etwa 100 Iterationen, obwohl auch hier noch einige Punkte falsch eingefärbt werden, was bei der Komplexität der Mandelbrot-Menge jedoch nicht auffallen wird. Wann sich ein Funktionswert ins Unendliche davonmachen wird, beantwortet folgender Satz: "Wenn der Betrag der Iterierten z jemals den Wert zwei erreicht, dann entweicht der zugehörige Punkt auf Nimmerwiederkehr nach Unendliche." [6] Für die praktische Berechnung formt man die Funktion zusätzlich noch so um, daß man den Real- und den Imaginäranteil getrennt berechnen kann, da es kaum Programmiersprachen gibt, die die Rechnungen mit komplexen Zahlen unterstützen. Wie ein Programm zur Berechnung einer Mandelbrotmenge aussehen kann, zeigt das Programmbeispiel.

Die Prozedur durchläuft den Bereich der Mandelbrotmenge, der durch MinA, MinB und MaxA, MaxB definiert ist, in aStep und bStep Schritten ab. Diese Koordinaten- und Schrittwerte werden so gewählt, daß die Mandelbrotmenge verzerrungsfrei auf dem gesamten Bildschirm sichtbar sind. Der Startwert a und b wird jeweils in die beiden Funktionen eingesetzt und in einer Schleife iteriert. Dabei wird ständig darauf geachtet, das die Iteration das Höchstmaß von 100 nicht überschreitet, und daß der Betrag der beiden Funktionswerte nicht größer als zwei wird. Ansonsten wird die Schleife abgebrochen und der Punkt in der Farbe der Anzahl der Iterationen eingefärbt. Entkommt der Wert innerhalb dieser Zeit nicht dem Bereich von zwei wird der Startwert in der Farbe schwarz eingefärbt. Dafür sorgt die Abfrage if i > 100 Then Color = 0.

Inhalt

2.2 Musikalische Nutzbarkeit des Chaos

Wenn wir eine Grafik nach der Mandelbrotmenge aufbauen lassen wollen, genügt eine einfache Besetzung von Rechenwerten mit Farbcodes. In der Musik ist das nicht ganz so einfach. Eine schlichte Zuordnung von Frequenzen ist auch dann nicht sinnvoll, wenn aus dem Frequenzvorrat des traditionellen mitteleuropäischen Tonsystems geschöpft wird. Die dabei entstehende "Musik" ist tatsächlich ein Chaos, das für unser Gehör keinen Sinn ergibt. Offensichtlich ist eine Vorstrukturierung des Materials notwendig.

Ähnliches hat schon Mozart in seinem musikalischen Würfelspiel geschaffen. Er setzt die erwürfelten Werte innerhalb einer begrenzten Grundmenge um, so daß das Ergebnis zwar nicht vorhersagbar ist, aber doch musikalisch sinnvoll bleibt. So stellt sich zum Beispiel heraus, daß alle Bausteine, die Mozart für den dritten Wurf zur Verfügung stellt, von ihrer Substanz her weitreichende Gemeinsamkeiten aufweisen; das Material ist also in hohem Maße vorsortiert. Verstärkt gilt das für eine musikalische Umsetzung computererzeugter Zahlenmengen.

Für den Rechner ist es am einfachstem, wenn wir uns in einem unendlichen System bewegen, aus dem er nicht herausspringen kann. Eine Möglichkeit hierfür bietet der Quintenzirkel, der (enharmonisch verwechselt) nach einmaligem Durchlaufen wieder am Ausgangspunkt ankommt. Voraussetzung ist, daß wir unser System in temperierter Stimmung anlegen (bei ungleichstufiger Stimmung würde eine Quintenspirale entstehen).

Uns stehen 12 Dur- und 12 Mollarten zur Verfügung. Die Tonarten werden nun in einem Schema angeordnet, das sie nach Verwandtschaftsgraden sortiert (s. Skizze 2.1). In der einen Ebene sind quintverwandte Tonarten nebeneinander aufgestellt, in der anderen terzverwandte. C-Dur ist zum Beispiel quintverwandt mit G-Dur und terzverwandt mit a-Moll (Dur ist mit Großbuchstaben gekennzeichnet, Moll mit Kleinbuchstaben). Diese Beziehungen sind in einer tonalen Harmonik die wichtigsten. In einem Stück, das in C-Dur steht, finden wir fast immer alle Harmonien wieder, die sich in unserem Tonnetz in der Nachbarschaft von dem Buchstaben C befinden. Selbstverständlich leistet eine anspruchsvolle Harmonik mehr als nur die Verwendung der engsten Verwandtschaften. Von einer Harmonie können wir bei einstimmigen Gebilden natürlich nicht sprechen. Dafür sind mindestens zwei, besser aber drei Stimmen notwendig. Sobald uns ein Dreiklang zur Verfügung steht, können wir klar zwischen Dur und Moll unterscheiden. Das Tonnetz bekommt also eine dritte Dimension (s. Skizze). Jeder Buchstabe des alten Schemas beinhaltet also in Wirklichkeit drei Töne.

Wenn wir dieses Schema umfangreich genug anlegen, finden jeweils zwei Seiten den Anschluß aneinander, so daß wir den berühmten Fall der Katze, die sich selbst in den Schwanz beißt, vorliegen haben. Das Tonnetz Nr. 1 läßt sich im Prinzip auf einer Kugelfläche auftragen, ist also für den Rechner unendlich, wenn auch nicht unendlich groß. Unter Einbeziehung der oben erwähnten dritten Dimension kann man sich das Gebilde geometrisch gesprochen als Hohlkugel mit der Dicke drei Einheiten vorstellen.

CcEsesFisfisAaC
GgBbDesdesEeG
DdFfAsasHhD
AaCcEsesFisfisA
EeGgBbDesdesE
HhDdFfAsasH
FisfisAaCcEsesFis
DesdesEeGgBbDes
AsasHhDdFfAs
EsesFisfisAaCcEs
BbDesdesEeGgB
FfAsasHhDdF
CcEsesFisfisAaC

Abb. 2.1: Das Tonnetz

In einem ersten Versuch erlauben wir nun dem Computer zu einem zu einem chaotisch ermittelten Nachbarakkord zu springen. Es ist völlig klar, daß so noch keine wirkliche Musik entsteht, aber ein Fortschritt gegenüber dem tonalen Töne-Chaos ist erzielt. Das Regelkonzept kann natürlich erweitert werden , wobei jeweils der vorangegangene Akkord bei der Berechnung berücksichtigt werden muß, damit sich musikalisch verwendbare Akkordfolgen ergeben. Mit einfachen Regeln läßt sich zum Beispiel eine Harmonik erstellen, die man in Volksliedern findet. Wichtig ist, daß der Rechner wieder zum Ausgangspunkt zurückkehrt. Mit einem weiteren Zufallsgenerator, der gleichzeitig arbeitet und zwischen den Zahlen eins, zwei und drei auswählt, kann man einzelne Töne aus den Akkorden herausfiltern und so den Computer Melodien bilden lassen. Es sei aber nicht verschwiegen, daß ein solches Verfahren nur im günstigsten Fall zu brauchbaren Ergebnissen führt, da das kompositorische Regelwerk extrem komplex ist und nur ein geringes Maß an Zufall und Chaos verträgt. So erzeugte Musik klingt aufgrund unserer Hörgewohnheiten etwas seltsam, wenn nicht ein unverhältnismäßiger Aufwand zur Erstellung eines Regelwerks betrieben wird.

Anders sieht die Situation bei atonaler Musik im Stile unseres Jahrhunderts aus. Hier ist der Komponist nicht an Gewohnheiten des Publikums gebunden, vielmehr ist es seine Absicht, diese außer Kraft zu setzen und den Hören in seinen Erwartungen zu enttäuschen. Das Regelsystem kann völlig frei gewählt werden. Allerdings ist diese weitgehend dissonante Musik zu Erprobungs- und Demonstrationszwecken wenig geeignet, stellt aber im Endergebnis eine sinnvolle Anwendung der Chaosmusik dar.

Inhalt

3. Die Programmierung der Sound-Blaster Karte

3.1 Musik in der Theorie

Bevor wir uns mit der Programmierung der Sound Blaster Karte beschäftigen, sollten wir uns etwas mit der Theorie der Musik befassen. Als Grundlage der Musik gilt der Ton. Ein Ton ist grob gesagt, das, was wir hören können, d.h. eine Schwingung, die, meist über die Luft als Träger, in unser Ohr gelangt. Einen Ton kann man in zwei grundsätzliche Bestandteile aufteilen:

Das erste Element eines Tones (Schallwelle) ist seine Amplitude. Die Amplitude ist der höchste Schwingungspunkt, und ist für die Lautstärke verantwortlich: je größer die Amplitude, desto lauter nehmen wir den Ton war. Die physikalische Einheit der Lautstärke ist das logarithmische Dezibel (dB).

Das wichtigste Element eines Tones ist seine Frequenz, die die Anzahl der Schwingungen pro Sekunde angibt und die die Tonhöhe bestimmt. Ein gesundes Menschliches Gehör kann Frequenzen im Bereich von etwa 18 bis 18.000 Hz wahrnehmen, allerdings wird dieser Bereich, besonders was die Obergrenze betrifft, mit zunehmendem Alter immer kleiner.

Der für die Musik wichtige Frequenzbereich liegt unter 10.000 Hz (ein Klavier kann Frequenzen von 40 - 3.500 Hz erzeugen). Allerdings wird dieser Bereich nicht linear genutzt, denn eine Zusammenstellung von beliebigen Frequenzen hört sich für uns Disharmonisch an. Deshalb gibt es die Tonleiter, die diesen Bereich in einzelne Teile aufgliedert. Bei der temperierten Tonleiter, die hier in Europa hauptsächlich genutzt wird, ist jeder Ton ist genau die 12te Wurzel aus zwei (1,05946) mal höher, als sein Vorgänger. Jeweils zwölf Töne von c - h sind zu einer Oktave zusammengefaßt. Wenn man einen Ton eine Oktave höher spielt, so bedeutet dies, das sich seine Frequenz verdopptel. So hat der Kammerton a1, der als Basiston zum stimmen aller Instrumente benutzt wird, eine Frequenz von 440 Hz, der Ton a2 eine von 880 Hz.

Nun klingen aber ein Klavier und eine Flöte, die beiden den Ton a1 spielen, grundverschieden. Das liegt daran, daß der Klang eines Instrumentes nicht nur aus einer einzigen Schwingung besteht, sonder sich aus einer, für jedes Instrument ganz eigene, Anzahl von Obertönen zusammensetzt. Obertönen sind Schwingungen, die ein vielfaches der gespielten Grundfrequenz darstellen. So erklingt beim spielen des Tones a1 nicht nur eine Schwingung mit 440 Hz sonder zusätzlich Schwingungen mit 880 Hz, 1320 Hz, 1760 Hz, .... Diese Obertöne, und auch andere Faktoren, wie z.B. die Resonanz des Klangkörpers, oder das leise Mitschwingen anderer Saiten bestimmt den Klang eines Instrumentes.

Inhalt

3.2 Töne aus dem Computer

Lange Zeit waren die Möglichkeiten mit einem PC Töne zu erzeugen, sehr bescheiden. Denn in seiner Grundausstattung kann ein PC nur einen Sinuston mit einer Frequenz von 20 - 20.000 Hz erzeugen. Da man aber mit einem monotonen Sinuston keine Musik spielen kann, schied diese Tonquelle für unsere Chaosmusik, außer für erste Experimente, von vornherein aus.

Im Jahre 1987 änderte sich diese Situation, denn die kanadische Firma AdLib stellte die AdLib-Musik-Synthesizer-Karte vor. Dieses Erweiterungskarte ist mittels der FM-Synthese (Siehe Kapitel ), in der Lage, verschiedene Instrumente relativ realistisch nachzubilden.

Im gleichen Jahr stellte die Firma Creative Technology die Game Blaster Karte vor, eine Sound-Karte, die wie die AdLib-Karte, Instrumente nachbilden konnte. Allerdings setzte diese Karte nicht auf die FM-Synthese, sondern auf das selbst entwickelte, aber qualitativ schlechtere C/MS (Creative Music System). Doch dieser Karte war kein großer Erfolg beschert.

Erst zwei Jahre später gelang Creative Technology mit der Sound Blaster Karte der Durchbruch. Diese ist eine weitere Soundkarte, die zur AdLib-Karte kompatibel ist, aber zusätzlich einen digitalen Kanal zum Abspielen / Aufnehmen von Sprache oder Klängen besitzt und auch auf die FM-Synthese setzt. Die Sound Blaster Karte, die es inzwischen in mehreren Versionen und auch als kompatible Nachbauten von anderen Firmen gibt, ist heute zum Standard geworden.

Da sich diese Karte sehr gut zum Abspielen von Musik eignet, haben wir diese Möglichkeit zur Erzeugung unserer Chaosmusik gewählt.

Inhalt

3.3 Die FM-Synthese

Die Sound Blaster Karte bietet insgesamt neun verschiedene Stimmen, die jeweils, mittels der FM - Synthese (Frequenz Modulation) ein Instrument nachbilden können. Das heißt, daß zwei Oszillatoren in Serie hintereinander geschaltet werden, wobei der zweite Ozillator von dem Ausgangssignal des ersten Oszillators abhängt. So erzeugt der erste Oszillator (Modulator) die Grundfrequenz und der zweite (Carrier) ist für die Oberwellen zuständig.

Der Modulator kann auch seine eigene Frequenz durch sein Ausgangssignal beeinflussen (Rückkopplung, Feedback). Außerdem kann man seine Frequenz leicht schwanken lassen, so daß der Ton vibriert (Vibrato), und man kann zwischen vier verschiedenen Teilen der Sinusschwingung wählen (ganzer Sinus, nur die positive Halbwelle, Sinus im Bereich 0 - π und Sinus im Bereich von 0 - π/2 plus π/2 Pause).

Abb. 3.1 Das Prinzip der FM-Synthese

Allerdings kann durch eine bloße Schwingung noch kein Instrument realistisch nachgebildet werden. Deswegen passiert das Ausgangssignal der Oszillatoren noch den Hüllkurvengenerator. Dieser ändert die Amplitude des Ausgangssignales abhängig von der Dauer des Tones. Hierbei gibt es vier verschiedene Parameter: Anstiegsphase (Attack), Verfallphase (Decay), Haltepegel (Sustain) und die Ausklingphase (Release). Wenn man z.B. bei einem Klavier die Taste anschlägt, so steigt die Lautstärke schnell auf ihr Maximum an (Anstiegsphase) und fällt dann, bei gedrückter Taste, langsam ab (Verfallsphase). Beim Loslassen der Taste klingt der Ton dann rasch aus (Ausklingphase). Der Haltepegel wird beim Klavier nicht gebraucht, er ist z.B. für Blasinstrumente, deren Lautstärke nach dem Anblasen (Anstiegsphase) leicht abfällt (Verfallphase) und dann auf einem bestimmten Wert bleibt (Haltepegel) um erst nach einer beliebigen Zeit auszuklingen (Ausklingphase).

Abb. 3.2: Beispiel für eine Hüllkurve

Inhalt

3.4 Die Programmierung

Für die Programmierung der Sound Blaster Karte wählten wir Turbo Pascal für DOS. Allerdings erwies sich dies als kompliziert, als wir am Anfang angenommen hatten, da für jeden Kanal 26 verschiedene Parameter eingestellt werden müssen. Als größtes Problem stellte sich hierbei die Beschaffung dieser Parameter dar.

Der FM - Chips der AdLib-, und auch der Sound Blaster-, Karte wird über den Port 388h (Index- und Staus-Port, lesen und schreiben) und über den Port 389h (Daten-Port, nur schreiben) programmiert. Er hat insgesamt 135 Register, und wenn man den Wert eines Register ändern will, so muß man dem Index-Port die Nummer des Registers übergeben, mindestens 3,3µs warten und kann dann den Wert über den Daten-Port schreiben. Bevor man ein neues Register anwählen kann, muß man noch einmal 23,3µs warten (so lange benötigt der FM-Chip zur Verarbeitung der Daten). Da die Programmierung relativ Aufwendig ist, möchten wir hier nicht näher darauf eingehen.

Inhalt

3.5 MIDI - die Alternative

Da uns für die Programmierung der Soundkarte leider kaum Informationen über die verschiedenen Parameter der Instrumente zur Verfügung standen (siehe Kapitel ), konnten wir nur ein Klavier nachbilden. Dies stellte zwar schon einen gewaltigen Fortschritt gegenüber dem PC-Lautsprecher dar, doch waren die Ergebnisse immer noch unbefriedigend.

Als einfachere und auch als qualitativ bessere Lösung, wählten wir die Benutzung eines MIDI fähigen Sequenzers. Eine MIDI-Schnittstelle (Music Instrument Digital Interface) ist eine serielle Schnittstelle mit 31,25 kBaud Übertragungsgeschwindigkeit, die es erlaubt verschiedene MIDI fähige Instrumente untereinander zu verbinden. Der Vorteil von MIDI ist, daß es eine standardisierte, vom Hersteller unabhängige Schnittstelle ist, mit der man nicht nur Instrumente untereinander verbinden kann, sonder man kann auch den Computer in das System integrieren. Außerdem sind MIDI Instrumente und MIDI Schnittstellen sehr verbreitet (alle original Sound Blaster Karten (und auch die meisten Nachbauten) haben ein MIDI-Inteface).

Für unsere Versuche stand uns eine MIDI fähige Orgel zur Verfügung, die einen relativ guten Klang hat. Erste, einfache Versuche mit dieser Orgel brachten uns schon erstaunlich gute Ergebnisse zu Gehör. Die Musik klang zwar noch sehr chaotisch und atonal, aber man konnte es schon als Musik bezeichnen. Aufgrund dieser Ergebnisse beschlossen wir, die FM-Synthese zu vergessen und setzten unsere Versuche mit diesem Keyboard fort.

Für die MIDI Schnittstelle ist auf der Soundkarte der Digitale Signal Prozessor (DSP) zuständig, dessen Programmierung wesentlich einfacher ist, als die des FM-Chips. Um den DSP zu programmieren, sollte man ihn erst einmal resetten, so kann man auch gleich überprüfen, ob es einen gibt. Um eine Reset des DSP zu erzeugen, muß man auf den Port 2x6h (2x0h ist der gewählte Basisport der Soundkarte, meist 220h) den Wert 1 ausgeben, 3µs warten, und dann dort den Wert 0 ausgeben. Nun muß man solange warten, bis im Port 2xEh das siebte Bit gesetzt ist. Ist dies nach einigen ms nicht der Fall, so existiert kein DSP an dieser Adresse, andernfalls prüft man, ob der Port 2xAh den Wert AAh enthält. Wenn ja, ist die Reset-Aktion geglückt, ansonsten war sie fehlerhaft. Nach erfolgreichem Reset, kann man den DSP programmieren. Dazu richtet man den Befehl an den Port 2xCh, und liest die gewünschten Daten am Port 2xAh beziehungsweise schreibt sie in den Port 2xCh.

Wenn man die MIDI-Fähigkeiten der Soundkarte nutzen will, muß man folgendermaßen vorgehen:

  1. Man sendet einen Reset - Befehl an den DSP der Soundkarte
  2. Man sendet dem DSP den Befehl $34
  3. Man sendet dem DSP die MIDI-Befehle (siehe Anhang A)
program Miditest;

const SbPort = $220;

funktion SB_DSPReset :Boolean;
var Versuche :Word;
begin
  port[SBPort + 6] := 1;
  Delay(0);                       {min. 3 us warten}
  port[SBPort + 6] := 0;
  Versuche := 0;
  repeat
    Inc(Versuche)
  until  (Port[SBPort + $E] >= 128) or (Versuche > 1000);
  if Versuche < 1000              {Wenn Versuche > 1000 Reset fehlerhaft}
  then SB_DSPReset := (Port[SBPort + $A] = $AA)
    else SB_DSPReset := False;
end;

procedure SB_DSPWrite(Wert :Byte);
begin
  repeat until (Port[SbPort + $C] and 128) = 128;
  {DSP ist nur bereit, Daten zu Empfangen, wenn Bit 7 gesetzt ist}
  Port[SbPort + $C] := Wert;
end;

begin
  SB_DSPReset;       {DSP resetten}
  SB_DSPWrite($34);  {DSP in den "MIDI-Sende" Modus}
  SB_DSPWrite(144);  {MIDI Note-On Befehl senden}
  SB_DSPWrite(69);   {Note 69 (Kammerton a)}
  SB_DSPWrite(127);  {Anschlagdynamikwert}
end.

Abb.: 3.3 Programm MidiTest (Spielt die Note a auf einem MIDI-Instrument)

Inhalt

3.6 Programmierung unter Windows

Damit das Programm bedienerfreundlicher wird, haben wir uns entschlossen, es unter MS-Windows zu programmieren. Dies hat den weiteren Vorteil, daß die Programmierung der Soundkarte genauso einfach wird, wie die MIDI-Programmierung (der MIDI-Mapper von Windows verhält sich wie eine MIDI-Sequenzer), außerdem standen uns nur so die Wavetable - Fähigkeiten der Soundkarte zur Verfügung. Ein Wavetable ist ein Zusatzmodul für die Soundkarte, auf dem die Klänge der verschieden Instrumente (meist gibt es 128 verschiede) in digitaler Form gespeichert sind. Diese Klänge haben eine gute Qualität, so daß sich die nachgebildeten Instrumente sehr realistisch anhören, quasi wie bei einer guten Keyboard

Als Programmiersprache wählten wir hier Delphi. Delphi ist ein visuelles Entwicklungstool für Windows, daß auf Pascal aufbaut. Visuell bedeutet hier, daß man die Elemente, die man erstellen möchte (z.B. Fenster, Schaltknöpfe, ...), wie z.B. bei "Visual Basic", einfach mit der Maus "aufziehen" kann, und sie nicht umständlich, wie z.B. bei "Turbo Pascal für Windows", per Programmcode erstellen muß.

Das von uns erstellte Programm, welches sehr einfach zu bedienen ist, erlaubt es dem Benutzer, verschiedene Algorithmen (Mandelbrotmenge, Farn, logistische Funktion, ...) für die Erzeugung der Chaosmusik auszuwählen, außerdem kann er für jeden Kanal ein beliebiges Instrument bestimmen, sowie verschiedene Rhytmusmuster definieren.

Abb. 3.4: Hauptfenster unseres Programms

Inhalt

4. Praktische Versuche

4.1 Die ersten Probleme

Bei unseren ersten praktischen Versuchen stand und die Soundkartenprogrammierung wie oben beschrieben noch nicht zur Verfügung. Deshalb gaben wir uns für den Anfang mit dem internen PC-Lautsprecher zufrieden. Wir berechneten die Mandelbrot-Menge und setzten jeden Wert in einen Sinuston um. Schon dieser einfache Versuch deckte die ersten Probleme auf. Die Mandelbrot-Menge besitzt teilw. recht große einfarbige Bereiche, was sich natürlich auch in der Musik niederschlägt, und lange eintönige Notenwerte ergibt. Durch die Selbstähnlichkeit der Menge treten diese Flächen auch bei extremen Vergrößerungen immer wieder auf. Aus dieser Erkenntnis mußten wir schließen, daß die Mandelbrotmenge für die Erzeugung von Chaosmusik nicht zu gebrauchen ist.

Nach diesem Rückschlag probierten wir unser Glück mit der einfachen Funktion: y(n+1) = a * y(n) * (1 - y(n)). Diese Formel ist besonders interessant, da sie auch für Menschen leicht zu verstehen ist, die üblicherweise bei dem Wort "chaotische Funktion" zurückschrecken, und trotzdem überraschende Ergebnisse liefert. Sie wird logistische Gleichung genannt. Für ihre Iteration setzt man für y einen Startwert zwischen 0 und 1 ein und für a einen Wert zwischen 0 und 4. Als Startwert für y wählt man üblicherweise 0.3. Die Variable a repräsentiert sozusagen den Grad des chaotischen Verhaltens. Für verschiedene a verläuft die Funktion wie folgt: bei Werten zwischen 0 und etwa 3 läuft die Funktion zwischen verschiedenen Werten hin und her. Ins Chaotische springt die Funktion bei Werten ab circa 3.57:

Abb. 4.1: Der Verlauf der logistischen Funktion für verschiede a - Werte

Zu dieser Zeit stand uns auch die Programmierung der Soundkarte zur Verfügung. Wir wählten verschiedene Werte für a und setzten die Funktionsergebnisse in Frequenzen um. Aber auch dieser Versuch brachte keine deutlich besseren Ergebnisse. Die so Erzeugte "Musik" klang durch den teilweise extrem chaotischen Verlauf der Funktionswerte und die direkte Umsetzung in Frequenzen für unser menschliches Höhrverständnis disharmonisch.

Ein großer Schritt in Richtung Ziel gelang uns, als wir versuchten, die Funktionswerte über eine MIDI-Orgel in Verbindung mit dem in Kapitel beschriebenen Tonrasters auszugeben. Hierbei standen uns eine Vielzahl verschiedener Instrumente zur Verfügung, die es uns erlaubten ein ganzes Orchester zu simulieren. Durch den Einsatz des Tonrasters wurden chaotische Sprünge vermieden und die Musik wurde insgesamt harmonischer.

Inhalt

4.2 Beurteilung der musikalischen Ergebnisse

Läßt man über eine MIDI - fähige Orgel oder über die Wavetable - Fähigkeiten der Soundkarte (siehe Kapitel ) mit einer Begleitstimme Akkorde aus dem Tonnetz spielen und legt darüber eine Solostimme in anderer Klangfarbe, so ergibt sich ein reizvolles, atonales oder zumindest polytonales Klangbild. Dieses Ergebnis unterscheidet sich deutlich von Geräuschen und einzelnen, zusammenhanglosen Tönen unserer ersten Versuche.

Inhalt

5. Anhang A: Literaturverzeichnis

[1] Munnik / Oostendorp · Das Sound Blaster Buch · 1992, Sybex Verlag
[2] Fisch · Programmierung der Sound Blaster Karte · 1993, Franzis' Verlag
[3] Windows 3.1 SDK · Multimedia Programmer's Guide · 1994 Microsoft
[4] M. Tischer · PC Intern 4 · 1995, Data Becker
[5] Dewney · Im Rechner ist Musik · 1990 SdW, Computer Kurzweil IV
[6] Dewney · Computer-Kurzweil · Spektrum der Wissenschaft, Februar 1988
[7] Taubert · Mozarts Musikalisches Würfelspiel · 1956, Edition Schott
[8] J. Bublat · Das neue Bild der Welt · unbekannt
[9] Beneke · Die Macht des kleinen Unterschieds · mc, Juni 1994
[10] Dewney · Computer Kurzweil · Spektrum der Wissenschaft, Mai 1989

Inhalt

6. Anhang B: Musikbeispiele

Hier könne Sie sich ein Beispiel von fraktal erzeugter Chaosmusik anhören:

Inhalt

7. Anhang C: Copyright

© 1996 bei Daniel Schlich, Mario Simons und Axel Wilberg

Besonderer Dank geht auch an Walter Stein, für seine freundliche Unterstützung!

Text, Abbildungen und Programme wurden mit größter Sorgfalt erarbeitet. Die Verfasser können jedoch für eventuell verbliebene fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen.

Die vorliegende Arbeit ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Diese Publikation darf für private Zwecke kopiert werden. Bei Kopien für gewerbliche Zwecke halten Sie bitte mit den Autoren Rücksprache.

Die erwähnten Software- und Hardwarebezeichnungen sind in den meisten Fällen auch eingetragene Warenzeichen und unterliegen als solche den gesetzlichen Bestimmungen.

Software © 1996 by
Logo von Neptun Software