Skip to content

News Arts and Science Teaching Media Library Services IEM - intern Contact
  You are not logged in Link icon Log in
You are here: Home » Infos & Services » Studios am IEM » CUBE » Dokumentationssammlung » Mixer Applikationen » node6.html » document_view

node6.html

Die Audio-Engine: abcdefg

next up previous contents
Next: Systemsoftware Up: Software Previous: Generierung komplexer periphoner Schallfelder:   Contents

Subsections



Die Audio-Engine: abcdefg

Die Audio-Engine ist in zwei Module - den Coder und den Decoder - geteilt (siehe Abb.1.23), die bei Bedarf auf zwei Rechnern ausgeführt werden können.

Laufen beide Module als ein Programm auf nur einem Rechner, so spricht man vom Codec.

Figure 1.23: Aufteilung der Audio-Engine in zwei Module mit mehreren Submodulen

Image //audio-engine.png


Coder

Im Coder werden einzelne virtuelle Quellen in eine ambisonic-Repräsentation eines Schallfeldes gerendert.

Normalerweise wird der Coder vom 3D-Mixer über das Skript abcdefg-3dmixer gestartet.

Der Coder kann manuell über den Befehl abcdefg-coder gestartet werden. Standardmäßig wird der Coder ohne pd-Oberfläche gestartet. Sollte diese erforderlich sein, muss beim Starten das Argument -loud mit angegeben werden.


Table 1.2: Kommandozeilenargument zum Start des Coders
abcdefg-coder   startet den Coder im Hintergrund
Argumente: -loud startet den Decoder im Vordergrund
  -in <n> Anzahl der virtuellen Quellen (16)
  -codec <codec> verwendete Codierungsvorschrift (furse-malham)
  -gui <guihost> Rechner auf dem die Oberfläche läuft (localhost)
  -gui <guiport> UDP-Port, an dem GUI-Rechner ``hört'' (8090)
  -gui <guihost> <guiport> GUI-Rechner und Port, an dem dieser ``hört''
  -coder <coderport> UDP-Port, an dem CODER-Rechner ``hört'' (8086)


Der Hauptpatch des Coders wird beim Starten generiert, um auf die jeweiligen Argumente Rücksicht nehmen zu können. Weiters wird ein Großteil der Signal-Module vom Patch selbst generiert. Man darf daher die Patches des Coders nicht speichern, um die Generierung nicht zu stören und unbrauchbare Patches zu erzeugen. Sollte dies dennoch einmal passiert sein, muss der Patch bereinigt werden. Kontaktieren Sie dazu bitte den Administrator.


Coderierungsvorschriften

Der Coder ermöglicht die Verwendung von verschiedenen ambisonic-Codierungsvorschriften, die mit dem Argument -codec <codec> angegeben werden. Es dann vom Coder ein pd-Patch coder/<codec>.pd gesucht, der sich im Verzeichnis /usr/local/net/abcdefg/share/ befinden sollte. Im ersten Inlet erhält dieser Patch eine Liste mit drei numerischen Werten ( $r, \varphi, \vartheta$) (Winkel in Radiant), worauf er am ersten Outlet eine Liste der ambisonic-Faktoren ausgibt. Am zweiten Outlet muss dieser Patch, wenn er das erste Mal ein Werte-Triple am ersten Inlet erhält, eine Liste ausgeben, wobei die Länge dieser Liste die Ordnung des ambisonic-Systems plus 1 ist, und die Elemente die Anzahl der Kanäle pro Ordnung (bei der 0ten Ordnung beginnend) darstellt.

Standardmäßig wird als Codierungsvorschrift das Furse-Malham-Set dritter Ordnung für periphone Schallfelder verwendet (siehe Tab. 1.3)


