Kategorien-Archiv Studienprojekt

VonAlexander Vozian

Co-Creative Melody Generator: Visual Live-Coding with OM and Supercollider

Abstract: Der Co-Creative Melody Generator ist ein System für zeitgleiches Live-Coding mit SuperCollider und OpenMusic. Während in OpenMusic die Musik auf Notenebene gestaltet wird, ist SuperCollider für die Klangerzeugung zuständig. Die Kommunikation läuft durch Austausch von Nachrichten im Open-Sound-Control Protokoll per Abfrage durch User oder automatisiert.

Verantwortliche: Alexander Vozian

Überblick:

Die Zielsetzung für das Projekt war Integration von OpenMusic (OM) in einen Live Coding Workflow. Meine erste Idee dazu war es, SuperCollider (SC) für die Klangerzeugung zu verwenden und das Setzen der Noten auf OM auszulagern. Das heißt, man kann in SC live coden und OM als Hilfstool benutzen. In der Erarbeitung wurde aber klar, dass der OM-Patch während der Soundausgabe parallel verändert werden kann. Solange das Klang erzeugende Element nicht unterbrochen wird, kann Live Coding auch in OM stattfinden. Beispielsweise ist es möglich, die Auswahl an “Instrumenten”, in dem Fall SC Synths, vorzubereiten und diese komplett in OM zu steuern. Ein anderer kooperativerer Ansatz wäre, die zwei Programme, SC und OM, auf zwei Live Codende aufzuteilen. Zum Beispiel könnte eine Person in SC die Klanggestaltung übernehmen, während eine andere in OM diese Klänge in Zeit setzt. 

OM kümmert sich um die Generierung der Noten und SC um die Klangsynthese. Diese kommunizieren über das Open Sound Control  (OSC) Protokoll. Der User (Live Codende) schickt in SC eine Anfrage per OSC-Message an den OM-Patch. Die Message enthält Parameter für die Generierung einer Melodie, in dem Fall für eine Markov Analyse und Synthese. Die Message besteht aus:

  • der maximalen Anzahl von Noten,
  • die maximale Länge eines Loops in ms,
  • die Unter- und Obergrenze des zu analysierenden Ausgangsmaterials in ms
  • Auswahl des Ausgangsmaterials.

Das Ausgangsmaterial sind etwa 1 min lange Midi Dateien.

Quellen der Midi Dateien: bitmidi.com

Nach der Synthese schickt OM automatisch eine Message mit der Anzahl der generierten Noten, der Länge der Melodie in ms, einer Liste von Frequenzen und einer Liste von Onsets. Diese werden genutzt, um die Synths in SC zu steuern.

Bei jeder Evaluierung wird Notenmaterial analysiert und eine Liste von Frequenzen und Onsets synthetisiert und dann ausgegeben.

Für die Generierung der Noten werden etwa 1 min lange Midi-Dateien verwendet. Die Pitches und die Durations der Noten werden unabhängig voneinander mit Markov Funktionen erster Ordnung der OM-Alea Bibliothek analysiert, synthetisiert und per osc-send abgeschickt. Dadurch entstehen Tonfolgen, die in den Originaldateien nicht vorkommen. (Im Patch wird sichergestellt, dass die Liste der Pitches und die der Durations gleich lang ist.) Die Eingabeargumente sind bereits oben beschrieben.

Eine OSC-Message von OM zu SC besteht aus folgenden Daten:

  • OSC Key als Identifikator,
  • Gesamtzahl der Noten,
  • Länge der Melodie in Millisekunden,
  • Liste der Frequenzen,
  • Liste der Onsets.

Die Gesamtzahl der Noten wird in dem Fall nur für die Navigation durch die unformatierte OSC Message. Die Länge der Melodie wird benötigt, um den Zeitpunkt zu bestimmen, zu welchem die nächste Melodie angefragt wird. Die Liste der Frequenzen und die der Onsets wird erst in SC zusammengesetzt.

Die osc-send Funktion ist dabei in dem Patch markov_firstorder_osc_send. Um den Patch automatisch auszuführen, wenn eine OSC-Message ankommt, sind alle Teile des übergeordneten Patches auf reactive mode gestellt. Die list Funktion kann erst evaluiert werden, wenn alle Formen ein Ergebnis liefern, das heißt, wenn die Markov-Synthese abgeschlossen und osc-send ausgeführt wurde.

Das Ergebnis ist eine Art Server, der beim Eingang einer Anfrage aus SC automatisch eine Melodie zurückschickt.

In SC wird eine neue Instanz von OSCdef erzeugt, die die erhaltenen Parameter in globale Variablen speichert. Ein Synth(\t1) wird definiert, der von Patterns gespielt werden kann. Die Pfuncn Funktion interpretiert die globalen Variablen ~freq und ~dur als Funktionen und fragt diese damit ständig neu ab. Die Pseq Funktion setzt diese in eine Sequenz um, die von Pbind in als Pattern umgesetzt wird. Somit bildet der erste Parameter von ~freq mit dem ersten Parameter von ~dur die erste Note der Melodie. Die Pdef Funktion erstellt eine Instanz, die während der Laufzeit verändert werden kann. Damit wird auch sicher gestellt, dass ein laufender Loop erst nach Ende einer Melodie eine neue spielt.

Um eine neue Melodie, einen neuen Loop, anzufragen, reicht es, eine OSC-Message mit den entsprechenden Parametern zu schicken. Um diesen Prozess zu automatisieren, benötigt man ein die Funktion Tdef. 

Genauso wie das Ausführen eines Codeblocks in SC direkt Einfluss auf den Klang nehmen kann und somit richtig eingebettet werden muss, muss die Evaluierung eines Patches zur richtigen Zeit erfolgen. Im Falle des MWE wäre nicht der Klang unterbrochen, sondern das Metrum. 

Tdef(\om) berechnet zuerst die Zeitdauer, mit der das Senden der OSC-Message verzögert wird. Die Wartezeit ist abhängig von der Gesamtlänge des Loops und der Anzahl der Loops, welche man innerhalb des Tdef setzen kann. Dabei wird sichergestellt, dass der vorhandene Loop immer zu Ende gespielt wird, bevor die Parameter für einen neue Melodie ankommen.

Der Code zu OM und SC findet sich über diesen Link.

Abschließend noch folgendes Klangbeispiel zum Projekt:

Es wird ausschließlich die maximale Länge eines Loops und die Tonanzahl verändert. Das Ausgangsmaterial wird an zwei Stellen ausgewechselt. Es fängt an mit „Mario“, wechselt bei etwa 1:39 zu „Pokemon“ und bei 2:24 zu „Tetris“. Im Beispiel wird bewusst nichts am Klang des Instruments verändert (einfache Saw-Wave), um einen Fokus auf die Wechsel des Notenmaterials zu setzen.

Mario – Main Theme Overworld:


Pokemon – Battle (vs Wild Pokémon):


Tetris Theme:


Ergebnis:

Quellen der Midi Dateien: bitmidi.com

VonFlorian Simon

PixelWaltz: Sonifikation von Bildern in OpenMusic

Abstract: Mit dem OpenMusic-Programm PixelWaltz lassen sich Bilder in symbolische Repräsentation von Musik (Tonhöhen und Einsatzzeitpunkte) umsetzen. Es stehen Optionen zur Bildmanipulation zur Verfügung, mit denen das Resultat zusätzlich beeinflusst werden kann.

Verantwortliche: Florian Simon

Mapping: Pitch

