Musikstudio K. Kuhl

NewsHomeFotosGebührenVeranstaltungenJugend MusiziertKontaktDownloads

Unterricht

Lehrkräfte

Schüler-MP3s

Lehrer-MP3s

Koessler-MP3s

F.Strauss-MP3s

Videos

Presse

Weitere Links

Administrator

Impressum

Matrix - Software

1. Was ist die ‚Matrix‘ ?

Die Matrix ist eine Software, die es erlaubt, aus vorgegeben Daten, die irgendwie zeitlich kausal geordnet sind, und die eine Folge von Zuständen eines Systems representieren, ein Regelwerk (d.h. eine Menge von Regeln) zu erstellen, das die einzelnen Übergangswahrscheinlichkeiten des Systems von einem Zustand in den anderen beschreibt. Mit Hilfe dieser Übergangswahrscheinlichkeiten kann die Matrix eine beliebig lange Folge von Zuständen dieses Systems erzeugen. Im Prinzip handelt es sich um eine verallgemeinerte Markow-Kette mit Übergangswahrscheinlichkeiten. Bei der Berechnung der Übergangswahrscheinlichkeiten kann jedoch die ganze 'Historie' eines Prozesses mit einfließen. Außerdem kann die Matrix auch 'Beendigungswahrscheinlichkeiten' (d.h. die Wahrscheinlichkeit dass eine Folge von Zuständen endet) liefern, sowie das Gegenteil, d. h. die Erschaffung eines Zustandes ('ex nihilo') beim Start einer neuen Zustandsfolge. In ihrer einfachsten Form kann die Matrix auch einfach dazu benutzt werden, hochdimensional strukturierte Daten abzuspeichern (daher der Name 'Matrix', da es sich im Grunde genommen um nichts anderes als um eine hoch dimensionale Pointer-Matrix (mit variabler Dimensionslänge) handelt. Die Matrix kann auf fast alle System angewendet werden. Die Voraussetzungen für die Anwendbarkeit sind sehr allgemein: - Die Zustand des Systems zu einem bestimmten Zeitpunkt muss durch eine Menge von ganzen (auch negativen) Zahlen beschreibbar sein. - Es sollte genug Material über das Verhalten des Systems vorhanden sein. Ist die Matrix einmal mit Daten über ein System gefüttert worden, so kann man aus der Matrix wie aus einem unendlichen ‚Stream’ lesen. Bei geeigneter Wahl der Parameter wird dieser ‚Stream’ immer auch neuartige Übergänge liefern, d.h. es handelt sich beim Lesen aus der Matrix durchaus um einen kreativen Prozess. In der Matrix selbst werden keine Folgen von Zuständen gespeichert sondern ausschließlich Regeln, die sehr viel kürzer sind. Beim Lesen aus der Matrix kann die Intelligenz der Matrix eingestellt werden. Bei hoher Intelligenz wird das Ergebnis nahe am Original sein, mit dem die Matrix gefüttert wurde; bei niedriger Intelligenz fließen immer mehr Zufallselemente mit ein. Das Ergebnis des Outputs beim Lesen wirkt sehr viel intelligenter als es die Einfachheit der Regeln vermuten ließe. Irgendwie scheint die Matrix das Wissen über das Verhalten eines Systems nicht nur lokal in den Regeln zu speichern sondern holistisch in der Gesamtheit aller Regeln. Wenn man z. Bsp. einen Teil der Regeln entfernen wird, so wird sich das Ergebnis beim Lesen nicht sprungartig ändern.

2. Auf welchen Betriebssystemen läuft die Matrix?

Entwickelt mit C++ unter ANSI C ist die einfache Portierung auf jedes Betriebssystem gewährleistet. Getestet wurde die Matrix bisher unter Windows (32 Bit und 64 Bit), Mac OSX ab 10.4, Linux (32 Bit und 64 Bit), sowie Solaris 10.x. Für die 64 Bit Versionen wurde die Matrix als echte 64 Bit Annwendung kompiliert.

3. Welche Entwicklungsumgebungen wurden benutzt?

Unter Windows: Visual Studio 10, unter Mac OS X: Xcode 3.2, ausserdem kann unter jedem Betriebsssystem die NetBeans IDE verwendet werden. In den Beispielen befinden sich die VC 10 Projektdateien immer direkt im Beispiel-Ordner, die Xcode Projekt-Dateien befinden sich immer im Ordner Xcode.

4. Gibt es verschiedene Versionen der Matrix?

Ja. Die Matrix ist nach dem Vererbungskonzept konzipiert. In der einfachsten Version ('KHMatrixBase') kann die Matrix noch nicht mit Regeln umgehen, es können nur Daten geschrieben und gelesen werden. (Beispiele im Ordner MatrixBase)

KHMatrixBase:

Nur random read/ write und delete Aktionen (keine Übergangswahrscheinlichkeiten) (Beispiele im Ordner 'MatrixBase)

KHMatrixMedium:

Kann Regeln mit Übergangswahrscheinlichkeiten erstellen. Lesen im 'Stream' Modus möglich (Beispiele im Ordner 'MatrixMedium)

KHMatrix:

(Beispiele im Ordner 'MatrixFull'). Wie KHMatrixMedium, jedoch wird zu jeder Matrix eine sogenannte 'Symbol-Matrix' angelegt, in der die Regeln nicht mehr auf unterster Ebene verarbeitet werden, sondern auf einer höheren 'Symbol-Ebene'. Dies sei an einem einfachen Beispiel erkärt: Bei Matrizen, die mit Text gefüttert wurden, handeln die Regeln bei KHMatrixMedium von Buchstaben. In der Vollversion (KHMatrix) handeln die Regeln von Wort-Symbolen (ein WortSymbol entspricht dann einem Zahlenwert). Hinweis: Die Verarbeitung auf Symbol Ebene wurde bisher nur für Text Matrizen implementiert, ist jedoch f. MIDI Matrizen geplant. Matrizen, die abgespeichert werden sollten die Endung '.phr' bekommen. Das hat historische Gründe (die Anfangszeit der Matrix liegt noch in meiner Zeit als 'Melodyne-Mitentwickler'. Damals habe ich mit Melodie-Phrasen beschäftigt, daher der Name 'Phrase-Matrix'). Matrizen, die unter einem einfacheren Modell abgespeichert wurden (z.Bsp. Basic oder Medium) können auch mit einer höheren Version (z.Bsp. der KHMatrix-Vollversion) gelesen werden D.h. Abwärtskompatibilität ist gewährleistet. Umgekehrt gilt dies jedoch nicht.

5. Was sind die Anwendungsgebiete für die Matrix und was zeigen die Beispiele?

Ganz allgemein kann die Matrix auf jedes System 'losgelassen' werden, dessen Verhalten und Gesetzmäßigkeiten wir nicht verstehen, oder dessen Gesetzmäßigkeiten sehr komplex oder kompliziert sind. Das Ergebnis ist dann eine Matrix mit (typischerweise vielen Tausend) Regeln, mit denen beim Lesen aus der Matrix das Verhalten des Systems nachgebildet wird. Ein typischer Fall dafür ist z. Bsp. ein Musikstück. Die Matrix 'versteht' dann zwar das System nicht, aber sie tut so, als ob sie es verstünde. (Hier streiten sich KI-Experten über den Begriff 'Verstehen'). Vielleicht ist das ja kein Widerspruch. Der Ordner 'Examples’ enthält eine Vielzahl von Beispielen für die Anwendung der Matrix. (Einige Beispiel kommen in den zu den verschiedenen 'Ausbaustufen' 'Basic', 'Medium' und 'Full' gehörenden Ordnern mehrmals vor. Das zeigt nur die Abwärtskompatibilität, d.h. einfachere Funktionen können auch mit einem vollen Matrix Modell durchgeführt werden.

5.1. Anwendungsgebiet Text (im einfachsten Fall ANSI Text):

Einmal mit einer Geschichte oder einem Kapitel eines Buches gefüttert, kann die Matrix beliebig lange zu diesem Thema 'plaudern'. (Hinweis: Die aktuelle Matrix-Version hat eine einfache Spracherkennung zwischen Englisch und Deutsch und speichert die analysierten Regeln in getrennten Deutsch- und Englisch-Untermatrizen). Eine Vermischung zwischen verschiedenen Sprachen kann deshalb vermieden werden. Beispiele (Ordnernamen):

5.2 Anwendungsgebiet Zahlenfolgen (mit unbekanntem Bildungsgesetz)

Die Matrix mit einer Zahlenfolge mit unbekanntem Bildungsgesetz (z. Bsp. den Primzahlen) gefüttert werden Nach der Eingabe einer Initiierungs-Sequenz von Primzahlen werden die nächsten Primzahlen aus der Matrix gelesen. Hinweis: Die Primzahlen sind eine ‚harte Nuss‘. Bis jetzt ist es noch nicht gelungen, die Folge von (beliebig großen) Primzahlen perfekt aus der Matrix zu lesen. Es gibt jedoch interessante Ergebnisse: So ist z. Bsp. die maximale Dimension der Matrix (d.h. die maximal vorkommende Regellänge) 15!. D.h. Der Wert einer Primzahl hängt maximal ab von den 15 vorausgegangenen Primzahlen. Dummerweise wächst trotzdem die Anzahl der Regeln. Dieses Problem kann jedoch evtl. mit neuen ‚preProcessing’ Types gelöst werden...

5.3 Anwendungsgebiet Musikstücke (vorliegend im MIDI oder KERN Format)

Einmal mit einem Musikstück oder einer ganzen Reihe von Musikstücken (vorzugsweise der gleichen Stilrichtung) gefüttert, kann die Matrix beliebig lange Musik spielen, die ähnlich klingt, wie die Musikstücke, mit denen sie gefüttert worden ist. (Hinweis: Die aktuelle Matrix-Version hat eine Takterkennung eingebaut und speichert die analysierten Regeln in getrennten Untermatrizen, die zur jeweiligen Taktart gehören. Genauer noch: Die Matrix kann auch trennen nach Instrument, Polyphonie (und somit für jedes Instrument eine eigene Matrix anlegen) sowie nach Stilrichtung. Im allgemeinsten Fall wird beim Füttern von Musikstücken eine ganze Reihe von Untermatrizen angelegt, in denen nur die Regeln, die zu einem bestimmten Satz von Takt, Instrument und Musikstilrichtung passen, so dass keine Vermischung von Daten passieren kann. Die Erkennung von Takt, Polyphonie und Instrument geschieht automatisch, der Musik-Stil kann jedoch (noch) nicht automatisch erkannt werden, sondern muss beim Füttern der Matrix mitgeteilt werden, so dass es nicht sinnvoll ist, die Matrix auf einmal mit MIDI Dateien verschiedener Stilrichtungen zu füttern. Auch hier kann beim Lesen (in diesem Fall beim Abspielen) aus der Matrix der Intelligenz-Level eingestellt werden, so dass die erklingende Musik mehr oder wenig nahe am Original-Material liegt. Man kann auch während des Abspielens den Intelligenz Level verstellen, so dass mehr 'Überaschungseffekte' entstehen.

Matrix website:

KVEC Vektorisierungssoftware:

Besucher online :