Max MSP (1) – von Daten zu Musik

Um die Daten, die beim Computer ankommen in Musik zu „verwandeln“, ist zunächst eine Signalverarbeitung notwendig. Es fehlt bisher also eine Zwischenanwendung die die Nachrichten aus dem W-LAN-Netzwerk entgegen nimmt, und dann an die Musiksoftware weiterleitet.

Auf die DAW Ableton Live kann man per Max MSP, einer knoten-basierten Programmiersprache, einfach zugreifen. Mit Max-For-Live, lassen sich eigene Plugins programmieren, die in Ableton eingefügt werden können, und dort entweder Midi- oder Audiosignale erzeugen oder manipulieren.

Außerdem besteht die Möglichkeit über die Live-API und das Live-Object-Model, direkt auf fast alle Parameter in der Ableton-Session zuzugreifen. Das heißt Parameter wie Pegel-Lautstärke oder andere Plugin-Controls sind sehr genau kontrollierbar.

Welcome to Max MSP

Durch die Kenntnisse in TouchDesigner (hier der Link zum TouchDesigner- Blog-Post), verlief die Einarbeitung in Max deutlich unkomplizierter als zunächst gedacht. Der Aufbau von knoten-basierten Programmiersprachen ist größtenteils sehr ähnlich. Auch in Max werden über Objekte bestimmte Signale erzeugt oder verändert. Diese Objekte werden dann miteinander verbunden und können erstaunliche Komplexitäten erreichen.

Beispiel-Patcher für die Umrechnung von ASCII-Daten aus dem seriellen Port

Sensorwerte sichtbar machen

Zur Erinnerung:
Die Sensorwerte des Gyroskops im Würfel werden über ein lokales Netzwerk an den PC gesendet auf dem Ableton (die Musiksoftware) läuft. Diese OSC-Nachrichten enthalten das Skalarprodukt der Vektoren jeder Würfelseite mit dem Vektor (0, 0, 1). Das bedeutet, jeder Wert zeigt an, zu wie viel Prozent eine bestimmte Seite nach oben zeigt, also entgegen der Erdanziehungskraft wirkt.

Wenn also beispielsweise Seite 1 genau nach oben zeigt, so ergibt das Skalarprodukt 1.
Dreht man den Würfel um 180 Grad. dann zeigt Seite 6 nach oben, und Seite 1 nach unten. Für Seite 1 ergibt sich dann das Skalarprodukt -1.
Zeigt Seite 1 weder nach oben, noch nach unten, muss sie seitwärts ausgerichtet sein, also orthogonal zum Vektor (0, 0, 1) stehen. In diesem Fall ergibt das Skalarprodukt 0.

Mit Max können wir diesen Sachverhalt graphisch darstellen und verständlicher machen:

Grafische Darstellung der Sensordaten bei ruhendem Würfel

Im Diagramm sieht man das Skalarprodukt jeder Würfelseite wenn der Würfel nicht bewegt wird. Wie erklärt sind immer die gegenüberliegenden Seiten (1 & 6, 2 & 5, 3 & 4) voneinander abhängig. Die Summe ihrer Skalarprodukte ergibt immer 0.

Mapping

Als nächstes stellt sich die Frage in welcher Form der Sound beeinflusst werden soll. Im Interaktions-Konzept sind die sechs Seiten sechs verschiedenen Tönen zugewiesen. Diese werden je nachdem welche Seite nach oben zeigt. lauter oder leise. Das bedeutet dass die Würfelwerte die Lautstärke von verschiedenen Tönen verändern müssen, um den gewünschten Effekt zu erzielen.

Ein Beispiel dieses Mapping umzusetzen wäre ein neues Ableton-Projekt anzulegen in dem sechs Spuren kontrolliert werden sollen, dann das Max-For-Live-Plugin zu laden, und anschließend die Pfade (Live-Object-Model) zum jeweiligen Lautstärke-Fader herauszufinden. Diese Herangehensweise wird sich allerdings nicht nur als sehr unflexibel herausstellen sondern auch merklich aufwändiger sein. Denn die Pfade mit denen man mithilfe des Live-Object-Model auf die Parameter zugreift, können sehr lang werden. (Beispiel rechts rot-umrandet)

Sobald das System mit den restlichen Würfeln erweitert werden soll, benötigt man eine Lösung die deutlich flexibler sein muss. Im besten Fall kann man das fertige Plugin für verschiedene Zwecke nutzen, und pro Würfeleffekt einfach duplizieren.

Instrument-Rack in Ableton Live

Das Ableton Live Instrument-Rack

Das Instrument-Rack von Ableton Live ermöglicht es verschiedene virtuelle Instrumente gesammelt darzustellen und zu steuern. Die sogenannten Makros des Racks (siehe Abbildung) können verschiedenen Parametern in der Instrumenten-Kette zugewiesen werden. Wenn man nun nicht die Parameter direkt, sondern die Makros des Instrument-Racks ansteuert, ergibt das drei wichtige Vorteile:

Vorteil 1: Eindeutige und aufgeräumte Pfade

Wie erwähnt sind die Pfade zwar komplex, aber eindeutig nachvollziehbar. Man greift jetzt einfach „rückwärts“, das heißt vom Plugin aus, auf die Parameter zu. Egal wo im Projekt das Plugin eingefügt wird, muss also nichts im Detail angepasst werden, solange als Objekt innerhalb eines Instrument-Racks eingefügt wurde.

Vorteil 2: Gesammelter Container

Durch das Instrument-Rack sind alle Sounds an einem Ort gesammelt, und damit automatisch geordnet. Jede Interaktivität findet hier statt, und kann auch von hier pausiert oder verändert werden.

Vorteil 3: Variables Mapping

Der wahrscheinlich größte Vorteil ist die Variabilität die das Makro-Mapping von Ableton bietet. Man kann nicht nur die Lautstärke der verschiedenen Instrumente kontrollieren, sondern auch alle weiteren Parameter der Instrumente, oder Effekte die an die Kette angehängt werden. Dadurch kann man beim Designen der Sounds deutlich kreativer werden, ohne ständig den Max-Code zu öffnen und zu ändern.

Tutorial-Videos

Zu den zwei verschiedenen Max-Patchern habe ich eigene Videos aufgenommen, in denen ich erkläre wie die Systemarchitektur im Detail funktioniert.

Teil 1 dreht sich um den Master Receiver, der die Netzdaten entgegennimmt:

MAX MSP (2) – MASTER RECEIVER

In Teil 2 erkläre ich den Local Receiver, wie er in Ableton Live eingebunden wird und demonstriere live die Soundinteraktion.

MAX MSP (3) – LOCAL RECEIVER

Viel Spaß beim Ansehen!

Verfasst von: