Autor-Archiv Laura Peter

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

VonLaura Peter

Shimmer Reverb

Idee

Innerhalb dieses Projekts sollen die Funktionalitäten des DSP-Plugins Valhalla Shimmer von Valhalla DSP mit Hilfe von OpenMusic nachgebaut werden. Valhalla Shimmer ist ein Reverb-Plugin, das sich dadurch auszeichnet im Feedbackloop einen Pitchshifter einzubauen. Gepaart mit einem Reverb mit langer Abklingzeit kann das Feedbacksignal dadurch ein „schimmernden“ Klang erhalten. Dieses Prinzip wurde erstmals von Brian Eno und Daniel Lanois angewandt. Ein Beispiel ist in diesem Video zu finden. Ein ähnlicher Effekt soll jetzt im Rahmen dieses Projekts in OpenMusic entwickelt werden.

Innerhalb eines Loops werden dazu verschiedene angewandt, die mit jeder Iteration neu parametrisiert werden. Unter Anderem zählt dazu die Transposition des Ursprungs-Sounds. Mit jeder Iteration im Loop wird der Sou

nd beispielsweise 12 Halbtöne weiter hoch transponiert. Alle Ausgangssignale werden am Ende mit optionaler zeitlicher Verschiebung übereinandergelegt.

Im folgenden Bild wird die Benutzeroberfläche des Valhalla Shimmer mit allen einstellbaren Parametern dargestellt.

In dem zu erstellenden OpenMusic-Patch werden zunächst die Parameter shift, feedback und size berücksichtigt. Shift beschreibt um wie viele Halbtöne das Eingangssignal mit jeder Iteration transponiert wird. Feedback wird in diesem Projekt als Faktor interpretiert, auf die die Amplitude des Ausgangssignals in Relation zur Amplitude des Eingangssignals skaliert wird. Bei einem Feedback-Wert von 1 sind die Amplituden aller Eingangssignale genauso hoch wie die des ursprünglichen Sounds. Bei einem Wert von 0.5 ist die Amplitude mit jeder Iteration nur halb so hoch wie die der Iteration zuvor. Der Parameter size bestimmt einerseits die Länge des Fade-Ins und Fade-Outs der Ausgangssignale und andererseits die zeitliche Verschiebung zum Ursprungssound.

Prozess

Der Aufbau des Reverbs orientiert sich an einem Beitrag von Geraint Luff. Ein Reverb besteht demnach aus einem Diffuser und einem Feedbackloop.

Innerhalb eines übergeordneten Patches werden der Diffuser und der Feedbackloop ebenfalls in 2 Schritten auf den Input-Sound angewendet.

Diffusion

Innerhalb des Diffusers werden je nach Anzahl des Parameters diffuse-steps mehrmals Delay-Effekte und Allpass-Filter auf den Eingangss

ound angewendet.

Dieser Aufbau lehnt sich erneut dem Vorgehen von Geraint Luff an, sowie an Miller Puckette’s Umsetzung einer Artificial Reverbation. Innerhalb dieser Beiträge wird unter Anderem erwähnt: „As the echo density reaches 2000-4000 echoes/second, they blend into a continuous diffuse so

und“. Im erarbeiteten Patch werden per Default pro 100ms 25 Delays ausgelöst. Würde der Reverb auf eine Sekunde gestreckt werden, ergäben sich 250 Delays in der Sekunde. In dem Beispiel werden zudem 8 Diffusion-Steps durchgeführt. Mit höheren Werten gab es jedoch OpenMusic-spezifische Probleme.

Feedbackloop

In der folgenden Abbildung ist die Umsetzung eines

Loops dargestellt, in dem der Eingangssound hochtransponiert wird. Mit jeder weiteren Iteration wird der Sound entsprechend höher transponiert. Je weiter der Loop fortgeschritten ist, desto leiser oder lauter wird je nach eingestelltem Feedback-Wert durch sox-amplitude auch der resultierende Sound. Alle gesammelten Sounds werden im übergeordneten Patch zusammengemixt und als Soundobjekt ausgegeben.

Zum Testen des Effekts wird folgender Sound verwendet:

Ohne den Diffuser klingt der Sound nach 3 Wiederholungen des Feedback-Loops wie folgt:

Mit dem Diffuser klingt der resultierende Sound so:

Leider konnte kein zufriedenstellender Sound erzeugt werden, da über OpenMusic keine ausreichende hohe Anzahl an Befehlen ausgeführt werden kann, um einen Reverb-Effekt zu erzeugen.