Die Pixel des Bildes werden zeilenweise durchlaufen und die jeweiligen Rot-, Grün- und Blauwerte (zwischen 0 und 1) auf einen gewünschten Tonhöhenbereich gemappt. Aus einem Pixel werden damit stets drei Tonhöhenwerte in Midicent gewonnen. Da zwei nebeneinander liegende Pixel einander in vielen Fällen ähnlich sind, treten bei dieser Mapping-Methode oft sich alle drei Noten wiederholende Muster auf. Hierin liegt der Grund für den Titel des Projektes.

Es besteht auch die Möglichkeit die Anzahl der ausgegebenen Notenwerte zu begrenzen.

Mapping: Einsatzzeitpunkte

Für die Einsatzzeitpunkte und Tondauern kann ein konstanter Wert festgelegt werden. Zudem lässt sich ein Humanizer-Effekt zuschalten, der jede Note innerhalb eines angegebenen Bereiches zufällig nach vorne oder hinten verschiebt. Ausgehend vom Grundtempo lassen sich accelerandi und ritardandi gestalten, indem Listen aus drei Zahlen übergeben werden. Diese stehen für Startnote, Endnote sowie Geschwindigkeit der Tempoänderung. (20 50 -1) sorgt von Note 20 bis Note 50 für ein accelerando, bei dem die Abstände pro Ton um eine Millisekunde kürzer werden. Ein positiver dritter Wert entspricht einem ritardando.

Dynamik

Für die Lautstärke bzw. Velocity lassen sich verschiedene Zufallsbereiche für „rote“, „grüne“ und „blaue“ Noten festlegen. Die so erzeugten Werte können zudem sinusförmig moduliert werden, sodass beispielsweise ein An- und Abschwellen der Lautstärke über längere Zeiträume hinweg möglich ist. Dafür ist die Angabe einer Wellenlänge in Notenzahl sowie des maximalen Abweichungsfaktors nötig.

Begleitstimme

Optional bietet PixelWaltz die Möglichkeit eine Begleitstimme zu generieren, welche aus einzelnen zusätzlichen Tönen in einer gewünschten festen Notenzahlfrequenz besteht. Ist diese nicht durch 3 teilbar, entsteht oft eine Polymetrik. Die Tonhöhe wird zufällig bestimmt und kann dabei zwischen 3 und 6 Halbtönen unter der jeweils „begleiteten“ Note liegen.

Bildbearbeitung

Um weitere Variation zu kreieren sind dem Sonifikationsabschnitt von PixelWaltz Werkzeuge zur Manipulation des Eingangsbildes vorangestellt. Neben der Anpassung von Bildgröße, Helligkeit und Kontrast ist auch eine Verschiebung der Farbwerte und damit ein Umfärben des Bildes möglich. Die Änderungen in der musikalischen Übersetzung sind sofort merkbar: Mehr Helligkeit führt zu einer höheren Durchschnittstonhöhe, mehr Kontrast verkleinert die Zahl der verschiedenen Tonhöhenwerte. Bei einem blaudominierten Bild werden die jeweils letzten Noten der Tripel meist die höchsten sein.

Klangergebnisse

Die klanglichen Resultate unterscheiden sich natürlich je nach Input – gerade fotografiertes Material führt aber oft zu derselben wellenartigen Gesamtstruktur, die sich unregelmäßig und in langsamem Tempo chromatisch mal aufwärts, mal abwärts windet. Die Begleitung unterstützt diesen Effekt und kann einen Gegenpuls zur Hauptstimme bilden.

VonLaura Peter

Whitney Music Box mit OMChroma/OMPrisma in OpenMusic

Die Whitney Music Box ist eine sonifizierte und/oder visuelle Darstellung einer Reihe zusammenhängender Sound-Elemente. Diese Elemente können musikalisch gesehen beispielsweise chromatisch oder harmonisch zusammenhängen. In der visuellen Darstellung wird jedes dieser Elemente mit einem Kreis oder Punkt dargestellt (siehe Abbildung 1). Diese Punkte kreisen je nach eigener zugewiesener Frequenz um einen gemeinsamen Mittelpunkt. Je kleiner die Frequenz, desto kleiner der Radius des Umlaufkreises und desto höher die Umlaufgeschwindigkeit. Jedes Sound-Element repräsentiert in einer harmonischen Reihe Vielfache einer festgelegten Grundfrequenz. Sobald ein Element einen Umlauf um den Mittelpunkt vollbracht hat wird der Sound mit der zu repräsentierenden Frequenz ausgelöst. Durch die mathematische Beziehung zwischen den einzelnen Elementen gibt es Momente während der Ausführung der Whitney Music Box in denen bestimmte Elemente gleichzeitig ausgelöst werden und Phasen, in denen die Elemente konsekutiv wahrgenommen werden können. Zu Anfang und am Ende werden alle Elemente gleichzeitig ausgelöst.

Abbildung 1: Whitney Music Box – visuelle Darstellung

Im Rahmen dieses Projekts wird OMChroma für die Synthese der einzelnen Soundelemente verwendet (siehe Abbildung 2). Die Synthese-Klassen von OMChroma erben von OpenMusic’s class-array Objekt. Die Spalten in dem Array beschreiben die einzelnen Komponenten innerhalb der Synthese. Die Reihen repräsentieren Parameter, die den einzelnen Komponenten lokal oder dem gesamten Prozess global zugewiesen können. Für die Whitney Music Box werden Elemente gebraucht, die die einzelnen Tonhöhenabstufungen und die zeitliche Versetzung der einzelnen Tonhöhenabstufungen umsetzt. Dabei wird eine OMChroma-Matrix als Event angesehen. Ein solches Event repräsentiert eine Tonhöhe und die Sound-Wiederholungen innerhalb der globalen Dauer der Whitney Music Box. Die globale Dauer wird zu Anfang festgelegt und beschreibt zugleich die Umlaufzeit der niedrigsten Frequenz bzw. der zuvor festgelegten Startfrequenz. Jede Matrix repräsentiert eine Frequenz, die ein Vielfaches der Startfrequenz ist. Die Umlaufzeit eines Soundelements ergibt sich durch die Formel:

duration(global) / n

Dabei ist n der Index der einzelnen Soundelemente bzw. Matrizen. Je höher der Index, desto höher ist auch die Frequenz und desto kleiner die Umlaufzeit. Die Wiederholungen der Sound-Elemente, wird durch den Parameter e-dels festgelegt. Jede Komponente einer Matrix erhält ein unterschiedliches Entry-Delay. Diese Entry-Delays stehen in einem regelmäßigen Abstand von duration(global) / n zueinander.

 

Abbildung 2: Anwendung von OMChroma

Ohne Spatialisierung hört sich die Whitney Music Box mit OMChroma wie folgt an:

Alex Player - Best audio player

In Abbildung 3 wird dargestellt, wie die gesammelten Matrizen oder Sound-Events mit der Bibliothek OMPrisma spatialisiert werden. Dabei wurde sich an der visuellen Darstellung der Whitney Music Box orientiert. Dabei sind Sound-Elemente mit niedriger Frequenz weiter vom Mittelpunkt entfernt und Soundelemente mit hoher Frequenz kreisen umso näher um den Mittelpunkt. Mit OMPrisma soll diese Darstellung im Raumklang umgesetzt werden. Das heißt, Sounds mit niedriger Frequenz sollen sich weiter entfernt anhören und Sounds mit hoher Frequenz nah am Hörer. Im OpenMusic-Patch wurden zusätzlich Elemente mit geradem Index weiter nach vorne & weiter nach rechts positioniert und analog Elemente mit ungeradem Index weiter nach links und nach hinten positioniert, um die Sounds gleichmäßig im Raum zu verteilen. Die Klassen von OMPrisma bieten zudem noch Presets für die attenuation-function, air-absorption-function und time-of-flight-function an. Diese wurden eingesetzt, um zusätzlich zu der Positionierung im Raum noch mehr Gefühl von Räumlichkeit zu schaffen.

Abbildung 3: Anwendung von OMPrisma

In Stereo hört sich die Whitney Music Box beispielsweise wie folgt an:


In Abbildung 4 wird dargestellt, wie die gesammelten OMChroma- und OMPrisma-Matrizen über die chroma-prisma-Funktion zusammengelegt. Die Liste aller gesammelten Matrizen werden über einen om-loop zurückgegeben und über die synthesize-Funktion als Sound gerendert (siehe Abbildung 5).

Abbildung 4: chroma-prisma

Abbildung 5: loop und synthesize

Der OpenMusic-Patch sowie Soundbeispiele können unter folgenden Links abgerufen werden:

Projektdateien Stand: 12.10.2023

Github Repository

VonMoritz Reiser

Markov-Prozesse zur Steuerung von Harmonik in Open Music und Common Lisp

Abstract: Ein Projekt über den Einsatz von Zufallsprozessen in einem musikalischen Kontext. Grundsätzlich kommen zwei verschiedene Modelle zum Einsatz. Diese erzeugen Akkordfolgen, welche anschließend mit einem Rhythmus und einer darüber liegenden Melodie ausgestattet werden.

Verantwortliche: Moritz Reiser

 

Überblick

Der Gesamtaufbau des Programms, welcher dem Inhalt des Hauptpatches entspricht, ist in Abbildung 1 zu sehen. Ganz oben befindet sich die Auswahl des zu verwendenden Algorithmus zur Akkordfolgenerzeugung. Über das Auswahlfeld links oben kann dieser ausgewählt werden. Durch die beiden Inputfelder der Subpatches lassen sich jeweils die gewünschte Länge sowie der Startakkord bzw. die Tonart der Komposition festlegen.

Anschließend folgt eine zufällige Bestimmung der jeweiligen Tonlängen. Hier lassen sich das Tempo in BPM sowie die Häufigkeiten der vorkommenden Tonlängen in Vielfachen von Viertelnoten einstellen. Über eine „dx→x“-Funktion werden aus den berechneten Dauern die jeweiligen Startzeitpunkte der Akkorde berechnet. Hier muss beim Verwenden des Programms darauf geachtet werden, dass Open Music aufgrund des zweimal verwendeten Outputs in den beiden Strängen jeweils neue Zufallszahlen berechnet, wodurch der Bezug zwischen Startzeitpunkt und Tondauer verloren geht. Abhilfe kann hier dadurch geschaffen werden, dass nach einmaliger Ausführung die Subpatches der Akkordfolgen- und der Tonlängengenerierung mit „Lock Eval“ gesperrt werden und das Programm anschließend noch einmal ausgeführt wird, um die Startzeitpunkte an die nun gespeicherten Tondauern anzupassen (siehe Hinweistafel im Hauptpatch). Der dritte große Schritt des Gesamtablaufs besteht schließlich in der Generierung einer Melodie, die über der Akkordfolge liegt. Hier wird jeweils ein Ton aus dem zugrunde liegenden Akkord ausgewählt und eine Oktave nach oben verschoben. Dabei kann eingestellt werden, ob dies immer ein zufälliger Akkordton sein soll, oder ob der Ton gewählt wird, welcher dem vorangehenden Melodieton am nächsten bzw. am weitesten entfernt ist.

Das Resultat wird schließlich ganz unten in einem Multi-Seq-Objekt visualisiert.

Abbildung 1: Gesamtaufbau des Kompositionsprozesses

 

Akkordfolgengenerierung

Zur Generierung der Akkordfolge stehen zwei Algorithmen zur Verfügung. Ihnen wird jeweils die gewünschte Länge der Sequenz, welcher der Anzahl der Akkorde entspricht, und der Startakkord bzw. die Tonart übergeben.

Harmonische Akkordfolge mittels Markovkette

Der Ablauf des ersten Algorithmus ist in Abbildung 2 zu sehen. Durch den Subpatch „Create Harmonic Chords“ wird der Grundvorrat von Akkorden erzeugt, der im Folgenden verwendet wird. Dieser entspricht den üblichen Stufen der Kontrapunktlehre und enthält neben Tonika, Subdominante, Dominante und deren Parallelen einen verminderten Akkord auf der siebten Stufe, einen Sixte ajoutée der Subdominante und einen Dominantseptakkord. Der „Key“-Input addiert zu diesen Akkorden einen der gewünschten Tonart entsprechenden Wert hinzu.

Abbildung 2: Subpatch zur Generierung einer harmonischen Akkordsequenz mithilfe einer Markovkette

Durch den Subpatch „Create Transition Matrix“ wird eine Matrix mit Übergangswahrscheinlichkeiten der einzelnen Akkorde erzeugt. Für jede Akkordstufe wird festgelegt, mit welcher Wahrscheinlichkeit sie zu einem bestimmten anderen Akkord übergeht. Die Wahrscheinlichkeitswerte wurden hierbei willkürlich gemäß den in der Kontrapunktlehre üblichen Abläufen gewählt und experimentell angepasst. Dabei wurde für jeden Akkord untersucht, wie wahrscheinlich aus diesem jeweils in einen anderen Akkord übergegangen wird, sodass das Resultat den Konventionen der Kontrapunklehre entspricht und eine häufige Rückkehr zur Tonikastufe ermöglicht, um diese zu fokussieren. Die exakten Übergangswahrscheinlichkeiten sind in der folgenden Tabelle aufgelistet, wobei die Ausgangsklänge in der linken Spalte aufgelistet sind und die Übergänge jeweils zeilenweise repräsentiert werden.

Tabelle 1. Übergangswahrscheinlichkeiten der Harmonien entsprechender Akkordstufen

Die Erzeugung der Akkordfolge findet schließlich in dem Patch „Generate Markov Series“ statt, welcher in Abbildung 3 dargestellt ist. Dieser arbeitet zunächst nur mit Nummerierungen der Akkordstufen, weshalb es genügt, ihm die Länge des Akkordvorrats zu übergeben. Die Lisp-Funktion „Markov Synthesis“ erzeugt nun mithilfe der Übergangsmatrix eine Akkordfolge der gewünschten Länge. Da bei der so erzeugten Sequenz nicht sichergestellt ist, dass der letzte Akkord der Tonika entspricht, kommt eine weitere Lisp-Funktion zum Einsatz, welche so lange weitere Akkorde generiert, bis die Tonika erreicht ist. Da bisher nur mit Nummerierungen der Stufen gearbeitet wurde, werden abschließend die für die jeweiligen Stufen gültigen Akkorde ausgewählt, um die fertige Akkordfolge zu erhalten.

Abbildung 3: Subpatch zur Erzeugung einer Akkordfolge mittels Markovsynthese

 
Chromatische Akkordfolge mittels Tonnetz

Im Gegensatz zur harmonischen Akkordfolge kommen hier alle 24 Dur- und Mollakkorde der chromatischen Skala zum Einsatz (siehe Abbildung 4). Die Besonderheit dieses Algorithmus liegt in der Wahl der Übergangswahrscheinlichkeiten. Diese basieren auf einem sogenannten Tonnetz, welches in Abbildung 5 dargestellt ist.

Abbildung 4: Subpatch zur Generierung einer Akkordfolge auf Basis der Tonnetz-Darstellung

