Kategorien-Archiv Slider

Vonadmin

DIRAC – ein verteilter interaktiver radialer Audio-Cluster

DIRAC (D_istributed I_nteractive R_adial A_udio C_luster) ist ein vielseitig einsetzbares räumliches Audiogerät, welches aus einem Cluster von vernetzten Lautsprechern und Einplatinen-Computern in einer radialen Konfiguration besteht (Lautsprecher, die strahlen- bzw. sternförmig nach außen gerichtet sind, siehe Abb. 1). Es wurde von Prof. Schumacher konzipiert, entworfen und realisiert mit Unterstützung von industriellen und privaten Partnern aus den Bereichen Musiktechnologie, Maschinenbau, IT und Industriedesign, wie z.B. RobotUnits, Augmented Instruments, Sonible, Janis Streib und Garvin Schultheiß. Es kann als Hybrid zwischen kompakt-sphärischem Lautsprecherarray, interaktiver Klangskulptur und Mehrkanal-Lautsprecheranordnung betrachtet werden.

Hintergrund:

Die Verwendung von Lautsprechern in der zeitgenössischen Musik kann heutzutage als integraler Bestandteil des Instrumentariums elektroakustischer Komponisten und Klangkünstler angesehen werden. Obwohl die künstlerischen An- und Einsätze vielfältig sind, lassen sie sich entlang eines Kontinuums kategorisieren, das von ihrer Funktion als klingendes Objekt mit einer intendierten akustischen Identität und Richtcharakteristik (Klangabstrahlung) erstreckt, bis hin zu ihrer Verwendung als akustisch neutrales Element eines Arrays von Lautsprechern, die oft in einer die Hörenden umgebenden Konfiguration eine klangliche Umhüllung oder Projektion erzeugen (Klangprojektion). Während bei den erstgenannten Ansätzen der Lautsprecher häufig als eine Komponente betrachtet wird, die in die Umgebung eingebettet ist und mit dieser interagiert (z. B. Wandreflexionen usw.), wird bei den letztgenannten Ansätzen häufig versucht, akustische Interaktionen mit dem Raum zu minimieren oder zu „neutralisieren“, da diese häufig als unbeabsichtigte Artefakte des Reproduktionssystems angesehen werden.

Illustration eines Kontinuums von Schallabstrahlung bis Schallprojektion. Die obere Linie steht für künstlerische Praktiken, die untere für technische Entwicklungen und Installationen

DIRAC entstand aus der Idee, einen flexiblen Rahmen und eine technologische Infrastruktur zu entwickeln, die es ermöglicht, einzelne Lautsprecher sowohl im Sinne von Instrumenten mit unterschiedlichen akustischen Signaturen zu verwenden, sowie als neutraler, radialer Klangabstrahler  (für die Reproduktion von Klangrichtmustern) und für interdisziplinäre Klangkunst/Installationskontexte. Die Möglichkeiten zur Audioreproduktion reichen von der Synthese und Wiedergabe von kanalbasiertem Material (in der Tradition der Klangdiffusion) bis hin zur Wiedergabe von Ambisonics und akustischem Beamforming. Es gibt bereits einen beachtlichen Korpus von Forschungsarbeiten zu sphärischen Lautsprecherarrays (einige davon für den kommerziellen Markt entwickelt, s. Referenzen), doch bei den meisten Entwicklungen handelt es sich entweder um Laborprototypen, die auf kundenspezifische Komponenten und spezielle Hardware angewiesen sind, oder um proprietäre Produkte, die auf den Support und die Wartung durch Dritte angewiesen sind.

Anstatt auf einer Einheitslösung aufzubauen, die teuer in der Herstellung, restriktiv in der Anpassungsfähigkeit und schwierig in der Wartung und Erweiterung sein könnte, waren hier die Schlüsselfaktoren Modularität (Anpassungsfähigkeit für Forschungs- und künstlerische Zwecke), Nachhaltigkeit durch Austauschbarkeit der Komponenten (unter Verwendung handelsüblicher Hardware) und Erweiterbarkeit.

Um die Flexibilität zu optimieren, basiert unser Design auf dem Konzept der „Audioknoten“, die Audiosenken (Lautsprecher) mit Recheneinheiten (die sich ihrer Umgebung bewusst sind, indem sie Sensordaten und andere Informationen austauschen) kombinieren, die in einem verteilten Netzwerkcluster kommunizieren und offene Standards und Rechenplattformen nutzen. Um die Installationszeit zu minimieren und die künstlerische Praxis zu erleichtern, wollten wir die notwendige technische Infrastruktur und den logistischen Aufwand auf ein Minimum beschränken.

Anstatt kundenspezifische Hardware zu entwickeln, basiert das Design auf Technologien aus den Bereichen Ubiquitous Computing und Smart Devices, um die notwendige technische Infrastruktur und den logistischen Aufwand so gering wie möglich zu halten und gleichzeitig die notwendigen Funktionalitäten bereitzustellen, die es dem Cluster ermöglichen, sich an die Bedingungen seiner Umgebung anzupassen (z. B. für die Klangprojektion) und künstlerische Praktiken zu erleichtern, die Mensch-Computer- oder andere Formen der Interaktion beinhalten.


Mechanische Struktur und Halterungen

Für den Bau der mechanischen Tragstruktur und der Halterungen werden CNC-gefräste Aluminiumprofile aus dem Bereich der Robotik und des Maschinenbaus verwendet, die sich durch Modularität, Präzision, Erweiterbarkeit (Baukastensystem), geringes Gewicht und komfortable Kabelführung auszeichnen. Die folgenden Abbildungen veranschaulichen die Konstruktionen der Tragstruktur.

Für die Synthese von Richtcharakteristiken eignen sich kompakte, kugelförmige Lautsprecherarrays in Form platonischer Körper aufgrund ihrer symmetrischen geometrischen Eigenschaften, die bestimmte Bereiche/Richtungen nicht begünstigen. Ein gängiger Ansatz für die Richtcharakteristiksynthese ist die Verwendung sphärischer Obertöne, die kombiniert werden können, um mehrere Schallkeulen in bestimmten Richtungen zu erzeugen. Frühere Forschungsarbeiten haben ergeben, dass eine Konfiguration von 12 regelmäßig auf einer Kugel (Dodekaeder) angeordneten Lautsprechern den besten Kompromiss unter den platonischen Körpern zwischen der Anzahl der Kanäle, der Schallleistung und der Komplexität der steuerbaren Muster darstellt.

Obwohl beliebige Anordnungen technisch möglich sind (z. B. eine dodekaedrische Anordnung), haben wir uns für eine Konfiguration entschieden, bei der die Lautsprecher an den Ecken von drei zueinander senkrechten Rechtecken mit goldenem Schnitt (den Eckpunkten eines Ikosaeders) platziert sind, um ein Höchstmaß an Flexibilität zu erreichen, da die symmetrische Lautsprecherkonfiguration die Wiedergabe verschiedener Audiowiedergabeformate ermöglicht, einschließlich horizontaler (Stereo, Quad, Hexaphon) und periphoner Formate (Würfel/Hexaeder).

NB: Es gibt Prototypen für eine unterschiedliche Anzahl von Knotenpunkten in verschiedenen geodätischen Konfigurationen (z. B. halbkugelförmig, ikosaedrisch usw.).

Abb.1: Drei senkrechte Rechtecke im Goldenen Schnitt bilden ein regelmäßiges Ikosaeder mit 12 Scheitelpunkten.

Abb. 2: Technische Zeichnung der Aluminiumstruktur und der Halterungen an den Scheitelpunkten eines regelmäßigen Ikosaeders

 

Abb. 3: Rendering eines 3D-Modells von Lautsprechern, die auf einer Struktur montiert sind


Technische Konfiguration und Konnektivität

Jeder Cluster-„Node“ besteht aus einer Smart-IP-Lautsprechereinheit (digitale Lautsprecher mit programmierbaren DSP-Einheiten) und einem dedizierten Einplatinen-Computer (BELA oder Raspberry Pi), der über ein speziell angefertigtes 3D-gedrucktes Gehäuse am Lautsprecher angebracht ist und zusätzliche Verarbeitungsfunktionen und Anschlussmöglichkeiten für verschiedene Peripherie (Mikrofone, Sensoren, Wandler usw.) bietet, die alle durch ein gemeinsames DANTE- und lokales Netzwerk für die Übertragung von Audiosignalen und allgemeine Kommunikation verbunden sind. Zur Erleichterung der Entwicklung elektrischer Schaltkreise wurden spezialangefertigte Halterungen für Breadboards entwickelt. In der gegenwärtigen Konfiguration werden 12 Genelec 4410A Smart Speaker und entsprechende eingebettete Computer eingesetzt, die alle über Netgear AV Line-Switches verbunden sind, welche Power-Over-Ethernet, Audio, Konfiguration und Netzwerkkommunikation über ein einziges Ethernet-Kabel bereitstellen. Abb. 4 zeigt einen frühen Prototyp des DIRAC-Aufbaus (Breadboards wurden in einer späteren Entwicklungsphase hinzugefügt).

Abb. 4: Fotografische Aufnahme des DIRAC auf einer vertikalen Stützstruktur. Die menschlichen Hände/Arme sind maßstabsgetreu dargestellt


Kontrolle und aktuelle Entwicklungen

Neben proprietärer Software(SmartIP Manager von Genelec) können die internen DSP-Einstellungen über eine API konfiguriert werden. Aktuelle Entwicklungen für eine generische, quelloffene Netzwerksoftware mit Auto-Discovery- und Management-Funktionen unter Verwendung des generischen OpenSoundControl-Messagings sind im Gange(siehe dieses Git-Repository). Da sowohl Dante als auch AES67 für die Audio-over-IP-Übertragung unterstützt werden, gibt es außerdem aktuelle Entwicklungen, um Unterstützung für BELA und RaspberryPis hinzuzufügen, um das Audionetzwerk mit zusätzlichen Wandlern (Mikrofonen, Audio-Excitern usw.) zu erweitern/interagieren, siehe dieses und dieses Repository. Es gibt auch laufende Entwicklungen zur Integration von Sensorik, um den Cluster auf seine Umgebung aufmerksam zu machen, z. B. über Näherungssensorik, siehe dieses Repository.


Audio-Rendering

Wir evaluieren und experimentieren derzeit mit einer Reihe verschiedener Ansätze: kanalbasiertes Material (unter Verwendung direkter Lautsprechereinspeisungen), Panning-/Spatialisierungsalgorithmen wie VBAP, DBAP, etc. , Ambisonics (z. B. mit Allrad-Decodern), virtuelle Mikrofone und Beamforming. In Kombination mit vernetzter Sensorik kann so ein breites Spektrum von Anwendungen abgedeckt werden, vom adaptiven Rendering bis zur interaktiven Synthese.

Literatur:

  • Pasqual, A. M., Arruda, J. R., & Herzog, P. (2010, May). A comparative study of platonic solid loudspeakers as directivity controlled sound sources. In Proceedings of the second international symposium on Ambisonics and spherical acoustics.
  • Pasqual, A. M. (2010). Sound directivity control in a 3-D space by a compact spherical loudspeaker array (Doctoral dissertation, Universidade Estadual de Campinas)
  • Avizienis, R., Freed, A., Kassakian, P., & Wessel, D. (2006, May). A compact 120 independent element spherical loudspeaker array with programable radiation patterns. In Audio Engineering Society Convention 120. Audio Engineering Society
  • Freed, A., Schmeder, A., & Zotter, F. (2008). Applications of environmental sensing for spherical loudspeaker arrays. IASTED Signal and Image Processing
  • Schmeder, A. (2009, June). An exploration of design parameters for human-interactive systems with compact spherical loudspeaker arrays. In Proceedings of the Ambisonics Symposium.
  • Farina, A., & Chiesi, L. (2016, May). A novel 32-speakers spherical source. In Audio Engineering Society Convention 140. Audio Engineering Society
VonMads Ole Clasen

Sonfikation von Bildsequenzen

Abstract: Dieses Projekt beschäftigt sich mit dem Entwurf einer OpenMusic Anwendung, die die Umwandlung von Bildsequenzen in eine symbolische Musikrepräsentation, bestehend aus drei Stimmen, zur Aufgabe hat.

 

Verantwortliche: Mads Clasen

 

 

Ausgangsmaterial und Vorbereitung

Bei der Bildsequenz kann es sich um einzelne Frames eines Videos, eine Bilderserie eine Künstlers oder selbst zusammengestellte Bilder handeln. Diese müssen zunächst in einem Ordner auf dem entsprechenden Rechner vorliegen. Sollte es sich um ein Video handeln, muss dieses, außerhalb von OpenMusic, zuvor in seine Frames zerlegt werden. In Python ist dies mit Hilfe von OpenCV innerhalb weniger Zeilen ganz unkompliziert durchführbar.

                               

Abb. 1: Zerlegen von Video in Python

 

Wie im Codebeispiel zu sehen, sollten die resultierenden Bilder außerdem numerisch mit Zahlen von 1 bis n benannt werden und, abhängig von Rechenleistung des Rechners und Bildmenge, downgesampled werden. Dies ist für die korrekte Funktionsweise des Patches von Nöten, sowie in OpenMusic selbst die Installation der Pixels Library.

 

Sonifikation

Notenwerte

Die gewünschten Bilder werden, nach Angabe von Dateipfad, Dateiformat und Anzahl der Bilder, in ein picture-lib Objekt geladen und als Liste zusammengefasst. Aus jedem Bild dieser Liste wird der jeweils durchschnittliche R, G und B Farbwert ausgelesen und auf eine dementsprechende Note gemappt. In diesem Fall werden die R, G und B Werte wie unterschiedliche Stimmen behandelt und verfügen jeweils über eine eigene Notenrange innerhalb derer sie sich bewegen. Diese ist zusätzlich in mikrototale Schritte (1/8 Töne) unterteilt, auf welche die Werte schlussendlich gemaEin Wert von 1 entspricht dabei der höchsten möglichen Noten und 0 der tiefsten. Dementsprechend wird aus einem Bild jeweils eine Note für jede der drei Stimmen ausgelesen.

                             

Abb. 2: Generierung einer Notenlinie

 

Die Notenranges in denen sich die Farbwerte bewegen, können anhand der entsprechenden chord Objekte angepasst werden, zudem ist die einheitliche Transposition aller Ranges um einen gewünschten Wert in midicents möglich. Die Voreingestellten Werte entsprechen den ungefähren Notenumfängen von Sopran (R), Alt (G) und Bass (B) Stimmen. Nach Durchlauf der gesamten Bildsequenz bestehen nun also drei Stimmen mit einer Notenanzahl entsprechend der Menge an eingegebenen Bildern. Diese Stimmen werden im nächsten Schritt unabhängig voneinander weiterverarbeitet.

                                

Abb. 3: Mapping der RGB-Werte auf Notenwerte

 

Rhythmik

Da ich mich dazu entschieden habe voice Objekte zu nutzen, aufgrund der direkten Art der Einflussnahme auf Rhythmik, werden zunächst die dafür nötigen rhythm trees erzeugt. Beziehungsweise die zwei Bausteine eines rhythm trees : Taktart und Proportionen. Für beide wird jeweils eine Liste erstellt, die sich an der Anzahl der Noten und der eingestellten Taktart orientieren und die später mithilfe eines simplen mat-trans Objektes in die benötigte rhythm tree Form zusammengeführt werden. 

                               

Abb. 4: Generierung rhythm tree 

 

Zuvor wird jedoch die, für die Proportionen zuständige, Liste mit Ostinati angereichert. Dafür gibt es eine zweite Liste, welche verschiedene Möglichkeiten solcher Ostinati beinhaltet, aus der ein zufälliges ausgewählt und an eine ebenfalls zufällige Stelle der Proportionsliste gesetzt wird. Da sich somit die Anzahl der Notenwerte erhöht, werden auch an dieselbe Stelle der, die Noten beinhaltenden, Liste, neue, der Verzierung entsprechende, Noten eingesetzt. Dabei wird, von der Originalnote ausgehend, zwischen gleichbleibenden, auf- oder absteigenden Noten entschieden. Die Stärke, mit der diese Verzierungen Einzug in die Stimmen erhalten sollen, kann zusätzlich angepasst werden.

                                                                                               

Abb. 5: Ergänzung rhythmischer Verzierungen

 

Dynamik

Die bearbeiteten Proportionen werden nun anschließend mit der, die Taktart bestimmenden, Liste zum rhythm tree zusammengeführt. Die entsprechende Notenliste durchläuft noch einen Schritt mehr, in welchem jeder Note ein zufälliger Velocity Wert zugeordnet wird.

                              

Abb. 6: Erzeugung Dynamik

 

Abschließend werden die Notenlisten mit ihrem jeweiligen rhythm tree in einem voice Objekt zu einer Stimme verbunden, sodass sich insgesamt drei Stimmen (R, G, B) ergeben, die daraufhin in einem poly Objekt zusammengefasst werden können.

 

Bildbearbeitung

Um das Klangergebnis zusätzlich zu beeinflussen, besteht die Möglichkeit, die Sättigung der Farbwerte einzelner Bilder der ausgewählten Sequenz zu bearbeiten. Die Originalbilder, werden dann mit den verfremdeten gemischt.

                                          

Abb. 7: Veränderung Farbwerte

 

Beispiel

Im Folgenden habe wurden als Bildsequenz die Frames eines Videos, dass während einer Busfahrt aufgenommen wurde und die Umgebung zeigt, genutzt. Dabei wurde jeder dreißigste Frame abgespeichert. Im Patch wurde dann zudem die Möglichkeit der Farbmanipulation genutzt, um die Sequenz etwas Abwechslungsreicher zu gestalten.

            

Abb. 8: Bearbeitete Bildsequenz

 

Nach Evaluation des Patches könnte sich ein mögliches Endergebnis dieser Bildsequenz folgendermaßen ansehen und -hören:

                   

Abb. 9: Ausschnitt symbolische Repräsentation

 

 

 

Vonadmin

Trajectory-Descriptors: Musikgenre-Klassifizierung im Tonnetz

Abstrakt