Table 1.3: Codierungsvorschrift Furse-Malham
$w$ = $1\over\sqrt{2}$ = $w$
$x$ = $\cos\varphi\cos\vartheta$ = $x$
$y$ = $\sin\varphi\cos\vartheta$ = $y$
$z$ = $\sin\vartheta$ = $z$
$r$ = ${1\over 2}(3\sin^2\vartheta-1)$ = ${1\over 2} (3z^2-1)$
$s$ = $\cos\varphi\sin{2\vartheta}$ = $2xz$
$t$ = $\sin\varphi\sin{2\vartheta}$ = $2yz$
$u$ = $\cos{2\varphi}{\cos^2\vartheta}$ = $x^2-y^2$
$v$ = $\sin{2\varphi}{\cos^2\vartheta}$ = $2xy$
$k$ = ${1\over2}\sin\vartheta (5\sin^2\vartheta-3)$ = ${1\over 2}z(5z^2-3)$
$l$ = ${8\over11}\sin\varphi\cos\vartheta (5\sin^2\vartheta-1)$ = ${8\over 11}y(5z^2-1)$
$m$ = ${8\over11}\cos\varphi\cos\vartheta (5\sin^2\vartheta-1)$ = ${8\over 11}x(5z^2-1)$
$n$ = $\sin{2\varphi}\sin\vartheta\cos^2\vartheta$ = $2xyz$
$o$ = $\cos{2\varphi}\sin\vartheta\cos^2\vartheta$ = $z(x^2-y^2)$
$p$ = $\sin{3\varphi}\cos^3\vartheta$ = $y(3x^2-y^2)$
$q$ = $\cos{3\varphi}\cos^3\vartheta$ = $x(x^2-3y^2)$


Steuerung des Coders

Alle Funktionen des Coders können (nur) über eine Ethernetverbindung gesteuert werden. Dabei werden einfach über das pd-Objekt netsend die Befehle des in Tab. 1.6 definierten Protokolls an den Coder geschickt.

Dem Coder kann über den Befehl ``talk 1'' mitgeteilt werden, dass er Status-Informationen an das GUI zurückschickt (siehe Tab. 1.8).


Decoder

Der Decoder decodiert das ambisonic-encodierte Schallfeld in Lautsprechersignale für eine gegebene Lautsprecheranordnung (CUBE-hemisphere).

Normalerweise wird der Decoder vom 3D-Mixer über das Skript abcdefg-3dmixer gestartet.

Der Decoder kann manuell über den Befehl abcdefg-decoder gestartet werden. Standardmäßig wird der Decoder ohne pd-Oberfläche gestartet. Sollte diese erforderlich sein, muss beim Starten das Argument -loud mit angegeben werden.


Table 1.4: Kommandozeilenargument zum Start des Decoders
abcdefg-decoder   startet den Decoder im Hintergrund
Argumente: -loud startet den Decoder im Vordergrund
  -codec <codec> verwendete Codierungsvorschrift (furse-malham)
  -gui <guihost> Rechner auf dem die Oberfläche läuft (localhost)
  -gui <guiport> UDP-Port, an dem GUI-Rechner ``hört'' (8090)
  -gui <guihost> <guiport> GUI-Rechner und Port, an dem dieser ``hört''
  -decoder <decoderport> UDP-Port, an dem DECODER-Rechner ``hört'' (8086)


Der Hauptpatch des Decoders wird beim Starten generiert, um auf die jeweiligen Argumente Rücksicht nehmen zu können. Weiters wird ein Großteil der Signal-Module vom Patch selbst generiert. Man darf daher die Patches des Decoders nicht speichern, um die Generierung nicht zu stören und unbrauchbare Patches zu erzeugen. Sollte dies dennoch einmal passiert sein, muss der Patch bereinigt werden. Kontaktieren Sie dazu bitte den Administrator.

Codierunsvorschriften

Für die Decodierung einer bestimmten Codierungsvorschrift kann diese über das Argument -codec <codec> angegeben werden (siehe Cap. 1.4.1). Standardmäßig wird die Codierungsvorschrift Furse-Malham verwendet.

Rotation

Der Decoder kann zur Anpassung des wiederzugebenden Schallfeldes an die Orientierung des Auditoriums dieses drehen. Für jede Codierungsvorschrift ``rotate/X-<codec>.pd, rotate/Y-<codec>.pd und rotate/Z-<codec>.pd im Verzeichnis /usr/local/net/abcdefg/share/ gesucht.