Abbildung 5: Tonnetz (Bildquelle: <https://jazz-library.com/articles/tonnetz/>)

Innerhalb des Tonnetzes sind einzelne Töne aufgetragen und miteinander verbunden. Auf den horizontalen Linien haben die Töne jeweils den Abstand einer Quinte, auf den diagonalen Linien sind kleine (von links oben nach rechts unten) sowie große Terzen (von links unten nach rechts oben) zu sehen. Die sich so ergebenden Dreiecke repräsentieren jeweils einen Dreiklang, beispielsweise ergibt das Dreieck der Töne C, E und G den Akkord C-Dur. Insgesamt sind so alle Dur- und Moll-Akkorde der chromatischen Skala zu finden. Zum Einsatz kommt die Tonnetz-Darstellung meist zu Analyse-Zwecken, da sich aus einem Tonnetz direkt ablesen lässt, wie viele Töne sich zwei verschiedene Dreiklänge teilen. Ein Beispiel ist die Analyse von klassischer Musik der Romantik und Moderne sowie von Filmmusik, da hier die oben verwendeten harmonischen Kontrapunktregeln häufig zu Gunsten von chromatischen und anderen zuvor unüblichen Übergängen vernachlässigt werden. Der Abstand zweier Akkorde im Tonnetz kann hierbei ein Maß dafür sein, ob der Übergang des einen Akkords in den anderen wohlklingend oder eher ungewöhnlich ist. Er berechnet sich aus der Anzahl von Kanten, die überquert werden müssen, um von einem Akkord-Dreieck zu einem anderen zu gelangen. Anders ausgedrückt entspricht er dem Grad der Nachbarschaft zweier Dreiecke, wobei sich eine direkte Nachbarschaft durch das Teilen einer Kante ergibt. Abbildung 6 zeigt hierzu ein Beispiel: Um ausgehend vom Akkord C-Dur zum Akkord f-Moll zu gelangen, müssen drei Kanten überquert werden, wodurch sich ein Abstand von 3 ergibt.

Abbildung 6: Beispiel der Abstandsbestimmung im Tonnetz anhand des Übergangs von C-Dur nach f-Moll

Im Rahmen des Projekts werden nun die Übergangswahrscheinlichkeiten auf Basis der Abstände von Akkorden im Tonnetz berechnet. Hierbei muss lediglich unterschieden werden, ob es sich bei dem jeweils aktiven Dreiklang um einen Dur- oder Mollakkord handelt, da sich innerhalb dieser beiden Klassen für alle Tonarten dieselben Abstände zu anderen Akkorden ergeben. Dadurch kann jeder Übergang von C-Dur bzw. c-Moll aus berechnet und anschließend durch Addition eines Wertes in die gewünschte Tonart verschoben werden. Von beiden Varianten (C-Dur und c-Moll) ausgehend wurden zunächst die Abstände zu allen anderen Dreiklängen im Tonnetz festgehalten:

Abstände von C-Dur:

Abstände von c-Moll:

Um aus den Abständen Wahrscheinlichkeiten zu erhalten wurden zunächst alle Werte von 6 abgezogen, um größere Abstände unwahrscheinlicher zu machen. Anschließend wurden die Resultate als Exponent der Zahl 2 verwendet, um nähere Akkorde stärker zu gewichten. Insgesamt ergibt sich somit die Formel

P=2^(6-x) ; P=Wahrscheinlichkeit,  x=Abstand im Tonnetz

zur Berechnung der Übergangsgewichtungen. Diese ergeben sich für alle möglichen Akkordkombinationen zu folgender Matrix, aus welcher bei Division durch die Zeilensumme 342 Wahrscheinlichkeiten resultieren.

Innerhalb des Patches stellt die Lisp-Funktion „Generate Tonnetz Series“ zunächst jeweils fest, ob es sich bei dem aktiven Akkord um einen Dur- oder Molldreiklang handelt. Da wie bei der harmonischen Vorgehensweise zunächst nur mit den Zahlen 0-23 gearbeitet wird, kann dies über eine einfache Modulo-2-Rechnung bestimmt werden. Je nach Resultat wird der jeweilige Wahrscheinlichkeiten-Vektor herangezogen, ein neuer Akkord bestimmt und schließlich die vorherige Stufe hinzuaddiert. Ergibt sich eine Zahl, die größer als 23 ist, wird 24 abgezogen, um immer innerhalb der selben Oktave zu bleiben.

Nach der zuvor festgelegten Länge der Sequenz ist dieser Abschnitt beendet. Auf eine Rückführung zur Tonika wie im vorherigen Abschnitt wird hier verzichtet, da aufgrund der Chromatik keine so stark ausgeprägte Tonika vorherrscht wie bei der harmonischen Akkordfolge.

Bestimmung der Tonlängen

Nach der Generierung einer Akkordfolge werden für die einzelnen Dreiklänge zufällige Längen berechnet. Dies geschieht im Subpatch „Calculate Durations“, der in Abbildung 6 dargestellt ist. Neben der gewünschten BPM-Zahl wird ein Vorrat an Tonlängen als Vielfache von Viertelnoten übergeben. Wahrscheinlichere Werte kommen in diesem Vorrat häufiger vor, sodass über „nth-random“ eine entsprechende Wahl getroffen werden kann.

Abbildung 7: Subpatch zur zufälligen Bestimmung der Tondauern

Melodiegenerierung

Der grundsätzliche Ablauf der Melodiegenerierung wurde oben bereits dargestellt: Aus dem jeweiligen Akkord wird ein Ton ausgewählt und um eine Oktave nach oben transponiert. Dieser Ton kann zufällig oder entsprechend dem kleinsten oder größten Abstand zum Vorgängerton gewählt werden.

 

Klangbeispiele

Beispiel für eine harmonische Akkordfolge:

 
 

Beispiel für eine Tonnetz-Akkordfolge:

 
 
VonAndres Kaufmes

Transient Processor

Transient Processor

SKAS-Symbolische Klangverarbeitung und Analyse/Synthese

Prof. Dr. Marlon Schumacher

Zwischenprojekt von Andres Kaufmes 

HfM Karlsruhe – IMWI (Institut für Musikinformatik und Musikwissenschaft)

WiSe 2022/23

_____________

 

Für dieses Zwischenprojekt habe ich mich mit der Implementierung eines Transient- Prozessors in OpenMusic mit Hilfe der OM-Sox Library beschäftigt.
Mit einem Transient Prozessor (auch Transient Designer oder Transient Shaper) lässt sich das Ein- und Ausschwingverhalten (Attack/Release) der Transienten eines Audiosignal beeinflussen.

Das erste vorgestellte Hardware Gerät war der 1998 von der Firma SPL vorgestellte SPL TD4, welcher als 19″ Rack-Gerät erhältlich war und in fortgeschrittener Version bis heute erhältlich ist.

           

Transient Designer der Firma SPL.  (c) SPL 

Transient Designer eignen sich besonders für die Bearbeitung von perkussiven Klängen oder auch für Sprache. Zunächst müssen die Transienten aus dem gewünschten Audiosignal isoliert werden, dies lässt sich zum Beispiel mit Hilfe eines Kompressors umsetzen. Durch eine kurze Attack-Zeit werden die Transienten „geduckt“ und das Signal kann vom Original abgezogen werden. Anschließend kann das Audiosignal im Verlauf der Signalkette mit weiteren Effekten bearbeitet werden.

Transient-Prozessor Patch.                        FX- Kette der beiden Signalwege (links „Transient“, rechts „Residual“).

Im Patch zu sehen ist an oberster Stelle die zu bearbeitende Audiodatei, von welcher, wie eben beschrieben, mit Hilfe eines Kompressors die Transienten isoliert, und das resultierende Signal vom originalen abgezogen wird. Nun werden zwei Signalwege gebildet: Die isolierten Transienten werden in der linken „Kette“ verarbeitet, das residuale Signal in der rechten. Nachdem beide Signalwege mit Audioeffekten bearbeitet wurden, werden sie zusammengemischt, wobei das Mischverhältnis (Dry/Wet) beider Signalwege nach belieben eingestellt werden kann. Am Ende der Signalverarbeitung befinden sich ein globaler Reverb-Effekt.

„Scope“ Ansicht der beiden Signalwege.               Skizzen zum möglichen Signalweg und Verarbeitung.

Klangbeispiele:

Isoliertes Signal:

Residuales Signal:

VonEveline Vervliet

Conductor Gesture Recognition via ML techniques

Abstract: Beschreibung des Inertial Motion Tracking Systems Bitalino R-IoT und dessen Software

Verantwortliche: Prof. Dr. Marlon Schumacher, Eveline Vervliet

Introduction

In this blog, I will explain how we can use machine learning techniques to recognize specific conductor gestures sensed via the the BITalino R-IoT platform in Max. The goal of this article is to enable you to create an interactive electronic composition for a conductor in Max.

For more information on the BITalino R-IoT, check the previous blog article.

 

This project is based on research by Tommi Ilmonen and Tapio Takala. Their article ‚Conductor Following with Artificial Neural Networks‘ can be downloaded here. This article can be an important lead in further development of this project.


Demonstration Patches

In the following demonstration patches, I have build further on the example patches from the previous blog post, which are based on Ircam’s examples. To detect conductor’s gestures, we need to use two sensors, one for each hand. You then have the choice to train the gestures with both hands combined or to train a model for each hand separately.

Detect static gestures with 2 hands combined

When training both hands combined, there are only a few changes we need to make to the patches for one hand.

First of all, we need a second [bitalino-riot] object. You can double click on the object to change the ID. Most likely, you’ll have chosen sensor 1 with ID 0 and sensor 2 with ID 1. The data from both sensors are joined in one list.

In the [p mubu.gmm] subpatch, you will have to change the @matrixcols parameter of the [mubu.record] object depending on the amount of values in the list. In the example,  two accelerometer data lists with each 3 values were joined, thus we need 6 columns.

The rest of the process is exactly the same as in previous patches: we need to record two or more different static postures, train the model, and then click play to start the gesture detection.

Download Max patch

Download Max patch with training example
Download training data

Detect static gestures with 2 hands separately

When training both hands separately, the training process becomes a bit more complex, although most steps remain the same. Now, there is a unique model for each hand, which has to be trained separately. You can see the models in the [p mubu.gmm-left] and [p mubu.gmm-right] subpatches. There is a switch object which routes the training data to the correct model.

Download Max patch

Download Max patch with training example
Download training data

In the above example, I personally found the training with both hands separate to be most efficient: even though the training process took slightly longer, the programming after that was much easier. Depending on your situation, you will have to decide which patch makes most sense to use. Experimentation can be a useful tool in determining this.

Detect dynamic gestures with 2 hands

The detection with both hands of dynamic gestures follow the same principles as the above examples. You can download the two Max patches here:

Download Max patch mubu.hhmm with two hands combined
Download Max patch mubu.hhmm with two hands separate


Research

The mentioned tools can be used to detect ancillary gestures in musicians in real-time, which in turn could have an impact on a musical composition or improvisation. Ancillary gestures are „musician’s performance movements which are not directly related to the production or sustain of the sound“ (Lähdeoja et al.) but are believed to have an impact both in the sound production as well as in the perceived performative aspects. Wanderley also refers to this as ‘non-obvious performer gestures’.

In a following article, Marlon Schumacher worked with Wanderley on a framework for integrating gestures in computer-aided composition. The result is the Open Music library OM-Geste. This article is a helpful example of how the data can be used artistically.

Links to articles:

  • Marcelo M. Wanderley – Non-obvious Performer Gestures in Instrumental Music download
  • O. Lähdeoja, M. M. Wanderley, J. Malloch – Instrument Augmentation using Ancillary Gestures for Subtle Sonic Effects download
  • M. Schumacher, M. Wanderley – Integrating gesture data in computer-aided composition: A framework for representation, processing and mapping download

Detecting gestures in musicians has been a much-researched topic in the last decades. This folder holds several other articles on this topic that could interest.


Links to documentation

Demonstration videos and Max patches made by Eveline Vervliet

Official R-IoT documentation

Max patches by Ircam and other software

The folder with all the assembled information regarding the Bitalino R-IoT sensor can be found here.

This link leads to the official Data Sheet from Bitalino.

 

VonEveline Vervliet

Inertial Motion Tracking mit BITalino R-IoT

Abstract: Beschreibung des Inertial Motion Tracking Systems BITalino R-IoT und dessen Software

Verantwortliche: Prof. Dr. Marlon Schumacher, Eveline Vervliet

Introduction to the BITalino R-IoT sensor

The R-IoT module (IoT stands for Internet of Things) from BITalino includes several sensors to calculate the position and orientation of the board in space. It can be used for an array of artistic applications, most notably for gesture capturing in the performative arts. The sensor’s data is sent over WiFi and can be captured with the OSC protocol.

The R-IoT sensor outputs the following data:

  • Accelerometer data (3-axis)
  • Gyroscope data (3-axis)
  • Magnetometer data (3-axis)
  • Temperature of the sensor
  • Quaternions (4-axis)
  • Euler angles (3-axis)
  • Switch button (0/1)
  • Battery voltage
  • Sampling period

The accelerometer measures the sensor’s acceleration on the x, y and z axis. The gyroscope measures the sensor’s deviation from its ’neutral‘ position. The magnetometer measures the sensor’s relative orientation to the earth’s magnetic field. Euler angles and quaternions measure the rotation of the sensor.

The sensor has been explored and used by the {Sound Music Movement} department of Ircam. They have distributed several example patches to receive and use data from the R-IoT sensor in Max. The example patches mentioned in this article are based on these.

The sensor can be used with all programs that can receive OSC data, like Max and Open Music.

 

Max patches by Ircam and other software
software/
  motion-analysis-max-master/
    max-bitalino-riot/
      bitalino-riot-analysis-example.maxpat
    max-motion-features/
      freefall.maxpat
      intensity.maxpat
      kick.maxpat
      shake.maxpat
      spin.maxpat
      still.maxpat
│    README.md


Demonstration Videos

In the following demonstration videos and example patches, we use the Mubu library in Max from Ircam to record gestures with the sensor, visualise the data and train a machine learning algorithm to detect distinct postures. The ‚Mubu for Max‘ library must be downloaded in the max package manager.

Mubu.gmm example patch

Detect static gestures with mubu.gmm

First, we use the GMM (Gaussian mixture model) with the [mubu.gmm] object. This model is used to detect static gestures. We use the accelerometer data to record three different hand postures.

Download Max patch

 

Detect dynamic gestures with mubu.hhmm

The HHMM (hierarchical hidden Markov model) can be used through the [mubu.hhmm] object to detect dynamic (i.e. moving) hand gestures.

Download Max patch

 

Detect dynamic gestures with Mubu Gesture Follower

The Gesture Follower (GF) is a separate tool from the Mubu library that can be used in gesture recognition applications. In the following video, the same movements are trained as in the Mubu.hhmm demonstration so we can easily compare both methods.

Download Max patch

 

Gesture detection and vocalization with Mubu in Max for the Bitalino R-IoT

The [mubu.xmm] object uses hierarchical multimodel hidden Markov models for gesture recognition. In the following demonstration video, gestures and audio is recorded simultaneously. After training, a gesture will trigger its accompanying audio recording. The sound is played back via granular or concatenative synthesis.

Download Max patch with granulator
Download Max patch with concatenative synthesis

Download static training data
Download dynamic training data

 


Links to documentation

Demonstration videos and Max patches made by Eveline Vervliet

Official R-IoT documentation

The folder with all the assembled information regarding the Bitalino R-IoT sensor can be found here.

This link leads to the official Data Sheet from Bitalino.


Videos from Ircam

An example of an artistic application from Ircam on YouTube

VonJakob Schreiber

Spatiale Transformation des Stückes »Ode An Die Reparatur«

Abstract: Der Eintrag beschreibt die Spatialisierung des Stückes »Ode An Die Reparatur« (2021) und dessen Transformation in eine Higher Order Ambisonics Version. Ein binauraler Mix des fertigen Stückes ermöglicht es, den Arbeitsprozess anhand des Ergebnisses nachzuvollziehen.

Betreuer: Prof. Dr. Marlon Schumacher

Ein Beitrag von: Jakob Schreiber

Stück

Das Stück »Ode An Die Reparatur« (2021) besteht aus vier Sätzen, von denen jeder sich auf einen anderen Aspekt einer fiktiven Maschine bezieht. Interessant an diesem Prozess war es, den Übergang von Maschinenklängen in musikalische Klänge zu untersuchen und über den Verlauf des Stückes zu gestalten.

Produktion

Die Produktions-Ressourcen des Stückes waren einerseits ein UHER-Tonbandgerät, welches einfache Repitch-Veränderungen ermöglicht und durch seine Funktionsweise mit Motoren und Riemen für die Umsetzung dieses an mechanische Maschinen angelehnten Stückes prädestiniert war. Außerdem kam SuperCollider als digitale Klangsynthese- und Verfremdungsumgebung zum Einsatz.

Aufbau

Das Stück besteht aus vier Sätzen.

Erster Satz

Das Tonmaterial des Beginns setzt sich aus verschiedenen Aufnahmen eines Tonbandgerätes zusammen, über welches neben Stille klar hörbare, synthetisierte Motoren-Klänge abgespielt werden.

Zweiter Satz

Die zu manchen Teilen an Vogelgezwitscher erinnernden Klangobjekte treten teils unvermittelt aus steriler Stille in den Vordergrund.

Dritter Satz

Die perforative Charakteristik im inneren eines Zahnradgetriebes transformiert sich im Verlauf des Satzes zu tonal ausgebildeten Resonanzen.

Vierter Satz

Im letzten Satz spielen die Motoren eine monumental anmutende Abschluss-Hymne.

Spatialisierung

Angelehnt an die kompositorische Form des Stückes halten sich die Spatialisierungs-Entwürfe an die Unterteilung in Sätze.

Arbeits-Praxis

Der Arbeitsprozess lässt sich, ähnlich wie der OM-Patch, in verschiedene Bereiche aufteilen. Im Labor-Abschnitt erforschte ich verschiedene Spatialisierungsformen auf ihre Ästhetische Wirkung hin und untersuchte deren Übereinstimmung mit der kompositorischen Form des bereits bestehenden Stückes.

Um verschiedene Trajektorien, oder feste Positionen von Klangobjekten zu ermitteln spielte neben der auditiven Wirkung auch die visuelle Einschätzung der jeweiligen Trajektorien eine wichtige Rolle.

Letztendlich wurden die Paramter der bereits vorausgewählten Trajektorien mit einem Streuungsverlauf ergänzt, fein justiert und schließlich über eine Kette aus Modulen in ein Higher Order Ambisonics Audiofile fünfter Ordnung transformiert.

In Iterativer Weise werden die synthetisierten Mehrkanal-Dateien in REAPER in das Gesamtgefüge eingepflegt und deren Wirkung untersucht, bevor sie mit einem optimierten Set an Parametern und Trajektorien noch einmal den Syntheseprozess durchlaufen.

Näheres zu den einzelnen Sätzen

Zunächst kann hier die binaurale Version des spatialisierten Stückes als ganzes angehört werden. In der Folge werden kurz die Herangehensweisen der einzelnen Teile beschrieben

 

 
Erster Satz

Die lange gezogenen, wie Schichten übereinander liegenden Klanwolken bewegen sich im ersten Teil dem Grundtempo des Satzes entsprechend. Die Trajektorien liegen dabei in der Summe U-förmig um den Hör-Bereich, wobei sie nur die Seiten und Vorderseite abdecken.

Zweiter Satz

Einzelne Klang-Objekte sollen aus sehr verschiedenen Positionen zu hören sein. Nahezu perkussive Klänge aus allen Richtungen des Raumes lassen die Aufmerksamkeit der Hörer*in springen.

Dritter Satz

Das klangliche Material des Teiles ist eine an den Klang von Zahnrädern, oder eines Getriebes angelehnte Klangsynthese. Das Augenmerk hierbei lag in der Immersion in die fiktive Maschine. Aus eben diesem Klangmaterial entstehen durch Resonanzen und andere Veränderungen liegetöne, die sich zu kurzen Motiven aneinander reihen.

Das Spatialisierungskonzept für diesen Teil setzt sich aus beweglichen und teilweise statischen Objekten Zusammen. Die beweglichen erschaffen zu Beginn des Satzes eine Anmutung von Räumlichkeit Immersion. Zum Ende des Satzes kommen zwei verhätnismäßig statische Objekte links und rechts der Stereobasis hinzu, die vor allem die melodie-haften Aspekte des Klanges hervorheben und an ihrer jeweiligen Position lediglich flüchtig auf der vertikalen Achse oszillieren.

Vierter Satz

Die Instrumentierung dieses Teiles des Stückes setzt sich aus drei Simulationen eines Elektromotors zusammen, die jeweils eine Eigene Stimme verfolgen. Um die einzelnen Stimmen noch etwas besser voneinander zu trennen, entschied ich mich dazu, jeden der vier Motoren als einzelnes Klangobjekt zu behandeln. Um den monumentalen Charakter des Schlussteils zu unterstützen, bewegen sich die Objekte dabei nur sehr langsam durch den fiktiven Raum.

 

VonMila Grishkova

Komposition in 3D Audio (Ambisonics 5. Ordnung)

In diesem umfassenden Artikel werde ich den Schaffensprozess meiner Komposition beschreiben, um meine Erfahrung im Zuge der Mehrkanal-Bearbeitungen zu präsentieren. Die Komposition habe ich im Rahmen des Seminars „Visuelle Programmierung der Raum/ Klangsynthese (VPRS)“ bei Prof. Dr. Marlon Schumacher an der HFM Karlsruhe produziert.

 

Betreuer:: Prof. Dr. Marlon Schumacher
Eine Studie von Mila Grishkova
Somersemester 2022
Hochschule für Musik, Karlsruhe

Das Ziel

Das Ziel meiner Projektarbeit war es, eine komplette Erfahrung mit der Mehrkanal-Bearbeitung zu bekommen.

Ich benutze Klänge um Komposition zu bauen.
Dann realisiere ich das Stück im Format 3D Ambisonics 5. Ordnung (36-Kanal Audiodatei). Ich benutze Mehrkanal-Bearbeitungen mit OM-SoX Spatialisierung/Rendering in Ambisonics mit OMPrisma, hierbei: Dynamische Spatialisierung (hoa.continuous). Die resultierenden Audio Dateien importiere ich in ein entsprechendes Reaper Projekt (Template wird zur Verfügung gestellt (s. Fig 7)). Innerhalb Reaper sind die Ambisonics Audiospuren mit Plugins bearbeitet.

1. Figur & 1. Sound

In der 1. Figur kann man einen OpenMusik Patch erkennen. In dem Patch „Sound1“ befindet sich die Methode Sound1 zum bearbeiten. Ich benutze Sound-voice, dann mache ich eine Transposition (OM sox-transpose, OM sox-normalize), dann benutze ich Verzögerungsleitungen (OM sox-tapdelay). Nächster Schritt ist rückwärts (OM sox-reverse). Dann kann man in Patch Transposition sehen und ich benutze die random-Methode (OM sox-random). Das letzte Element dieses Patches ist die Speed-Bearbeitung (OM sox-speed).

 

Fg. 1 zeigt OpenMusic Patch Sound1: Dieser Patch zeigt transformation des 1.Sounds

Audio I: der erste Klang

Sound 1

✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴

✅ 2. Figur & 2. Sound

In der 2. Figur kann man einen OpenMusik Patch sehen. In dem Patch „Sound2“ befindet sich die Methode „Sound2“ zum bearbeiten. Ich mache die gleiche Manipulationen, wie mit dem 1. Sound, um 2.Sound zu bearbeiten. Die Beschreibung kann man oben lesen.

Fg. 2 zeigt OpenMusic Patch Sound2: Dieser Patch zeigt transformation des 2.Sounds

    Audio II: der zweite Klang

Sound 2

✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴

✅ 3. Figur & 3. Sound

In der 3. Figur kann man den OpenMusic Patch „Mix“ sehen. In diesem Patch befindet sich der MixProzess „2 Klänge“ (OM sound-mix), die ich in den letzten 2 Patches beschrieben habe. Ich addiere Pausen (OM sound-silence) und dann wiederhole ich das Klangmaterial 3 mal (OM sound-loop).

Fg. 3 zeigt OpenMusic Patch „Mix“: Dieser Patch zeigt Sound-mix (Sound 1 und Sound 2).

    Audio III: der dritte Klang

Sound 3

✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴

✅ 4. Figur & 4. Sound

In der 4. Figur befindet sich der Patch 4, in dem man die Bearbeitung der Komposition von Takasugi „Diary of a Lung“ sehen kann.

Der Komponist Steven Kazuo Takasugi hat seine Musikstuck „Diary of a Lung, version for eighteen musicians and electronic playback“ an der Hochschule für Musik Karlsruhe präsentiert und er hat 2 Toningenieure gesucht, die seine Komposition bei dem Konzert live mit mehreren Kanäle abspielen können.

„Takasugi ist heute einer der renommiertesten Komponisten im Bereich Neue Musik. Seine Arbeit konzentriert sich auf elektroakustische Komposition, meist mit musiktheatralischen Elementen: Sein international gefeiertes Werk „Sideshow“ für Live-Oktett, elektronische Verstärkung und Wiedergabe (2009–2015) ist ein gutes Beispiel. Bemerkenswerterweise umfasst sein Œuvre weniger als zwei Dutzend Werke. Oft arbeitet er jahrelang an einem Stück – umso größer ist die Spannung, mit der jedes neue Stück erwartet wird.“(C)
Herr Takasugi entwickelt seine Musiksprache. Als Komponist, hat Herr Takasugi hat seine Komposition mit einer Konzeption verarbeiten. Die Hauptidee war, dass man muss seinen Körper als ein Instrument benutzen.  Takasugis Projekte zeichnen sich durch eine Bezugnahme nicht nur auf den Inhalt des künstlerischen Ausdrucks (zum Beispiel den Inhalt eines musikalischen Werks), sondern auch auf den Ausdrucksakt (die Tatsache, dass Musik gespielt wird, den Körper des Interpreten, der Atem des Darstellers).
Körperkonzept spielt eine große Rolle in Takasugis Philosophie. Der Körper bringt in dem Prozess die Zeit und hilft in dem Moment (hier und jetzt) sich zu fokussieren. Der Körper hilft, diesen Prozess als meditativen Prozess wahrzunehmen. Um dieses Musikstuck zu produzieren, hat Herr Tahasugi sich und verschiedene Klänge von seinem Körper aufgenommen.
Die Tonregie muss große Verantwortung übernehmen und muss als Instrumentalist die Musik abspielen. Deswegen können diese Arbeit, das Audiosignal an mehrere Kanäle zu schicken, weder eine Machine noch Computer oder Code (lautet Herr Takasugi) übernehmen.
Als Tonregie habe ich dieses Musikstuck gespielt. Genau deswegen war es für mich (als Musikinformatikerin) interessant zu testen, was man in dieser Musik algorithmisieren kann.

Deswegen, habe ich als Teil meines Materials Takasugi’s Musikstuck genommen.

Als Bearbeitungsmethode benutze ich delay (OM sox-tapdelay), dann mache Stereo zu Mono. In Patch „FX“ befinden sich OM sox-phaser, OM sox-tremolo (s. Fg 5).

Fg. 4 zeigt OpenMusic Patch „Takasugi“: Dieser Patch zeigt Bearbeitung des Materials vom Audio Takasugi „Diary of a Lung“

In der nächsten Figur (Fig. 5) kann man den Patch „FX“ sehen.

Fg. 5 zeigt OpenMusic Patch „FX“: Dieser Patch zeigt OM sox-phaser, OM sox-tremolo

    Audio IV: der vierte Klang

Sound 4

✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴

✅ 1.Ergebnis

In der 6. Figur sieht man die letzte Bearbeitung. Ich mache einen Mix mit einem Audiomaterial (Mix 2 Sound + Takasugi) und meinem Projekt, welches ich im Rahmen von SKAS realisiert habe. Die Beschreibung des Projekts kann man hier finden.

Fg. 6 zeigt OpenMusic Patch „FinalMix“: Dieser Patch zeigt die letzte Transformation mit der Mono-spur

Das Ergebnis der letzen Iteration ist hier zu hören:

Audio V: der fünfte Klang

Sound 5

✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴

✅ 2.Ergebnis (OMPrisma)

Dann habe ich die resultierenden Audio Dateien mit OMPrisma bearbeiten (s. Fig 7).

Hauptidee von Herrn Takasugi ist, dass Komponist (und Musiker) muss sehr persönlich Musik zu produzieren. Man muss „sich“ in der Komposition mitbringen.

Die Idee, dass Man „sich“ in der Komposition mitbringen muss, praktisch bedeutet aber auch, dass man irgendwelche zufällige Elemente mitbringt. Zufällige Elemente sind notwendig: als Menschen wir machen Fehler, wir können was übersehen, oder spontan entscheiden. Ich benutze OM-random um diese zufällige Elemente in der Komposition zu integrieren.

 

Fg. 7 zeigt OpenMusic Patch „OMPrisma“: Dieser Patch zeigt die Transformation mit HOA.Continuous

Als eine Methode um Komposition zu personifizieren benutze ich meine Name (Mila) als Muster für die Bewegung (s. Fig 8).

 

Fg. 8 zeigt OpenMusic Objekt „BPF“: Dieses Objekt zeigt mein Name als Muster für die Transformationen.

Dann benutze 3D OpenMusic Objekt. Mann kann auch 3D gut sehen (s. Fig. 9).

Fg. 9 zeigt OpenMusic Objekt „3DC“: Dieses Objekt zeigt die Transformationen.

Mit dem traj-separ Objekt kann man x-, y-, z- Koordinate nach HOA.Continuous schicken. Bei HOA.Continuous kann man auch die Länge der Komposition auszuwählen (im Sek). In meinem Fall steht 240, was 4 Minuten bedeutet.

Dann mit hoa-setup kann man auswählen, welche Klas von HOA man braucht. In meinem Fall ist HOA-setup 5, das bedeutet, dass ich High Order Ambisonic benutze.

Mann kann First Order Ambisonic und High Order Ambisonic unterscheiden. First Order Ambisonic ist eine Aufnahmemöglichkeit für 3D-Sound („First Order Ambisonic“ (FOA)), das aus vier Kanälen besteht und kann u.a. auch in verschiedene 2D-Formate exportiert werden (z. B. Stereo-, Surround-Sound).

Mit Ambisonic höherer Ordnung kann man Schallquellen noch genauer lokalisieren. Mann kann eine genauere Bestimmung des Winkels realisieren. Je höher die Ordnung, desto mehr Sphären kommen dazu.

„The increasing number of components gives us higher resolution in the domain of sound directivity. The amount of B-format components in High order Ambisonics (HOA) is connected with formula for 3D Ambisonics: (? + 1)2 or for 2D Ambisonics 2? + 1 where n is given Ambisonics order“. (C)

✅ Ergebnis OpenMusic Projekts mit OMPrisma kann man ? hier ? als Audio downloaded.
✅ Ergebnis OpenMusic Projekts mit OMPrisma kann man ? hier ? als Code downloaded.

✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴✴

✅ Reaper

Dann habe ich die resultierenden Audio Dateien in ein Reaper Projekt importiert und die Ambisonics Audiospuren mit Plugins bearbeitet und neue Manipulationen gemacht.

Nach dem das Audio material ist in Reaper hinzugefügt, muss man Routing machen. Hauptidee ist, dass 36 Kanäle werden beim ausgewählt und gesendet nach Ambisonic Buss (neuer Spur (s. Fig 10)).

Fg. 10 zeigt Reaper Projekt: Schritt Routing (36 Kanäle), sends nach Ambisonic Bus

✅ Mixing & Plugins

Ich habe die Kodierung des vorbereiteten Materials in das B-Format gemacht, automatisierte dynamische spaialisieung verwendet habe. Ich habe auch dynamische Korrektur (Limiter) gemacht.

Mit Plugins kann man den Sound nach Belieben verändert und verbessert. In der Audiotechnik sind Erweiterungen für DAWs, auch die, die veschidene Instrumente simulieren, oder Hall und Echo hinzufugen. Die habe ich Reaper verwendet:

IEM Plug-in Suite.
ambiX v0.2.10 – Ambisonic plug-in suite.
ATK_for_Reaper_Mac_1.0.b11.

In dem Spur Ambisonic Bus habe ich (s. Fig 11):
VST: EnergyVisualizer (IEM) (64ch) hinzugefügt.

Fg. 11 zeigt Reaper Projekt: Ambisonic Bus VST Plugin (VST: EnergyVisualizer (IEM) (64ch)).

Dann habe ich mit den PlugIn EQ redaktiert (s. Fig 12). Ich habe:
VST: Multi EQ (IEM) (64ch) hinzugefügt.

Fg. 12 zeigt Reaper Projekt: Spur „VPRS-Projekt“ und VST Plugin (VST: Multi EQ (IEM) (64ch)).

Dann habe ich mit den PlugIn DualDelay delay hinzugefügt (s. Fig 13).
VST: DualDelay (IEM) (64ch).

Fg. 13 zeigt Reaper Projekt: Spur „VPRS-Projekt“ und VST Plugin (VST: DualDelay (IEM) (64ch)).

Dann habe ich zum Master Track JS: ATK FOA Decode Binaural hinzugefügt (s. Fig 14).
JS: ATK FOA Decode Binaural.

Fg. 14 zeigt Reaper Projekt: Spur Master Track mit JS: ATK FOA Decode Binaural .

Dann habe ich zum Master Track mit JS: NP1136 Pea Limiter (s. Fig 15).
JS: ATK FOA Decode Binaural.

 

Fg. 15 zeigt Reaper Projekt: Spur Master Track mit JS: NP1136 Peak Limiter

Dann habe ich Rendering gemacht (s. Fig 16).
Render to File

Fg. 16 zeigt Reaper Projekt: Render to File

✅ Ergebnis Reaper Projekts kann man ? hier ? (Audio, Reaper Project, OM Code) downloaded.

 

 

 

 

 

 

VonZeno Lösch

Erweiterung der akousmatischen Studie – 3D 5th-order Ambisonics

Dieser Beitrag handelt über die vierte Iteration einer akousmatischen Studie von Zeno Lösch, welche im Rahmen des Seminars „Visuelle Programmierung der Raum/Klangsynthese“ bei Prof. Dr. Marlon Schumacher an der HFM Karlsruhe durchgeführt wurden. Es wird über die grundlegende Konzeption, Ideen, aufbauende Iterationen sowie die technische Umsetzung mit OpenMusic behandelt.

Verantwortliche: Zeno Lösch, Master Student Musikinformatik der HFM Karlsruhe, 2. Semester

 

Pixel

Um Parameter zum Modulieren zu erhalten, wurde ein Python-Script verwendet.  

  Dieses Script ermöglicht es ein beliebiges Bild auf 10 x 10 Pixel zu skalieren und die jeweiligen Pixel Werte in eine Text Datei zu speichern. „99 153 187 166 189 195 189 190 186 88 203 186 198 203 210 107 204 143 192 108 164 177 206 167 189 189 74 183 191 110 211 204 110 203 186 206 32 201 193 78 189 152 209 194 47 107 199 203 195 162 194 202 192 71 71 104 60 192 87 128 205 210 147 73 90 67 81 130 188 143 206 43 124 143 137 79 112 182 26 172 208 39 71 94 72 196 188 29 186 191 209 85 122 205 198 195 199 194 195 204 “ Die Werte in der Textdatei sind zwischen 0 und 255. Die Textdatei wird in Open Music importiert und die Werte werden skaliert.      

Diese skalierten Werte werden als pos-env Parameter verwendet.      

Reaper und IEM-Plugin Suite

 

Mit verschiedenen Bildern und verschiedenen Skalierungen erhält man verschiedene Ergebnisse die für man als Parameter für Modulation verwenden kann. In Reaper wurden bei der Postproduktion die IEM-Plugin-Suite verwendet. Diese Tools verwendet man für Ambisonics von verschiedenen Ordnungen. In diesem Fall wurde Ambisonics 5 Ordnung angewendet. Ein Effekt der oft verwendet wurde ist der FDNReverb. Dieses Hallgerät bietet die Möglichkeit einen Ambisonics Reverb auf ein Mulikanal-File anzuwenden.           Die Stereo und Monofiles wurden zuerst in 5th Order Ambisonics Codiert (36 Kanäle) und schließlich mit dem binauralen Encoder in zwei Kanäle umgewandelt.                 Andere Effekte zur Nachbearbeitung(Detune, Reverb) wurden von mir selbst programmiert und sind auf Github verfügbar. Der Reverb basiert auf einen Paper von James A. Moorer About this Reverberation Business von 1979 und wurde in C++ geschrieben. Der Algorythmus vom Detuner wurde von der HTML Version vom Handbuch „The Theory and Technique of Electronic Music“ von Miller Puckette  in C++ geschrieben.     Das Ergebnis der letzen Iteration ist hier zu hören.