Wir stellen einen Ansatz zur geometrischen Darstellung und Analyse des harmonischen Inhalts musikalischer Kompositionen vor, der auf einer Formalisierung von Akkordfolgen als räumliche Trajektorien beruht. Dies erlaubt uns insbesondere die Entwicklung einer Toolbox und neuen Deskriptoren für die automatische Klassifizierung von Musikgenres. Unsere Analysemethode impliziert zunächst die Definition von harmonischen Trajektorien als Kurven in einer speziellen Form von geometrischen Tonhöhenklassenräumen, die wir Tonnetz nennen. Wir definieren solche Kurven, indem wir aufeinanderfolgende Akkorde, die in Akkordfolgen vorkommen, als Punkte im Tonnetz darstellen und aufeinanderfolgende Punkte durch Segmente verbinden. In Anlehnung an eine kürzlich aufgestellte Hypothese, die von einer engen Verbindung zwischen dem musikalischen Genre eines Werks und spezifischen geometrischen Eigenschaften seiner räumlichen Darstellung ausgeht, führen wir Deskriptoren ein, die sich auf verschiedene geometrische Aspekte der harmonischen Trajektorien beziehen. Anschließend evaluieren wir die Eignung dieser Deskriptoren als Klassifizierungsinstrument, das wir an Kompositionen verschiedener Musikgattungen testen. In einem weiteren Schritt definieren wir eine Darstellung der Übergänge zwischen zwei aufeinanderfolgenden Akkorden, die in einer harmonischen Progression vorkommen, durch Vektoren im Tonnetz. Dies ermöglicht es uns, eine zusätzliche Klassifikationsmethode einzuführen, die auf dieser vektoriellen Darstellung von Akkordübergängen basiert.


Video-Präsentation:


Artikel der Konferenz:

SMC2024_paper_id178

Diese Arbeit wurde im Rahmen der Promotion von Christophe Weis entwickelt und ist in den Proceedings der Sound and Music Computing Conference 2024 in Porto, Portugal, veröffentlicht.

VonLukas Körfer

Wellenfeldsynthese mit OM-SoX

Abstract: Dieses Abschlussprojekt entstand zum Ende des Wintersemesters 2023/24 im Rahmen der Lehrveranstaltung „Symbolische Klangverarbeitung und Analyse/Synthese“ des MA Musikinformatik. Hierbei wurde in dem Programm OpenMusic mithilfe der Library OM-SoX und des Verfahrens der Wellenfeldsynthese eine Anwendung zur Klangverräumlichung erarbeitet. 

Verantwortliche: Lukas Körfer

Wellenfeldsynthese

Bei der Wellenfeldsynthese (kurz: WFS) handelt es sich um das Verräumlichen von virtuellen Klangquellen mithilfe eines Loudspeaker-Arrays. Bei dieser fortschrittlichen Audiotechnologie wird also versucht, Klänge so zu reproduzieren, dass sie den Eindruck erwecken, dass sie von einer bestimmten Position im Raum kommen. Das gelingt durch die Erzeugung eines Wellenfeldes, welches aus einer Vielzahl von einzelnen Schallquellen besteht, die in einer Art synchronisiert werden, so dass eine kohärente Schallwelle entsteht, mit welcher es möglich sein soll, eine virtuelle Klangquelle im Raum lokalisieren zu können. 

 

Zum besseren Verständnis der Funktionsweise von WFS kann man sich dem Thema über das physikalische Phänomen von Interferenzmusterbildung hinter einem Hindernis mit Öffnungen nähern. Wenn eine Welle auf einen oder mehrere Schlitze trifft, wird sie durch die Öffnungen hindurchgebeugt und breitet sich hinter dem Hindernis aus. Dies führt zur Bildung eines Musters von Welleninterferenz auf der anderen Seite des Hindernisses. In ähnlicher Weise nutzt die Wellenfeldsynthese ein Array von Lautsprechern, um eine kohärente Schallwelle zu erzeugen. Dafür muss eine präzise Berechnung und Steuerung der Phasen- und Amplitudenverhältnisse der Schallwellen, die von jedem einzelnen Lautsprecher ausgehen, vorgenommen werden. Diese Berechnungen sind abhängig von den Abständen jedes einzelnen Lautsprechers im Array relativ zur Position im Raum der jeweiligen virtuellen Klangquelle. 

Projektbeschreibung

Für dieses Projekt sollte nun ein Programm entstehen, mit dem allgemeinen Ziel, durch gewissen Einfluss und Anpassungen eines Anwenders letztendlich eine Mehrkanal-Audiodatei zu erhalten, die zur Wellenfeldsynthese mit einem Loudspeaker-Array verwendet werden kann. Dafür musste zunächst konzipiert werden, welche Parameter vom Anwender des Programms gesetzt und beeinflusst werden sollen.

User-Input

 