Jede dieser Dateien erhält den Drehwinkel um die jeweilige Achse in Radiant, und gibt die Rotationsmatrix aus.

Lautsprecher-Setup

Für die Decodierung ist die Kenntnis der Aufstellung der Lautsprecher vonnöten. Diese erhält der Decoder über eine Datei angles.mtx, in der Azimuth und Elevation jedes Lautsprechers in Grad gespeichert ist. Diese Datei befindet sich am Rechner matrix1 im Verzeichnis ~matrix/share.

Steuerung des Decoders

Alle Funktionen des Decoders können (nur) über eine Ethernetverbindung gesteuert werden. Dabei werden einfach über das pd-Objekt netsend die Befehle des in Tab. 1.7 definierten Protokolls an den Decoder geschickt.

Dem Decoder kann über den Befehl ``talk 1'' mitgeteilt werden, dass er Status-Informationen an das GUI zurückschickt (siehe Tab. 1.8).


Codec

Im Codec werden einzelne virtuelle Quellen in eine ambisonic-Repräsentation eines Schallfeldes gerendert, und anschließend sofort auf ein gegebenes Lautsprecher-Setup decodiert.

Normalerweise wird der Codec vom Interface easyABC über das Skript abcdefg-easyABC gestartet.

Der Codec kann manuell über den Befehl abcdefg-codec gestartet werden. Standardmäßig wird der Codec ohne pd-Oberfläche gestartet. Sollte diese erforderlich sein, muss beim Starten das Argument -loud mit angegeben werden.


Table 1.5: Kommandozeilenargument zum Start des Codecs
abcdefg-codec   startet den Codec im Hintergrund
Argumente: -loud startet den Decodec im Vordergrund
  -in <n> Anzahl der virtuellen Quellen (16)
  -codec <codec> verwendete Codierungsvorschrift (furse-malham)
  -gui <guihost> Rechner auf dem die Oberfläche läuft (localhost)
  -gui <guiport> UDP-Port, an dem GUI-Rechner ``hört'' (8090)
  -gui <guihost> <guiport> GUI-Rechner und Port, an dem dieser ``hört''
  -coder <coderport> UDP-Port, an dem der Coder des CODEC-Rechners ``hört'' (8086)
  -decoder <decoderport> UDP-Port, an dem der Decoder des CODEC-Rechners ``hört'' (8088)


Der Hauptpatch des Codecs wird beim Starten generiert, um auf die jeweiligen Argumente Rücksicht nehmen zu können. Weiters wird ein Großteil der Signal-Module vom Patch selbst generiert. Man darf daher die Patches des Codecs nicht speichern, um die Generierung nicht zu stören und unbrauchbare Patches zu erzeugen. Sollte dies dennoch einmal passiert sein, muss der Patch bereinigt werden. Kontaktieren Sie dazu bitte den Administrator.

Genauere Erläuterungen entnehmen Sie bitte den Beschreibungen von Coder und Decoder


Netzwerk-Schnittstelle

Die Fernsteuerung von Coder und Decoder erfolgt über die in Tab. 1.6 und 1.7 definierten Schnittstellen. Somit ist es einfach, einen pd-Patch zu schreiben, mit dem man komplexe Bewegungen von virtuellen Schallquellen steuern kann.

Coder und Decoder können, so sie über den Befehl ``talk 1'' aktiviert wurden, Statusinformationen an den mit dem Argument ``-gui <coderhost> [<coderport>]'' übergebenen Rechner schicken. Diese umfassen Status der pd-DSP-engine, CPU-Auslastung sowie Pegel der Eingangskanäle.


\begin{landscape}
% latex2html id marker 1614\begin{table}
\begin{tabular}{cl\...
... \hline
\end{tabular}\caption{Netzschnittstelle: GUI}\end{table}\end{landscape}


next up previous contents
Next: Systemsoftware Up: Software Previous: Generierung komplexer periphoner Schallfelder:   Contents
zmoelnig@iem.kug.ac.at


Last modified 12.05.2005