Neben der Audiofile, welche zur Verräumlichung verwendet werden sollte, muss durch den Anwender einerseits gewisse Angaben zum Loudspeaker-Array und andererseits die Position oder Positionen einer oder mehrerer virtueller Klangquellen relativ zum Loudspeaker-Array angegeben werden. Um eine möglichst einfache und intuitive Konfiguration des Programms zu ermöglichen, habe ich mich dazu entschieden, dafür hauptsächlich ein Picture-Objekt zu verwenden, in welchem der Aufbau aufgezeichnet werden kann. Durch das Zeichnen eines Rechtecks können die Positionen der Loudspeaker und mit Kreisen die der virtuellen Klangquellen angegeben werden. Es kann dabei ein oder mehrere Kreise gezeichnet werden, wobei jeder Kreis eine Klangquelle repräsentiert. Die Angabe der Loudspeaker ist durch zwei unterschiedliche Weisen möglich. Wenn nur ein einziges Rechteck im Picture-Objekt gezeichnet ist, so stellt dieses den Bereich eines Loudspeaker-Arrays dar. Um im nächsten Schritt des Programms die konkreten Positionen der einzelnen Loudspeaker ermitteln zu können, sind ihr zusätzlich noch zwei weitere Angaben nötig. Das ist zum einen die Länge des Loudspeaker-Arrays in Metern; damit wird gleichzeitig der Maßstab für den kompletten gezeichneten Aufbau beeinflusst. Und zum anderen muss die Anzahl der Loudspeaker im gezeichneten Bereich angegeben werden. Sobald mehr als ein Rechteck vom Anwender angegeben sind, steht jedes einzelne Rechteck für einen individuellen Loudspeaker. Um bei dieser Variante einen Maßstab für den gezeichneten Aufbau festlegen zu können – was vorher mit der Angabe der Länge des Loudspeaker-Arrays möglich war – kann nun die Breite / Höhe vom Bereich des kompletten Picture-Objekts angegeben werden. Mit der ersten Variante, dass das Loudspeaker-Array lediglich mit einem Rechteck gezeichnet werden kann, wird zwar die Anwendung deutlich unkomplizierter, setzt allerdings auch voraus, dass die Loudspeaker linear und mit einem gleichmäßigen Abstand zueinander aufgebaut sind.

Distanzen berechnen

 

Nach dem Auslesen aller Grafiken des Picture-Objekts müssen diese für die Weiterverarbeitung in Rechteck und Kreise aufgeteilt werden. Falls nur ein Rechteck gefunden wird, kann mit der Position und Dimension des Rechtecks und der beiden Angaben zu Länge und Anzahl des Loudspeaker-Arrays, zunächst die Position jedes einzelnen Loudspeakers innerhalb des Arrays in Metern ermittelt werden. Wenn es mehrere Rechtecke sind, ist dieser Schritt nicht nötig und es werden einfach die Mittelpunkte aller angegebenen Rechtecke ermittelt. Daraufhin ist es möglich im selben Maßstab mit einer weiteren Lisp-Funktion den euklidischen Abstand von allen Quellen zu jedem einzelnen Loudspeaker zu berechnen. Hierbei ist zu beachten, dass alle Grafiken, die in dem Picture-Objekt vom Anwender gezeichnet wurden und nicht einem Rechteck oder einem Kreis entsprechen ignoriert und für die weiteren Berechnungen nicht berücksichtigt werden. Da für die Applikation beliebig viele virtuelle Klangquellen angegeben werden können, werden in diesem Schritt auch alle Kreise erfasst, die im Picture-Objekt existieren, wobei die Reihenfolge irrelevant ist.

Klangverarbeitung

 

Im nächsten Abschnitt des Programms wird die Klangverarbeitung umgesetzt. Dabei wird grundlegend mit der vom Anwender angegebenen Sound-Datei zusammen mit den zuvor berechneten Distanzen eine Mehrkanaldatei erzeugt, welche für das vorgesehene Loudspeaker-Array verwendet werden kann. Dieser Prozess passiert in einem verschachtelten OM-Loop mit zwei Ebenen.

 

In der ersten Ebene wird zunächst über jedes Element innerhalb der Distanz-Liste iteriert. Dabei entspricht jedes dieser Elemente einer Liste, die zu einer virtuellen Klangquelle gehört, welche deren Distanzen zu jedem Loudspeaker beinhaltet. Bevor der Prozess in die zweite Ebene des Loops geht, werden in einer Lisp-Funktion weitere Berechnungen anhand der aktuellen Distanz-Liste angestellt.

In dieser Funktion wird über jede Distanz iteriert und jeweils die Zeitverzögerung, Lautstärkeabnahme und eine Cutoff-Frequenz für einen Lowpass Filter zur Berechnung der Luftabsorption hoher Frequenzen ermittelt und in einer Liste gesammelt. Mit dem Ergebnis dieser Lisp-Funktion geht es im nächsten Schritt in die zweite Ebene der Schleife.

 

Hier wird für den jeweiligen berechneten Wert den jeweiligen SoX-Effect angewendet; SoX-Level für Lautstärkeabnahme, SoX-Lowpass für die Luftabsorption und SoX-Pad für die Zeitverzögerung. Dabei wird für jede Iteration die entstandene Audiodatei abgespeichert. Jede der drei Listen besitzt so viele Werte, wie zuvor berechnete Distanzen der aktuellen Klangquelle zu den Speakern. Also steht jede in diesem Loop gespeicherte Audiodatei für einen Kanal der späteren Mehrkanaldatei für die aktuellen Klangquelle.

Die Mehrkanaldatei kann nun im nächsten Schritt in der ersten Ebene mit SoX-Merge erstellt und am Ende des Loops zwischengespeichert werden. Dieser Prozess wiederholt sich für alle restlichen virtuellen Klangquellen (sofern vorhanden) und werden als Ausgabe dieses oberen Loops gesammelt. Alle Mehrkanaldateien der jeweiligen Klangquellen werden daraufhin mit einem SoX-Mix zusammengeführt.

Wenn vom Anwender nur eine virtuelle Klangquelle angegeben wird, besteht die Ausgabe des äußersten Loops nur aus einer einzelnen Mehrkanaldatei für diese eine Quelle. In diesem Fall wird das SoX-Mix nicht benötigt und es würde sogar bei der Evaluation des Programms zu einem Fehler führen, wenn der Input des SoX-Mix nur aus einer Audiodatei bestünde. Mit dem OM-If wird daher die Verwendung des SoX-Mix umgangen, sobald die Ausgabe des Patchers, in welchem die Distanzen ermittelt werden, nur aus einer Liste besteht, was bedeutet, dass im Picture-Objekt nur ein Kreis für eine virtuelle Klangquelle gezeichnet wurde.

Abschließend kann mit dem SoX-Pad je nach Präferenz zusätzlich der Mehrkanaldatei Stille hinzugefügt werden, falls die gewählte Audiodatei beispielsweise besonders kurz ist. Gleichzeitig wird die finale Mehrkanaldatei in Outfile als „wfsOutFile.wav“ gespeichert.

Video

Dieses Video zeigt, wie eine Mehrkanal-Datei mit 16 Kanälen, die zuvor in OpenMusic erstellt wurde (links), mit dem Programm Binauralix (rechts) abgespielt wird. In Binauralix werden die Sources, die die Lautsprecher repräsentieren, entsprechend den Einstellungen im OM-Patch als Lautsprecher-Array angeordnet. Die Position des Listeners relativ zu diesem Array beeinflusst die Synthese des Stereosignals, welches im Video zu hören ist.

VonMarlon Schumacher

S3D Audio Production Competition 2024

The Institute of Electronic Music and Acoustics (IEM) calls for students‘ works to be submitted to Europe’s Eighth 3D Audio Production Competition that is going to be hosted at IEM in Graz, with vdtORF musikprotokoll, and Sounding Future as partners.

The event is going to be hosted at IEM in Graz, with vdtORF musikprotokoll, and Sounding Future as partners. The call is issued for the three production/composition categories:

  1. Contemporary / Computer music
  2. Audio drama / Documentary / Soundscapes
  3. Music recording / Studio production.

I am glad to be serving again as artistic jury member.

Please consider contributing!


More detailed information can be found in the pdf below as well as under this link to the official call by the Austrian National Broadcast Organization ORF.

2024_student3daudioproductioncompetition_extended

 

 

VonFlorian Simon

Interspaces – Akusmatische Studie mit OM-SoX

Interspaces („Zwischenräume“) stellt Klänge der menschlichen Zivilisation solchen aus der Natur gegenüber. Es werden vier Paare aus Feldaufnahmen vorgestellt, die nach dem Prinzip eines Vocoders gemäß des Spektrums eines Ausschnittes des Gegenstücks gefiltert werden.

Verantwortliche: Florian Simon

Interspaces zeigt folgende vier Paare (Format: Gesamtaufnahme – Quelle des Spektrums):

  1. Zwitschernde Küstenseeschwalben – Von Menschen gerufener Vokal „E“
    Lebendiger Markt, sprechende und rufende Menschen – Ruf der Küstenseeschwalbe

  2. Plätschern eines Flusses – Beschleunigendes Auto
    Hauptverkehrsstraße – Rauschen eines Flusses

  3. Waldkulisse, Blätterrauschen und Vögel – Zughorn
    Bahnhofshalle – Zwitschern eines Singvogels

  4. Gewitter – Klirren von Besteck
    Betrieb in einer Restaurantküche – Donner

Die Feldaufnahmen stammen dabei aus der Bibliothek FreeToUseSounds.

Interspaces nutzt eine gleichseitig oktogonale Lautsprecheranordnung, wobei die beiden Kanäle des Ausgangsmaterials jeweils an gegenüberliegenden Punkten im Array platziert werden. Die zwei Aufnahmen eines Paares sind zudem standardmäßig um 90 Grad zueinander versetzt, sodass vier Klangquellen wahrgenommen werden können.

Jede Aufnahme wird in mehrere Abschnitte von in einem bestimmten Rahmen zufälliger Größe unterteilt und in wiederum randomisierter Reihenfolge mit kurzen Crossfades wieder konkateniert. Die Anzahl der Abschnitte wird mit jedem Aufnahmepaar größer: 4, 9, 16 und zuletzt 23. Mit jedem neuen Abschnitt „wandern“ die beiden Klangquellen zudem im Array um 0,25 Kanäle in eine bestimmte Richtung. Da zwar die Anzahl der Abschnitte für beide Aufnahmen eines Paares dieselbe ist, nicht aber die Position der Schnitte, entstehen Abweichungen von der Basis eines 90-Grad-Abstands sowie eine größere klangliche Vielfalt. Interspaces ist als Installation konzipiert, um eine freie Erkundung der Stereofelder zu ermöglichen.

Interspaces entstand in OpenMusic mithilfe von Funktionen aus der Bibliothek OM-SoX. Das zugrunde liegende Programm besteht aus zwei Teilen. Der erste dient der Herstellung der manipulierten Aufnahmen durch Spektralanalyse (sox-dft), Zerlegung des Ausgangsmaterials in bis zu 4096 Frequenzbänder (sox-sinc), Anpassung deren Lautstärkepegel gemäß des generierten Spektrums (sox-level) und erneutes Zusammensetzen (sox-mix).

Der zweite Programmteil nutzt den Synthesepatch einer Maquette, um für jede der acht generierten Audiodateien die Unterteilung in Abschnitte (sox-trim) sowie deren Spatialisierung (sox-remix) und letztendliche Aneinanderreihung (sox-splice) zu regeln und schlussendlich die fertigen Blöcke zeitlich zu organisieren (sox-pad und sox-mix). Beim letzten Schritt muss die durch die Crossfades eingesparte Zeit berücksichtigt und vom Onset-Wert/x-Position in der Maquette abgezogen werden.

Audio (binaural auf Stereo gemischt):

 

Leider bringt diese Vocoder-Methode den Nachteil mit sich, dass die einzelnen Frequenzbänder zunächst sehr leise sind und deshalb durch das Applizieren des Gains und die finale Normalisierung Artefakte in Form von Rauschen entstehen. Im Gegenzug kommt es zu Clipping, wenn bestimmte Frequenzen gerade in beiden Quellaufnahmen stark vertreten sind. Senkt man die Gain-Werte entsprechend um dies zu vermeiden sind leisere Abschnitte im Resultat je nach Größe der Dynamikdifferenz womöglich kaum mehr hörbar. Das Rauschen lässt sich durch die Wahl höherer Gain-Werte leicht beseitigen, verstärkt damit aber das Clipping-Problem. Bei obiger Version von Interspaces wurde für alle acht Audioclips jeweils der beste Kompromiss zwischen beiden Effekten gesucht.


 

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

VonMarlon Schumacher

Conference Co-Chair für Music and Installation @IEEE IoS 2024

Marlon Schumacher wird zusammen mit Esther Fee Feichtner als Co-Chairs für Music and Installation Submission dienen für das IEEE

5th International Sympoisum on the Internet of Sounds.

das vom 30. September bis 2. Oktober 2024 in den International Audio Laboratories Erlangen stattfindet. Folgen Sie diesem Link zur offiziellen IEEE Website:

„Das Internet der Klänge ist ein aufstrebendes Forschungsgebiet an der Schnittstelle zwischen den Bereichen Sound und Music Computing und dem Internet der Dinge. […] Ziel ist es, Akademiker und Industrie zusammenzubringen, um die Entwicklung von Internet-of-Sounds-Technologien mit Hilfe neuartiger Werkzeuge und Prozesse zu untersuchen und voranzutreiben. Die Veranstaltung besteht aus Vorträgen, Keynotes, Panels, Posterpräsentationen, Demonstrationen, Tutorials, Musikaufführungen und Installationen.“

Das Internet of Sounds Research Network wird von einer beeindruckenden Anzahl (> 120) von Institutionen aus über 20 Ländern unterstützt, mit einem eigenen IEEE-Komitee für neue Technologieinitiativen. Zu den Partnern aus Deutschland gehören:

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.