<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.uugrn.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ph3-der-loewe</id>
	<title>UUGRN - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.uugrn.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ph3-der-loewe"/>
	<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/Spezial:Beitr%C3%A4ge/Ph3-der-loewe"/>
	<updated>2026-05-11T17:28:07Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.42.5</generator>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung_(UKW-Tagung_2013)&amp;diff=12016</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung (UKW-Tagung 2013)</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung_(UKW-Tagung_2013)&amp;diff=12016"/>
		<updated>2013-08-18T15:14:25Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: BEGIN{}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Abstrakt ==&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
; Hinweis&lt;br /&gt;
: Dies hier ist nur eine Vorbereitung und Stichpunkt Liste. Der eigentliche Vortrag wird interaktiv an einer Tafel gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
In der analogen Elektrotechnik werde Signale in aller Regel durch folgende Werte angegeben:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Formel&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Vorkommen&lt;br /&gt;
|-&lt;br /&gt;
| u(t)&lt;br /&gt;
| Amplitude in Abhängigkeit der Zeit t.&lt;br /&gt;
| Dies ist die gebräuchlichste Variante.&lt;br /&gt;
|-&lt;br /&gt;
| i(t)&lt;br /&gt;
| Strom in Abhängigkeit der Zeit t.&lt;br /&gt;
| Nur bei speziellen Anwendungen (z.B. Stromreglern).&lt;br /&gt;
|-&lt;br /&gt;
| U(f)&lt;br /&gt;
| Amplitude abhängig von der Frequenz f.&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Wir vor allem bei Filtern und Bauelementen mit Filter Eigenschaften (z.B. Verstärkern) verwendet.&lt;br /&gt;
|-&lt;br /&gt;
| Φ(f)&lt;br /&gt;
| Phase abhängig von der Frequenz f.&lt;br /&gt;
|-&lt;br /&gt;
| R(t)&lt;br /&gt;
| Widerstand abhängig von der Zeit t.&lt;br /&gt;
| Zum Beispiel bei Temperatur Messungen.&lt;br /&gt;
|-&lt;br /&gt;
| C(t)&lt;br /&gt;
| Kapazität abhängig von der Zeit t.&lt;br /&gt;
| Bei Kapazitiven Sensoren.&lt;br /&gt;
|-&lt;br /&gt;
| L(t)&lt;br /&gt;
| Induktivität abhängig von der Zeit t.&lt;br /&gt;
| Bei Induktiven Sensoren.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Wandler ====&lt;br /&gt;
* Analog-Digital-Konverter (ADC oder A/D-Wandler) wandeln Spannungen in digitale Signalen um.&lt;br /&gt;
* Digital-Analog-Konverter (DAC oder D/A-Wandler) wandeln digitale Signale in Spannungen um.&lt;br /&gt;
* Digitale Signale sind Zeit diskret. Die Abtastfrequenz bestimmt die Bandbreite. Die maximale Bandbreite ist f&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; &amp;lt; ½ * f&amp;lt;sub&amp;gt;Abtast&amp;lt;/sub&amp;gt;.&lt;br /&gt;
* Digitale Signale sind wertediskret. Die „Sample Breite“ bestimmt den Maximalen Rauchabstand (SNR).&lt;br /&gt;
&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
Wichtige Operationen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion im Zeitbereich&lt;br /&gt;
! Funktion im Frequenzbereich&lt;br /&gt;
! Name&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) + a&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + h(f), h(f) = f == 0 ? a : 0&lt;br /&gt;
| Gleichspannungsoffset&lt;br /&gt;
| Erzeugt ein Gleichspannungsoffset a.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) * a&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * a&lt;br /&gt;
| Verstärkung&lt;br /&gt;
| Verstärkt das Signal um Faktor a.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t - a)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) - 2aπf&lt;br /&gt;
| Translation&lt;br /&gt;
| Verzögerung um a.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;2iatπ&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f - a)&lt;br /&gt;
| Frequenzverschiebung&lt;br /&gt;
| Verschiebung der Frequenz um a.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;ia&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + a&lt;br /&gt;
| Phasenverschiebung&lt;br /&gt;
| Verschiebung der Phase um a.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = -u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) ± π&lt;br /&gt;
| Phaseninversion&lt;br /&gt;
| Verschiebung der Phase um π.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = (u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; * h)(t)&lt;br /&gt;
| G&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = G&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * H(f)&lt;br /&gt;
| Faltung&lt;br /&gt;
| Faltung des Signals mit der Funktion &#039;&#039;h&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Ausblicke ===&lt;br /&gt;
&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== VAD als digitaler PTT ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Blockschaltbilder für digitale Schaltungen ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Darstellung von Mehrkanalsignalen ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Bitfehler Simulation ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio_PlayList_Daemon/Protokoll&amp;diff=9863</id>
		<title>RoarAudio PlayList Daemon/Protokoll</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio_PlayList_Daemon/Protokoll&amp;diff=9863"/>
		<updated>2012-05-24T08:14:44Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Fehler Codes */ +NFPROERR&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auf dieser Seite wird auf das &#039;&#039;simple&#039;&#039; Protokoll des [[RoarAudio PlayList Daemon]] eingegangen. Andere durch den rpld unterstützte Protokolle werden hier ignoriert. Die Spezifikationen zu diesen sind bei den entsprechenden Herstellern zu  finden beziehungsweise zu erfragen.&lt;br /&gt;
&lt;br /&gt;
== Rahmen Protokoll ==&lt;br /&gt;
Das Protokoll besteht aus einer Sequenz von Befehl-Antwort-Paaren. Dabei Sendet der Klient einen Befehl als abgeschlossene Zeile (Terminiert mit &#039;&#039;line feed&#039;&#039;, 0x0A, &#039;\n&#039;) an den Server und dieser Beantwortet dies dann mit einem Datenbereich gefolgt von einer Status Zeile. Der Datenbereich wird durch eine Zeile die ausschließlich aus einem Punkt besteht Beendet. Sollte eine Zeile im Datenbereich vorkommen die ausschließlich aus einem oder Mehren Punkten besteht so wird ein Punkt vor gehängt um Eindeutigkeit der Ende Sequenz zu garantieren.&lt;br /&gt;
&lt;br /&gt;
Die Statuszeile besteht aus drei oder vier Teilen:&lt;br /&gt;
 * Dem Vorsatz &#039;&amp;gt;&#039;,&lt;br /&gt;
 * dem Fehler Code,&lt;br /&gt;
 * dem Fehler Text&lt;br /&gt;
 * und optional einer Fehlerbeschreibung in Klammern (&#039;(...)&#039;).&lt;br /&gt;
&lt;br /&gt;
Die Felder sind jeweils dusch Leerzeichen getrennt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 C: NOOP&lt;br /&gt;
 S: .&lt;br /&gt;
 S: &amp;gt; 0 OK&lt;br /&gt;
&lt;br /&gt;
 C: HELP&lt;br /&gt;
 S: Commands:&lt;br /&gt;
 S:   HELP&lt;br /&gt;
 S:   NOOP&lt;br /&gt;
 S:   PLAY&lt;br /&gt;
 ...&lt;br /&gt;
 S: .&lt;br /&gt;
 S: &amp;gt; 0 OK&lt;br /&gt;
&lt;br /&gt;
Implementierungen &#039;&#039;&#039;dürfen nur&#039;&#039;&#039; die obigen Zeilenenden senden &#039;&#039;&#039;solten&#039;&#039;&#039; aber auch anderen gängige Zeilenumbrüche Akzeptieren.&lt;br /&gt;
&lt;br /&gt;
== Fehler Codes ==&lt;br /&gt;
Folgende Tabelle zeigt die definierten Fehler Codes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Symbolischer Name&lt;br /&gt;
 ! Numerischer Wert&lt;br /&gt;
 ! Versionen&lt;br /&gt;
 ! Fehler Text&lt;br /&gt;
 ! Fehler beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 ! OK&lt;br /&gt;
 | 0&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | OK&lt;br /&gt;
 | Der Befehl wurde erfolgreich abgearbeitet.&lt;br /&gt;
 |-&lt;br /&gt;
 ! ERROR&lt;br /&gt;
 | 1&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | Error&lt;br /&gt;
 | Bei der Abarbeitung des Befehls ist ein Fehler aufgetreten.&lt;br /&gt;
 |-&lt;br /&gt;
 ! INPROC&lt;br /&gt;
 | 2&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | In Process&lt;br /&gt;
 | Die Abarbeitung wurde wird im Hintergrund fortgesetzt.&lt;br /&gt;
 |-&lt;br /&gt;
 ! YES&lt;br /&gt;
 | 3&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | Yes&lt;br /&gt;
 | Die Antwort auf die Anfrage ist: Wahr&lt;br /&gt;
 |-&lt;br /&gt;
 ! NO&lt;br /&gt;
 | 4&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | No&lt;br /&gt;
 | Die Antwort auf die Anfrage ist: Falsch&lt;br /&gt;
 |-&lt;br /&gt;
 ! PROERR&lt;br /&gt;
 | 5&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | Protocol Error&lt;br /&gt;
 | Es ist ein Protokollfehler aufgetreten. Die Verbindung kann vom Server zurück gesetzt werden.&lt;br /&gt;
 |-&lt;br /&gt;
 ! GOODBYE&lt;br /&gt;
 | 6&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | GoodBye&lt;br /&gt;
 | Antwort auf den &#039;&#039;QUIT&#039;&#039; Befehl. Die Verbindung wird vom Server zurück gesetzt.&lt;br /&gt;
 |-&lt;br /&gt;
 ! NOTPERM&lt;br /&gt;
 | 7&lt;br /&gt;
 | ab 0.1rc0&lt;br /&gt;
 | Not Permitted&lt;br /&gt;
 | Die Operation wird verweigert da sie nicht erlaubt ist mit den Rechten des Klienten&lt;br /&gt;
 |-&lt;br /&gt;
 ! NFPROERR&lt;br /&gt;
 | 8&lt;br /&gt;
 | ab 0.1rc8&lt;br /&gt;
 | Nicht Fataler Protokollfehler. Normalerweise syntaktischer Fehler.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Befehle ==&lt;br /&gt;
=== Befehle zur Verbindungs-Steuerung ===&lt;br /&gt;
==== NOOP ====&lt;br /&gt;
Dieser Befehl führt keine Aktion aus sondern bestätigt nur das die Verbindung noch besteht.&lt;br /&gt;
&lt;br /&gt;
==== QUIT ====&lt;br /&gt;
Dieser Befehl beendet die Verbindung.&lt;br /&gt;
&lt;br /&gt;
==== HELP ====&lt;br /&gt;
Dieser Befehl gibt einen Hilfe-Text zu den Befehlen aus.&lt;br /&gt;
&lt;br /&gt;
==== SETPLAYLIST ====&lt;br /&gt;
Dieser Befehl Setzt die aktuelle Wiedergabeliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SETPLAYLIST {&amp;quot;Name&amp;quot;|ID}&lt;br /&gt;
&lt;br /&gt;
==== AUTH ====&lt;br /&gt;
  AUTH [TO AUTHLEV {n|&amp;quot;name&amp;quot;}] USING authtype...&lt;br /&gt;
==== UNAUTH ====&lt;br /&gt;
Dieser Befehl setzt das &#039;&#039;AccessLevel&#039;&#039; (&#039;&#039;ACCLEV&#039;&#039;) auf einen gewünschten Wert herunter.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  UNAUTH [ACCLEV] {BY n|TO {n|&amp;quot;name&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
  UNAUTH TO &amp;quot;guest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Steuerung des Abspielvorgangs ===&lt;br /&gt;
==== PLAY ====&lt;br /&gt;
Dieser Befehl startet den Abspielvorgang.&lt;br /&gt;
&lt;br /&gt;
==== STOP ====&lt;br /&gt;
Dieser Befehl beendet hält den Abspielvorgang an.&lt;br /&gt;
&lt;br /&gt;
==== PAUSE ====&lt;br /&gt;
Unterbricht das Abspielen oder setzt es fort.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  PAUSE {TRUE|FALSE|TOGGLE}&lt;br /&gt;
&lt;br /&gt;
==== NEXT ====&lt;br /&gt;
Dieser Befehl wechselt zum nächsten Titel.&lt;br /&gt;
&lt;br /&gt;
==== PREV ====&lt;br /&gt;
Dieser Befehl wechselt zum zuletzt gespielten Titel.&lt;br /&gt;
&lt;br /&gt;
==== ISPLAYING ====&lt;br /&gt;
Dieser Befehl kann verwendet werden um in Erfahrung zu bringen ob gerade etwas abgespielt wird.&lt;br /&gt;
&lt;br /&gt;
==== SHOWPLYING ====&lt;br /&gt;
Dieser Befehl zeigt den aktuellen zustand an. Sollte etwas abgespielt werden so werden weitere Daten zurückgegeben:&lt;br /&gt;
&lt;br /&gt;
Beispiel Ausgabe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STATE RUNNING&lt;br /&gt;
LONGGTN long:0xE1D9000000000067&lt;br /&gt;
SHORTGTN short:0xE10000BE&lt;br /&gt;
UUID uuid:0eafd00b-0b06-4805-a61f-66dc6427b181&lt;br /&gt;
META TITLE &amp;quot;Kuschel.FM - Das Kuschelradio!&amp;quot;&lt;br /&gt;
MDUC 1&lt;br /&gt;
RATE 44100&lt;br /&gt;
CHANNELS 2&lt;br /&gt;
BITS 16&lt;br /&gt;
TIME 196090280 S (2223.246s)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Feldname&lt;br /&gt;
 ! Feldbedeutung&lt;br /&gt;
 ! Mögliche Werte&lt;br /&gt;
 |-&lt;br /&gt;
 ! STATE&lt;br /&gt;
 | Der aktuelle Abspielstatus.&lt;br /&gt;
 | STOPPED, PAUSE, RUNNING&lt;br /&gt;
 |-&lt;br /&gt;
 ! LONGGTN&lt;br /&gt;
 | Lange Globale Titel Nummer&lt;br /&gt;
 | GTN&lt;br /&gt;
 |-&lt;br /&gt;
 ! SHORTGTN&lt;br /&gt;
 | Kurtze Globale Titel Nummer&lt;br /&gt;
 | GTN&lt;br /&gt;
 |-&lt;br /&gt;
 ! UUID&lt;br /&gt;
 | Eindeutiger Identifikator für den Titel&lt;br /&gt;
 | UUID&lt;br /&gt;
 |-&lt;br /&gt;
 ! META n&lt;br /&gt;
 | Meta Datum des Types n&lt;br /&gt;
 | Zeichenkette&lt;br /&gt;
 |-&lt;br /&gt;
 ! MDUC&lt;br /&gt;
 | Meta Daten Aktualisierungs Zähler&lt;br /&gt;
 | Zahl&lt;br /&gt;
 |-&lt;br /&gt;
 ! RATE&lt;br /&gt;
 | Abtastrate&lt;br /&gt;
 | Zahl&lt;br /&gt;
 |-&lt;br /&gt;
 ! CHANNELS&lt;br /&gt;
 | Kanal Anzahl&lt;br /&gt;
 | Zahl&lt;br /&gt;
 |-&lt;br /&gt;
 ! BITS&lt;br /&gt;
 | Abtastbreite&lt;br /&gt;
 | Zahl&lt;br /&gt;
 |-&lt;br /&gt;
 ! TIME&lt;br /&gt;
 | Zeit&lt;br /&gt;
 | Zahl in Abtastwerten und in Sekunden&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== SHOWIDENTIFIER ====&lt;br /&gt;
Zeigt eine Zeichenkette an welche den aktuell abgespielten Titel auf der nächst tieferen Ebene repräsentierte. Dabei kann es sich um eine RoarAudio StreamID, eine Geräte Datei, eine UUID oder ein beliebig geformte andere Zeichenkette handeln. Es ist nicht Garantiert das diese keine Stimmbrüche beinhaltet oder 7-Bit Sauber ist. Die Bedeutung ist nicht weiter im Protokoll Spezifiziert und wird ausschließlich vom Daemon weitergereicht.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SHOWIDENTIFIER&lt;br /&gt;
&lt;br /&gt;
=== Befehle der Lautstärke Steuerung ===&lt;br /&gt;
==== SETVOLUME ====&lt;br /&gt;
Setzt die Lautstärke.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SETVOLUME new-volume&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;new-volume&#039;&#039; kann entweder im Format &#039;n%&#039; mit n einem Prozentualen Wert von 0..100 sein, oder ein planer Integer im Bereich 0..65535.&lt;br /&gt;
&lt;br /&gt;
==== SHOWVOLUME ====&lt;br /&gt;
Zeigt die Aktuelle Lautstärke an.&lt;br /&gt;
&lt;br /&gt;
Ausgabe Beispiel:&lt;br /&gt;
  VOLUME 65535/65535 100%&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Steuerung der Haupt Wiedergabewarteschlagen-Spielliste ===&lt;br /&gt;
==== LISTQ ====&lt;br /&gt;
Zeigt den Inhalt der Haupt Wiedergabewarteschlagen-Spielliste oder einer anderen Wiedergabeliste an.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  LISTQ [{&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== FLUSHQ ====&lt;br /&gt;
Löscht den Inhalt der Haupt Wiedergabewarteschlagen-Spielliste.&lt;br /&gt;
&lt;br /&gt;
==== SHOWCUR ====&lt;br /&gt;
Dieser Befehlt Zeigt den obersten Eintrag in der Haupt Wiedergabewarteschlagen-Spielliste an. Zur Anzeige was gerade gespielt wird ist dieser Befehl nicht geeignet. Dazu muss &#039;&#039;SHOWPLYING&#039;&#039; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Wiedergabelisten Verwaltung ===&lt;br /&gt;
==== LISTPLAYLISTS ====&lt;br /&gt;
Listet alle Wiedergabelisten auf.&lt;br /&gt;
&lt;br /&gt;
==== SHOWLIST ====&lt;br /&gt;
Zeigt die Aktuelle oder eine andere Wiedergabeliste an.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SHOWLIST [{&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== ADDPLAYLIST ====&lt;br /&gt;
Fügt eine neue Wiedergabeliste hinzu.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  ADDPLAYLIST &amp;quot;Name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== DELPLAYLIST ====&lt;br /&gt;
Löcht eine Wiedergabeliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  DELPLAYLIST [{&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== FLUSHPLAYLIST ====&lt;br /&gt;
Leert den Inhalt einer Wiedergabeliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  FLUSHPLAYLIST [{&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== SETPARENTLIST ====&lt;br /&gt;
Setzt die Eltern Liste der Aktuellen oder einer anderen Wiedergabeliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SETPARENTLIST [OF {&amp;quot;Name&amp;quot;|ID}] [TO] {&amp;quot;Name&amp;quot;|ID}&lt;br /&gt;
&lt;br /&gt;
==== IMPORT ====&lt;br /&gt;
Importiert eine Wiedergabeliste aus einer Datei oder vom Aktuellen Datenstrom in die Aktuelle oder eine andere Wiedergabeliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  IMPORT [{&amp;quot;Name&amp;quot;|ID}] FROM {STDIN|&amp;quot;Filename&amp;quot;} [AS {RPLD|PLS|M3U|VCLT|PLAIN}]&lt;br /&gt;
&lt;br /&gt;
==== EXPORT ====&lt;br /&gt;
Exportiert die Aktuelle oder eine andere Wiedergabeliste in eine Datei oder gibt sie über den aktuellen Datenstrom aus.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  EXPORT [{&amp;quot;Name&amp;quot;|ID}] TO {STDOUT|&amp;quot;Filename&amp;quot;} [AS {RPLD|PLS|M3U|VCLT|PLAIN}]&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Wiedergabelisten Eintrags Verwaltung ===&lt;br /&gt;
Bei den folgenden Befehlen steht &#039;&#039;PLE&#039;&#039; immer für &amp;quot;&#039;&#039;PlayList Entry&#039;&#039;&amp;quot; (Wiedergabelisten Eintrag).&lt;br /&gt;
&lt;br /&gt;
==== LISTPLE ====&lt;br /&gt;
Zeigt alle Einträge in einer Wiedergabeliste an.&lt;br /&gt;
Es werden entweder wie Einträge der aktuellen Liste oder der angegebenen Angezeigt.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  LISTPLE [{&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== SHOWPLE ====&lt;br /&gt;
Dieser Befehl zeigt einen bestimmten Eintrag an.&lt;br /&gt;
Es wird entweder in der aktuellen Liste, in der angegebenen oder in allen Listen gesucht.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SHOWPLE {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID|ANY}]&lt;br /&gt;
&lt;br /&gt;
==== COPYPLE ====&lt;br /&gt;
Dieser Befehl kopiert einen Eintrag aus der aktuellen, einer angegebenen Liste oder einen aus allen Listen gesuchten Eintrag in eine andere Liste.&lt;br /&gt;
Eine Position an welcher er in der neuen Liste stehen soll kann optional angegeben werden.&lt;br /&gt;
Der neue Eintrag erhält eine neue &#039;&#039;Global Track Number&#039;&#039; sowie &#039;&#039;Short Global Track Number&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  COPYPLE {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID|ANY}] TO {&amp;quot;Name&amp;quot;|ID} [AT POSITION]&lt;br /&gt;
&lt;br /&gt;
==== MOVEPLE ====&lt;br /&gt;
Gleich der Funktion &#039;&#039;COPYPLE&#039;&#039; nur das diese Funktion den Eintrag nicht kopiert sondern verschiebt. Die &#039;&#039;Global Track Number&#039;&#039; sowie &#039;&#039;Short Global Track Number&#039;&#039; bleibt erhalten.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  MOVEPLE {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID|ANY}] TO {&amp;quot;Name&amp;quot;|ID} [AT POSITION]&lt;br /&gt;
&lt;br /&gt;
==== DELPLE ====&lt;br /&gt;
Diese Funktion löscht einen Eintrag aus der aktuellen oder einer angegebenen Liste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  DELPLE {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== QUEUEPLE ====&lt;br /&gt;
Dieser Befehl ist eine Kurzform des &#039;&#039;COPYPLE&#039;&#039; Befehls bei dem die Ziehlliste immer die Haupt Wiedergabewarteschlagen-Spielliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  QUEUEPLE {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID|ANY}] [AT POSITION]&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Zeigerverwaltung ===&lt;br /&gt;
==== SETPOINTER ====&lt;br /&gt;
Setzt den angegebenen Wiedergabelistenzeiger auf einen angegebenen Wiedergabelisten Eintrag.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SETPOINTER {CURRENT|DEFAULT|STARTUP|TEMP} {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID|ANY}]&lt;br /&gt;
&lt;br /&gt;
===== Bedeutungen der Einzelnen Zeiger =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Zeigername&lt;br /&gt;
 ! Gültigkeit&lt;br /&gt;
 ! Zeiger Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 ! CURRENT&lt;br /&gt;
 | Global&lt;br /&gt;
 | Sollte die Haupt Wiedergabewarteschlagen-Spielliste leer laufen so wird der Titel auf den dieser Zeiger verweist automatisch in die Spielliste kopiert und dieser Zeiger einen Eintrag weiter geschoben in der Wiedergabeliste in der sich der Eintrag auf den er Zeigt befindet. Auf diese Weise kann eine &#039;&#039;Spiele alles ab hier&#039;&#039; Funktion implementiert werden wie sie viele andere Wiedergabe-Programme besitzen.&lt;br /&gt;
 |-&lt;br /&gt;
 ! DEFAULT&lt;br /&gt;
 | Global&lt;br /&gt;
 | Sollte der &#039;&#039;CURRENT&#039;&#039;-Zeiger bei einer Weiterschiebe-Operation an das Ende der Wiedergabeliste stoßen so wird er erneut mit dem Inhalt dieses Zeigers initialisiert. Auf diese weise kann ein &#039;&#039;Wenn am Ende dann beginn vom Neuen&#039;&#039; Funktion wie es viele Wiedergabe-Programme besitzen implementiert werden. Diese Zeiger Logik kann aber auch zur Implementierung höheren Funktionen verwendet werden, wie dem automatischen Wechsel zwischen verschiedenen Listen.&lt;br /&gt;
 |-&lt;br /&gt;
 ! STARTUP&lt;br /&gt;
 | Global&lt;br /&gt;
 | Der Wiedergabelisten Eintrag auf den dieser Zeiger verweist wird beim Starten des Daemons automatisch abgespielt. Dies gescheit bevor die normale Abarbeitung der restlichen Titel in der Haupt Wiedergabewarteschlagen-Spielliste beginnt.&lt;br /&gt;
 |-&lt;br /&gt;
 ! TEMP&lt;br /&gt;
 | Klient Verbindung&lt;br /&gt;
 | Dieser Zeiger ist rein für die Benutzung in einer Klient Applikation bestimmt. Diese könnte ihn zum Beispiel auf den Aktuell in einem [[GUI]] ausgewählten Listeneintrag verwiesen lassen.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== SHOWPOINTER ====&lt;br /&gt;
Zeigt alle oder nur den angebenden Wiedergabelistenzeiger an.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SHOWPOINTER [{CURRENT|DEFAULT|STARTUP|TEMP}]&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Permanent Speicherung ===&lt;br /&gt;
==== STORE ====&lt;br /&gt;
Dieser Befehl lässt den Daemon seinen Aktuellen Zustand Speichern.&lt;br /&gt;
Dieser kann zum Beispiel vor dem Beenden genutzt werden um den zustand dann wiederherstellen zu können beim nächsten Start. Je nach Parameter wird dieser Befehl vom Daemon beim Beenden eigenständig durchgeführt.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  STORE&lt;br /&gt;
&lt;br /&gt;
==== RESTORE ====&lt;br /&gt;
Stellt den Zustand wie er mit &#039;&#039;STORE&#039;&#039; gespeichert wurde wieder her.&lt;br /&gt;
Dies kann als Beispiel beim Starten des Daemons verwendet werden um den Zustand wieder her zu stellen der beim beenden herrschte. Je nach Parameter wird dieser Befehl vom Daemon selbstständig beim Starten ausgeführt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Wichtig:&#039;&#039; Ein mehrfaches verwenden dieses Befehls kann zu Duplikaten führen.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  RESTORE&lt;br /&gt;
&lt;br /&gt;
=== Veraltete Befehle ===&lt;br /&gt;
Die folgenden Befehle sind veraltet. Sie werden mit Version 0.1.0 voraussichtlich entfernt werden.&lt;br /&gt;
Sie sollten auf keinen Fall Verwendung finden.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  ADD2Q entry&lt;br /&gt;
  DELFQ identifier&lt;br /&gt;
&lt;br /&gt;
=== Andere Befehle und geplante Befehle ===&lt;br /&gt;
Die folgenden Befehle sind in diesem Dokument nicht beschreiben, oder noch in Planung. Sie sollten aktuell nicht verwendet werden.&lt;br /&gt;
&lt;br /&gt;
  SEARCHPLE {&amp;quot;search string&amp;quot;|0xdiscid|uuid} [{AS|IN} {ALL|TITLE|ARTIST|VERSION|FILENAME|DISCID|UUID|TAG:&amp;quot;Tagname&amp;quot;}] [FROM {&amp;quot;Name&amp;quot;|ID|ANY}]&lt;br /&gt;
  UPDATE [{&amp;quot;Name&amp;quot;|ID|ANY}] {TO|FROM} {STDIN|STDOUT|&amp;quot;Filename&amp;quot;} [AS {RPLD|PLS|M3U|VCLT|XSPF|PLAIN}] USING {ALL|TITLE|ARTIST|VERSION|FILENAME|DISCID|UUID|TAG:&amp;quot;Tagname&amp;quot;} [AND ...] [POLICY {DEFAULT|OLD|NEW} {KEEP|DELETE}]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Homepage|roaraudio.keep-cool.org}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;br /&gt;
{{Stub}}&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Installation_und_Einrichtung&amp;diff=9840</id>
		<title>RoarAudio/Installation und Einrichtung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Installation_und_Einrichtung&amp;diff=9840"/>
		<updated>2012-03-31T01:00:21Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* ROAR_OPTIONS */ +workaround:no-slp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;RoarAudio&#039;&#039;&#039; ist ein mächtiger Multi Plattform Soundserver. Im folgenden Artikel sollen Installations- und Konfigurations-Hinweise gegeben werden. Für eine Beschreibung der Software siehe Artikel [[RoarAudio]].&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen finden sich auf der Homepage unter [http://roaraudio.keep-cool.org/docs.html Documentation and Wikis]. Hier Gibt es auch ein englisch sprachiges Handbuch.&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
=== Installation aus den Sourcen heraus ===&lt;br /&gt;
Als erstes sollte man auf die [http://roaraudio.keep-cool.org Homepage] gehen und sich die aktuellen Sources herunterladen. Von dort kann man sich zum Beispiel mittels [[wget]] die Sourcen herunterladen:&lt;br /&gt;
 $ wget http://roaraudio.keep-cool.org/dl/roaraudio-0.4beta0.tar.gz&lt;br /&gt;
&lt;br /&gt;
Danach muss das Archiv mittels [[tar]] entpackt werden:&lt;br /&gt;
 $ tar -xzvf roaraudio-0.4beta0.tar.gz&lt;br /&gt;
&lt;br /&gt;
Dann wechselt man in das neue RoarAudio Verzeichnis und führt &#039;configure&#039; aus:&lt;br /&gt;
 $ ./configure&lt;br /&gt;
&lt;br /&gt;
Die Übersetzung kann nun erfolgen:&lt;br /&gt;
 $ [[make]]&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt wird das frisch gebackene [[Binary]] nun im System installiert.&lt;br /&gt;
 $ [[su]]&lt;br /&gt;
 # make install&lt;br /&gt;
beziehungsweise vereinfacht mittels [[sudo]]:&lt;br /&gt;
 $ [[sudo]] make install&lt;br /&gt;
&lt;br /&gt;
Aufräumen ...&lt;br /&gt;
 $ make clean&lt;br /&gt;
&lt;br /&gt;
=== archlinux ===&lt;br /&gt;
...&lt;br /&gt;
=== OpenBSD ===&lt;br /&gt;
...&lt;br /&gt;
=== Debian ===&lt;br /&gt;
Unter Debian stehen Pakete zur Verfügung. Diese können einfach wie folgt installiert werden:&lt;br /&gt;
 # apt-get install roaraudio roaraudio-extra libroar-compat0&lt;br /&gt;
&lt;br /&gt;
Entwickler sollten weiterhin die Entwiklungspakete installieren:&lt;br /&gt;
 # apt-get install libroar-dev roaraudio-dbg&lt;br /&gt;
&lt;br /&gt;
== Konfigurieren ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Allgemein gesprochen gibt es keine Konfigurationsdateien oder Ähnliches für RoarAudio. Der Daemon wird mittels seiner [[Kommandozeile]]n Parameter konfiguriert. Die Clients mittels deren Konfigurations Dialogen und den Umgebungsvariablen (siehe Unten) sowie deren Kommandozeilen Parametern.&lt;br /&gt;
&lt;br /&gt;
==== Globaler Standard Server Definieren ====&lt;br /&gt;
&lt;br /&gt;
Die Einzige Ausnahme ist die Datei /etc/roarserver. Bei ihr handelt es sich um einen Symlink welcher auf den Globalen Standard Server verweist.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
 # ln -s /tmp/.otherroar /etc/roarserver&lt;br /&gt;
 # ln -s remote.address.example.com /etc/roarserver&lt;br /&gt;
&lt;br /&gt;
==== OpenSLP (ZeroConf) ====&lt;br /&gt;
Damit RoarAudio Clients ihren Server im Netzwerk automatisch finden können muss bei diesem OpenSLP aktiviert sein. Dazu reicht es in der Regel schon aus &#039;&#039;--slp&#039;&#039; dem roard mit zu übergeben. Es muss allerdings darauf geachtet werden das für die öffentlichen Listen Sockets mittels --bind eine echte Adresse angegeben ist. Diese kann natürlich auch ein Hostname sein.&lt;br /&gt;
&lt;br /&gt;
Im weiteren kann es Sinn ergeben einen &#039;&#039;slpd&#039;&#039; zu installieren.&lt;br /&gt;
&lt;br /&gt;
==== Server seitige EsounD Emulation ====&lt;br /&gt;
Server seitige EsounD Emulation kann aktiviert werden durch das erzeugen eines zusätzlichen Listen Sockets mit der korrekten Protokoll Kennung. Dies gescheit mittels &#039;&#039;--new-sock&#039;&#039; und &#039;&#039;--proto&#039;&#039;. Es muss eine andere Adresse und/oder Port für diesen verwendet werden. Dies gescheit mittels der Standard Optionen &#039;&#039;--port&#039;&#039;, &#039;&#039;--bind&#039;&#039; und &#039;&#039;--sock&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
 # roard [...] --new-sock --proto esd --sock /tmp/.esd/socket&lt;br /&gt;
 # roard [...] --new-sock --proto esd --bind 0.0.0.0 --port 16001&lt;br /&gt;
&lt;br /&gt;
=== archlinux ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Debian und Debian basierende Systeme ===&lt;br /&gt;
Auf Debian Basierenden Systemen gibt es eine Datei namens /etc/default/roaraudio. Sie Beinhaltet alle gängig Einstellmöglichkeiten und ist gut kommentiert.&lt;br /&gt;
&lt;br /&gt;
==== OpenSLP (ZeroConf) ====&lt;br /&gt;
Zum einschalten von OpenSLP muss unter Debian und Debian basierenden Systmen nur folgender Eintrag in der Konfigurationsdatei gemacht werden:&lt;br /&gt;
 ROARD_SLP=&#039;YES&#039;&lt;br /&gt;
&lt;br /&gt;
Weiterhin muss wie oben beschreiben ein echter Hostname gesetzt werden, Dies gescheit mittels:&lt;br /&gt;
 ROARD_HOST=&#039;myserver.name&#039;&lt;br /&gt;
&lt;br /&gt;
==== Server seitige EsounD Emulation ====&lt;br /&gt;
Zur Verwendung der Server seitigen EsounD Emulation muss unter Debian nur der Parameter &#039;&#039;ROARD_EMUL_ESD_AF&#039;&#039; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
 ROARD_EMUL_ESD_AF=&#039;TCP&#039;&lt;br /&gt;
 ROARD_EMUL_ESD_AF=&#039;UNIX&#039;&lt;br /&gt;
 ROARD_EMUL_ESD_AF=&#039;DECnet&#039;&lt;br /&gt;
&lt;br /&gt;
== Benutzen ==&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
==== libao ====&lt;br /&gt;
Nach der erfolgreichen Installation sollte das libao Plugin &#039;roar&#039; zur Verfuegung stehen.&lt;br /&gt;
Um es als Standard Ausgabe zu benutzen muss folgendes in die Datei /etc/libao.conf geschrieben werden:&lt;br /&gt;
 default_driver=roar&lt;br /&gt;
&lt;br /&gt;
==== XMMS ====&lt;br /&gt;
Ist das XMMS Plugin installiert so lässt es sich unter XMMS einfach in den Plugin Einstellungen auswählen: Man drückt Strg+P und kann es dann unter &#039;&#039;Output Plugin&#039;&#039; finden. Nach dem Klicken auf &#039;&#039;OK&#039;&#039; einfach den laufenden Titel neu starten und das Plugin sollte verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Findet XMMS das Plugin nicht sollte überprüft werden ob roard läuft und XMMS muß gegebenfalls nach dem Starten von roard neu gestartet werden da XMMS dazu neigt, Plugins für nicht beim Start laufende Ausgaben zu verstecken.&lt;br /&gt;
&lt;br /&gt;
Da das Plugin noch keinen Optionen Dialog hat muss der Server gegeben falls wie in Abschnitt [[#Server_ohne_Optionen_des_Players_ausw.C3.A4hlen|Server ohne Optionen des Players auswählen]] gezeigt eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Audacious ====&lt;br /&gt;
Zum einrichten des Audacious kann die Anleitung für das XMMS Plugin hergenommen werden. Die aus zu führenden schritte sind die selben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== mplayer ====&lt;br /&gt;
==== gstreamer ====&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Programme ohne Plugins ===&lt;br /&gt;
==== Audacity ====&lt;br /&gt;
Audacity kann mittels roarify verwendet werden:&lt;br /&gt;
 $ roarify audacity&lt;br /&gt;
&lt;br /&gt;
==== GNOME Mixer ====&lt;br /&gt;
Der GNOME Mixer sollte von sich aus wunderbar funktionieren sofern das gstreamer Plugin installiert ist. Anderenfalls kann er auch mittels roarify gestartet werden:&lt;br /&gt;
 $ roarify gnome-volume-control&lt;br /&gt;
&lt;br /&gt;
==== Amarok ====&lt;br /&gt;
Amarok funktioniert mittels beider EsounD emulationen (Server seitig oder Client seitig) unter Benutzung der XINE Engine. Diese Muss dazu ausgewählt werden im Konfigurations Dialog. Danach auf den Treiber &#039;esd&#039; umstellen.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung der gstreamer Engine kann entweder das RoarAUdio Plugin verwendet werden oder das EsounD Plugin.&lt;br /&gt;
&lt;br /&gt;
==== GNOME ====&lt;br /&gt;
GNOME bassirt heute auf gstreamer. Für dieses gibt es ein Plugin das empfohlen wird.&lt;br /&gt;
&lt;br /&gt;
==== KDE ====&lt;br /&gt;
Je nach KDE Version kann aRtsd dazu konfiguriert werden EsounD als backend zu benutzen oder in neueren KDE versionen kann ein passendes Phonon Backend eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
==== MPD ====&lt;br /&gt;
MPD lässt sich mittels roarify starten wenn der OSS Treiber geladen ist. Der libao Treiber scheint eine macke zu haben und mpd lässt sich gar nicht starten.&lt;br /&gt;
&lt;br /&gt;
MPD lässt sich durch den [[RoarAudio PlayList Daemon]] ersetzen. Dieser ist von hause aus voll mit RoarAudio integriert.&lt;br /&gt;
&lt;br /&gt;
==== MPlayer ====&lt;br /&gt;
MPlayer funktioniert wunderbar mittels EsounD Emulation (Client + Server). Ansonsten gibt es ein experimentelles Plugin für MPlayer.&lt;br /&gt;
&lt;br /&gt;
==== Wine ====&lt;br /&gt;
Wine kann die Server Seitige EsounD emulation benutzen. Dazu muss ein weiteres Plugin installiert werden. Dies kann dann mittels &#039;&#039;winecfg&#039;&#039; aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
=== Basis Tools ===&lt;br /&gt;
RoarAudio kommt mit diversen Basis Tools welche dazu genutzt werden können Dateien abzuspielen, Webradio zu hören und die gemischten Audio Daten wieder weiter zu verwenden.&lt;br /&gt;
&lt;br /&gt;
==== Musik abspielen ====&lt;br /&gt;
&lt;br /&gt;
Audio Dateien (nicht nur RIFF/WAVE) lassen sich am einfachsten mittels &#039;&#039;roarcatplay&#039;&#039; abspielen:&lt;br /&gt;
 $ roarcatplay foo.wav&lt;br /&gt;
&lt;br /&gt;
Für Ogg/Vorbis Dateien gibt es ein weiteres Programm namens &#039;&#039;roarvorbis&#039;&#039; welches auch Meta Informationen anzeigt:&lt;br /&gt;
 $ roarvorbis bar.ogg&lt;br /&gt;
&lt;br /&gt;
Zum Abspielen von Musik im Hintergrund ohne einen Player im Vordergrund zu benötigen benutzt man &#039;&#039;roarradio&#039;&#039;:&lt;br /&gt;
 $ roarradio http://www.mein-webradio.org/blubb.ogg&lt;br /&gt;
&lt;br /&gt;
==== Musik speichern und streamen ====&lt;br /&gt;
RoarAudio kann Musik nicht nur an Soundcards schicken sondern auch in Dateien oder zu einem [[icecast]] oder ähnlichen Streaming-Server.&lt;br /&gt;
&lt;br /&gt;
Zum Speichern und Auslesen von Musik kann das Programm &#039;&#039;roarmon&#039;&#039; eingesetzt werden:&lt;br /&gt;
 $ roarmon --codec vorbis output.ogg&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;roarmon&#039;&#039; kann auch in Pipes eingesetzt werden:&lt;br /&gt;
 $ roarmon | myenc -o bla.ext -&lt;br /&gt;
&lt;br /&gt;
Zum Streamen mittels libshout kann &#039;&#039;roarshout&#039;&#039; eingesetzt werden.&lt;br /&gt;
 $ roarshout myserver.de 8000 hackme /roar.ogg&lt;br /&gt;
&lt;br /&gt;
Die Parameter sind mit denen von [[oggfwd]] kompatibel und lassen sich mittels &#039;&#039;--help&#039;&#039; nachschlagen.&lt;br /&gt;
&lt;br /&gt;
Auch ist es möglich das &#039;&#039;roard&#039;&#039; selbst einen Streaming-Server mittels libshout ansprechen kann:&lt;br /&gt;
 $ roard -oN -o shout -O http://source:hackme@myserver.de:8000/roar.ogg&lt;br /&gt;
&lt;br /&gt;
Hier erzeugt das -oN ein neues Output (&#039;&#039;&#039;o&#039;&#039;&#039;utput &#039;&#039;&#039;N&#039;&#039;&#039;ew) mit dem Treiber &#039;&#039;shout&#039;&#039;. Die URL gibt die Adresse des Servers an. Der Eintrag ist gleichbedeutend mit dem aus dem Beispiel von &#039;&#039;roarshout&#039;&#039;. Das Wort &#039;&#039;&#039;source&#039;&#039;&#039; ist hier der Benutzername, er wird bei &#039;&#039;roarshout&#039;&#039; nicht angeben da er der Standard Wert ist muss hier aber angegeben werden Grunds der syntaktischen Korrektheit.&lt;br /&gt;
&lt;br /&gt;
==== Steuerung mittels roarctl ====&lt;br /&gt;
===== Server Status =====&lt;br /&gt;
Der Server lässt sich mittels folgendem Befehlen beenden:&lt;br /&gt;
 $ roarctl exit      # Sofort beenden&lt;br /&gt;
 $ roarctl terminate # Beenden sobald alle Clients disconnected sind (Bei vielen Playern: Nach dem aktuellen Titel)&lt;br /&gt;
&lt;br /&gt;
Auserdem kann der Server in den Standby Mode versetzt werden:&lt;br /&gt;
 $ roarctl standby   # oder..&lt;br /&gt;
 $ roarctl off       # In den Standby gehen&lt;br /&gt;
 $ roarctl resume    # oder ...&lt;br /&gt;
 $ roarctl on        # In den normal Modus gehen&lt;br /&gt;
&lt;br /&gt;
Abgefragt werden kann der aktuelle Status mittels des Befehls &#039;&#039;standbymode&#039;&#039;:&lt;br /&gt;
 $ roarctl standbymode&lt;br /&gt;
&lt;br /&gt;
===== Client und Stream Informationen Auslesen =====&lt;br /&gt;
Mit dem Befehl &#039;&#039;allinfo&#039;&#039; lassen sich nahe zu alle Informationen über Clients und Streams ausgeben:&lt;br /&gt;
 $ roarctl allinfo&lt;br /&gt;
&lt;br /&gt;
Es gibt auch spezialisiertere Befehle:&lt;br /&gt;
 $ roarctl serveroinfo             # Informationen über des Servers Mischer&lt;br /&gt;
 $ roarctl listclients             # Informationen über die Clients (Player)&lt;br /&gt;
 $ roarctl liststreams             # Informationen über die Streams&lt;br /&gt;
&lt;br /&gt;
Die Befehle lassen sich mit dem Parameter &#039;&#039;-v&#039;&#039; (verbose - Erweiterte Anzeige) kombinieren.&lt;br /&gt;
&lt;br /&gt;
===== Clients und Streams Manipulieren =====&lt;br /&gt;
Es gibt mehrere Manipulation die zur Laufzeit erfolgen können. Eine der wichtigsten ist es einen Client oder Stream zu kicken:&lt;br /&gt;
&lt;br /&gt;
 $ roarctl kick client 123&lt;br /&gt;
 $ roarctl kick stream 123&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen können für Streams verändert werden. Eine weitere wichtige ist die Lautstärke. Sie lässt sich mittels &#039;&#039;volume&#039;&#039; verstellen:&lt;br /&gt;
&lt;br /&gt;
 $ roarctl volume 123 mono 50%&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl setzt die Lautstärke auf 50% für den Stream 123. Zu beachten ist hier das &#039;&#039;mono&#039;&#039;. Es gibt an das man die Lautstärke für einen Kanal setzen will. Wenn der Stream mehr Kanäle hat, meist 2 für Stereo, so versucht &#039;&#039;roarctl&#039;&#039; sinnvoll fortzusetzen: in diesem Falle wird die Lautstärke für alle Kanäle gesetzt.&lt;br /&gt;
&lt;br /&gt;
Möchte man den Pegel für den rechten und linken Kanal getrennt steuern so kann man das Schlüsselwort &#039;&#039;stereo&#039;&#039; verwenden:&lt;br /&gt;
&lt;br /&gt;
 $ roarctl volume 123 stereo 80% 30%&lt;br /&gt;
&lt;br /&gt;
Dies setzt die Lautstärke auf 80% Links und 30% Rechts. Hat man mehr als 2 Kanäle kann man auch die Anzahl der Kanäle explizit angeben. In diesem Falle muss die Anzahl der weiteren Parametern exakt der Kanalanzahl entsprechen, zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
 $ roarctl volume 123 4 20% 40% 60% 80%&lt;br /&gt;
&lt;br /&gt;
Anstatt prozentualer Angaben können auch absolute gemacht werden. Die Skala reicht von 0 bis 65535 (inklusive):&lt;br /&gt;
&lt;br /&gt;
 $ roarctl volume 123 mono 8192&lt;br /&gt;
&lt;br /&gt;
Weiterhin ist es mit Neueren Versionen auch möglich angaben in dB zu benutzen sofern Unterstützung für die Standard Mathematik Bibliothek mit einkompiliert wurde:&lt;br /&gt;
&lt;br /&gt;
 $ roarctl volume 123 mono -12dB&lt;br /&gt;
&lt;br /&gt;
==== Zwei Soundserver miteinander verbinden ====&lt;br /&gt;
RoarAudio kann zwei Soundserver mit einander in verschiedensten weisen Koppeln. Hierzu dient das Tool roarinterconnect.&lt;br /&gt;
&lt;br /&gt;
Um dies zu tun muss man die Adressen der Server angeben und Informationen über den Type der Verbindung.&lt;br /&gt;
Sollten keine Server angegeben werden wird als lokaler Server der default Server benutzt und der entfernte Server wird versucht via OpenSLP auf zu lösen.&lt;br /&gt;
&lt;br /&gt;
===== Typen =====&lt;br /&gt;
Die Typenangabe ist in zwei teile aufgeteilt: der Server Type (Protokoll) und der Verbindungs Type (Stream Type).&lt;br /&gt;
Die Folgenden Server Typen gibt es im Moment:&lt;br /&gt;
* &#039;&#039;&#039;roar&#039;&#039;&#039; für RoarAudio Server&lt;br /&gt;
* &#039;&#039;&#039;esd&#039;&#039;&#039;  für [[EsounD]] Server&lt;br /&gt;
* &#039;&#039;&#039;simple&#039;&#039;&#039; für PulseAudio &#039;&#039;simple&#039;&#039; Protokoll&lt;br /&gt;
* &#039;&#039;&#039;oss&#039;&#039;&#039; für [[OSS]] Geräte Dateien&lt;br /&gt;
&lt;br /&gt;
Die Verbindungs Typen sind die folgenden:&lt;br /&gt;
* &#039;&#039;&#039;bidir&#039;&#039;&#039; für eine bidirektionale Verbindung (nur RoarAudio, default)&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039; um einen Soundserver als Filter für den Anderen zu verwenden&lt;br /&gt;
* &#039;&#039;&#039;transmit&#039;&#039;&#039; um lediglich die Lokale Ausgabe auf den entfernten Server zu spiegeln&lt;br /&gt;
* &#039;&#039;&#039;receive&#039;&#039;&#039; um die Ausgabe des entfernten Servers auf den lokalen zu spiegeln&lt;br /&gt;
&lt;br /&gt;
===== Beispiele =====&lt;br /&gt;
 $ roarinterconnect --type transmit --remote stereoanlage.local&lt;br /&gt;
&lt;br /&gt;
===== Einschränkungen =====&lt;br /&gt;
Der als lokaler Server angegebene Server muss die Fähigkeit haben &#039;&#039;Background Streams&#039;&#039; zu verwenden und es muss ich um einen RoarAudio Server handeln. Andere Protokolle sind hier nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Kompatibilitäts Layer ===&lt;br /&gt;
{{Minimal Version|0.2beta3|RoarAudio}}&lt;br /&gt;
Mittels des Tools &#039;&#039;roarify&#039;&#039; können Kompatibilitäts Bibliotheken geladen sowie Kompatibilitäts Binarys ausgeführt werden. Dazu wird roarify einfach der Name des Programms über geben welches mit den Kompatibilitäts Bibliotheken geladen werden soll, beziehungsweise das Programm welches emuliert werden soll:&lt;br /&gt;
&lt;br /&gt;
 $ roarify myplayer&lt;br /&gt;
 $ roarify mplayer -ao esd bla.ogg&lt;br /&gt;
 $ roarify aucat ...&lt;br /&gt;
 $ roarify esd&lt;br /&gt;
 $ roarify artsplay ...&lt;br /&gt;
&lt;br /&gt;
==== Liste der Kompatibilitäts Biblotheken ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Kompatibel zu&lt;br /&gt;
 ! Ab Version&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | libroaresd&lt;br /&gt;
 | Enlightened Sound Daemon&lt;br /&gt;
 | 0.1&lt;br /&gt;
 | Client seitige Binär kompatible EsounD Emulation. Nahezu alle Applikationen funktionieren mit dieser einwandfrei.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroarpulse-simple&lt;br /&gt;
 | PulseAudio&amp;lt;br&amp;gt;Simple API&lt;br /&gt;
 | 0.1&lt;br /&gt;
 | Client seitige Binär kompatible PulseAudio Emulation. Hierbei handelt es sich um eine Emulation der &#039;&#039;Simple API&#039;&#039;. Nicht alle Clients laufen damit. (Name bei Version 0.3beta5 geändert.)&lt;br /&gt;
 |-&lt;br /&gt;
 | libroarpulse&lt;br /&gt;
 | PulseAudio&amp;lt;br&amp;gt;Asynchrone API&lt;br /&gt;
 | 0.3beta5&lt;br /&gt;
 | Client seitige Binär kompatible PulseAudio Emulation. Hierbei handelt es sich um die Haupt API. Diese wird zum teil unterstützt. Einige Programme laufen damit.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroararts&lt;br /&gt;
 | aRts - KDE Sound System&lt;br /&gt;
 | 0.1&lt;br /&gt;
 | Eine Cleint seitige binär kompatible aRtsc Emulation. Die meisten Programme laufen mit ihr. Die meisten die nicht mit ihr laufen haben höchst fragwürdige aRtsc Plugins weswegen viele Distributoren die besagten Plugins aus den Paketen entfernt haben.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroaryiff&lt;br /&gt;
 | YIFF Sound System&lt;br /&gt;
 | 0.1beta2&lt;br /&gt;
 | Eine binär kompatible Emulation der YIFF Sound System API. Die Emulation umfasst alle dokumentierten teile der API inklusive der Teile welche durch die original Bibliothek nicht implementiert sind. Einige Veränderungen wurden durchgeführt um eklatante Sicherheitslöcher zu schließen. Diese Änderungen sollten die meisten Applikationen nicht beeinträchtigen. Genaue Tests liegen aber nicht vor aufgrund des mangels an Applikationen welche das YIFF Sound System benutzen.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroarsndio&lt;br /&gt;
 | OpenBSD sndio&lt;br /&gt;
 | 0.2beta3&lt;br /&gt;
 | Eine Emulation des aktuellen OpenBSD Sound Interfaces (sndio). Sie ist auch auf nicht OpenBSD Systemen funktionsfähig und kann als Portierungshilfe verwendet werden. Sie ist nahezu vollständig und wir unter stetiger Kommunikation mit dem OpenBSD sndio Team entwickelt.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroaross&lt;br /&gt;
 | Open Sound System (OSS)&lt;br /&gt;
 | 0.3beta3&lt;br /&gt;
 | Hierbei handelt es sich um eine preload Bibliothek welche das Open Sound System emuliert. Die meiste Software läuft mit dieser Emulation einwandfrei. Es handelt sich um eine der besten OSS Emulationen gemessen an der menge der Software welche damit läuft.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroaross&lt;br /&gt;
 | DMX4Linux&lt;br /&gt;
 | 0.3beta4&lt;br /&gt;
 | DMX4Linux Emulation. Derzeit nur schreib Support. Lese Support kann mittels dmx Treiber emulirt werden.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroarrsound&lt;br /&gt;
 | RSound&lt;br /&gt;
 | 0.3beta5&lt;br /&gt;
 | Eine binär kompatible Emulation des der librsound des RSound Sound Systems. Da das RSound Sound System noch extrem jung ist herrscht hier noch eine gewissen Instabilität.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Liste der Kompatibilitäts Binarys ====&lt;br /&gt;
{{Minimal Version|0.3beta2|RoarAudio}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Sound Systen Name&lt;br /&gt;
 ! Ab Version&lt;br /&gt;
 ! Beinhaltete Tools&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | 0.3beta2&lt;br /&gt;
 | esd esdcat esdfilt esdmon esdplay (&#039;&#039;ab 0.3beta5:&#039;&#039;) esddsp&lt;br /&gt;
 |-&lt;br /&gt;
 | aRts&lt;br /&gt;
 | 0.3beta3&lt;br /&gt;
 | artsd artscat artsplay (&#039;&#039;ab 0.3beta5:&#039;&#039;) artsdsp&lt;br /&gt;
 |-&lt;br /&gt;
 | NAS&lt;br /&gt;
 | 0.3beta3&lt;br /&gt;
 | auplay (&#039;&#039;ab 0.3beta5:&#039;&#039;) audial audiooss*&lt;br /&gt;
 |-&lt;br /&gt;
 | YIFF Sound System&lt;br /&gt;
 | 0.3beta3&lt;br /&gt;
 | yiff yplay yshutdown&lt;br /&gt;
 |-&lt;br /&gt;
 | PulseAudio&lt;br /&gt;
 | 0.3beta3&lt;br /&gt;
 | pacat paplay (&#039;&#039;ab 0.3beta5:&#039;&#039;) padsp&lt;br /&gt;
 |-&lt;br /&gt;
 | dtmfdial&lt;br /&gt;
 | 0.3beta5&lt;br /&gt;
 | dtmfdial&lt;br /&gt;
 |-&lt;br /&gt;
 | RSound&lt;br /&gt;
 | 0.3beta6&lt;br /&gt;
 | ross rsd&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* = &#039;&#039;audiooss&#039;&#039; ist ein externes Paket und gehört nicht zu NAS direkt dazu. Es wird aber von offizieller Seite auf audiooss verwiesen.&lt;br /&gt;
&lt;br /&gt;
==== Liste der unterstützten Protokolle ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Protokoll Name&lt;br /&gt;
 ! Ab Version&lt;br /&gt;
 ! Beschreibung/Kommentare&lt;br /&gt;
 |-&lt;br /&gt;
 | RoarAudio (nativ)&lt;br /&gt;
 | 0.1&lt;br /&gt;
 | Das native RoarAudio Protokoll.&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | 0.3beta0&lt;br /&gt;
 | Eine nahe zu komplette EsounD Emulation auf Server Seite. Nahe zu alle Applikationen funktioniren mit dieser Emulation unter Verwendung der original Client Bibliothek.&lt;br /&gt;
 |-&lt;br /&gt;
 | Simple&lt;br /&gt;
 | 0.3beta4&lt;br /&gt;
 | Das PulseAudio Simple Protokoll. Alle nötigen Parameter können mittels der &#039;&#039;--proto-*&#039;&#039; Optionen gesetzt werden. Der Standardwert liegt auf Playback-Stream und den nativen Audio Parametern des roards.&lt;br /&gt;
 |-&lt;br /&gt;
 | RSound&lt;br /&gt;
 | 0.3beta5&lt;br /&gt;
 | Das Protokoll der RSound Netzwerk-Sound Abstraktionsebene (&#039;&#039;schlanker Sound Server&#039;&#039;).&lt;br /&gt;
 |-&lt;br /&gt;
 | RPlay&lt;br /&gt;
 | 0.3beta7&lt;br /&gt;
 | Emulation eines Subsets des Protokolls des RPlay sound servers&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Umgebungsvariablen ===&lt;br /&gt;
==== Übersicht ====&lt;br /&gt;
Diese Übersicht zeigt die wichtigsten Umgebungsvariablen auf. Weitere werden durch die Kompatibilitäts Layer verwendet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Variable&lt;br /&gt;
 ! Beispiel&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | HOME&lt;br /&gt;
 | /home/phi&lt;br /&gt;
 | Heimatverzeichnis des Benutzers&lt;br /&gt;
 |-&lt;br /&gt;
 | USER&lt;br /&gt;
 | phi&lt;br /&gt;
 | Aktueller Benutzername&lt;br /&gt;
 |-&lt;br /&gt;
 | TERM&lt;br /&gt;
 | xterm&lt;br /&gt;
 | Aktueller [[Terminal]] Type&lt;br /&gt;
 |-&lt;br /&gt;
 | DISPLAY&lt;br /&gt;
 | :0&lt;br /&gt;
 | Adresse des benutzen [[X11]] Servers&lt;br /&gt;
 |-&lt;br /&gt;
 | ROAR_SERVER&lt;br /&gt;
 | remote.example.com&lt;br /&gt;
 | Adresse des Daemons&lt;br /&gt;
 |-&lt;br /&gt;
 | ROAR_OPTIONS&lt;br /&gt;
 | workaround:use-execed&lt;br /&gt;
 | Optionen für libroar&lt;br /&gt;
 |-&lt;br /&gt;
 | CDDA_DEVICE&lt;br /&gt;
 | /dev/cdrom&lt;br /&gt;
 | Device Name für [[CDDA]] (Audio CDs) Zugriff&lt;br /&gt;
 |-&lt;br /&gt;
 | ROAR_PROXY&lt;br /&gt;
 | ssh&lt;br /&gt;
 | Zu verwendeter Proxy Type&lt;br /&gt;
 |-&lt;br /&gt;
 | http_proxy&lt;br /&gt;
 | http://localhost:8118/&lt;br /&gt;
 | Adresse des [[HTTP]] Proxys&lt;br /&gt;
 |-&lt;br /&gt;
 | socks_proxy&lt;br /&gt;
 | localhost:1080&lt;br /&gt;
 | Adresse des [[SOCKS]] Proxys&lt;br /&gt;
 |-&lt;br /&gt;
 | ssh_proxy&lt;br /&gt;
 | myserver.remote.network&lt;br /&gt;
 | Adresse des [[SSH]] Servers der als Proxy dienen soll&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== ROAR_OPTIONS ====&lt;br /&gt;
Die Umgebungsvariable &#039;&#039;$ROAR_OPTIONS&#039;&#039; besteht aus durch Leerzeichen getrennten Options Zeichenketten.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Parameter&lt;br /&gt;
 ! Unter-Parameter&lt;br /&gt;
 ! Beispiel&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | #/Leer-Option&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | #Ein_Kommentar&lt;br /&gt;
 | Leere Optionen und Optionen welche mit einem # beginnen werden ignoriert.&lt;br /&gt;
 |-&lt;br /&gt;
 | workaround&lt;br /&gt;
 | (mehrere)&lt;br /&gt;
 | workaround:use-execed&lt;br /&gt;
 | Steuert die Verwendung von Workarounds.&lt;br /&gt;
 |-&lt;br /&gt;
 | workaround&lt;br /&gt;
 | use-execed&lt;br /&gt;
 | workaround:use-execed&lt;br /&gt;
 | Setzt das benutzen des use-execed-Workarounds. Dieser kann helfen wenn sich ein NAT-Gateway zwischen Server und Client befindet.&lt;br /&gt;
 |-&lt;br /&gt;
 | workaround&lt;br /&gt;
 | no-slp&lt;br /&gt;
 | workaround:no-slp&lt;br /&gt;
 | Schaltet die Verwendung von OpenSLP aus.&lt;br /&gt;
 |-&lt;br /&gt;
 | warning/warn&lt;br /&gt;
 | (mehrere)&lt;br /&gt;
 | warn:sysio&lt;br /&gt;
 | Steuert die Verwendung von Warnungen.&lt;br /&gt;
 |-&lt;br /&gt;
 | warning/warn&lt;br /&gt;
 | sysio&lt;br /&gt;
 | warn:sysio&lt;br /&gt;
 | Schaltet Warnungen ein die auf sysio verwendenden Code hinweisen. Dies kann Entwicklern bei schreiben Portabler Software helfen.&lt;br /&gt;
 |-&lt;br /&gt;
 | warning/warn&lt;br /&gt;
 | obsolete&lt;br /&gt;
 | warn:obsolete&lt;br /&gt;
 | Warnt bei Aufruf von Funktionen die als &#039;&#039;veraltet&#039;&#039; makeirt sind. Dies soll Entwicklern helfen ihre Software auf einem aktuellen stand zu halten und &#039;&#039;Faild to build from source&#039;&#039;-Fehlern vor zu beugen.&lt;br /&gt;
 |-&lt;br /&gt;
 | warning/warn&lt;br /&gt;
 | all&lt;br /&gt;
 | warn:all&lt;br /&gt;
 | Schaltet alle Warnungen ein.&lt;br /&gt;
 |-&lt;br /&gt;
 | force-rate&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | force-rate:44100&lt;br /&gt;
 | Erzwingt die eine bestimmte Abtastrate bei allen Streams.&lt;br /&gt;
 |-&lt;br /&gt;
 | force-bits&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | force-bits:16&lt;br /&gt;
 | Erzwingt die eine bestimmte Anzahl von Bits pro Abtastwert bei allen Streams.&lt;br /&gt;
 |-&lt;br /&gt;
 | force-channels&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | force-channels:2&lt;br /&gt;
 | Erzwingt die eine bestimmte Anzahl von Kanälen bei allen Streams.&lt;br /&gt;
 |-&lt;br /&gt;
 | force-codec&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | force-codec:pcm_s_be&lt;br /&gt;
 | Erzwingt die einen bestimmten [[Codec]] bei allen Streams.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | (mehrere)&lt;br /&gt;
 | codec:vorbis:q:1&lt;br /&gt;
 | Setzt Optionen für Codecs.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | quality/q&lt;br /&gt;
 | codec:vorbis:q:1&lt;br /&gt;
 | Setzt den Qualitätswert für einen Codec.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | complexity&lt;br /&gt;
 | codec:roar_speex:complexity:8&lt;br /&gt;
 | Setzt die Komplexität mit welcher der Codec arbeiten soll.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | dtx&lt;br /&gt;
 | codec:roar_speex:dtx:true&lt;br /&gt;
 | Setzt das DTX Flag eines Codecs.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | cc-max&lt;br /&gt;
 | codec:roar_celt:cc-max:80&lt;br /&gt;
 | Setzt die Größe des CC-Puffers eines Codecs.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | vbr&lt;br /&gt;
 | codec:vorbis:vbr:true&lt;br /&gt;
 | Setzt das VBR Flag eines Codecs.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | mode&lt;br /&gt;
 | codec:roar_speex:mode:wb&lt;br /&gt;
 | Setzt den den Modus für einen Codec. (Werte für Speex: nb, wb, uwb)&lt;br /&gt;
 |-&lt;br /&gt;
 | set-server&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | set-server:/tmp/otherserver&lt;br /&gt;
 | Setzt den libroar/Applications Standard Server. Dies sollte nur unter seltenen Umständen getan werden. &#039;&#039;$ROAR_SERVER&#039;&#039; sollte in den allermeisten fällen Verwendung finden.&lt;br /&gt;
 |-&lt;br /&gt;
 | set-authfile&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | set-authfile:/home/phi/.roarauth&lt;br /&gt;
 | Setzt die Datei mit den Authentifikations-Cookies.&lt;br /&gt;
 |-&lt;br /&gt;
 | x11-display&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | x11-display::4&lt;br /&gt;
 | Setzt das X11 Display, überschreibt $DISPLAY.&lt;br /&gt;
 |-&lt;br /&gt;
 | trap-policy&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | trap-policy:warn&lt;br /&gt;
 | Setzt die default Aktion die bei einem Trap ausgeführt werden soll. Mögliche Parameter sind: ignore, warn, abort, kill, stop und die. Nicht alle Parameter sind auf allen Plattformen verfügbar.&lt;br /&gt;
 |-&lt;br /&gt;
 | daemonimage&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | daemonimage:/home/phi/bin/roard&lt;br /&gt;
 | Setzt das Standard Image (Programmdatei) des Servers für die Verwendung von Adressen im +fork-Namensraum.&lt;br /&gt;
 |-&lt;br /&gt;
 | serverflags&lt;br /&gt;
 | (mehrere)&lt;br /&gt;
 | serverflags:nonblock&lt;br /&gt;
 | Setzt Flags für den Verbindungsaufbau.&lt;br /&gt;
 |-&lt;br /&gt;
 | serverflags&lt;br /&gt;
 | nonblock&lt;br /&gt;
 | serverflags:nonblock&lt;br /&gt;
 | Verbietet das Verwenden von Langsamen Verbindungsverfahren (Nicht alle Server werden gefunden wenn diese Option gesetzt ist).&lt;br /&gt;
 |-&lt;br /&gt;
 | serverflags&lt;br /&gt;
 | hardnonblock&lt;br /&gt;
 | serverflags:hardnonblock&lt;br /&gt;
 | Verbietet das Verwenden von Langsamen Verbindungsverfahren und ist strenger als nonblock (Nicht alle Server werden gefunden wenn diese Option gesetzt ist).&lt;br /&gt;
 |-&lt;br /&gt;
 | serverflags&lt;br /&gt;
 | localonly&lt;br /&gt;
 | serverflags:localonly&lt;br /&gt;
 | Verbietet das Verbinden mit nicht lokalen Servern. Da nicht immer erkannt werden kann ob ein Server Lokal ist kann bei Verwendung dieser Option weder garantiert werden das nur Lokale Server angesprochen werden noch das alle lokalen Server gefunden werden.&lt;br /&gt;
 |-&lt;br /&gt;
 | protocolversion&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | protocolversion:2&lt;br /&gt;
 | Setzt die Standard Protokoll Version. Sollte nur in Ausnahmefällen verwendet werden.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Liste der Umgebungsvariablen der Kompatibilitäts Layer ====&lt;br /&gt;
Diese Übersicht zeigt die Umgebungsvariablen der Kompatibilitäts Layer auf.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Variable&lt;br /&gt;
 ! Layer&lt;br /&gt;
 ! Beispiel&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | ESPEAKER&lt;br /&gt;
 | libroaresd&lt;br /&gt;
 | some.remote.server&lt;br /&gt;
 | Server Name des RoarAudio Servers auf den verbunden werden soll.&lt;br /&gt;
 |-&lt;br /&gt;
 | PULSE_SERVER&lt;br /&gt;
 | libroarpulse&lt;br /&gt;
 | some.remote.server&lt;br /&gt;
 | Server Name des RoarAudio Servers auf den verbunden werden soll.&lt;br /&gt;
 |-&lt;br /&gt;
 | AUDIODEVICE&lt;br /&gt;
 | libroarsndio&lt;br /&gt;
 | aucat:0&lt;br /&gt;
 | Server Name, RoarAudio Server Adresse oder sndio Device Name für Waveform (PCM) Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | MIDIDEVICE&lt;br /&gt;
 | libroarsndio&lt;br /&gt;
 | rmidi:0&lt;br /&gt;
 | Server Name, RoarAudio Server Adresse oder sndio Device Name für MIDI Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | ROAR_OSS_KEEP_SESSION&lt;br /&gt;
 | libroaross&lt;br /&gt;
 | (keine oder beliebiger Inhalt)&lt;br /&gt;
 | Hält die Verbindung zum RoarAudio Server offen auch wenn alle Audio Devices geschlossen sind. Kann bei einigen (verbugten) Applikation die Performance stark verbessern.&lt;br /&gt;
 |-&lt;br /&gt;
 | ROAR_OSS_CLIENT_NAME&lt;br /&gt;
 | libroaross&lt;br /&gt;
 | MyPlayer&lt;br /&gt;
 | Name der für den Client verwendet werden soll.&lt;br /&gt;
 |-&lt;br /&gt;
 | RSD_SERVER&lt;br /&gt;
 | libroarrsound&lt;br /&gt;
 | some-server&lt;br /&gt;
 | Server Name, RoarAudio Server Adresse.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
./libroaross/libroaross.c: ROAR_OSS_KEEP_SESSION&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Server Adresse ===&lt;br /&gt;
Die Adresse des Server muss in bestimmter Form vorliegen je nach Protokoll. Die Tabelle listet Alle Formate auf.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Protokoll&lt;br /&gt;
 ! Format&lt;br /&gt;
 ! Beispiel&lt;br /&gt;
 ! Standard Werte&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | [[UNIX]]&lt;br /&gt;
 | /pfad&lt;br /&gt;
 | /home/phi/.roar&lt;br /&gt;
 | ~/.roar, /tmp/roar&lt;br /&gt;
 | Pfad zum UNIX Socket.&lt;br /&gt;
 |-&lt;br /&gt;
 | [[IPv4]]&lt;br /&gt;
 | host[:port]&lt;br /&gt;
 | myserver.local:16002&lt;br /&gt;
 | localhost:16002&lt;br /&gt;
 | Hostname und gegebenenfalls Port des Servers.&lt;br /&gt;
 |-&lt;br /&gt;
 | [[DECnet]]&lt;br /&gt;
 | [node]::[object]&lt;br /&gt;
 | remnod::&lt;br /&gt;
 | localnode::roar&lt;br /&gt;
 | Node Name und gegebenenfalls Objekt Name des Servers.&lt;br /&gt;
 |-&lt;br /&gt;
 | Spezial&lt;br /&gt;
 | +fork&lt;br /&gt;
 | +fork&lt;br /&gt;
 | &#039;&#039;(keiner)&#039;&#039;&lt;br /&gt;
 | [[Fork]]et für den Prozess eine eigenen Instanz des Sound Daemons.&lt;br /&gt;
 |-&lt;br /&gt;
 | Spezial&lt;br /&gt;
 | +slp&lt;br /&gt;
 | +slp&lt;br /&gt;
 | +slp&lt;br /&gt;
 | Sucht nach dem Sound Daemon explizit mittels [[OpenSLP]]. Dies ist dann nötig wenn sich unter den Standard Adressen ein laufender roard befindet und OpenSLP explizit benutzt werden soll.&lt;br /&gt;
 |-&lt;br /&gt;
 | Spezial/[[UNIX]]&lt;br /&gt;
 | +abstract&lt;br /&gt;
 | +abstract&lt;br /&gt;
 | +abstract&lt;br /&gt;
 | Verwendet einen UNIX Domain Socket im Abstrakten Namensraum. Dieser ist von allen Prozessen des Systems aus gleichermaßen erreichbar. Dies gilt auch für Prozesse innerhalb einer [[chroot|chroot(2)]] Umgebung.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
=== Server ohne Optionen des Players auswählen ===&lt;br /&gt;
Einige Player haben keine Möglichkeit einen Server einzustellen oder man möchte eine globale Einstellung treffen. Hierzu gibt es zwei Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
Zum einen lässt sich global ein Server einstellen in dem man ein [[symlink]] mit dem Namen &#039;&#039;/etc/roarserver&#039;&#039; erstellt der auf den Server zeigt. Hier ein paar Beispiele:&lt;br /&gt;
 $ ln -s /tmp/roarsock /etc/roarserver&lt;br /&gt;
 $ ln -s remote.host.name /etc/roarserver&lt;br /&gt;
 $ ln -s mynode:: /etc/roarserver&lt;br /&gt;
&lt;br /&gt;
Die andere Möglichkeit ist es die [[Umgebungsvariable]] ROAR_SERVER zu setzen:&lt;br /&gt;
 $ ROAR_SERVER=remote.host.name myplayer ...&lt;br /&gt;
 $ export ROAR_SERVER=remote.host.name # bash&lt;br /&gt;
 % setenv ROAR_SERVER remote.host.name # csh&lt;br /&gt;
 $ myplayer ...&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[RoarAudio]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://roaraudio.keep-cool.org/ RoarAudio Homepage]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;br /&gt;
{{Stub}}&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Installation_und_Einrichtung&amp;diff=9839</id>
		<title>RoarAudio/Installation und Einrichtung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Installation_und_Einrichtung&amp;diff=9839"/>
		<updated>2012-03-31T00:58:00Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* ROAR_OPTIONS */ update: +protocolversion, serverflags und daemonimage.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;RoarAudio&#039;&#039;&#039; ist ein mächtiger Multi Plattform Soundserver. Im folgenden Artikel sollen Installations- und Konfigurations-Hinweise gegeben werden. Für eine Beschreibung der Software siehe Artikel [[RoarAudio]].&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen finden sich auf der Homepage unter [http://roaraudio.keep-cool.org/docs.html Documentation and Wikis]. Hier Gibt es auch ein englisch sprachiges Handbuch.&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
=== Installation aus den Sourcen heraus ===&lt;br /&gt;
Als erstes sollte man auf die [http://roaraudio.keep-cool.org Homepage] gehen und sich die aktuellen Sources herunterladen. Von dort kann man sich zum Beispiel mittels [[wget]] die Sourcen herunterladen:&lt;br /&gt;
 $ wget http://roaraudio.keep-cool.org/dl/roaraudio-0.4beta0.tar.gz&lt;br /&gt;
&lt;br /&gt;
Danach muss das Archiv mittels [[tar]] entpackt werden:&lt;br /&gt;
 $ tar -xzvf roaraudio-0.4beta0.tar.gz&lt;br /&gt;
&lt;br /&gt;
Dann wechselt man in das neue RoarAudio Verzeichnis und führt &#039;configure&#039; aus:&lt;br /&gt;
 $ ./configure&lt;br /&gt;
&lt;br /&gt;
Die Übersetzung kann nun erfolgen:&lt;br /&gt;
 $ [[make]]&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt wird das frisch gebackene [[Binary]] nun im System installiert.&lt;br /&gt;
 $ [[su]]&lt;br /&gt;
 # make install&lt;br /&gt;
beziehungsweise vereinfacht mittels [[sudo]]:&lt;br /&gt;
 $ [[sudo]] make install&lt;br /&gt;
&lt;br /&gt;
Aufräumen ...&lt;br /&gt;
 $ make clean&lt;br /&gt;
&lt;br /&gt;
=== archlinux ===&lt;br /&gt;
...&lt;br /&gt;
=== OpenBSD ===&lt;br /&gt;
...&lt;br /&gt;
=== Debian ===&lt;br /&gt;
Unter Debian stehen Pakete zur Verfügung. Diese können einfach wie folgt installiert werden:&lt;br /&gt;
 # apt-get install roaraudio roaraudio-extra libroar-compat0&lt;br /&gt;
&lt;br /&gt;
Entwickler sollten weiterhin die Entwiklungspakete installieren:&lt;br /&gt;
 # apt-get install libroar-dev roaraudio-dbg&lt;br /&gt;
&lt;br /&gt;
== Konfigurieren ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Allgemein gesprochen gibt es keine Konfigurationsdateien oder Ähnliches für RoarAudio. Der Daemon wird mittels seiner [[Kommandozeile]]n Parameter konfiguriert. Die Clients mittels deren Konfigurations Dialogen und den Umgebungsvariablen (siehe Unten) sowie deren Kommandozeilen Parametern.&lt;br /&gt;
&lt;br /&gt;
==== Globaler Standard Server Definieren ====&lt;br /&gt;
&lt;br /&gt;
Die Einzige Ausnahme ist die Datei /etc/roarserver. Bei ihr handelt es sich um einen Symlink welcher auf den Globalen Standard Server verweist.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
 # ln -s /tmp/.otherroar /etc/roarserver&lt;br /&gt;
 # ln -s remote.address.example.com /etc/roarserver&lt;br /&gt;
&lt;br /&gt;
==== OpenSLP (ZeroConf) ====&lt;br /&gt;
Damit RoarAudio Clients ihren Server im Netzwerk automatisch finden können muss bei diesem OpenSLP aktiviert sein. Dazu reicht es in der Regel schon aus &#039;&#039;--slp&#039;&#039; dem roard mit zu übergeben. Es muss allerdings darauf geachtet werden das für die öffentlichen Listen Sockets mittels --bind eine echte Adresse angegeben ist. Diese kann natürlich auch ein Hostname sein.&lt;br /&gt;
&lt;br /&gt;
Im weiteren kann es Sinn ergeben einen &#039;&#039;slpd&#039;&#039; zu installieren.&lt;br /&gt;
&lt;br /&gt;
==== Server seitige EsounD Emulation ====&lt;br /&gt;
Server seitige EsounD Emulation kann aktiviert werden durch das erzeugen eines zusätzlichen Listen Sockets mit der korrekten Protokoll Kennung. Dies gescheit mittels &#039;&#039;--new-sock&#039;&#039; und &#039;&#039;--proto&#039;&#039;. Es muss eine andere Adresse und/oder Port für diesen verwendet werden. Dies gescheit mittels der Standard Optionen &#039;&#039;--port&#039;&#039;, &#039;&#039;--bind&#039;&#039; und &#039;&#039;--sock&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
 # roard [...] --new-sock --proto esd --sock /tmp/.esd/socket&lt;br /&gt;
 # roard [...] --new-sock --proto esd --bind 0.0.0.0 --port 16001&lt;br /&gt;
&lt;br /&gt;
=== archlinux ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Debian und Debian basierende Systeme ===&lt;br /&gt;
Auf Debian Basierenden Systemen gibt es eine Datei namens /etc/default/roaraudio. Sie Beinhaltet alle gängig Einstellmöglichkeiten und ist gut kommentiert.&lt;br /&gt;
&lt;br /&gt;
==== OpenSLP (ZeroConf) ====&lt;br /&gt;
Zum einschalten von OpenSLP muss unter Debian und Debian basierenden Systmen nur folgender Eintrag in der Konfigurationsdatei gemacht werden:&lt;br /&gt;
 ROARD_SLP=&#039;YES&#039;&lt;br /&gt;
&lt;br /&gt;
Weiterhin muss wie oben beschreiben ein echter Hostname gesetzt werden, Dies gescheit mittels:&lt;br /&gt;
 ROARD_HOST=&#039;myserver.name&#039;&lt;br /&gt;
&lt;br /&gt;
==== Server seitige EsounD Emulation ====&lt;br /&gt;
Zur Verwendung der Server seitigen EsounD Emulation muss unter Debian nur der Parameter &#039;&#039;ROARD_EMUL_ESD_AF&#039;&#039; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
 ROARD_EMUL_ESD_AF=&#039;TCP&#039;&lt;br /&gt;
 ROARD_EMUL_ESD_AF=&#039;UNIX&#039;&lt;br /&gt;
 ROARD_EMUL_ESD_AF=&#039;DECnet&#039;&lt;br /&gt;
&lt;br /&gt;
== Benutzen ==&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
==== libao ====&lt;br /&gt;
Nach der erfolgreichen Installation sollte das libao Plugin &#039;roar&#039; zur Verfuegung stehen.&lt;br /&gt;
Um es als Standard Ausgabe zu benutzen muss folgendes in die Datei /etc/libao.conf geschrieben werden:&lt;br /&gt;
 default_driver=roar&lt;br /&gt;
&lt;br /&gt;
==== XMMS ====&lt;br /&gt;
Ist das XMMS Plugin installiert so lässt es sich unter XMMS einfach in den Plugin Einstellungen auswählen: Man drückt Strg+P und kann es dann unter &#039;&#039;Output Plugin&#039;&#039; finden. Nach dem Klicken auf &#039;&#039;OK&#039;&#039; einfach den laufenden Titel neu starten und das Plugin sollte verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Findet XMMS das Plugin nicht sollte überprüft werden ob roard läuft und XMMS muß gegebenfalls nach dem Starten von roard neu gestartet werden da XMMS dazu neigt, Plugins für nicht beim Start laufende Ausgaben zu verstecken.&lt;br /&gt;
&lt;br /&gt;
Da das Plugin noch keinen Optionen Dialog hat muss der Server gegeben falls wie in Abschnitt [[#Server_ohne_Optionen_des_Players_ausw.C3.A4hlen|Server ohne Optionen des Players auswählen]] gezeigt eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Audacious ====&lt;br /&gt;
Zum einrichten des Audacious kann die Anleitung für das XMMS Plugin hergenommen werden. Die aus zu führenden schritte sind die selben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== mplayer ====&lt;br /&gt;
==== gstreamer ====&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Programme ohne Plugins ===&lt;br /&gt;
==== Audacity ====&lt;br /&gt;
Audacity kann mittels roarify verwendet werden:&lt;br /&gt;
 $ roarify audacity&lt;br /&gt;
&lt;br /&gt;
==== GNOME Mixer ====&lt;br /&gt;
Der GNOME Mixer sollte von sich aus wunderbar funktionieren sofern das gstreamer Plugin installiert ist. Anderenfalls kann er auch mittels roarify gestartet werden:&lt;br /&gt;
 $ roarify gnome-volume-control&lt;br /&gt;
&lt;br /&gt;
==== Amarok ====&lt;br /&gt;
Amarok funktioniert mittels beider EsounD emulationen (Server seitig oder Client seitig) unter Benutzung der XINE Engine. Diese Muss dazu ausgewählt werden im Konfigurations Dialog. Danach auf den Treiber &#039;esd&#039; umstellen.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung der gstreamer Engine kann entweder das RoarAUdio Plugin verwendet werden oder das EsounD Plugin.&lt;br /&gt;
&lt;br /&gt;
==== GNOME ====&lt;br /&gt;
GNOME bassirt heute auf gstreamer. Für dieses gibt es ein Plugin das empfohlen wird.&lt;br /&gt;
&lt;br /&gt;
==== KDE ====&lt;br /&gt;
Je nach KDE Version kann aRtsd dazu konfiguriert werden EsounD als backend zu benutzen oder in neueren KDE versionen kann ein passendes Phonon Backend eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
==== MPD ====&lt;br /&gt;
MPD lässt sich mittels roarify starten wenn der OSS Treiber geladen ist. Der libao Treiber scheint eine macke zu haben und mpd lässt sich gar nicht starten.&lt;br /&gt;
&lt;br /&gt;
MPD lässt sich durch den [[RoarAudio PlayList Daemon]] ersetzen. Dieser ist von hause aus voll mit RoarAudio integriert.&lt;br /&gt;
&lt;br /&gt;
==== MPlayer ====&lt;br /&gt;
MPlayer funktioniert wunderbar mittels EsounD Emulation (Client + Server). Ansonsten gibt es ein experimentelles Plugin für MPlayer.&lt;br /&gt;
&lt;br /&gt;
==== Wine ====&lt;br /&gt;
Wine kann die Server Seitige EsounD emulation benutzen. Dazu muss ein weiteres Plugin installiert werden. Dies kann dann mittels &#039;&#039;winecfg&#039;&#039; aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
=== Basis Tools ===&lt;br /&gt;
RoarAudio kommt mit diversen Basis Tools welche dazu genutzt werden können Dateien abzuspielen, Webradio zu hören und die gemischten Audio Daten wieder weiter zu verwenden.&lt;br /&gt;
&lt;br /&gt;
==== Musik abspielen ====&lt;br /&gt;
&lt;br /&gt;
Audio Dateien (nicht nur RIFF/WAVE) lassen sich am einfachsten mittels &#039;&#039;roarcatplay&#039;&#039; abspielen:&lt;br /&gt;
 $ roarcatplay foo.wav&lt;br /&gt;
&lt;br /&gt;
Für Ogg/Vorbis Dateien gibt es ein weiteres Programm namens &#039;&#039;roarvorbis&#039;&#039; welches auch Meta Informationen anzeigt:&lt;br /&gt;
 $ roarvorbis bar.ogg&lt;br /&gt;
&lt;br /&gt;
Zum Abspielen von Musik im Hintergrund ohne einen Player im Vordergrund zu benötigen benutzt man &#039;&#039;roarradio&#039;&#039;:&lt;br /&gt;
 $ roarradio http://www.mein-webradio.org/blubb.ogg&lt;br /&gt;
&lt;br /&gt;
==== Musik speichern und streamen ====&lt;br /&gt;
RoarAudio kann Musik nicht nur an Soundcards schicken sondern auch in Dateien oder zu einem [[icecast]] oder ähnlichen Streaming-Server.&lt;br /&gt;
&lt;br /&gt;
Zum Speichern und Auslesen von Musik kann das Programm &#039;&#039;roarmon&#039;&#039; eingesetzt werden:&lt;br /&gt;
 $ roarmon --codec vorbis output.ogg&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;roarmon&#039;&#039; kann auch in Pipes eingesetzt werden:&lt;br /&gt;
 $ roarmon | myenc -o bla.ext -&lt;br /&gt;
&lt;br /&gt;
Zum Streamen mittels libshout kann &#039;&#039;roarshout&#039;&#039; eingesetzt werden.&lt;br /&gt;
 $ roarshout myserver.de 8000 hackme /roar.ogg&lt;br /&gt;
&lt;br /&gt;
Die Parameter sind mit denen von [[oggfwd]] kompatibel und lassen sich mittels &#039;&#039;--help&#039;&#039; nachschlagen.&lt;br /&gt;
&lt;br /&gt;
Auch ist es möglich das &#039;&#039;roard&#039;&#039; selbst einen Streaming-Server mittels libshout ansprechen kann:&lt;br /&gt;
 $ roard -oN -o shout -O http://source:hackme@myserver.de:8000/roar.ogg&lt;br /&gt;
&lt;br /&gt;
Hier erzeugt das -oN ein neues Output (&#039;&#039;&#039;o&#039;&#039;&#039;utput &#039;&#039;&#039;N&#039;&#039;&#039;ew) mit dem Treiber &#039;&#039;shout&#039;&#039;. Die URL gibt die Adresse des Servers an. Der Eintrag ist gleichbedeutend mit dem aus dem Beispiel von &#039;&#039;roarshout&#039;&#039;. Das Wort &#039;&#039;&#039;source&#039;&#039;&#039; ist hier der Benutzername, er wird bei &#039;&#039;roarshout&#039;&#039; nicht angeben da er der Standard Wert ist muss hier aber angegeben werden Grunds der syntaktischen Korrektheit.&lt;br /&gt;
&lt;br /&gt;
==== Steuerung mittels roarctl ====&lt;br /&gt;
===== Server Status =====&lt;br /&gt;
Der Server lässt sich mittels folgendem Befehlen beenden:&lt;br /&gt;
 $ roarctl exit      # Sofort beenden&lt;br /&gt;
 $ roarctl terminate # Beenden sobald alle Clients disconnected sind (Bei vielen Playern: Nach dem aktuellen Titel)&lt;br /&gt;
&lt;br /&gt;
Auserdem kann der Server in den Standby Mode versetzt werden:&lt;br /&gt;
 $ roarctl standby   # oder..&lt;br /&gt;
 $ roarctl off       # In den Standby gehen&lt;br /&gt;
 $ roarctl resume    # oder ...&lt;br /&gt;
 $ roarctl on        # In den normal Modus gehen&lt;br /&gt;
&lt;br /&gt;
Abgefragt werden kann der aktuelle Status mittels des Befehls &#039;&#039;standbymode&#039;&#039;:&lt;br /&gt;
 $ roarctl standbymode&lt;br /&gt;
&lt;br /&gt;
===== Client und Stream Informationen Auslesen =====&lt;br /&gt;
Mit dem Befehl &#039;&#039;allinfo&#039;&#039; lassen sich nahe zu alle Informationen über Clients und Streams ausgeben:&lt;br /&gt;
 $ roarctl allinfo&lt;br /&gt;
&lt;br /&gt;
Es gibt auch spezialisiertere Befehle:&lt;br /&gt;
 $ roarctl serveroinfo             # Informationen über des Servers Mischer&lt;br /&gt;
 $ roarctl listclients             # Informationen über die Clients (Player)&lt;br /&gt;
 $ roarctl liststreams             # Informationen über die Streams&lt;br /&gt;
&lt;br /&gt;
Die Befehle lassen sich mit dem Parameter &#039;&#039;-v&#039;&#039; (verbose - Erweiterte Anzeige) kombinieren.&lt;br /&gt;
&lt;br /&gt;
===== Clients und Streams Manipulieren =====&lt;br /&gt;
Es gibt mehrere Manipulation die zur Laufzeit erfolgen können. Eine der wichtigsten ist es einen Client oder Stream zu kicken:&lt;br /&gt;
&lt;br /&gt;
 $ roarctl kick client 123&lt;br /&gt;
 $ roarctl kick stream 123&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen können für Streams verändert werden. Eine weitere wichtige ist die Lautstärke. Sie lässt sich mittels &#039;&#039;volume&#039;&#039; verstellen:&lt;br /&gt;
&lt;br /&gt;
 $ roarctl volume 123 mono 50%&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl setzt die Lautstärke auf 50% für den Stream 123. Zu beachten ist hier das &#039;&#039;mono&#039;&#039;. Es gibt an das man die Lautstärke für einen Kanal setzen will. Wenn der Stream mehr Kanäle hat, meist 2 für Stereo, so versucht &#039;&#039;roarctl&#039;&#039; sinnvoll fortzusetzen: in diesem Falle wird die Lautstärke für alle Kanäle gesetzt.&lt;br /&gt;
&lt;br /&gt;
Möchte man den Pegel für den rechten und linken Kanal getrennt steuern so kann man das Schlüsselwort &#039;&#039;stereo&#039;&#039; verwenden:&lt;br /&gt;
&lt;br /&gt;
 $ roarctl volume 123 stereo 80% 30%&lt;br /&gt;
&lt;br /&gt;
Dies setzt die Lautstärke auf 80% Links und 30% Rechts. Hat man mehr als 2 Kanäle kann man auch die Anzahl der Kanäle explizit angeben. In diesem Falle muss die Anzahl der weiteren Parametern exakt der Kanalanzahl entsprechen, zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
 $ roarctl volume 123 4 20% 40% 60% 80%&lt;br /&gt;
&lt;br /&gt;
Anstatt prozentualer Angaben können auch absolute gemacht werden. Die Skala reicht von 0 bis 65535 (inklusive):&lt;br /&gt;
&lt;br /&gt;
 $ roarctl volume 123 mono 8192&lt;br /&gt;
&lt;br /&gt;
Weiterhin ist es mit Neueren Versionen auch möglich angaben in dB zu benutzen sofern Unterstützung für die Standard Mathematik Bibliothek mit einkompiliert wurde:&lt;br /&gt;
&lt;br /&gt;
 $ roarctl volume 123 mono -12dB&lt;br /&gt;
&lt;br /&gt;
==== Zwei Soundserver miteinander verbinden ====&lt;br /&gt;
RoarAudio kann zwei Soundserver mit einander in verschiedensten weisen Koppeln. Hierzu dient das Tool roarinterconnect.&lt;br /&gt;
&lt;br /&gt;
Um dies zu tun muss man die Adressen der Server angeben und Informationen über den Type der Verbindung.&lt;br /&gt;
Sollten keine Server angegeben werden wird als lokaler Server der default Server benutzt und der entfernte Server wird versucht via OpenSLP auf zu lösen.&lt;br /&gt;
&lt;br /&gt;
===== Typen =====&lt;br /&gt;
Die Typenangabe ist in zwei teile aufgeteilt: der Server Type (Protokoll) und der Verbindungs Type (Stream Type).&lt;br /&gt;
Die Folgenden Server Typen gibt es im Moment:&lt;br /&gt;
* &#039;&#039;&#039;roar&#039;&#039;&#039; für RoarAudio Server&lt;br /&gt;
* &#039;&#039;&#039;esd&#039;&#039;&#039;  für [[EsounD]] Server&lt;br /&gt;
* &#039;&#039;&#039;simple&#039;&#039;&#039; für PulseAudio &#039;&#039;simple&#039;&#039; Protokoll&lt;br /&gt;
* &#039;&#039;&#039;oss&#039;&#039;&#039; für [[OSS]] Geräte Dateien&lt;br /&gt;
&lt;br /&gt;
Die Verbindungs Typen sind die folgenden:&lt;br /&gt;
* &#039;&#039;&#039;bidir&#039;&#039;&#039; für eine bidirektionale Verbindung (nur RoarAudio, default)&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039; um einen Soundserver als Filter für den Anderen zu verwenden&lt;br /&gt;
* &#039;&#039;&#039;transmit&#039;&#039;&#039; um lediglich die Lokale Ausgabe auf den entfernten Server zu spiegeln&lt;br /&gt;
* &#039;&#039;&#039;receive&#039;&#039;&#039; um die Ausgabe des entfernten Servers auf den lokalen zu spiegeln&lt;br /&gt;
&lt;br /&gt;
===== Beispiele =====&lt;br /&gt;
 $ roarinterconnect --type transmit --remote stereoanlage.local&lt;br /&gt;
&lt;br /&gt;
===== Einschränkungen =====&lt;br /&gt;
Der als lokaler Server angegebene Server muss die Fähigkeit haben &#039;&#039;Background Streams&#039;&#039; zu verwenden und es muss ich um einen RoarAudio Server handeln. Andere Protokolle sind hier nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Kompatibilitäts Layer ===&lt;br /&gt;
{{Minimal Version|0.2beta3|RoarAudio}}&lt;br /&gt;
Mittels des Tools &#039;&#039;roarify&#039;&#039; können Kompatibilitäts Bibliotheken geladen sowie Kompatibilitäts Binarys ausgeführt werden. Dazu wird roarify einfach der Name des Programms über geben welches mit den Kompatibilitäts Bibliotheken geladen werden soll, beziehungsweise das Programm welches emuliert werden soll:&lt;br /&gt;
&lt;br /&gt;
 $ roarify myplayer&lt;br /&gt;
 $ roarify mplayer -ao esd bla.ogg&lt;br /&gt;
 $ roarify aucat ...&lt;br /&gt;
 $ roarify esd&lt;br /&gt;
 $ roarify artsplay ...&lt;br /&gt;
&lt;br /&gt;
==== Liste der Kompatibilitäts Biblotheken ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Kompatibel zu&lt;br /&gt;
 ! Ab Version&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | libroaresd&lt;br /&gt;
 | Enlightened Sound Daemon&lt;br /&gt;
 | 0.1&lt;br /&gt;
 | Client seitige Binär kompatible EsounD Emulation. Nahezu alle Applikationen funktionieren mit dieser einwandfrei.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroarpulse-simple&lt;br /&gt;
 | PulseAudio&amp;lt;br&amp;gt;Simple API&lt;br /&gt;
 | 0.1&lt;br /&gt;
 | Client seitige Binär kompatible PulseAudio Emulation. Hierbei handelt es sich um eine Emulation der &#039;&#039;Simple API&#039;&#039;. Nicht alle Clients laufen damit. (Name bei Version 0.3beta5 geändert.)&lt;br /&gt;
 |-&lt;br /&gt;
 | libroarpulse&lt;br /&gt;
 | PulseAudio&amp;lt;br&amp;gt;Asynchrone API&lt;br /&gt;
 | 0.3beta5&lt;br /&gt;
 | Client seitige Binär kompatible PulseAudio Emulation. Hierbei handelt es sich um die Haupt API. Diese wird zum teil unterstützt. Einige Programme laufen damit.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroararts&lt;br /&gt;
 | aRts - KDE Sound System&lt;br /&gt;
 | 0.1&lt;br /&gt;
 | Eine Cleint seitige binär kompatible aRtsc Emulation. Die meisten Programme laufen mit ihr. Die meisten die nicht mit ihr laufen haben höchst fragwürdige aRtsc Plugins weswegen viele Distributoren die besagten Plugins aus den Paketen entfernt haben.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroaryiff&lt;br /&gt;
 | YIFF Sound System&lt;br /&gt;
 | 0.1beta2&lt;br /&gt;
 | Eine binär kompatible Emulation der YIFF Sound System API. Die Emulation umfasst alle dokumentierten teile der API inklusive der Teile welche durch die original Bibliothek nicht implementiert sind. Einige Veränderungen wurden durchgeführt um eklatante Sicherheitslöcher zu schließen. Diese Änderungen sollten die meisten Applikationen nicht beeinträchtigen. Genaue Tests liegen aber nicht vor aufgrund des mangels an Applikationen welche das YIFF Sound System benutzen.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroarsndio&lt;br /&gt;
 | OpenBSD sndio&lt;br /&gt;
 | 0.2beta3&lt;br /&gt;
 | Eine Emulation des aktuellen OpenBSD Sound Interfaces (sndio). Sie ist auch auf nicht OpenBSD Systemen funktionsfähig und kann als Portierungshilfe verwendet werden. Sie ist nahezu vollständig und wir unter stetiger Kommunikation mit dem OpenBSD sndio Team entwickelt.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroaross&lt;br /&gt;
 | Open Sound System (OSS)&lt;br /&gt;
 | 0.3beta3&lt;br /&gt;
 | Hierbei handelt es sich um eine preload Bibliothek welche das Open Sound System emuliert. Die meiste Software läuft mit dieser Emulation einwandfrei. Es handelt sich um eine der besten OSS Emulationen gemessen an der menge der Software welche damit läuft.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroaross&lt;br /&gt;
 | DMX4Linux&lt;br /&gt;
 | 0.3beta4&lt;br /&gt;
 | DMX4Linux Emulation. Derzeit nur schreib Support. Lese Support kann mittels dmx Treiber emulirt werden.&lt;br /&gt;
 |-&lt;br /&gt;
 | libroarrsound&lt;br /&gt;
 | RSound&lt;br /&gt;
 | 0.3beta5&lt;br /&gt;
 | Eine binär kompatible Emulation des der librsound des RSound Sound Systems. Da das RSound Sound System noch extrem jung ist herrscht hier noch eine gewissen Instabilität.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Liste der Kompatibilitäts Binarys ====&lt;br /&gt;
{{Minimal Version|0.3beta2|RoarAudio}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Sound Systen Name&lt;br /&gt;
 ! Ab Version&lt;br /&gt;
 ! Beinhaltete Tools&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | 0.3beta2&lt;br /&gt;
 | esd esdcat esdfilt esdmon esdplay (&#039;&#039;ab 0.3beta5:&#039;&#039;) esddsp&lt;br /&gt;
 |-&lt;br /&gt;
 | aRts&lt;br /&gt;
 | 0.3beta3&lt;br /&gt;
 | artsd artscat artsplay (&#039;&#039;ab 0.3beta5:&#039;&#039;) artsdsp&lt;br /&gt;
 |-&lt;br /&gt;
 | NAS&lt;br /&gt;
 | 0.3beta3&lt;br /&gt;
 | auplay (&#039;&#039;ab 0.3beta5:&#039;&#039;) audial audiooss*&lt;br /&gt;
 |-&lt;br /&gt;
 | YIFF Sound System&lt;br /&gt;
 | 0.3beta3&lt;br /&gt;
 | yiff yplay yshutdown&lt;br /&gt;
 |-&lt;br /&gt;
 | PulseAudio&lt;br /&gt;
 | 0.3beta3&lt;br /&gt;
 | pacat paplay (&#039;&#039;ab 0.3beta5:&#039;&#039;) padsp&lt;br /&gt;
 |-&lt;br /&gt;
 | dtmfdial&lt;br /&gt;
 | 0.3beta5&lt;br /&gt;
 | dtmfdial&lt;br /&gt;
 |-&lt;br /&gt;
 | RSound&lt;br /&gt;
 | 0.3beta6&lt;br /&gt;
 | ross rsd&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* = &#039;&#039;audiooss&#039;&#039; ist ein externes Paket und gehört nicht zu NAS direkt dazu. Es wird aber von offizieller Seite auf audiooss verwiesen.&lt;br /&gt;
&lt;br /&gt;
==== Liste der unterstützten Protokolle ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Protokoll Name&lt;br /&gt;
 ! Ab Version&lt;br /&gt;
 ! Beschreibung/Kommentare&lt;br /&gt;
 |-&lt;br /&gt;
 | RoarAudio (nativ)&lt;br /&gt;
 | 0.1&lt;br /&gt;
 | Das native RoarAudio Protokoll.&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | 0.3beta0&lt;br /&gt;
 | Eine nahe zu komplette EsounD Emulation auf Server Seite. Nahe zu alle Applikationen funktioniren mit dieser Emulation unter Verwendung der original Client Bibliothek.&lt;br /&gt;
 |-&lt;br /&gt;
 | Simple&lt;br /&gt;
 | 0.3beta4&lt;br /&gt;
 | Das PulseAudio Simple Protokoll. Alle nötigen Parameter können mittels der &#039;&#039;--proto-*&#039;&#039; Optionen gesetzt werden. Der Standardwert liegt auf Playback-Stream und den nativen Audio Parametern des roards.&lt;br /&gt;
 |-&lt;br /&gt;
 | RSound&lt;br /&gt;
 | 0.3beta5&lt;br /&gt;
 | Das Protokoll der RSound Netzwerk-Sound Abstraktionsebene (&#039;&#039;schlanker Sound Server&#039;&#039;).&lt;br /&gt;
 |-&lt;br /&gt;
 | RPlay&lt;br /&gt;
 | 0.3beta7&lt;br /&gt;
 | Emulation eines Subsets des Protokolls des RPlay sound servers&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Umgebungsvariablen ===&lt;br /&gt;
==== Übersicht ====&lt;br /&gt;
Diese Übersicht zeigt die wichtigsten Umgebungsvariablen auf. Weitere werden durch die Kompatibilitäts Layer verwendet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Variable&lt;br /&gt;
 ! Beispiel&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | HOME&lt;br /&gt;
 | /home/phi&lt;br /&gt;
 | Heimatverzeichnis des Benutzers&lt;br /&gt;
 |-&lt;br /&gt;
 | USER&lt;br /&gt;
 | phi&lt;br /&gt;
 | Aktueller Benutzername&lt;br /&gt;
 |-&lt;br /&gt;
 | TERM&lt;br /&gt;
 | xterm&lt;br /&gt;
 | Aktueller [[Terminal]] Type&lt;br /&gt;
 |-&lt;br /&gt;
 | DISPLAY&lt;br /&gt;
 | :0&lt;br /&gt;
 | Adresse des benutzen [[X11]] Servers&lt;br /&gt;
 |-&lt;br /&gt;
 | ROAR_SERVER&lt;br /&gt;
 | remote.example.com&lt;br /&gt;
 | Adresse des Daemons&lt;br /&gt;
 |-&lt;br /&gt;
 | ROAR_OPTIONS&lt;br /&gt;
 | workaround:use-execed&lt;br /&gt;
 | Optionen für libroar&lt;br /&gt;
 |-&lt;br /&gt;
 | CDDA_DEVICE&lt;br /&gt;
 | /dev/cdrom&lt;br /&gt;
 | Device Name für [[CDDA]] (Audio CDs) Zugriff&lt;br /&gt;
 |-&lt;br /&gt;
 | ROAR_PROXY&lt;br /&gt;
 | ssh&lt;br /&gt;
 | Zu verwendeter Proxy Type&lt;br /&gt;
 |-&lt;br /&gt;
 | http_proxy&lt;br /&gt;
 | http://localhost:8118/&lt;br /&gt;
 | Adresse des [[HTTP]] Proxys&lt;br /&gt;
 |-&lt;br /&gt;
 | socks_proxy&lt;br /&gt;
 | localhost:1080&lt;br /&gt;
 | Adresse des [[SOCKS]] Proxys&lt;br /&gt;
 |-&lt;br /&gt;
 | ssh_proxy&lt;br /&gt;
 | myserver.remote.network&lt;br /&gt;
 | Adresse des [[SSH]] Servers der als Proxy dienen soll&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== ROAR_OPTIONS ====&lt;br /&gt;
Die Umgebungsvariable &#039;&#039;$ROAR_OPTIONS&#039;&#039; besteht aus durch Leerzeichen getrennten Options Zeichenketten.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Parameter&lt;br /&gt;
 ! Unter-Parameter&lt;br /&gt;
 ! Beispiel&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | #/Leer-Option&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | #Ein_Kommentar&lt;br /&gt;
 | Leere Optionen und Optionen welche mit einem # beginnen werden ignoriert.&lt;br /&gt;
 |-&lt;br /&gt;
 | workaround&lt;br /&gt;
 | (mehrere)&lt;br /&gt;
 | workaround:use-execed&lt;br /&gt;
 | Steuert die Verwendung von Workarounds.&lt;br /&gt;
 |-&lt;br /&gt;
 | workaround&lt;br /&gt;
 | use-execed&lt;br /&gt;
 | workaround:use-execed&lt;br /&gt;
 | Setzt das benutzen des use-execed-Workarounds. Dieser kann helfen wenn sich ein NAT-Gateway zwischen Server und Client befindet. &lt;br /&gt;
 |-&lt;br /&gt;
 | warning/warn&lt;br /&gt;
 | (mehrere)&lt;br /&gt;
 | warn:sysio&lt;br /&gt;
 | Steuert die Verwendung von Warnungen.&lt;br /&gt;
 |-&lt;br /&gt;
 | warning/warn&lt;br /&gt;
 | sysio&lt;br /&gt;
 | warn:sysio&lt;br /&gt;
 | Schaltet Warnungen ein die auf sysio verwendenden Code hinweisen. Dies kann Entwicklern bei schreiben Portabler Software helfen.&lt;br /&gt;
 |-&lt;br /&gt;
 | warning/warn&lt;br /&gt;
 | obsolete&lt;br /&gt;
 | warn:obsolete&lt;br /&gt;
 | Warnt bei Aufruf von Funktionen die als &#039;&#039;veraltet&#039;&#039; makeirt sind. Dies soll Entwicklern helfen ihre Software auf einem aktuellen stand zu halten und &#039;&#039;Faild to build from source&#039;&#039;-Fehlern vor zu beugen.&lt;br /&gt;
 |-&lt;br /&gt;
 | warning/warn&lt;br /&gt;
 | all&lt;br /&gt;
 | warn:all&lt;br /&gt;
 | Schaltet alle Warnungen ein.&lt;br /&gt;
 |-&lt;br /&gt;
 | force-rate&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | force-rate:44100&lt;br /&gt;
 | Erzwingt die eine bestimmte Abtastrate bei allen Streams.&lt;br /&gt;
 |-&lt;br /&gt;
 | force-bits&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | force-bits:16&lt;br /&gt;
 | Erzwingt die eine bestimmte Anzahl von Bits pro Abtastwert bei allen Streams.&lt;br /&gt;
 |-&lt;br /&gt;
 | force-channels&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | force-channels:2&lt;br /&gt;
 | Erzwingt die eine bestimmte Anzahl von Kanälen bei allen Streams.&lt;br /&gt;
 |-&lt;br /&gt;
 | force-codec&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | force-codec:pcm_s_be&lt;br /&gt;
 | Erzwingt die einen bestimmten [[Codec]] bei allen Streams.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | (mehrere)&lt;br /&gt;
 | codec:vorbis:q:1&lt;br /&gt;
 | Setzt Optionen für Codecs.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | quality/q&lt;br /&gt;
 | codec:vorbis:q:1&lt;br /&gt;
 | Setzt den Qualitätswert für einen Codec.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | complexity&lt;br /&gt;
 | codec:roar_speex:complexity:8&lt;br /&gt;
 | Setzt die Komplexität mit welcher der Codec arbeiten soll.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | dtx&lt;br /&gt;
 | codec:roar_speex:dtx:true&lt;br /&gt;
 | Setzt das DTX Flag eines Codecs.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | cc-max&lt;br /&gt;
 | codec:roar_celt:cc-max:80&lt;br /&gt;
 | Setzt die Größe des CC-Puffers eines Codecs.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | vbr&lt;br /&gt;
 | codec:vorbis:vbr:true&lt;br /&gt;
 | Setzt das VBR Flag eines Codecs.&lt;br /&gt;
 |-&lt;br /&gt;
 | codec&lt;br /&gt;
 | mode&lt;br /&gt;
 | codec:roar_speex:mode:wb&lt;br /&gt;
 | Setzt den den Modus für einen Codec. (Werte für Speex: nb, wb, uwb)&lt;br /&gt;
 |-&lt;br /&gt;
 | set-server&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | set-server:/tmp/otherserver&lt;br /&gt;
 | Setzt den libroar/Applications Standard Server. Dies sollte nur unter seltenen Umständen getan werden. &#039;&#039;$ROAR_SERVER&#039;&#039; sollte in den allermeisten fällen Verwendung finden.&lt;br /&gt;
 |-&lt;br /&gt;
 | set-authfile&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | set-authfile:/home/phi/.roarauth&lt;br /&gt;
 | Setzt die Datei mit den Authentifikations-Cookies.&lt;br /&gt;
 |-&lt;br /&gt;
 | x11-display&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | x11-display::4&lt;br /&gt;
 | Setzt das X11 Display, überschreibt $DISPLAY.&lt;br /&gt;
 |-&lt;br /&gt;
 | trap-policy&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | trap-policy:warn&lt;br /&gt;
 | Setzt die default Aktion die bei einem Trap ausgeführt werden soll. Mögliche Parameter sind: ignore, warn, abort, kill, stop und die. Nicht alle Parameter sind auf allen Plattformen verfügbar.&lt;br /&gt;
 |-&lt;br /&gt;
 | daemonimage&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | daemonimage:/home/phi/bin/roard&lt;br /&gt;
 | Setzt das Standard Image (Programmdatei) des Servers für die Verwendung von Adressen im +fork-Namensraum.&lt;br /&gt;
 |-&lt;br /&gt;
 | serverflags&lt;br /&gt;
 | (mehrere)&lt;br /&gt;
 | serverflags:nonblock&lt;br /&gt;
 | Setzt Flags für den Verbindungsaufbau.&lt;br /&gt;
 |-&lt;br /&gt;
 | serverflags&lt;br /&gt;
 | nonblock&lt;br /&gt;
 | serverflags:nonblock&lt;br /&gt;
 | Verbietet das Verwenden von Langsamen Verbindungsverfahren (Nicht alle Server werden gefunden wenn diese Option gesetzt ist).&lt;br /&gt;
 |-&lt;br /&gt;
 | serverflags&lt;br /&gt;
 | hardnonblock&lt;br /&gt;
 | serverflags:hardnonblock&lt;br /&gt;
 | Verbietet das Verwenden von Langsamen Verbindungsverfahren und ist strenger als nonblock (Nicht alle Server werden gefunden wenn diese Option gesetzt ist).&lt;br /&gt;
 |-&lt;br /&gt;
 | serverflags&lt;br /&gt;
 | localonly&lt;br /&gt;
 | serverflags:localonly&lt;br /&gt;
 | Verbietet das Verbinden mit nicht lokalen Servern. Da nicht immer erkannt werden kann ob ein Server Lokal ist kann bei Verwendung dieser Option weder garantiert werden das nur Lokale Server angesprochen werden noch das alle lokalen Server gefunden werden.&lt;br /&gt;
 |-&lt;br /&gt;
 | protocolversion&lt;br /&gt;
 | (keine)&lt;br /&gt;
 | protocolversion:2&lt;br /&gt;
 | Setzt die Standard Protokoll Version. Sollte nur in Ausnahmefällen verwendet werden.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Liste der Umgebungsvariablen der Kompatibilitäts Layer ====&lt;br /&gt;
Diese Übersicht zeigt die Umgebungsvariablen der Kompatibilitäts Layer auf.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Variable&lt;br /&gt;
 ! Layer&lt;br /&gt;
 ! Beispiel&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | ESPEAKER&lt;br /&gt;
 | libroaresd&lt;br /&gt;
 | some.remote.server&lt;br /&gt;
 | Server Name des RoarAudio Servers auf den verbunden werden soll.&lt;br /&gt;
 |-&lt;br /&gt;
 | PULSE_SERVER&lt;br /&gt;
 | libroarpulse&lt;br /&gt;
 | some.remote.server&lt;br /&gt;
 | Server Name des RoarAudio Servers auf den verbunden werden soll.&lt;br /&gt;
 |-&lt;br /&gt;
 | AUDIODEVICE&lt;br /&gt;
 | libroarsndio&lt;br /&gt;
 | aucat:0&lt;br /&gt;
 | Server Name, RoarAudio Server Adresse oder sndio Device Name für Waveform (PCM) Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | MIDIDEVICE&lt;br /&gt;
 | libroarsndio&lt;br /&gt;
 | rmidi:0&lt;br /&gt;
 | Server Name, RoarAudio Server Adresse oder sndio Device Name für MIDI Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | ROAR_OSS_KEEP_SESSION&lt;br /&gt;
 | libroaross&lt;br /&gt;
 | (keine oder beliebiger Inhalt)&lt;br /&gt;
 | Hält die Verbindung zum RoarAudio Server offen auch wenn alle Audio Devices geschlossen sind. Kann bei einigen (verbugten) Applikation die Performance stark verbessern.&lt;br /&gt;
 |-&lt;br /&gt;
 | ROAR_OSS_CLIENT_NAME&lt;br /&gt;
 | libroaross&lt;br /&gt;
 | MyPlayer&lt;br /&gt;
 | Name der für den Client verwendet werden soll.&lt;br /&gt;
 |-&lt;br /&gt;
 | RSD_SERVER&lt;br /&gt;
 | libroarrsound&lt;br /&gt;
 | some-server&lt;br /&gt;
 | Server Name, RoarAudio Server Adresse.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
./libroaross/libroaross.c: ROAR_OSS_KEEP_SESSION&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Server Adresse ===&lt;br /&gt;
Die Adresse des Server muss in bestimmter Form vorliegen je nach Protokoll. Die Tabelle listet Alle Formate auf.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Protokoll&lt;br /&gt;
 ! Format&lt;br /&gt;
 ! Beispiel&lt;br /&gt;
 ! Standard Werte&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | [[UNIX]]&lt;br /&gt;
 | /pfad&lt;br /&gt;
 | /home/phi/.roar&lt;br /&gt;
 | ~/.roar, /tmp/roar&lt;br /&gt;
 | Pfad zum UNIX Socket.&lt;br /&gt;
 |-&lt;br /&gt;
 | [[IPv4]]&lt;br /&gt;
 | host[:port]&lt;br /&gt;
 | myserver.local:16002&lt;br /&gt;
 | localhost:16002&lt;br /&gt;
 | Hostname und gegebenenfalls Port des Servers.&lt;br /&gt;
 |-&lt;br /&gt;
 | [[DECnet]]&lt;br /&gt;
 | [node]::[object]&lt;br /&gt;
 | remnod::&lt;br /&gt;
 | localnode::roar&lt;br /&gt;
 | Node Name und gegebenenfalls Objekt Name des Servers.&lt;br /&gt;
 |-&lt;br /&gt;
 | Spezial&lt;br /&gt;
 | +fork&lt;br /&gt;
 | +fork&lt;br /&gt;
 | &#039;&#039;(keiner)&#039;&#039;&lt;br /&gt;
 | [[Fork]]et für den Prozess eine eigenen Instanz des Sound Daemons.&lt;br /&gt;
 |-&lt;br /&gt;
 | Spezial&lt;br /&gt;
 | +slp&lt;br /&gt;
 | +slp&lt;br /&gt;
 | +slp&lt;br /&gt;
 | Sucht nach dem Sound Daemon explizit mittels [[OpenSLP]]. Dies ist dann nötig wenn sich unter den Standard Adressen ein laufender roard befindet und OpenSLP explizit benutzt werden soll.&lt;br /&gt;
 |-&lt;br /&gt;
 | Spezial/[[UNIX]]&lt;br /&gt;
 | +abstract&lt;br /&gt;
 | +abstract&lt;br /&gt;
 | +abstract&lt;br /&gt;
 | Verwendet einen UNIX Domain Socket im Abstrakten Namensraum. Dieser ist von allen Prozessen des Systems aus gleichermaßen erreichbar. Dies gilt auch für Prozesse innerhalb einer [[chroot|chroot(2)]] Umgebung.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
=== Server ohne Optionen des Players auswählen ===&lt;br /&gt;
Einige Player haben keine Möglichkeit einen Server einzustellen oder man möchte eine globale Einstellung treffen. Hierzu gibt es zwei Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
Zum einen lässt sich global ein Server einstellen in dem man ein [[symlink]] mit dem Namen &#039;&#039;/etc/roarserver&#039;&#039; erstellt der auf den Server zeigt. Hier ein paar Beispiele:&lt;br /&gt;
 $ ln -s /tmp/roarsock /etc/roarserver&lt;br /&gt;
 $ ln -s remote.host.name /etc/roarserver&lt;br /&gt;
 $ ln -s mynode:: /etc/roarserver&lt;br /&gt;
&lt;br /&gt;
Die andere Möglichkeit ist es die [[Umgebungsvariable]] ROAR_SERVER zu setzen:&lt;br /&gt;
 $ ROAR_SERVER=remote.host.name myplayer ...&lt;br /&gt;
 $ export ROAR_SERVER=remote.host.name # bash&lt;br /&gt;
 % setenv ROAR_SERVER remote.host.name # csh&lt;br /&gt;
 $ myplayer ...&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[RoarAudio]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://roaraudio.keep-cool.org/ RoarAudio Homepage]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;br /&gt;
{{Stub}}&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9837</id>
		<title>RoarAudio/Vortrag/RoarAudio und der RoarAudio PlayList Daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9837"/>
		<updated>2012-02-27T21:33:02Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Die Protokolle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
PlayList Daemon ist ein Playlisten Verwalter der auf dieses Sound System aufsetzt und quasi als Player arbeitet. Er hat dabei ein anderes Konzept als andere Player und soll in diesem Vortrag vorgestellt werden. Auf die Grundlagen des Soundsystems wird im Rahmen des Vortrags nur soweit eingegangen in wie weit es noetig ist fuer das Verstaendnis.&lt;br /&gt;
&lt;br /&gt;
Den Abschluss bildet eine Vorfuerung und Disskussion sowie Workshop in kleinerer Runde sofern gewuenscht.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Der RoarAudio PlayList Daemon ===&lt;br /&gt;
==== Was ist der RoarAudio PlayList Daemon? ====&lt;br /&gt;
Der RoarAudio PlayList Daemon (kurtz: rpld) ist wie der Name schon sagt ein Wiedergabelisten Verwalter. Für den Benutzer sieht dieser etwa wie ein Player aus, auch wenn wesentliche Teile in andere instantzen ausgelagert sind.&lt;br /&gt;
&lt;br /&gt;
Seine Hauptaufgaben sind:&lt;br /&gt;
* Verwalten von Wiedergabeliste‎n,&lt;br /&gt;
* Verwalten von einer Queue der Aktuell zu spielenden Titel,&lt;br /&gt;
* Abspielen der Einträge in der Queue,&lt;br /&gt;
* IO Abstraktion (mittels DSTR).&lt;br /&gt;
&lt;br /&gt;
==== Wiedergabeliste‎n ====&lt;br /&gt;
Im Gegensatz zu vielen anderen Playern kann rpld eine reihe von Wiedergabeliste‎n parallel vorhalten. Zum Beispiel kann eine Wiedergabeliste‎n per Medium oder Album angelegt werden. Wiedergabeliste‎n haben einen Namen und können eine hierarchische Struktur haben. Zwischen den Listen können Titel kopiert und Verschoben werden. Auch können neue Titel erzeugt und gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Jeder Titel in einer Wiedergabeliste‎ hält seine Metadaten (Titel, Interpret, ...) vor.&lt;br /&gt;
&lt;br /&gt;
==== Die Queue und History ====&lt;br /&gt;
Neben den anderen Wiedergabeliste‎n ist die Queue eine spezielle Liste. Was in ihr gespeichert wird abgespielt und dann in die History verschoben. Abgesehen von dieser Eigenschaft ist die Queue beziehungsweise die History eine normale Wiedergabeliste‎.&lt;br /&gt;
&lt;br /&gt;
==== Die Pointer ====&lt;br /&gt;
==== In und Export ====&lt;br /&gt;
Der Daemon kann verschiedene Wiedergabeliste‎n Formate In- und Exportieren. Die Folgende Tabelle gibt eine Übersicht:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Format&lt;br /&gt;
 ! Dateinamenserweiterung&lt;br /&gt;
 ! Import&lt;br /&gt;
 ! Export&lt;br /&gt;
 ! Kommentar&lt;br /&gt;
 |-&lt;br /&gt;
 | rpld&lt;br /&gt;
 | .rpldpl&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Veraltet&lt;br /&gt;
 |-&lt;br /&gt;
 | vclt&lt;br /&gt;
 | .vclt&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Empfohlenes Format&lt;br /&gt;
 |-&lt;br /&gt;
 | pls&lt;br /&gt;
 | .pls&lt;br /&gt;
 | Nein&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Nicht zu verwechseln mit dem Format &#039;&#039;&#039;plain&#039;&#039;&#039;. Viele Verwenden &amp;quot;.pls&amp;quot; für dieses.&lt;br /&gt;
 |-&lt;br /&gt;
 | m3u&lt;br /&gt;
 | .m3u&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Ja&lt;br /&gt;
 | -&lt;br /&gt;
 |-&lt;br /&gt;
 | xspf&lt;br /&gt;
 | .xspf&lt;br /&gt;
 | Nein&lt;br /&gt;
 | Ja&lt;br /&gt;
 | -&lt;br /&gt;
 |-&lt;br /&gt;
 | plain&lt;br /&gt;
 | -&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Dummy Format. Jede Zeile ein Dateiname&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Die Protokolle ====&lt;br /&gt;
Der Daemon verwendet ein eigenes Protokoll. Dieses ist Befehlszeilen orientiertes Protokoll. Es ist in der Lage Daten in-line mit den Befehlen zu übertragen. Durch seine hohe Konsistenz ist es weiterhin leicht zu erlernen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann der Daemon auch teile des MPD Protokolls. Weitere werden in Zukunft möglicherweise hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
==== Titel Identifikation ====&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
== Vorführung, Fragen, Anregungen, Feedback, Workshop ==&lt;br /&gt;
Nach Abschluss des eigentlichen Vortrages findet eine Vorführung statt. Danach gibt es Fragen und Feedback und falls gewünscht ein Workshop im Anschluss.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9836</id>
		<title>RoarAudio/Vortrag/RoarAudio und der RoarAudio PlayList Daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9836"/>
		<updated>2012-02-27T21:18:51Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* In und Export */ Infos (liste aus code entnommen)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
PlayList Daemon ist ein Playlisten Verwalter der auf dieses Sound System aufsetzt und quasi als Player arbeitet. Er hat dabei ein anderes Konzept als andere Player und soll in diesem Vortrag vorgestellt werden. Auf die Grundlagen des Soundsystems wird im Rahmen des Vortrags nur soweit eingegangen in wie weit es noetig ist fuer das Verstaendnis.&lt;br /&gt;
&lt;br /&gt;
Den Abschluss bildet eine Vorfuerung und Disskussion sowie Workshop in kleinerer Runde sofern gewuenscht.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Der RoarAudio PlayList Daemon ===&lt;br /&gt;
==== Was ist der RoarAudio PlayList Daemon? ====&lt;br /&gt;
Der RoarAudio PlayList Daemon (kurtz: rpld) ist wie der Name schon sagt ein Wiedergabelisten Verwalter. Für den Benutzer sieht dieser etwa wie ein Player aus, auch wenn wesentliche Teile in andere instantzen ausgelagert sind.&lt;br /&gt;
&lt;br /&gt;
Seine Hauptaufgaben sind:&lt;br /&gt;
* Verwalten von Wiedergabeliste‎n,&lt;br /&gt;
* Verwalten von einer Queue der Aktuell zu spielenden Titel,&lt;br /&gt;
* Abspielen der Einträge in der Queue,&lt;br /&gt;
* IO Abstraktion (mittels DSTR).&lt;br /&gt;
&lt;br /&gt;
==== Wiedergabeliste‎n ====&lt;br /&gt;
Im Gegensatz zu vielen anderen Playern kann rpld eine reihe von Wiedergabeliste‎n parallel vorhalten. Zum Beispiel kann eine Wiedergabeliste‎n per Medium oder Album angelegt werden. Wiedergabeliste‎n haben einen Namen und können eine hierarchische Struktur haben. Zwischen den Listen können Titel kopiert und Verschoben werden. Auch können neue Titel erzeugt und gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Jeder Titel in einer Wiedergabeliste‎ hält seine Metadaten (Titel, Interpret, ...) vor.&lt;br /&gt;
&lt;br /&gt;
==== Die Queue und History ====&lt;br /&gt;
Neben den anderen Wiedergabeliste‎n ist die Queue eine spezielle Liste. Was in ihr gespeichert wird abgespielt und dann in die History verschoben. Abgesehen von dieser Eigenschaft ist die Queue beziehungsweise die History eine normale Wiedergabeliste‎.&lt;br /&gt;
&lt;br /&gt;
==== Die Pointer ====&lt;br /&gt;
==== In und Export ====&lt;br /&gt;
Der Daemon kann verschiedene Wiedergabeliste‎n Formate In- und Exportieren. Die Folgende Tabelle gibt eine Übersicht:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Format&lt;br /&gt;
 ! Dateinamenserweiterung&lt;br /&gt;
 ! Import&lt;br /&gt;
 ! Export&lt;br /&gt;
 ! Kommentar&lt;br /&gt;
 |-&lt;br /&gt;
 | rpld&lt;br /&gt;
 | .rpldpl&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Veraltet&lt;br /&gt;
 |-&lt;br /&gt;
 | vclt&lt;br /&gt;
 | .vclt&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Empfohlenes Format&lt;br /&gt;
 |-&lt;br /&gt;
 | pls&lt;br /&gt;
 | .pls&lt;br /&gt;
 | Nein&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Nicht zu verwechseln mit dem Format &#039;&#039;&#039;plain&#039;&#039;&#039;. Viele Verwenden &amp;quot;.pls&amp;quot; für dieses.&lt;br /&gt;
 |-&lt;br /&gt;
 | m3u&lt;br /&gt;
 | .m3u&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Ja&lt;br /&gt;
 | -&lt;br /&gt;
 |-&lt;br /&gt;
 | xspf&lt;br /&gt;
 | .xspf&lt;br /&gt;
 | Nein&lt;br /&gt;
 | Ja&lt;br /&gt;
 | -&lt;br /&gt;
 |-&lt;br /&gt;
 | plain&lt;br /&gt;
 | -&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Ja&lt;br /&gt;
 | Dummy Format. Jede Zeile ein Dateiname&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Die Protokolle ====&lt;br /&gt;
==== Titel Identifikation ====&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
== Vorführung, Fragen, Anregungen, Feedback, Workshop ==&lt;br /&gt;
Nach Abschluss des eigentlichen Vortrages findet eine Vorführung statt. Danach gibt es Fragen und Feedback und falls gewünscht ein Workshop im Anschluss.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9835</id>
		<title>RoarAudio/Vortrag/RoarAudio und der RoarAudio PlayList Daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9835"/>
		<updated>2012-02-27T20:21:10Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Die Queue */ bissel text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
PlayList Daemon ist ein Playlisten Verwalter der auf dieses Sound System aufsetzt und quasi als Player arbeitet. Er hat dabei ein anderes Konzept als andere Player und soll in diesem Vortrag vorgestellt werden. Auf die Grundlagen des Soundsystems wird im Rahmen des Vortrags nur soweit eingegangen in wie weit es noetig ist fuer das Verstaendnis.&lt;br /&gt;
&lt;br /&gt;
Den Abschluss bildet eine Vorfuerung und Disskussion sowie Workshop in kleinerer Runde sofern gewuenscht.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Der RoarAudio PlayList Daemon ===&lt;br /&gt;
==== Was ist der RoarAudio PlayList Daemon? ====&lt;br /&gt;
Der RoarAudio PlayList Daemon (kurtz: rpld) ist wie der Name schon sagt ein Wiedergabelisten Verwalter. Für den Benutzer sieht dieser etwa wie ein Player aus, auch wenn wesentliche Teile in andere instantzen ausgelagert sind.&lt;br /&gt;
&lt;br /&gt;
Seine Hauptaufgaben sind:&lt;br /&gt;
* Verwalten von Wiedergabeliste‎n,&lt;br /&gt;
* Verwalten von einer Queue der Aktuell zu spielenden Titel,&lt;br /&gt;
* Abspielen der Einträge in der Queue,&lt;br /&gt;
* IO Abstraktion (mittels DSTR).&lt;br /&gt;
&lt;br /&gt;
==== Wiedergabeliste‎n ====&lt;br /&gt;
Im Gegensatz zu vielen anderen Playern kann rpld eine reihe von Wiedergabeliste‎n parallel vorhalten. Zum Beispiel kann eine Wiedergabeliste‎n per Medium oder Album angelegt werden. Wiedergabeliste‎n haben einen Namen und können eine hierarchische Struktur haben. Zwischen den Listen können Titel kopiert und Verschoben werden. Auch können neue Titel erzeugt und gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Jeder Titel in einer Wiedergabeliste‎ hält seine Metadaten (Titel, Interpret, ...) vor.&lt;br /&gt;
&lt;br /&gt;
==== Die Queue und History ====&lt;br /&gt;
Neben den anderen Wiedergabeliste‎n ist die Queue eine spezielle Liste. Was in ihr gespeichert wird abgespielt und dann in die History verschoben. Abgesehen von dieser Eigenschaft ist die Queue beziehungsweise die History eine normale Wiedergabeliste‎.&lt;br /&gt;
&lt;br /&gt;
==== Die Pointer ====&lt;br /&gt;
==== In und Export ====&lt;br /&gt;
==== Die Protokolle ====&lt;br /&gt;
==== Titel Identifikation ====&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
== Vorführung, Fragen, Anregungen, Feedback, Workshop ==&lt;br /&gt;
Nach Abschluss des eigentlichen Vortrages findet eine Vorführung statt. Danach gibt es Fragen und Feedback und falls gewünscht ein Workshop im Anschluss.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9834</id>
		<title>RoarAudio/Vortrag/RoarAudio und der RoarAudio PlayList Daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9834"/>
		<updated>2012-02-27T18:52:07Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Wiedergabeliste‎n */ bissel text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
PlayList Daemon ist ein Playlisten Verwalter der auf dieses Sound System aufsetzt und quasi als Player arbeitet. Er hat dabei ein anderes Konzept als andere Player und soll in diesem Vortrag vorgestellt werden. Auf die Grundlagen des Soundsystems wird im Rahmen des Vortrags nur soweit eingegangen in wie weit es noetig ist fuer das Verstaendnis.&lt;br /&gt;
&lt;br /&gt;
Den Abschluss bildet eine Vorfuerung und Disskussion sowie Workshop in kleinerer Runde sofern gewuenscht.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Der RoarAudio PlayList Daemon ===&lt;br /&gt;
==== Was ist der RoarAudio PlayList Daemon? ====&lt;br /&gt;
Der RoarAudio PlayList Daemon (kurtz: rpld) ist wie der Name schon sagt ein Wiedergabelisten Verwalter. Für den Benutzer sieht dieser etwa wie ein Player aus, auch wenn wesentliche Teile in andere instantzen ausgelagert sind.&lt;br /&gt;
&lt;br /&gt;
Seine Hauptaufgaben sind:&lt;br /&gt;
* Verwalten von Wiedergabeliste‎n,&lt;br /&gt;
* Verwalten von einer Queue der Aktuell zu spielenden Titel,&lt;br /&gt;
* Abspielen der Einträge in der Queue,&lt;br /&gt;
* IO Abstraktion (mittels DSTR).&lt;br /&gt;
&lt;br /&gt;
==== Wiedergabeliste‎n ====&lt;br /&gt;
Im Gegensatz zu vielen anderen Playern kann rpld eine reihe von Wiedergabeliste‎n parallel vorhalten. Zum Beispiel kann eine Wiedergabeliste‎n per Medium oder Album angelegt werden. Wiedergabeliste‎n haben einen Namen und können eine hierarchische Struktur haben. Zwischen den Listen können Titel kopiert und Verschoben werden. Auch können neue Titel erzeugt und gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Jeder Titel in einer Wiedergabeliste‎ hält seine Metadaten (Titel, Interpret, ...) vor.&lt;br /&gt;
&lt;br /&gt;
==== Die Queue ====&lt;br /&gt;
==== Die Pointer ====&lt;br /&gt;
==== In und Export ====&lt;br /&gt;
==== Die Protokolle ====&lt;br /&gt;
==== Titel Identifikation ====&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
== Vorführung, Fragen, Anregungen, Feedback, Workshop ==&lt;br /&gt;
Nach Abschluss des eigentlichen Vortrages findet eine Vorführung statt. Danach gibt es Fragen und Feedback und falls gewünscht ein Workshop im Anschluss.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9833</id>
		<title>RoarAudio/Vortrag/RoarAudio und der RoarAudio PlayList Daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9833"/>
		<updated>2012-02-27T13:47:48Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Was ist der RoarAudio PlayList Daemon? */ generell infos, teilweise aus RoarAudio_PlayList_Daemon uebernommen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
PlayList Daemon ist ein Playlisten Verwalter der auf dieses Sound System aufsetzt und quasi als Player arbeitet. Er hat dabei ein anderes Konzept als andere Player und soll in diesem Vortrag vorgestellt werden. Auf die Grundlagen des Soundsystems wird im Rahmen des Vortrags nur soweit eingegangen in wie weit es noetig ist fuer das Verstaendnis.&lt;br /&gt;
&lt;br /&gt;
Den Abschluss bildet eine Vorfuerung und Disskussion sowie Workshop in kleinerer Runde sofern gewuenscht.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Der RoarAudio PlayList Daemon ===&lt;br /&gt;
==== Was ist der RoarAudio PlayList Daemon? ====&lt;br /&gt;
Der RoarAudio PlayList Daemon (kurtz: rpld) ist wie der Name schon sagt ein Wiedergabelisten Verwalter. Für den Benutzer sieht dieser etwa wie ein Player aus, auch wenn wesentliche Teile in andere instantzen ausgelagert sind.&lt;br /&gt;
&lt;br /&gt;
Seine Hauptaufgaben sind:&lt;br /&gt;
* Verwalten von Wiedergabeliste‎n,&lt;br /&gt;
* Verwalten von einer Queue der Aktuell zu spielenden Titel,&lt;br /&gt;
* Abspielen der Einträge in der Queue,&lt;br /&gt;
* IO Abstraktion (mittels DSTR).&lt;br /&gt;
&lt;br /&gt;
==== Wiedergabeliste‎n ====&lt;br /&gt;
==== Die Queue ====&lt;br /&gt;
==== Die Pointer ====&lt;br /&gt;
==== In und Export ====&lt;br /&gt;
==== Die Protokolle ====&lt;br /&gt;
==== Titel Identifikation ====&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
== Vorführung, Fragen, Anregungen, Feedback, Workshop ==&lt;br /&gt;
Nach Abschluss des eigentlichen Vortrages findet eine Vorführung statt. Danach gibt es Fragen und Feedback und falls gewünscht ein Workshop im Anschluss.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9832</id>
		<title>RoarAudio/Vortrag/RoarAudio und der RoarAudio PlayList Daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9832"/>
		<updated>2012-02-27T13:35:05Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Vorführung, Fragen, Anregungen, Feedback, Workshop */ bissel infos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
PlayList Daemon ist ein Playlisten Verwalter der auf dieses Sound System aufsetzt und quasi als Player arbeitet. Er hat dabei ein anderes Konzept als andere Player und soll in diesem Vortrag vorgestellt werden. Auf die Grundlagen des Soundsystems wird im Rahmen des Vortrags nur soweit eingegangen in wie weit es noetig ist fuer das Verstaendnis.&lt;br /&gt;
&lt;br /&gt;
Den Abschluss bildet eine Vorfuerung und Disskussion sowie Workshop in kleinerer Runde sofern gewuenscht.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Der RoarAudio PlayList Daemon ===&lt;br /&gt;
==== Was ist der RoarAudio PlayList Daemon? ====&lt;br /&gt;
==== Wiedergabeliste‎n ====&lt;br /&gt;
==== Die Queue ====&lt;br /&gt;
==== Die Pointer ====&lt;br /&gt;
==== In und Export ====&lt;br /&gt;
==== Die Protokolle ====&lt;br /&gt;
==== Titel Identifikation ====&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
== Vorführung, Fragen, Anregungen, Feedback, Workshop ==&lt;br /&gt;
Nach Abschluss des eigentlichen Vortrages findet eine Vorführung statt. Danach gibt es Fragen und Feedback und falls gewünscht ein Workshop im Anschluss.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9831</id>
		<title>RoarAudio/Vortrag/RoarAudio und der RoarAudio PlayList Daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9831"/>
		<updated>2012-02-27T13:33:28Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Was ist der RoarAudio PlayList Daemon? */ Bissel Struktur&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
PlayList Daemon ist ein Playlisten Verwalter der auf dieses Sound System aufsetzt und quasi als Player arbeitet. Er hat dabei ein anderes Konzept als andere Player und soll in diesem Vortrag vorgestellt werden. Auf die Grundlagen des Soundsystems wird im Rahmen des Vortrags nur soweit eingegangen in wie weit es noetig ist fuer das Verstaendnis.&lt;br /&gt;
&lt;br /&gt;
Den Abschluss bildet eine Vorfuerung und Disskussion sowie Workshop in kleinerer Runde sofern gewuenscht.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Der RoarAudio PlayList Daemon ===&lt;br /&gt;
==== Was ist der RoarAudio PlayList Daemon? ====&lt;br /&gt;
==== Wiedergabeliste‎n ====&lt;br /&gt;
==== Die Queue ====&lt;br /&gt;
==== Die Pointer ====&lt;br /&gt;
==== In und Export ====&lt;br /&gt;
==== Die Protokolle ====&lt;br /&gt;
==== Titel Identifikation ====&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
== Vorführung, Fragen, Anregungen, Feedback, Workshop ==&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9830</id>
		<title>RoarAudio/Vortrag/RoarAudio und der RoarAudio PlayList Daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9830"/>
		<updated>2012-02-27T11:50:10Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Was ist RoarAudio? */ bissel was von RoarAudio/Vortrag/Was_ist_RoarAudio uebernommen.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
PlayList Daemon ist ein Playlisten Verwalter der auf dieses Sound System aufsetzt und quasi als Player arbeitet. Er hat dabei ein anderes Konzept als andere Player und soll in diesem Vortrag vorgestellt werden. Auf die Grundlagen des Soundsystems wird im Rahmen des Vortrags nur soweit eingegangen in wie weit es noetig ist fuer das Verstaendnis.&lt;br /&gt;
&lt;br /&gt;
Den Abschluss bildet eine Vorfuerung und Disskussion sowie Workshop in kleinerer Runde sofern gewuenscht.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Was ist der RoarAudio PlayList Daemon? ===&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
== Vorführung, Fragen, Anregungen, Feedback, Workshop ==&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9829</id>
		<title>RoarAudio/Vortrag/RoarAudio und der RoarAudio PlayList Daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9829"/>
		<updated>2012-02-27T11:12:04Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Abstrakt */ text aus mail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
PlayList Daemon ist ein Playlisten Verwalter der auf dieses Sound System aufsetzt und quasi als Player arbeitet. Er hat dabei ein anderes Konzept als andere Player und soll in diesem Vortrag vorgestellt werden. Auf die Grundlagen des Soundsystems wird im Rahmen des Vortrags nur soweit eingegangen in wie weit es noetig ist fuer das Verstaendnis.&lt;br /&gt;
&lt;br /&gt;
Den Abschluss bildet eine Vorfuerung und Disskussion sowie Workshop in kleinerer Runde sofern gewuenscht.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
=== Was ist der RoarAudio PlayList Daemon? ===&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
== Vorführung, Fragen, Anregungen, Feedback, Workshop ==&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9828</id>
		<title>RoarAudio/Vortrag/RoarAudio und der RoarAudio PlayList Daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/RoarAudio_und_der_RoarAudio_PlayList_Daemon&amp;diff=9828"/>
		<updated>2012-02-27T11:07:50Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: BEGIN{}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
=== Was ist der RoarAudio PlayList Daemon? ===&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
== Vorführung, Fragen, Anregungen, Feedback, Workshop ==&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9794</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9794"/>
		<updated>2011-11-01T02:32:50Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Ausblicke */ bissel mehr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
; Hinweis&lt;br /&gt;
: Dies hier ist nur eine Vorbereitung und Stichpunkt Liste. Der eigentliche Vortrag wird interaktiv an einer Tafel gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
In der analogen Elektrotechnik werde Signale in aller Regel durch folgende Werte angegeben:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Formel&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Vorkommen&lt;br /&gt;
|-&lt;br /&gt;
| u(t)&lt;br /&gt;
| Amplitude in Abhängigkeit der Zeit t.&lt;br /&gt;
| Dies ist die gebräuchlichste Variante.&lt;br /&gt;
|-&lt;br /&gt;
| i(t)&lt;br /&gt;
| Strom in Abhängigkeit der Zeit t.&lt;br /&gt;
| Nur bei speziellen Anwendungen (z.B. Stromreglern).&lt;br /&gt;
|-&lt;br /&gt;
| U(f)&lt;br /&gt;
| Amplitude abhängig von der Frequenz f.&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Wir vor allem bei Filtern und Bauelementen mit Filter Eigenschaften (z.B. Verstärkern) verwendet.&lt;br /&gt;
|-&lt;br /&gt;
| Φ(f)&lt;br /&gt;
| Phase abhängig von der Frequenz f.&lt;br /&gt;
|-&lt;br /&gt;
| R(t)&lt;br /&gt;
| Widerstand abhängig von der Zeit t.&lt;br /&gt;
| Zum Beispiel bei Temperatur Messungen.&lt;br /&gt;
|-&lt;br /&gt;
| C(t)&lt;br /&gt;
| Kapazität abhängig von der Zeit t.&lt;br /&gt;
| Bei Kapazitiven Sensoren.&lt;br /&gt;
|-&lt;br /&gt;
| L(t)&lt;br /&gt;
| Induktivität abhängig von der Zeit t.&lt;br /&gt;
| Bei Induktiven Sensoren.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Wandler ====&lt;br /&gt;
* Analog-Digital-Konverter (ADC oder A/D-Wandler) wandeln Spannungen in digitale Signalen um.&lt;br /&gt;
* Digital-Analog-Konverter (DAC oder D/A-Wandler) wandeln digitale Signale in Spannungen um.&lt;br /&gt;
* Digitale Signale sind Zeit diskret. Die Abtastfrequenz bestimmt die Bandbreite. Die maximale Bandbreite ist f&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; &amp;lt; ½ * f&amp;lt;sub&amp;gt;Abtast&amp;lt;/sub&amp;gt;.&lt;br /&gt;
* Digitale Signale sind wertediskret. Die „Sample Breite“ bestimmt den Maximalen Rauchabstand (SNR).&lt;br /&gt;
&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
Wichtige Operationen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion im Zeitbereich&lt;br /&gt;
! Funktion im Frequenzbereich&lt;br /&gt;
! Name&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) + a&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + h(f), h(f) = f == 0 ? a : 0&lt;br /&gt;
| Gleichspannungsoffset&lt;br /&gt;
| Erzeugt ein Gleichspannungsoffset a.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) * a&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * a&lt;br /&gt;
| Verstärkung&lt;br /&gt;
| Verstärkt das Signal um Faktor a.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t - a)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) - 2aπf&lt;br /&gt;
| Translation&lt;br /&gt;
| Verzögerung um a.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;2iatπ&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f - a)&lt;br /&gt;
| Frequenzverschiebung&lt;br /&gt;
| Verschiebung der Frequenz um a.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;ia&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + a&lt;br /&gt;
| Phasenverschiebung&lt;br /&gt;
| Verschiebung der Phase um a.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = -u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) ± π&lt;br /&gt;
| Phaseninversion&lt;br /&gt;
| Verschiebung der Phase um π.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = (u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; * h)(t)&lt;br /&gt;
| G&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = G&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * H(f)&lt;br /&gt;
| Faltung&lt;br /&gt;
| Faltung des Signals mit der Funktion &#039;&#039;h&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Ausblicke ===&lt;br /&gt;
&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== VAD als digitaler PTT ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Blockschaltbilder für digitale Schaltungen ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Darstellung von Mehrkanalsignalen ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Bitfehler Simulation ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9793</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9793"/>
		<updated>2011-10-30T22:15:25Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Einfache Operationen */ syntax mit handout gleichsetzen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
; Hinweis&lt;br /&gt;
: Dies hier ist nur eine Vorbereitung und Stichpunkt Liste. Der eigentliche Vortrag wird interaktiv an einer Tafel gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
In der analogen Elektrotechnik werde Signale in aller Regel durch folgende Werte angegeben:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Formel&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Vorkommen&lt;br /&gt;
|-&lt;br /&gt;
| u(t)&lt;br /&gt;
| Amplitude in Abhängigkeit der Zeit t.&lt;br /&gt;
| Dies ist die gebräuchlichste Variante.&lt;br /&gt;
|-&lt;br /&gt;
| i(t)&lt;br /&gt;
| Strom in Abhängigkeit der Zeit t.&lt;br /&gt;
| Nur bei speziellen Anwendungen (z.B. Stromreglern).&lt;br /&gt;
|-&lt;br /&gt;
| U(f)&lt;br /&gt;
| Amplitude abhängig von der Frequenz f.&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Wir vor allem bei Filtern und Bauelementen mit Filter Eigenschaften (z.B. Verstärkern) verwendet.&lt;br /&gt;
|-&lt;br /&gt;
| Φ(f)&lt;br /&gt;
| Phase abhängig von der Frequenz f.&lt;br /&gt;
|-&lt;br /&gt;
| R(t)&lt;br /&gt;
| Widerstand abhängig von der Zeit t.&lt;br /&gt;
| Zum Beispiel bei Temperatur Messungen.&lt;br /&gt;
|-&lt;br /&gt;
| C(t)&lt;br /&gt;
| Kapazität abhängig von der Zeit t.&lt;br /&gt;
| Bei Kapazitiven Sensoren.&lt;br /&gt;
|-&lt;br /&gt;
| L(t)&lt;br /&gt;
| Induktivität abhängig von der Zeit t.&lt;br /&gt;
| Bei Induktiven Sensoren.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Wandler ====&lt;br /&gt;
* Analog-Digital-Konverter (ADC oder A/D-Wandler) wandeln Spannungen in digitale Signalen um.&lt;br /&gt;
* Digital-Analog-Konverter (DAC oder D/A-Wandler) wandeln digitale Signale in Spannungen um.&lt;br /&gt;
* Digitale Signale sind Zeit diskret. Die Abtastfrequenz bestimmt die Bandbreite. Die maximale Bandbreite ist f&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; &amp;lt; ½ * f&amp;lt;sub&amp;gt;Abtast&amp;lt;/sub&amp;gt;.&lt;br /&gt;
* Digitale Signale sind wertediskret. Die „Sample Breite“ bestimmt den Maximalen Rauchabstand (SNR).&lt;br /&gt;
&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
Wichtige Operationen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion im Zeitbereich&lt;br /&gt;
! Funktion im Frequenzbereich&lt;br /&gt;
! Name&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) + a&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + h(f), h(f) = f == 0 ? a : 0&lt;br /&gt;
| Gleichspannungsoffset&lt;br /&gt;
| Erzeugt ein Gleichspannungsoffset a.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) * a&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * a&lt;br /&gt;
| Verstärkung&lt;br /&gt;
| Verstärkt das Signal um Faktor a.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t - a)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) - 2aπf&lt;br /&gt;
| Translation&lt;br /&gt;
| Verzögerung um a.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;2iatπ&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f - a)&lt;br /&gt;
| Frequenzverschiebung&lt;br /&gt;
| Verschiebung der Frequenz um a.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;ia&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + a&lt;br /&gt;
| Phasenverschiebung&lt;br /&gt;
| Verschiebung der Phase um a.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = -u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) ± π&lt;br /&gt;
| Phaseninversion&lt;br /&gt;
| Verschiebung der Phase um π.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = (u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; * h)(t)&lt;br /&gt;
| G&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = G&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * H(f)&lt;br /&gt;
| Faltung&lt;br /&gt;
| Faltung des Signals mit der Funktion &#039;&#039;h&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Ausblicke ====&lt;br /&gt;
&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== VAD als digitaler PTT ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Bitfehler Simulation ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9767</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9767"/>
		<updated>2011-10-18T10:06:36Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Wandler */ Infos zu wandlern, direkt aus handout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
; Hinweis&lt;br /&gt;
: Dies hier ist nur eine Vorbereitung und Stichpunkt Liste. Der eigentliche Vortrag wird interaktiv an einer Tafel gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
In der analogen Elektrotechnik werde Signale in aller Regel durch folgende Werte angegeben:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Formel&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Vorkommen&lt;br /&gt;
|-&lt;br /&gt;
| u(t)&lt;br /&gt;
| Amplitude in Abhängigkeit der Zeit t.&lt;br /&gt;
| Dies ist die gebräuchlichste Variante.&lt;br /&gt;
|-&lt;br /&gt;
| i(t)&lt;br /&gt;
| Strom in Abhängigkeit der Zeit t.&lt;br /&gt;
| Nur bei speziellen Anwendungen (z.B. Stromreglern).&lt;br /&gt;
|-&lt;br /&gt;
| U(f)&lt;br /&gt;
| Amplitude abhängig von der Frequenz f.&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Wir vor allem bei Filtern und Bauelementen mit Filter Eigenschaften (z.B. Verstärkern) verwendet.&lt;br /&gt;
|-&lt;br /&gt;
| Φ(f)&lt;br /&gt;
| Phase abhängig von der Frequenz f.&lt;br /&gt;
|-&lt;br /&gt;
| R(t)&lt;br /&gt;
| Widerstand abhängig von der Zeit t.&lt;br /&gt;
| Zum Beispiel bei Temperatur Messungen.&lt;br /&gt;
|-&lt;br /&gt;
| C(t)&lt;br /&gt;
| Kapazität abhängig von der Zeit t.&lt;br /&gt;
| Bei Kapazitiven Sensoren.&lt;br /&gt;
|-&lt;br /&gt;
| L(t)&lt;br /&gt;
| Induktivität abhängig von der Zeit t.&lt;br /&gt;
| Bei Induktiven Sensoren.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Wandler ====&lt;br /&gt;
* Analog-Digital-Konverter (ADC oder A/D-Wandler) wandeln Spannungen in digitale Signalen um.&lt;br /&gt;
* Digital-Analog-Konverter (DAC oder D/A-Wandler) wandeln digitale Signale in Spannungen um.&lt;br /&gt;
* Digitale Signale sind Zeit diskret. Die Abtastfrequenz bestimmt die Bandbreite. Die maximale Bandbreite ist f&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; &amp;lt; ½ * f&amp;lt;sub&amp;gt;Abtast&amp;lt;/sub&amp;gt;.&lt;br /&gt;
* Digitale Signale sind wertediskret. Die „Sample Breite“ bestimmt den Maximalen Rauchabstand (SNR).&lt;br /&gt;
&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
Wichtige Operationen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion im Zeitbereich&lt;br /&gt;
! Funktion im Frequenzbereich&lt;br /&gt;
! Name&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) + k&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + k(f), k(f) = f == 0 ? k : 0&lt;br /&gt;
| Gleichspannungsoffset&lt;br /&gt;
| Erzeugt ein Gleichspannungsoffset k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) * k&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * k&lt;br /&gt;
| Verstärkung&lt;br /&gt;
| Verstärkt das Signal um Faktor k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t - k)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) - 2kπf&lt;br /&gt;
| Translation&lt;br /&gt;
| Verzögerung um k.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;2iktπ&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f - k)&lt;br /&gt;
| Frequenzverschiebung&lt;br /&gt;
| Verschiebung der Frequenz um k.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;ik&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + k&lt;br /&gt;
| Phasenverschiebung&lt;br /&gt;
| Verschiebung der Phase um k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = -u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) ± π&lt;br /&gt;
| Phaseninversion&lt;br /&gt;
| Verschiebung der Phase um π.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = (u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; * h)(t)&lt;br /&gt;
| G&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = G&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * H(f)&lt;br /&gt;
| Faltung&lt;br /&gt;
| Faltung des Signals mit der Funktion &#039;&#039;h&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Ausblicke ====&lt;br /&gt;
&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== VAD als digitaler PTT ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Bitfehler Simulation ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9766</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9766"/>
		<updated>2011-10-18T09:58:55Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Das Signal */ bissel mehr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
; Hinweis&lt;br /&gt;
: Dies hier ist nur eine Vorbereitung und Stichpunkt Liste. Der eigentliche Vortrag wird interaktiv an einer Tafel gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
In der analogen Elektrotechnik werde Signale in aller Regel durch folgende Werte angegeben:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Formel&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Vorkommen&lt;br /&gt;
|-&lt;br /&gt;
| u(t)&lt;br /&gt;
| Amplitude in Abhängigkeit der Zeit t.&lt;br /&gt;
| Dies ist die gebräuchlichste Variante.&lt;br /&gt;
|-&lt;br /&gt;
| i(t)&lt;br /&gt;
| Strom in Abhängigkeit der Zeit t.&lt;br /&gt;
| Nur bei speziellen Anwendungen (z.B. Stromreglern).&lt;br /&gt;
|-&lt;br /&gt;
| U(f)&lt;br /&gt;
| Amplitude abhängig von der Frequenz f.&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Wir vor allem bei Filtern und Bauelementen mit Filter Eigenschaften (z.B. Verstärkern) verwendet.&lt;br /&gt;
|-&lt;br /&gt;
| Φ(f)&lt;br /&gt;
| Phase abhängig von der Frequenz f.&lt;br /&gt;
|-&lt;br /&gt;
| R(t)&lt;br /&gt;
| Widerstand abhängig von der Zeit t.&lt;br /&gt;
| Zum Beispiel bei Temperatur Messungen.&lt;br /&gt;
|-&lt;br /&gt;
| C(t)&lt;br /&gt;
| Kapazität abhängig von der Zeit t.&lt;br /&gt;
| Bei Kapazitiven Sensoren.&lt;br /&gt;
|-&lt;br /&gt;
| L(t)&lt;br /&gt;
| Induktivität abhängig von der Zeit t.&lt;br /&gt;
| Bei Induktiven Sensoren.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Wandler ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
Wichtige Operationen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion im Zeitbereich&lt;br /&gt;
! Funktion im Frequenzbereich&lt;br /&gt;
! Name&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) + k&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + k(f), k(f) = f == 0 ? k : 0&lt;br /&gt;
| Gleichspannungsoffset&lt;br /&gt;
| Erzeugt ein Gleichspannungsoffset k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) * k&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * k&lt;br /&gt;
| Verstärkung&lt;br /&gt;
| Verstärkt das Signal um Faktor k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t - k)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) - 2kπf&lt;br /&gt;
| Translation&lt;br /&gt;
| Verzögerung um k.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;2iktπ&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f - k)&lt;br /&gt;
| Frequenzverschiebung&lt;br /&gt;
| Verschiebung der Frequenz um k.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;ik&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + k&lt;br /&gt;
| Phasenverschiebung&lt;br /&gt;
| Verschiebung der Phase um k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = -u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) ± π&lt;br /&gt;
| Phaseninversion&lt;br /&gt;
| Verschiebung der Phase um π.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = (u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; * h)(t)&lt;br /&gt;
| G&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = G&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * H(f)&lt;br /&gt;
| Faltung&lt;br /&gt;
| Faltung des Signals mit der Funktion &#039;&#039;h&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Ausblicke ====&lt;br /&gt;
&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== VAD als digitaler PTT ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Bitfehler Simulation ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9765</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9765"/>
		<updated>2011-10-18T09:55:40Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: update des TOC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
; Hinweis&lt;br /&gt;
: Dies hier ist nur eine Vorbereitung und Stichpunkt Liste. Der eigentliche Vortrag wird interaktiv an einer Tafel gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
In der analogen Elektrotechnik werde Signale in aller Regel durch folgende Werte angegeben:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Formel&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Vorkommen&lt;br /&gt;
|-&lt;br /&gt;
| u(t)&lt;br /&gt;
| Amplitude in Abhängigkeit der Zeit t.&lt;br /&gt;
| Dies ist die gebräuchlichste Variante.&lt;br /&gt;
|-&lt;br /&gt;
| i(t)&lt;br /&gt;
| Strom in Abhängigkeit der Zeit t.&lt;br /&gt;
| Nur bei speziellen Anwendungen (z.B. Stromreglern).&lt;br /&gt;
|-&lt;br /&gt;
| U(f)&lt;br /&gt;
| Amplitude abhängig von der Frequenz f.&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Wir vor allem bei Filtern und Bauelementen mit Filter Eigenschaften (z.B. Verstärkern) verwendet.&lt;br /&gt;
|-&lt;br /&gt;
| Φ(f)&lt;br /&gt;
| Phase abhängig von der Frequenz f.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
Wichtige Operationen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion im Zeitbereich&lt;br /&gt;
! Funktion im Frequenzbereich&lt;br /&gt;
! Name&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) + k&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + k(f), k(f) = f == 0 ? k : 0&lt;br /&gt;
| Gleichspannungsoffset&lt;br /&gt;
| Erzeugt ein Gleichspannungsoffset k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) * k&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * k&lt;br /&gt;
| Verstärkung&lt;br /&gt;
| Verstärkt das Signal um Faktor k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t - k)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) - 2kπf&lt;br /&gt;
| Translation&lt;br /&gt;
| Verzögerung um k.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;2iktπ&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f - k)&lt;br /&gt;
| Frequenzverschiebung&lt;br /&gt;
| Verschiebung der Frequenz um k.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;ik&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + k&lt;br /&gt;
| Phasenverschiebung&lt;br /&gt;
| Verschiebung der Phase um k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = -u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) ± π&lt;br /&gt;
| Phaseninversion&lt;br /&gt;
| Verschiebung der Phase um π.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = (u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; * h)(t)&lt;br /&gt;
| G&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = G&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * H(f)&lt;br /&gt;
| Faltung&lt;br /&gt;
| Faltung des Signals mit der Funktion &#039;&#039;h&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Ausblicke ====&lt;br /&gt;
&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== VAD als digitaler PTT ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Bitfehler Simulation ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9754</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9754"/>
		<updated>2011-09-05T19:27:41Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Einfache Operationen */ Selbstnotiz entfernen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
; Hinweis&lt;br /&gt;
: Dies hier ist nur eine Vorbereitung und Stichpunkt Liste. Der eigentliche Vortrag wird interaktiv an einer Tafel gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
In der analogen Elektrotechnik werde Signale in aller Regel durch folgende Werte angegeben:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Formel&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Vorkommen&lt;br /&gt;
|-&lt;br /&gt;
| u(t)&lt;br /&gt;
| Amplitude in Abhängigkeit der Zeit t.&lt;br /&gt;
| Dies ist die gebräuchlichste Variante.&lt;br /&gt;
|-&lt;br /&gt;
| i(t)&lt;br /&gt;
| Strom in Abhängigkeit der Zeit t.&lt;br /&gt;
| Nur bei speziellen Anwendungen (z.B. Stromreglern).&lt;br /&gt;
|-&lt;br /&gt;
| U(f)&lt;br /&gt;
| Amplitude abhängig von der Frequenz f.&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Wir vor allem bei Filtern und Bauelementen mit Filter Eigenschaften (z.B. Verstärkern) verwendet.&lt;br /&gt;
|-&lt;br /&gt;
| Φ(f)&lt;br /&gt;
| Phase abhängig von der Frequenz f.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
Wichtige Operationen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion im Zeitbereich&lt;br /&gt;
! Funktion im Frequenzbereich&lt;br /&gt;
! Name&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) + k&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + k(f), k(f) = f == 0 ? k : 0&lt;br /&gt;
| Gleichspannungsoffset&lt;br /&gt;
| Erzeugt ein Gleichspannungsoffset k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) * k&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * k&lt;br /&gt;
| Verstärkung&lt;br /&gt;
| Verstärkt das Signal um Faktor k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t - k)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) - 2kπf&lt;br /&gt;
| Translation&lt;br /&gt;
| Verzögerung um k.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;2iktπ&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f - k)&lt;br /&gt;
| Frequenzverschiebung&lt;br /&gt;
| Verschiebung der Frequenz um k.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;ik&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + k&lt;br /&gt;
| Phasenverschiebung&lt;br /&gt;
| Verschiebung der Phase um k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = -u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) ± π&lt;br /&gt;
| Phaseninversion&lt;br /&gt;
| Verschiebung der Phase um π.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = (u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; * h)(t)&lt;br /&gt;
| G&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = G&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * H(f)&lt;br /&gt;
| Faltung&lt;br /&gt;
| Faltung des Signals mit der Funktion &#039;&#039;h&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9753</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9753"/>
		<updated>2011-09-05T19:26:48Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Einfache Operationen */ basis transformationen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
; Hinweis&lt;br /&gt;
: Dies hier ist nur eine Vorbereitung und Stichpunkt Liste. Der eigentliche Vortrag wird interaktiv an einer Tafel gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
In der analogen Elektrotechnik werde Signale in aller Regel durch folgende Werte angegeben:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Formel&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Vorkommen&lt;br /&gt;
|-&lt;br /&gt;
| u(t)&lt;br /&gt;
| Amplitude in Abhängigkeit der Zeit t.&lt;br /&gt;
| Dies ist die gebräuchlichste Variante.&lt;br /&gt;
|-&lt;br /&gt;
| i(t)&lt;br /&gt;
| Strom in Abhängigkeit der Zeit t.&lt;br /&gt;
| Nur bei speziellen Anwendungen (z.B. Stromreglern).&lt;br /&gt;
|-&lt;br /&gt;
| U(f)&lt;br /&gt;
| Amplitude abhängig von der Frequenz f.&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Wir vor allem bei Filtern und Bauelementen mit Filter Eigenschaften (z.B. Verstärkern) verwendet.&lt;br /&gt;
|-&lt;br /&gt;
| Φ(f)&lt;br /&gt;
| Phase abhängig von der Frequenz f.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
&#039;&#039;Verstärkung, Gleichspannungsoffsets, Verschiebung im Zeit und Frequenzbereich&#039;&#039;&lt;br /&gt;
Wichtige Operationen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion im Zeitbereich&lt;br /&gt;
! Funktion im Frequenzbereich&lt;br /&gt;
! Name&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) + k&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + k(f), k(f) = f == 0 ? k : 0&lt;br /&gt;
| Gleichspannungsoffset&lt;br /&gt;
| Erzeugt ein Gleichspannungsoffset k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t) * k&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * k&lt;br /&gt;
| Verstärkung&lt;br /&gt;
| Verstärkt das Signal um Faktor k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t - k)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) - 2kπf&lt;br /&gt;
| Translation&lt;br /&gt;
| Verzögerung um k.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;2iktπ&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| U&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = U&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f - k)&lt;br /&gt;
| Frequenzverschiebung&lt;br /&gt;
| Verschiebung der Frequenz um k.&lt;br /&gt;
|-&lt;br /&gt;
| g&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = e&amp;lt;sup&amp;gt;ik&amp;lt;/sup&amp;gt; * g&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) + k&lt;br /&gt;
| Phasenverschiebung&lt;br /&gt;
| Verschiebung der Phase um k.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = -u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(t)&lt;br /&gt;
| Φ&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = Φ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) ± π&lt;br /&gt;
| Phaseninversion&lt;br /&gt;
| Verschiebung der Phase um π.&lt;br /&gt;
|-&lt;br /&gt;
| u&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(t) = (u&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; * h)(t)&lt;br /&gt;
| G&amp;lt;sub&amp;gt;o&amp;lt;/sub&amp;gt;(f) = G&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(f) * H(f)&lt;br /&gt;
| Faltung&lt;br /&gt;
| Faltung des Signals mit der Funktion &#039;&#039;h&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9752</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9752"/>
		<updated>2011-09-05T14:24:46Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Zeit und Frequenzbereich */ Bereich geloecht da er im vorherigen Bereich abgehandelt wird.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
; Hinweis&lt;br /&gt;
: Dies hier ist nur eine Vorbereitung und Stichpunkt Liste. Der eigentliche Vortrag wird interaktiv an einer Tafel gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
In der analogen Elektrotechnik werde Signale in aller Regel durch folgende Werte angegeben:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Formel&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Vorkommen&lt;br /&gt;
|-&lt;br /&gt;
| u(t)&lt;br /&gt;
| Amplitude in Abhängigkeit der Zeit t.&lt;br /&gt;
| Dies ist die gebräuchlichste Variante.&lt;br /&gt;
|-&lt;br /&gt;
| i(t)&lt;br /&gt;
| Strom in Abhängigkeit der Zeit t.&lt;br /&gt;
| Nur bei speziellen Anwendungen (z.B. Stromreglern).&lt;br /&gt;
|-&lt;br /&gt;
| U(f)&lt;br /&gt;
| Amplitude abhängig von der Frequenz f.&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Wir vor allem bei Filtern und Bauelementen mit Filter Eigenschaften (z.B. Verstärkern) verwendet.&lt;br /&gt;
|-&lt;br /&gt;
| Φ(f)&lt;br /&gt;
| Phase abhängig von der Frequenz f.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
&#039;&#039;Verstärkung, Gleichspannungsoffsets, Verschiebung im Zeit und Frequenzbereich&#039;&#039;&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9751</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9751"/>
		<updated>2011-09-05T12:58:06Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Elektrische Größen */ Verschiedene Darstellungen von Signalen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
; Hinweis&lt;br /&gt;
: Dies hier ist nur eine Vorbereitung und Stichpunkt Liste. Der eigentliche Vortrag wird interaktiv an einer Tafel gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
In der analogen Elektrotechnik werde Signale in aller Regel durch folgende Werte angegeben:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Formel&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Vorkommen&lt;br /&gt;
|-&lt;br /&gt;
| u(t)&lt;br /&gt;
| Amplitude in Abhängigkeit der Zeit t.&lt;br /&gt;
| Dies ist die gebräuchlichste Variante.&lt;br /&gt;
|-&lt;br /&gt;
| i(t)&lt;br /&gt;
| Strom in Abhängigkeit der Zeit t.&lt;br /&gt;
| Nur bei speziellen Anwendungen (z.B. Stromreglern).&lt;br /&gt;
|-&lt;br /&gt;
| U(f)&lt;br /&gt;
| Amplitude abhängig von der Frequenz f.&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Wir vor allem bei Filtern und Bauelementen mit Filter Eigenschaften (z.B. Verstärkern) verwendet.&lt;br /&gt;
|-&lt;br /&gt;
| Φ(f)&lt;br /&gt;
| Phase abhängig von der Frequenz f.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Zeit und Frequenzbereich ====&lt;br /&gt;
&#039;&#039;Dieser Bereich soll auf u(t) und f(k) eingehen&#039;&#039;&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
&#039;&#039;Verstärkung, Gleichspannungsoffsets, Verschiebung im Zeit und Frequenzbereich&#039;&#039;&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9750</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9750"/>
		<updated>2011-09-05T12:25:17Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Vortrag */ Hinweis ueber die hier niedergeschriebenen inhalte.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
; Hinweis&lt;br /&gt;
: Dies hier ist nur eine Vorbereitung und Stichpunkt Liste. Der eigentliche Vortrag wird interaktiv an einer Tafel gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich soll auf die Elektrische Größen eingehen u(t),...&#039;&#039;&lt;br /&gt;
==== Zeit und Frequenzbereich ====&lt;br /&gt;
&#039;&#039;Dieser Bereich soll auf u(t) und f(k) eingehen&#039;&#039;&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
&#039;&#039;Verstärkung, Gleichspannungsoffsets, Verschiebung im Zeit und Frequenzbereich&#039;&#039;&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9749</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9749"/>
		<updated>2011-09-04T20:12:01Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Vortrag */ infos was in die einzelnen Bereiche gehen soll&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich soll auf die Elektrische Größen eingehen u(t),...&#039;&#039;&lt;br /&gt;
==== Zeit und Frequenzbereich ====&lt;br /&gt;
&#039;&#039;Dieser Bereich soll auf u(t) und f(k) eingehen&#039;&#039;&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
&#039;&#039;Dieser Bereich geht auf PCM und ähnliche Verfahren ein&#039;&#039;&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
&#039;&#039;Verstärkung, Gleichspannungsoffsets, Verschiebung im Zeit und Frequenzbereich&#039;&#039;&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
&#039;&#039;Einfache FIR und IIR Filter (Tiefpass erster Ordnung?)&#039;&#039;&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&#039;&#039;SDR am Beispiel von AM und FFT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9748</id>
		<title>RoarAudio/Vortrag/Grundlagen der digitalen Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Grundlagen_der_digitalen_Signalverarbeitung&amp;diff=9748"/>
		<updated>2011-09-04T20:01:05Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: BEGIN{}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über Grundlagen der digitalen Signalverarbeitung und das [[RoarAudio]] Projekt vor einem technisch interessiertem Publikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll die Grundlagen der digitalen Signal Verarbeitung beleuchten. Er wird dazu an verschiedenen Stellen auf das RoarAudio Projekt eingehen, ist aber allgemein gehalten.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Das Signal ===&lt;br /&gt;
==== Elektrische Größen ====&lt;br /&gt;
==== Zeit und Frequenzbereich ====&lt;br /&gt;
==== digitale Darstellungen ====&lt;br /&gt;
=== Arbeiten mit digitalen Signalen ===&lt;br /&gt;
==== Einfache Operationen ====&lt;br /&gt;
==== Digitale Filter ====&lt;br /&gt;
==== Software Defined Radio (SDR) ====&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9691</id>
		<title>RoarAudio/Vortrag/Was ist RoarAudio</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9691"/>
		<updated>2011-04-09T08:28:33Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* aroarfw und SCRSI */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über das [[RoarAudio]] Projekt vor einem Unixpublikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortag &amp;quot;Was ist RoarAudio?&amp;quot; soll kurz das RoarAudio Projekt vorstellen. Er bewegt sich auf einer nicht-technischen Ebene und ist für alle Arten von Zuhörern geeignet.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können. Auch kann man mit roard -- Was das ist Später -- direkt beispielsweise Internet Radio senden.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Audio Stack unter UNIX und GNU/Linux ===&lt;br /&gt;
Unter UNIX und auch unter GNU/Linux greifen Programme niemals direkt auf Hardware zu. Selbiges gilt auch für die Audio Ausgabe. Im allgemeinen Falle durchlaufen sie drei Schichten:&lt;br /&gt;
* Die Interne Schicht des Programms das etwas abspielen will,&lt;br /&gt;
* Das Sound System,&lt;br /&gt;
* Die Audio Treiber im Kernel.&lt;br /&gt;
&lt;br /&gt;
In einigen fällen sind die Audio Treiber im Kernel und das Sound System das selbe. Dies ist beispielsweise bei OSS, dem Open Sound System, und ALSA, der Advanced Linux Sound Architecture. Oft ist dies aber auch getrennt. Diese beiden Treiber Pakete sind die wohl bekanntesten, auch wenn OSS entgegen landläufiger Meinung auf keinem aktuellen Betriebssystem als Standard Treiber vorkommt. OSS wird heute faktisch nur noch Emuliert.&lt;br /&gt;
&lt;br /&gt;
=== RoarAudio Projektziele ===&lt;br /&gt;
Das RoarAudio Projekt hat sich zum Ziel gesetzt ein Sound System zu entwickeln das folgende Eigenschaften hat:&lt;br /&gt;
* Es soll den POSIX Philosophien weitestgehend gerecht werden.&lt;br /&gt;
* Besonders hervorzuheben ist die starke Anlehnung an das POSIX Ein-/Ausgabekonzept.&lt;br /&gt;
* Auch hervorzuheben ist die Portabilität: RoarAudio ist verfügbar für 8-Bit µ-Controllern bis hin zu Großrechnern mit OpenVMS, GNU/Linux, Alle arten von BSDs und Win32 eingeschlossen.&lt;br /&gt;
* Echte Netzwerkstransparenz. Daraus resultiert unmittelbar ein Server-Klient Konzept. Optimierungen für den häufigen Fall das Klient und Server auf dem Selben Rechner sind existieren.&lt;br /&gt;
* Funktionalität für die Radio Produktion.&lt;br /&gt;
* Funktionalität für den Einsatz im Bühnen und Lautraum Bereich.&lt;br /&gt;
&lt;br /&gt;
Aus den obigen Überlegungen wurde klar das es sinnvoll ist keine klassische Software Entwicklung zu betreiben sondern viel mehr ein Protokoll zu entwickeln und eine Referenz Implementierung an zu bieten. Dies gescheit auch in der Praxis auf diesem Wege. Mehr dazu später.&lt;br /&gt;
&lt;br /&gt;
=== Produkte ===&lt;br /&gt;
Das Projekt arbeitet an mehren Produkten gleichzeitig. Dazu gehören das Besagte Protokoll im Mittelpunkt und die angegliederten Implementierungen. Neben den direkt auf das Protokoll Bezug nehmenden Produkten werden auch einige nicht unmittelbar damit zusammenhängenden Software Pakete gepflegt die aber im Umfeld von RoarAudio nützlich sind.&lt;br /&gt;
&lt;br /&gt;
Im folgenden werden nun ein paar dieser Produkte kurz vorgestellt.&lt;br /&gt;
&lt;br /&gt;
==== Protokolle ====&lt;br /&gt;
Wie bereits erwähnt ist der Kern des Projekts das RoarAudio Protokoll.&lt;br /&gt;
&lt;br /&gt;
Dieses wird unabhängig von der Software entwickelt. Es wird bei der Entwicklung keinerlei Rücksicht auf die spätere Implementierung genommen so das eine Implementierungs unabhängige und saubere Struktur entsteht.&lt;br /&gt;
&lt;br /&gt;
Neben dem RoarAudio Protokoll ist noch erwähnenswert das ein zweites Protokoll namens Tantalos entwickelt wird: Dabei handelt es such um ein Protokoll zum automatischen finden von Kontent wie Musik im Netzwerk.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Grundlegende Protokoll Entwicklung ist abgeschlossen. Es sind aber noch viele interessante Zusatz Funktionalitäten auf der Zu-Bearbeiten-Liste.&lt;br /&gt;
&lt;br /&gt;
==== Haupt Paket ====&lt;br /&gt;
Das Haupt Paket (&amp;quot;roaraudio&amp;quot;) ist ein versuch das Protokoll Referenz zu implementieren. Aber auch diese Implementierung ist unvollständig (primär bedingt durch die Zeit die es braucht die neuen Spezifikationen um zu setzen).&lt;br /&gt;
&lt;br /&gt;
Das Paket besteht aus &#039;&#039;roard&#039;&#039;, dem Sound Server, &#039;&#039;libroar und freunden&#039;&#039; welche die Klient seitige Schnittstelle liefern und einigen Hilfsprogrammen so wie so genannten &#039;&#039;Kompatibilitäts Layern&#039;&#039;. &#039;&#039;roard&#039;&#039; kann neben dem RoarAudio Protokoll auch verschiedene Protokolle anderer Sound Systeme. Die &#039;&#039;Kompatibilitäts Layern&#039;&#039; dienen dazu Software die für andere Sound Systeme geschrieben sind mit RoarAudio Unterstützung so zu sagen &#039;&#039;nach zu rüsten&#039;&#039;. Es handelt sich hierbei nicht nur um eine OSS Emulation.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Das Haupt Paket ist in einem gut Benutzbarem Stadium und in mehren GNU/Linux Distributionen vorhanden.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
===== VS API =====&lt;br /&gt;
...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== µRoar und µRoarD ====&lt;br /&gt;
Neben der Implementierung durch das Haupt Paket entstanden im Laufe der Zeit weitere Implementierungen des Protokolls. Die wichtigsten zwei sind µRoar und µRoarD.&lt;br /&gt;
&lt;br /&gt;
Bei µRoar handelt es sich um eine Klient Bibliothek unter der LGPL Version 3. Diese wurde ursprünglich entwickelt um unter Win32 proprietären Programmen den Zugriff auf RoarAudio Server zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
µRoarD hingegen ist ein zweiter RoarAudio Server. Er ist bei weitem nicht so vollständig wie roard dafür aber wie der Name schon erraten lässt deutlich schlanker.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
µRoar wird seit langem als Stabil angesehen.&lt;br /&gt;
µRoarD ist in aktiver Entwicklung gilt allgemein als Stabil.&lt;br /&gt;
Beide sind in mehren GNU/Linux Distributionen vorhanden.&lt;br /&gt;
&lt;br /&gt;
==== RoarAudio PlayList Daemon ====&lt;br /&gt;
Beim RoarAudio PlayList Daemon handelt es sich um eine Wiedergabelisten Verwaltungs Software. Er dient dazu Wiedergabelisten zu verwalten und Einträge daraus ab zu spielen. Zusammen mit einem RoarAudio Server und einer GUI (zum Beispiel App::RPLD::GUI) erscheint er fast wie ein gewöhnlicher Player. Im Gegensatz zu diesen hat er aber keine Logik für den Umgang mit den Audiodaten und lässt diese ausschließlich durch den RoarAudio Server verwalten.&lt;br /&gt;
&lt;br /&gt;
Im Zusammenhang mit dem RoarAudio PlayList Daemon oder kurz &#039;&#039;RPLD&#039;&#039; gibt es verschieden weitere Pakete wie dem Perl Modul Audio::RPLD zum steuern, App::RPLD::GUI -- einer GUI --, Romie -- einem Webfrondend -- oder auch vclt-tools -- einem Paket zum erstellen von Wiedergabelisten.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Der RoarAudio PlayList Daemon erreicht bald seine Stabile Phase und befindet sich derzeit in einem gut benutzbaren Zustand. Er ist in mehren GNU/Linux Distributionen vorhanden.&lt;br /&gt;
&lt;br /&gt;
==== aroarfw und SCRSI ====&lt;br /&gt;
Zu guter Letzt gibt es noch verschiedene Produkte für den Eingebetteten und teilweise Eingebetteten Einsatz:&lt;br /&gt;
&lt;br /&gt;
aroarfw ist einen Hardware und System unabhäniges Framework zur Entwicklung von Software die RoarAudio verwendet. Es ist vor allem für Kleinst-Rechner wie µ-Controllern gedacht.&lt;br /&gt;
&lt;br /&gt;
Bei SCRSI handelt es sich um eine Schnittstelle die zwischen das eigentliche Programm und die Schnittstelle zu RoarAudio eingefügt wird. Dies dient vor allem zum einbetten von µRoarD in andere Applikationen.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Sowohl aroarfw als auch SCRSI stehen unter aktiver Entwicklung und sind in einem verwendbaren Zustand. Kontakt mit den Entwicklern wird aber empfohlen.&lt;br /&gt;
aroarfw findet sich in mehren GNU/Linux Distributionen.&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
Mittlerweile ist RoarAudio zu einer echten Alternative zu anderen Sound Systemen geworden. Gerade im Bereich der Radio und Web-Radio Produktion, aber auch beim Versand von Audio durch das Lokale Netzwerk ist es ein gutes Mittel.&lt;br /&gt;
&lt;br /&gt;
Durch die Allgemein sehr Standard freundliche Einstellung des Projekts ist die Software zu vielem anderen gut Kompatibel.&lt;br /&gt;
&lt;br /&gt;
Auch die Kompatibilitäts Layer sind auf jeden Fall ein großes Plus da so fast alle Software, auch ohne native RoarAudio Unterstützung, mit RoarAudio zusammenarbeiten kann.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9690</id>
		<title>RoarAudio/Vortrag/Was ist RoarAudio</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9690"/>
		<updated>2011-04-09T01:55:07Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Zusammenfassung */ +bissel blabla&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über das [[RoarAudio]] Projekt vor einem Unixpublikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortag &amp;quot;Was ist RoarAudio?&amp;quot; soll kurz das RoarAudio Projekt vorstellen. Er bewegt sich auf einer nicht-technischen Ebene und ist für alle Arten von Zuhörern geeignet.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können. Auch kann man mit roard -- Was das ist Später -- direkt beispielsweise Internet Radio senden.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Audio Stack unter UNIX und GNU/Linux ===&lt;br /&gt;
Unter UNIX und auch unter GNU/Linux greifen Programme niemals direkt auf Hardware zu. Selbiges gilt auch für die Audio Ausgabe. Im allgemeinen Falle durchlaufen sie drei Schichten:&lt;br /&gt;
* Die Interne Schicht des Programms das etwas abspielen will,&lt;br /&gt;
* Das Sound System,&lt;br /&gt;
* Die Audio Treiber im Kernel.&lt;br /&gt;
&lt;br /&gt;
In einigen fällen sind die Audio Treiber im Kernel und das Sound System das selbe. Dies ist beispielsweise bei OSS, dem Open Sound System, und ALSA, der Advanced Linux Sound Architecture. Oft ist dies aber auch getrennt. Diese beiden Treiber Pakete sind die wohl bekanntesten, auch wenn OSS entgegen landläufiger Meinung auf keinem aktuellen Betriebssystem als Standard Treiber vorkommt. OSS wird heute faktisch nur noch Emuliert.&lt;br /&gt;
&lt;br /&gt;
=== RoarAudio Projektziele ===&lt;br /&gt;
Das RoarAudio Projekt hat sich zum Ziel gesetzt ein Sound System zu entwickeln das folgende Eigenschaften hat:&lt;br /&gt;
* Es soll den POSIX Philosophien weitestgehend gerecht werden.&lt;br /&gt;
* Besonders hervorzuheben ist die starke Anlehnung an das POSIX Ein-/Ausgabekonzept.&lt;br /&gt;
* Auch hervorzuheben ist die Portabilität: RoarAudio ist verfügbar für 8-Bit µ-Controllern bis hin zu Großrechnern mit OpenVMS, GNU/Linux, Alle arten von BSDs und Win32 eingeschlossen.&lt;br /&gt;
* Echte Netzwerkstransparenz. Daraus resultiert unmittelbar ein Server-Klient Konzept. Optimierungen für den häufigen Fall das Klient und Server auf dem Selben Rechner sind existieren.&lt;br /&gt;
* Funktionalität für die Radio Produktion.&lt;br /&gt;
* Funktionalität für den Einsatz im Bühnen und Lautraum Bereich.&lt;br /&gt;
&lt;br /&gt;
Aus den obigen Überlegungen wurde klar das es sinnvoll ist keine klassische Software Entwicklung zu betreiben sondern viel mehr ein Protokoll zu entwickeln und eine Referenz Implementierung an zu bieten. Dies gescheit auch in der Praxis auf diesem Wege. Mehr dazu später.&lt;br /&gt;
&lt;br /&gt;
=== Produkte ===&lt;br /&gt;
Das Projekt arbeitet an mehren Produkten gleichzeitig. Dazu gehören das Besagte Protokoll im Mittelpunkt und die angegliederten Implementierungen. Neben den direkt auf das Protokoll Bezug nehmenden Produkten werden auch einige nicht unmittelbar damit zusammenhängenden Software Pakete gepflegt die aber im Umfeld von RoarAudio nützlich sind.&lt;br /&gt;
&lt;br /&gt;
Im folgenden werden nun ein paar dieser Produkte kurz vorgestellt.&lt;br /&gt;
&lt;br /&gt;
==== Protokolle ====&lt;br /&gt;
Wie bereits erwähnt ist der Kern des Projekts das RoarAudio Protokoll.&lt;br /&gt;
&lt;br /&gt;
Dieses wird unabhängig von der Software entwickelt. Es wird bei der Entwicklung keinerlei Rücksicht auf die spätere Implementierung genommen so das eine Implementierungs unabhängige und saubere Struktur entsteht.&lt;br /&gt;
&lt;br /&gt;
Neben dem RoarAudio Protokoll ist noch erwähnenswert das ein zweites Protokoll namens Tantalos entwickelt wird: Dabei handelt es such um ein Protokoll zum automatischen finden von Kontent wie Musik im Netzwerk.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Grundlegende Protokoll Entwicklung ist abgeschlossen. Es sind aber noch viele interessante Zusatz Funktionalitäten auf der Zu-Bearbeiten-Liste.&lt;br /&gt;
&lt;br /&gt;
==== Haupt Paket ====&lt;br /&gt;
Das Haupt Paket (&amp;quot;roaraudio&amp;quot;) ist ein versuch das Protokoll Referenz zu implementieren. Aber auch diese Implementierung ist unvollständig (primär bedingt durch die Zeit die es braucht die neuen Spezifikationen um zu setzen).&lt;br /&gt;
&lt;br /&gt;
Das Paket besteht aus &#039;&#039;roard&#039;&#039;, dem Sound Server, &#039;&#039;libroar und freunden&#039;&#039; welche die Klient seitige Schnittstelle liefern und einigen Hilfsprogrammen so wie so genannten &#039;&#039;Kompatibilitäts Layern&#039;&#039;. &#039;&#039;roard&#039;&#039; kann neben dem RoarAudio Protokoll auch verschiedene Protokolle anderer Sound Systeme. Die &#039;&#039;Kompatibilitäts Layern&#039;&#039; dienen dazu Software die für andere Sound Systeme geschrieben sind mit RoarAudio Unterstützung so zu sagen &#039;&#039;nach zu rüsten&#039;&#039;. Es handelt sich hierbei nicht nur um eine OSS Emulation.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Das Haupt Paket ist in einem gut Benutzbarem Stadium und in mehren GNU/Linux Distributionen vorhanden.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
===== VS API =====&lt;br /&gt;
...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== µRoar und µRoarD ====&lt;br /&gt;
Neben der Implementierung durch das Haupt Paket entstanden im Laufe der Zeit weitere Implementierungen des Protokolls. Die wichtigsten zwei sind µRoar und µRoarD.&lt;br /&gt;
&lt;br /&gt;
Bei µRoar handelt es sich um eine Klient Bibliothek unter der LGPL Version 3. Diese wurde ursprünglich entwickelt um unter Win32 proprietären Programmen den Zugriff auf RoarAudio Server zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
µRoarD hingegen ist ein zweiter RoarAudio Server. Er ist bei weitem nicht so vollständig wie roard dafür aber wie der Name schon erraten lässt deutlich schlanker.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
µRoar wird seit langem als Stabil angesehen.&lt;br /&gt;
µRoarD ist in aktiver Entwicklung gilt allgemein als Stabil.&lt;br /&gt;
Beide sind in mehren GNU/Linux Distributionen vorhanden.&lt;br /&gt;
&lt;br /&gt;
==== RoarAudio PlayList Daemon ====&lt;br /&gt;
Beim RoarAudio PlayList Daemon handelt es sich um eine Wiedergabelisten Verwaltungs Software. Er dient dazu Wiedergabelisten zu verwalten und Einträge daraus ab zu spielen. Zusammen mit einem RoarAudio Server und einer GUI (zum Beispiel App::RPLD::GUI) erscheint er fast wie ein gewöhnlicher Player. Im Gegensatz zu diesen hat er aber keine Logik für den Umgang mit den Audiodaten und lässt diese ausschließlich durch den RoarAudio Server verwalten.&lt;br /&gt;
&lt;br /&gt;
Im Zusammenhang mit dem RoarAudio PlayList Daemon oder kurz &#039;&#039;RPLD&#039;&#039; gibt es verschieden weitere Pakete wie dem Perl Modul Audio::RPLD zum steuern, App::RPLD::GUI -- einer GUI --, Romie -- einem Webfrondend -- oder auch vclt-tools -- einem Paket zum erstellen von Wiedergabelisten.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Der RoarAudio PlayList Daemon erreicht bald seine Stabile Phase und befindet sich derzeit in einem gut benutzbaren Zustand. Er ist in mehren GNU/Linux Distributionen vorhanden.&lt;br /&gt;
&lt;br /&gt;
==== aroarfw und SCRSI ====&lt;br /&gt;
Zu guter Letzt gibt es noch verschiedene Produkte für den Eingebetteten und teilweise Eingebetteten Einsatz:&lt;br /&gt;
&lt;br /&gt;
aroarfw ist einen Hardware und System unabhäniges Framework zur Entwicklung von Software die RoarAudio verwendet. Es ist vor allem für Kleinst-Rechner wie µ-Controllern gedacht.&lt;br /&gt;
&lt;br /&gt;
Bei SCRSI handelt es sich um eine Schnittstelle die zwischen die das eigentliche Programm und die Schnittstelle zu RoarAudio eingefügt wird. Dies dient vor allem zum einbetten von µRoarD in andere Applikationen.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Sowohl aroarfw als auch SCRSI stehen unter aktiver Entwicklung und sind in einem verwendbaren Zustand. Kontakt mit den Entwicklern wird aber empfohlen.&lt;br /&gt;
aroarfw findet sich in mehren GNU/Linux Distributionen.&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
Mittlerweile ist RoarAudio zu einer echten Alternative zu anderen Sound Systemen geworden. Gerade im Bereich der Radio und Web-Radio Produktion, aber auch beim Versand von Audio durch das Lokale Netzwerk ist es ein gutes Mittel.&lt;br /&gt;
&lt;br /&gt;
Durch die Allgemein sehr Standard freundliche Einstellung des Projekts ist die Software zu vielem anderen gut Kompatibel.&lt;br /&gt;
&lt;br /&gt;
Auch die Kompatibilitäts Layer sind auf jeden Fall ein großes Plus da so fast alle Software, auch ohne native RoarAudio Unterstützung, mit RoarAudio zusammenarbeiten kann.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9689</id>
		<title>RoarAudio/Vortrag/Was ist RoarAudio</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9689"/>
		<updated>2011-04-09T01:44:19Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Produkte */ +Status infos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über das [[RoarAudio]] Projekt vor einem Unixpublikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortag &amp;quot;Was ist RoarAudio?&amp;quot; soll kurz das RoarAudio Projekt vorstellen. Er bewegt sich auf einer nicht-technischen Ebene und ist für alle Arten von Zuhörern geeignet.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können. Auch kann man mit roard -- Was das ist Später -- direkt beispielsweise Internet Radio senden.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Audio Stack unter UNIX und GNU/Linux ===&lt;br /&gt;
Unter UNIX und auch unter GNU/Linux greifen Programme niemals direkt auf Hardware zu. Selbiges gilt auch für die Audio Ausgabe. Im allgemeinen Falle durchlaufen sie drei Schichten:&lt;br /&gt;
* Die Interne Schicht des Programms das etwas abspielen will,&lt;br /&gt;
* Das Sound System,&lt;br /&gt;
* Die Audio Treiber im Kernel.&lt;br /&gt;
&lt;br /&gt;
In einigen fällen sind die Audio Treiber im Kernel und das Sound System das selbe. Dies ist beispielsweise bei OSS, dem Open Sound System, und ALSA, der Advanced Linux Sound Architecture. Oft ist dies aber auch getrennt. Diese beiden Treiber Pakete sind die wohl bekanntesten, auch wenn OSS entgegen landläufiger Meinung auf keinem aktuellen Betriebssystem als Standard Treiber vorkommt. OSS wird heute faktisch nur noch Emuliert.&lt;br /&gt;
&lt;br /&gt;
=== RoarAudio Projektziele ===&lt;br /&gt;
Das RoarAudio Projekt hat sich zum Ziel gesetzt ein Sound System zu entwickeln das folgende Eigenschaften hat:&lt;br /&gt;
* Es soll den POSIX Philosophien weitestgehend gerecht werden.&lt;br /&gt;
* Besonders hervorzuheben ist die starke Anlehnung an das POSIX Ein-/Ausgabekonzept.&lt;br /&gt;
* Auch hervorzuheben ist die Portabilität: RoarAudio ist verfügbar für 8-Bit µ-Controllern bis hin zu Großrechnern mit OpenVMS, GNU/Linux, Alle arten von BSDs und Win32 eingeschlossen.&lt;br /&gt;
* Echte Netzwerkstransparenz. Daraus resultiert unmittelbar ein Server-Klient Konzept. Optimierungen für den häufigen Fall das Klient und Server auf dem Selben Rechner sind existieren.&lt;br /&gt;
* Funktionalität für die Radio Produktion.&lt;br /&gt;
* Funktionalität für den Einsatz im Bühnen und Lautraum Bereich.&lt;br /&gt;
&lt;br /&gt;
Aus den obigen Überlegungen wurde klar das es sinnvoll ist keine klassische Software Entwicklung zu betreiben sondern viel mehr ein Protokoll zu entwickeln und eine Referenz Implementierung an zu bieten. Dies gescheit auch in der Praxis auf diesem Wege. Mehr dazu später.&lt;br /&gt;
&lt;br /&gt;
=== Produkte ===&lt;br /&gt;
Das Projekt arbeitet an mehren Produkten gleichzeitig. Dazu gehören das Besagte Protokoll im Mittelpunkt und die angegliederten Implementierungen. Neben den direkt auf das Protokoll Bezug nehmenden Produkten werden auch einige nicht unmittelbar damit zusammenhängenden Software Pakete gepflegt die aber im Umfeld von RoarAudio nützlich sind.&lt;br /&gt;
&lt;br /&gt;
Im folgenden werden nun ein paar dieser Produkte kurz vorgestellt.&lt;br /&gt;
&lt;br /&gt;
==== Protokolle ====&lt;br /&gt;
Wie bereits erwähnt ist der Kern des Projekts das RoarAudio Protokoll.&lt;br /&gt;
&lt;br /&gt;
Dieses wird unabhängig von der Software entwickelt. Es wird bei der Entwicklung keinerlei Rücksicht auf die spätere Implementierung genommen so das eine Implementierungs unabhängige und saubere Struktur entsteht.&lt;br /&gt;
&lt;br /&gt;
Neben dem RoarAudio Protokoll ist noch erwähnenswert das ein zweites Protokoll namens Tantalos entwickelt wird: Dabei handelt es such um ein Protokoll zum automatischen finden von Kontent wie Musik im Netzwerk.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Grundlegende Protokoll Entwicklung ist abgeschlossen. Es sind aber noch viele interessante Zusatz Funktionalitäten auf der Zu-Bearbeiten-Liste.&lt;br /&gt;
&lt;br /&gt;
==== Haupt Paket ====&lt;br /&gt;
Das Haupt Paket (&amp;quot;roaraudio&amp;quot;) ist ein versuch das Protokoll Referenz zu implementieren. Aber auch diese Implementierung ist unvollständig (primär bedingt durch die Zeit die es braucht die neuen Spezifikationen um zu setzen).&lt;br /&gt;
&lt;br /&gt;
Das Paket besteht aus &#039;&#039;roard&#039;&#039;, dem Sound Server, &#039;&#039;libroar und freunden&#039;&#039; welche die Klient seitige Schnittstelle liefern und einigen Hilfsprogrammen so wie so genannten &#039;&#039;Kompatibilitäts Layern&#039;&#039;. &#039;&#039;roard&#039;&#039; kann neben dem RoarAudio Protokoll auch verschiedene Protokolle anderer Sound Systeme. Die &#039;&#039;Kompatibilitäts Layern&#039;&#039; dienen dazu Software die für andere Sound Systeme geschrieben sind mit RoarAudio Unterstützung so zu sagen &#039;&#039;nach zu rüsten&#039;&#039;. Es handelt sich hierbei nicht nur um eine OSS Emulation.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Das Haupt Paket ist in einem gut Benutzbarem Stadium und in mehren GNU/Linux Distributionen vorhanden.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
===== VS API =====&lt;br /&gt;
...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== µRoar und µRoarD ====&lt;br /&gt;
Neben der Implementierung durch das Haupt Paket entstanden im Laufe der Zeit weitere Implementierungen des Protokolls. Die wichtigsten zwei sind µRoar und µRoarD.&lt;br /&gt;
&lt;br /&gt;
Bei µRoar handelt es sich um eine Klient Bibliothek unter der LGPL Version 3. Diese wurde ursprünglich entwickelt um unter Win32 proprietären Programmen den Zugriff auf RoarAudio Server zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
µRoarD hingegen ist ein zweiter RoarAudio Server. Er ist bei weitem nicht so vollständig wie roard dafür aber wie der Name schon erraten lässt deutlich schlanker.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
µRoar wird seit langem als Stabil angesehen.&lt;br /&gt;
µRoarD ist in aktiver Entwicklung gilt allgemein als Stabil.&lt;br /&gt;
Beide sind in mehren GNU/Linux Distributionen vorhanden.&lt;br /&gt;
&lt;br /&gt;
==== RoarAudio PlayList Daemon ====&lt;br /&gt;
Beim RoarAudio PlayList Daemon handelt es sich um eine Wiedergabelisten Verwaltungs Software. Er dient dazu Wiedergabelisten zu verwalten und Einträge daraus ab zu spielen. Zusammen mit einem RoarAudio Server und einer GUI (zum Beispiel App::RPLD::GUI) erscheint er fast wie ein gewöhnlicher Player. Im Gegensatz zu diesen hat er aber keine Logik für den Umgang mit den Audiodaten und lässt diese ausschließlich durch den RoarAudio Server verwalten.&lt;br /&gt;
&lt;br /&gt;
Im Zusammenhang mit dem RoarAudio PlayList Daemon oder kurz &#039;&#039;RPLD&#039;&#039; gibt es verschieden weitere Pakete wie dem Perl Modul Audio::RPLD zum steuern, App::RPLD::GUI -- einer GUI --, Romie -- einem Webfrondend -- oder auch vclt-tools -- einem Paket zum erstellen von Wiedergabelisten.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Der RoarAudio PlayList Daemon erreicht bald seine Stabile Phase und befindet sich derzeit in einem gut benutzbaren Zustand. Er ist in mehren GNU/Linux Distributionen vorhanden.&lt;br /&gt;
&lt;br /&gt;
==== aroarfw und SCRSI ====&lt;br /&gt;
Zu guter Letzt gibt es noch verschiedene Produkte für den Eingebetteten und teilweise Eingebetteten Einsatz:&lt;br /&gt;
&lt;br /&gt;
aroarfw ist einen Hardware und System unabhäniges Framework zur Entwicklung von Software die RoarAudio verwendet. Es ist vor allem für Kleinst-Rechner wie µ-Controllern gedacht.&lt;br /&gt;
&lt;br /&gt;
Bei SCRSI handelt es sich um eine Schnittstelle die zwischen die das eigentliche Programm und die Schnittstelle zu RoarAudio eingefügt wird. Dies dient vor allem zum einbetten von µRoarD in andere Applikationen.&lt;br /&gt;
&lt;br /&gt;
===== Status =====&lt;br /&gt;
Sowohl aroarfw als auch SCRSI stehen unter aktiver Entwicklung und sind in einem verwendbaren Zustand. Kontakt mit den Entwicklern wird aber empfohlen.&lt;br /&gt;
aroarfw findet sich in mehren GNU/Linux Distributionen.&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9688</id>
		<title>RoarAudio/Vortrag/Was ist RoarAudio</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9688"/>
		<updated>2011-04-09T01:29:56Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* RoarAudio PlayList Daemon */ + bissel Inhalt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über das [[RoarAudio]] Projekt vor einem Unixpublikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortag &amp;quot;Was ist RoarAudio?&amp;quot; soll kurz das RoarAudio Projekt vorstellen. Er bewegt sich auf einer nicht-technischen Ebene und ist für alle Arten von Zuhörern geeignet.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können. Auch kann man mit roard -- Was das ist Später -- direkt beispielsweise Internet Radio senden.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Audio Stack unter UNIX und GNU/Linux ===&lt;br /&gt;
Unter UNIX und auch unter GNU/Linux greifen Programme niemals direkt auf Hardware zu. Selbiges gilt auch für die Audio Ausgabe. Im allgemeinen Falle durchlaufen sie drei Schichten:&lt;br /&gt;
* Die Interne Schicht des Programms das etwas abspielen will,&lt;br /&gt;
* Das Sound System,&lt;br /&gt;
* Die Audio Treiber im Kernel.&lt;br /&gt;
&lt;br /&gt;
In einigen fällen sind die Audio Treiber im Kernel und das Sound System das selbe. Dies ist beispielsweise bei OSS, dem Open Sound System, und ALSA, der Advanced Linux Sound Architecture. Oft ist dies aber auch getrennt. Diese beiden Treiber Pakete sind die wohl bekanntesten, auch wenn OSS entgegen landläufiger Meinung auf keinem aktuellen Betriebssystem als Standard Treiber vorkommt. OSS wird heute faktisch nur noch Emuliert.&lt;br /&gt;
&lt;br /&gt;
=== RoarAudio Projektziele ===&lt;br /&gt;
Das RoarAudio Projekt hat sich zum Ziel gesetzt ein Sound System zu entwickeln das folgende Eigenschaften hat:&lt;br /&gt;
* Es soll den POSIX Philosophien weitestgehend gerecht werden.&lt;br /&gt;
* Besonders hervorzuheben ist die starke Anlehnung an das POSIX Ein-/Ausgabekonzept.&lt;br /&gt;
* Auch hervorzuheben ist die Portabilität: RoarAudio ist verfügbar für 8-Bit µ-Controllern bis hin zu Großrechnern mit OpenVMS, GNU/Linux, Alle arten von BSDs und Win32 eingeschlossen.&lt;br /&gt;
* Echte Netzwerkstransparenz. Daraus resultiert unmittelbar ein Server-Klient Konzept. Optimierungen für den häufigen Fall das Klient und Server auf dem Selben Rechner sind existieren.&lt;br /&gt;
* Funktionalität für die Radio Produktion.&lt;br /&gt;
* Funktionalität für den Einsatz im Bühnen und Lautraum Bereich.&lt;br /&gt;
&lt;br /&gt;
Aus den obigen Überlegungen wurde klar das es sinnvoll ist keine klassische Software Entwicklung zu betreiben sondern viel mehr ein Protokoll zu entwickeln und eine Referenz Implementierung an zu bieten. Dies gescheit auch in der Praxis auf diesem Wege. Mehr dazu später.&lt;br /&gt;
&lt;br /&gt;
=== Produkte ===&lt;br /&gt;
Das Projekt arbeitet an mehren Produkten gleichzeitig. Dazu gehören das Besagte Protokoll im Mittelpunkt und die angegliederten Implementierungen. Neben den direkt auf das Protokoll Bezug nehmenden Produkten werden auch einige nicht unmittelbar damit zusammenhängenden Software Pakete gepflegt die aber im Umfeld von RoarAudio nützlich sind.&lt;br /&gt;
&lt;br /&gt;
Im folgenden werden nun ein paar dieser Produkte kurz vorgestellt.&lt;br /&gt;
&lt;br /&gt;
==== Protokolle ====&lt;br /&gt;
Wie bereits erwähnt ist der Kern des Projekts das RoarAudio Protokoll.&lt;br /&gt;
&lt;br /&gt;
Dieses wird unabhängig von der Software entwickelt. Es wird bei der Entwicklung keinerlei Rücksicht auf die spätere Implementierung genommen so das eine Implementierungs unabhängige und saubere Struktur entsteht.&lt;br /&gt;
&lt;br /&gt;
Neben dem RoarAudio Protokoll ist noch erwähnenswert das ein zweites Protokoll namens Tantalos entwickelt wird: Dabei handelt es such um ein Protokoll zum automatischen finden von Kontent wie Musik im Netzwerk.&lt;br /&gt;
&lt;br /&gt;
==== Haupt Paket ====&lt;br /&gt;
Das Haupt Paket (&amp;quot;roaraudio&amp;quot;) ist ein versuch das Protokoll Referenz zu implementieren. Aber auch diese Implementierung ist unvollständig (primär bedingt durch die Zeit die es braucht die neuen Spezifikationen um zu setzen).&lt;br /&gt;
&lt;br /&gt;
Das Paket besteht aus &#039;&#039;roard&#039;&#039;, dem Sound Server, &#039;&#039;libroar und freunden&#039;&#039; welche die Klient seitige Schnittstelle liefern und einigen Hilfsprogrammen so wie so genannten &#039;&#039;Kompatibilitäts Layern&#039;&#039;. &#039;&#039;roard&#039;&#039; kann neben dem RoarAudio Protokoll auch verschiedene Protokolle anderer Sound Systeme. Die &#039;&#039;Kompatibilitäts Layern&#039;&#039; dienen dazu Software die für andere Sound Systeme geschrieben sind mit RoarAudio Unterstützung so zu sagen &#039;&#039;nach zu rüsten&#039;&#039;. Es handelt sich hierbei nicht nur um eine OSS Emulation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===== VS API =====&lt;br /&gt;
...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== µRoar und µRoarD ====&lt;br /&gt;
Neben der Implementierung durch das Haupt Paket entstanden im Laufe der Zeit weitere Implementierungen des Protokolls. Die wichtigsten zwei sind µRoar und µRoarD.&lt;br /&gt;
&lt;br /&gt;
Bei µRoar handelt es sich um eine Klient Bibliothek unter der LGPL Version 3. Diese wurde ursprünglich entwickelt um unter Win32 proprietären Programmen den Zugriff auf RoarAudio Server zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
µRoarD hingegen ist ein zweiter RoarAudio Server. Er ist bei weitem nicht so vollständig wie roard dafür aber wie der Name schon erraten lässt deutlich schlanker.&lt;br /&gt;
&lt;br /&gt;
==== RoarAudio PlayList Daemon ====&lt;br /&gt;
Beim RoarAudio PlayList Daemon handelt es sich um eine Wiedergabelisten Verwaltungs Software. Er dient dazu Wiedergabelisten zu verwalten und Einträge daraus ab zu spielen. Zusammen mit einem RoarAudio Server und einer GUI (zum Beispiel App::RPLD::GUI) erscheint er fast wie ein gewöhnlicher Player. Im Gegensatz zu diesen hat er aber keine Logik für den Umgang mit den Audiodaten und lässt diese ausschließlich durch den RoarAudio Server verwalten.&lt;br /&gt;
&lt;br /&gt;
Im Zusammenhang mit dem RoarAudio PlayList Daemon oder kurz &#039;&#039;RPLD&#039;&#039; gibt es verschieden weitere Pakete wie dem Perl Modul Audio::RPLD zum steuern, App::RPLD::GUI -- einer GUI --, Romie -- einem Webfrondend -- oder auch vclt-tools -- einem Paket zum erstellen von Wiedergabelisten.&lt;br /&gt;
&lt;br /&gt;
==== aroarfw und SCRSI ====&lt;br /&gt;
Zu guter Letzt gibt es noch verschiedene Produkte für den Eingebetteten und teilweise Eingebetteten Einsatz:&lt;br /&gt;
&lt;br /&gt;
aroarfw ist einen Hardware und System unabhäniges Framework zur Entwicklung von Software die RoarAudio verwendet. Es ist vor allem für Kleinst-Rechner wie µ-Controllern gedacht.&lt;br /&gt;
&lt;br /&gt;
Bei SCRSI handelt es sich um eine Schnittstelle die zwischen die das eigentliche Programm und die Schnittstelle zu RoarAudio eingefügt wird. Dies dient vor allem zum einbetten von µRoarD in andere Applikationen.&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio_PlayList_Daemon/Protokoll&amp;diff=9687</id>
		<title>RoarAudio PlayList Daemon/Protokoll</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio_PlayList_Daemon/Protokoll&amp;diff=9687"/>
		<updated>2011-04-09T01:21:42Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Liste zuer Steuerung der Haupt Wiedergabewarteschlagen-Spielliste */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auf dieser Seite wird auf das &#039;&#039;simple&#039;&#039; Protokoll des [[RoarAudio PlayList Daemon]] eingegangen. Andere durch den rpld unterstützte Protokolle werden hier ignoriert. Die Spezifikationen zu diesen sind bei den entsprechenden Herstellern zu  finden beziehungsweise zu erfragen.&lt;br /&gt;
&lt;br /&gt;
== Rahmen Protokoll ==&lt;br /&gt;
Das Protokoll besteht aus einer Sequenz von Befehl-Antwort-Paaren. Dabei Sendet der Klient einen Befehl als abgeschlossene Zeile (Terminiert mit &#039;&#039;line feed&#039;&#039;, 0x0A, &#039;\n&#039;) an den Server und dieser Beantwortet dies dann mit einem Datenbereich gefolgt von einer Status Zeile. Der Datenbereich wird durch eine Zeile die ausschließlich aus einem Punkt besteht Beendet. Sollte eine Zeile im Datenbereich vorkommen die ausschließlich aus einem oder Mehren Punkten besteht so wird ein Punkt vor gehängt um Eindeutigkeit der Ende Sequenz zu garantieren.&lt;br /&gt;
&lt;br /&gt;
Die Statuszeile besteht aus drei oder vier Teilen:&lt;br /&gt;
 * Dem Vorsatz &#039;&amp;gt;&#039;,&lt;br /&gt;
 * dem Fehler Code,&lt;br /&gt;
 * dem Fehler Text&lt;br /&gt;
 * und optional einer Fehlerbeschreibung in Klammern (&#039;(...)&#039;).&lt;br /&gt;
&lt;br /&gt;
Die Felder sind jeweils dusch Leerzeichen getrennt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 C: NOOP&lt;br /&gt;
 S: .&lt;br /&gt;
 S: &amp;gt; 0 OK&lt;br /&gt;
&lt;br /&gt;
 C: HELP&lt;br /&gt;
 S: Commands:&lt;br /&gt;
 S:   HELP&lt;br /&gt;
 S:   NOOP&lt;br /&gt;
 S:   PLAY&lt;br /&gt;
 ...&lt;br /&gt;
 S: .&lt;br /&gt;
 S: &amp;gt; 0 OK&lt;br /&gt;
&lt;br /&gt;
Implementierungen &#039;&#039;&#039;dürfen nur&#039;&#039;&#039; die obigen Zeilenenden senden &#039;&#039;&#039;solten&#039;&#039;&#039; aber auch anderen gängige Zeilenumbrüche Akzeptieren.&lt;br /&gt;
&lt;br /&gt;
== Fehler Codes ==&lt;br /&gt;
Folgende Tabelle zeigt die definierten Fehler Codes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Symbolischer Name&lt;br /&gt;
 ! Numerischer Wert&lt;br /&gt;
 ! Versionen&lt;br /&gt;
 ! Fehler Text&lt;br /&gt;
 ! Fehler beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 ! OK&lt;br /&gt;
 | 0&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | OK&lt;br /&gt;
 | Der Befehl wurde erfolgreich abgearbeitet.&lt;br /&gt;
 |-&lt;br /&gt;
 ! ERROR&lt;br /&gt;
 | 1&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | Error&lt;br /&gt;
 | Bei der Abarbeitung des Befehls ist ein Fehler aufgetreten.&lt;br /&gt;
 |-&lt;br /&gt;
 ! INPROC&lt;br /&gt;
 | 2&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | In Process&lt;br /&gt;
 | Die Abarbeitung wurde wird im Hintergrund fortgesetzt.&lt;br /&gt;
 |-&lt;br /&gt;
 ! YES&lt;br /&gt;
 | 3&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | Yes&lt;br /&gt;
 | Die Antwort auf die Anfrage ist: Wahr&lt;br /&gt;
 |-&lt;br /&gt;
 ! NO&lt;br /&gt;
 | 4&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | No&lt;br /&gt;
 | Die Antwort auf die Anfrage ist: Falsch&lt;br /&gt;
 |-&lt;br /&gt;
 ! PROERR&lt;br /&gt;
 | 5&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | Protocol Error&lt;br /&gt;
 | Es ist ein Protokollfehler aufgetreten. Die Verbindung kann vom Server zurück gesetzt werden.&lt;br /&gt;
 |-&lt;br /&gt;
 ! GOODBYE&lt;br /&gt;
 | 6&lt;br /&gt;
 | ab 0.1beta0&lt;br /&gt;
 | GoodBye&lt;br /&gt;
 | Antwort auf den &#039;&#039;QUIT&#039;&#039; Befehl. Die Verbindung wird vom Server zurück gesetzt.&lt;br /&gt;
 |-&lt;br /&gt;
 ! NOTPERM&lt;br /&gt;
 | 7&lt;br /&gt;
 | ab 0.1rc0&lt;br /&gt;
 | Not Permitted&lt;br /&gt;
 | Die Operation wird verweigert da sie nicht erlaubt ist mit den Rechten des Klienten&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Befehle ==&lt;br /&gt;
=== Befehle zur Verbindungs-Steuerung ===&lt;br /&gt;
==== NOOP ====&lt;br /&gt;
Dieser Befehl führt keine Aktion aus sondern bestätigt nur das die Verbindung noch besteht.&lt;br /&gt;
&lt;br /&gt;
==== QUIT ====&lt;br /&gt;
Dieser Befehl beendet die Verbindung.&lt;br /&gt;
&lt;br /&gt;
==== HELP ====&lt;br /&gt;
Dieser Befehl gibt einen Hilfe-Text zu den Befehlen aus.&lt;br /&gt;
&lt;br /&gt;
==== SETPLAYLIST ====&lt;br /&gt;
Dieser Befehl Setzt die aktuelle Wiedergabeliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SETPLAYLIST {&amp;quot;Name&amp;quot;|ID}&lt;br /&gt;
&lt;br /&gt;
==== AUTH ====&lt;br /&gt;
  AUTH [TO AUTHLEV {n|&amp;quot;name&amp;quot;}] USING authtype...&lt;br /&gt;
==== UNAUTH ====&lt;br /&gt;
Dieser Befehl setzt das &#039;&#039;AccessLevel&#039;&#039; (&#039;&#039;ACCLEV&#039;&#039;) auf einen gewünschten Wert herunter.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  UNAUTH [ACCLEV] {BY n|TO {n|&amp;quot;name&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
  UNAUTH TO &amp;quot;guest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Steuerung des Abspielvorgangs ===&lt;br /&gt;
==== PLAY ====&lt;br /&gt;
Dieser Befehl startet den Abspielvorgang.&lt;br /&gt;
&lt;br /&gt;
==== STOP ====&lt;br /&gt;
Dieser Befehl beendet hält den Abspielvorgang an.&lt;br /&gt;
&lt;br /&gt;
==== PAUSE ====&lt;br /&gt;
Unterbricht das Abspielen oder setzt es fort.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  PAUSE {TRUE|FALSE|TOGGLE}&lt;br /&gt;
&lt;br /&gt;
==== NEXT ====&lt;br /&gt;
Dieser Befehl wechselt zum nächsten Titel.&lt;br /&gt;
&lt;br /&gt;
==== PREV ====&lt;br /&gt;
Dieser Befehl wechselt zum zuletzt gespielten Titel.&lt;br /&gt;
&lt;br /&gt;
==== ISPLAYING ====&lt;br /&gt;
Dieser Befehl kann verwendet werden um in Erfahrung zu bringen ob gerade etwas abgespielt wird.&lt;br /&gt;
&lt;br /&gt;
==== SHOWPLYING ====&lt;br /&gt;
Dieser Befehl zeigt den aktuellen zustand an. Sollte etwas abgespielt werden so werden weitere Daten zurückgegeben:&lt;br /&gt;
&lt;br /&gt;
Beispiel Ausgabe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STATE RUNNING&lt;br /&gt;
LONGGTN long:0xE1D9000000000067&lt;br /&gt;
SHORTGTN short:0xE10000BE&lt;br /&gt;
UUID uuid:0eafd00b-0b06-4805-a61f-66dc6427b181&lt;br /&gt;
META TITLE &amp;quot;Kuschel.FM - Das Kuschelradio!&amp;quot;&lt;br /&gt;
MDUC 1&lt;br /&gt;
RATE 44100&lt;br /&gt;
CHANNELS 2&lt;br /&gt;
BITS 16&lt;br /&gt;
TIME 196090280 S (2223.246s)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Feldname&lt;br /&gt;
 ! Feldbedeutung&lt;br /&gt;
 ! Mögliche Werte&lt;br /&gt;
 |-&lt;br /&gt;
 ! STATE&lt;br /&gt;
 | Der aktuelle Abspielstatus.&lt;br /&gt;
 | STOPPED, PAUSE, RUNNING&lt;br /&gt;
 |-&lt;br /&gt;
 ! LONGGTN&lt;br /&gt;
 | Lange Globale Titel Nummer&lt;br /&gt;
 | GTN&lt;br /&gt;
 |-&lt;br /&gt;
 ! SHORTGTN&lt;br /&gt;
 | Kurtze Globale Titel Nummer&lt;br /&gt;
 | GTN&lt;br /&gt;
 |-&lt;br /&gt;
 ! UUID&lt;br /&gt;
 | Eindeutiger Identifikator für den Titel&lt;br /&gt;
 | UUID&lt;br /&gt;
 |-&lt;br /&gt;
 ! META n&lt;br /&gt;
 | Meta Datum des Types n&lt;br /&gt;
 | Zeichenkette&lt;br /&gt;
 |-&lt;br /&gt;
 ! MDUC&lt;br /&gt;
 | Meta Daten Aktualisierungs Zähler&lt;br /&gt;
 | Zahl&lt;br /&gt;
 |-&lt;br /&gt;
 ! RATE&lt;br /&gt;
 | Abtastrate&lt;br /&gt;
 | Zahl&lt;br /&gt;
 |-&lt;br /&gt;
 ! CHANNELS&lt;br /&gt;
 | Kanal Anzahl&lt;br /&gt;
 | Zahl&lt;br /&gt;
 |-&lt;br /&gt;
 ! BITS&lt;br /&gt;
 | Abtastbreite&lt;br /&gt;
 | Zahl&lt;br /&gt;
 |-&lt;br /&gt;
 ! TIME&lt;br /&gt;
 | Zeit&lt;br /&gt;
 | Zahl in Abtastwerten und in Sekunden&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== SHOWIDENTIFIER ====&lt;br /&gt;
Zeigt eine Zeichenkette an welche den aktuell abgespielten Titel auf der nächst tieferen Ebene repräsentierte. Dabei kann es sich um eine RoarAudio StreamID, eine Geräte Datei, eine UUID oder ein beliebig geformte andere Zeichenkette handeln. Es ist nicht Garantiert das diese keine Stimmbrüche beinhaltet oder 7-Bit Sauber ist. Die Bedeutung ist nicht weiter im Protokoll Spezifiziert und wird ausschließlich vom Daemon weitergereicht.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SHOWIDENTIFIER&lt;br /&gt;
&lt;br /&gt;
=== Befehle der Lautstärke Steuerung ===&lt;br /&gt;
==== SETVOLUME ====&lt;br /&gt;
Setzt die Lautstärke.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SETVOLUME new-volume&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;new-volume&#039;&#039; kann entweder im Format &#039;n%&#039; mit n einem Prozentualen Wert von 0..100 sein, oder ein planer Integer im Bereich 0..65535.&lt;br /&gt;
&lt;br /&gt;
==== SHOWVOLUME ====&lt;br /&gt;
Zeigt die Aktuelle Lautstärke an.&lt;br /&gt;
&lt;br /&gt;
Ausgabe Beispiel:&lt;br /&gt;
  VOLUME 65535/65535 100%&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Steuerung der Haupt Wiedergabewarteschlagen-Spielliste ===&lt;br /&gt;
==== LISTQ ====&lt;br /&gt;
Zeigt den Inhalt der Haupt Wiedergabewarteschlagen-Spielliste oder einer anderen Wiedergabeliste an.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  LISTQ [{&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== FLUSHQ ====&lt;br /&gt;
Löscht den Inhalt der Haupt Wiedergabewarteschlagen-Spielliste.&lt;br /&gt;
&lt;br /&gt;
==== SHOWCUR ====&lt;br /&gt;
Dieser Befehlt Zeigt den obersten Eintrag in der Haupt Wiedergabewarteschlagen-Spielliste an. Zur Anzeige was gerade gespielt wird ist dieser Befehl nicht geeignet. Dazu muss &#039;&#039;SHOWPLYING&#039;&#039; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Wiedergabelisten Verwaltung ===&lt;br /&gt;
==== LISTPLAYLISTS ====&lt;br /&gt;
Listet alle Wiedergabelisten auf.&lt;br /&gt;
&lt;br /&gt;
==== SHOWLIST ====&lt;br /&gt;
Zeigt die Aktuelle oder eine andere Wiedergabeliste an.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SHOWLIST [{&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== ADDPLAYLIST ====&lt;br /&gt;
Fügt eine neue Wiedergabeliste hinzu.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  ADDPLAYLIST &amp;quot;Name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== DELPLAYLIST ====&lt;br /&gt;
Löcht eine Wiedergabeliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  DELPLAYLIST [{&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== FLUSHPLAYLIST ====&lt;br /&gt;
Leert den Inhalt einer Wiedergabeliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  FLUSHPLAYLIST [{&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== SETPARENTLIST ====&lt;br /&gt;
Setzt die Eltern Liste der Aktuellen oder einer anderen Wiedergabeliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SETPARENTLIST [OF {&amp;quot;Name&amp;quot;|ID}] [TO] {&amp;quot;Name&amp;quot;|ID}&lt;br /&gt;
&lt;br /&gt;
==== IMPORT ====&lt;br /&gt;
Importiert eine Wiedergabeliste aus einer Datei oder vom Aktuellen Datenstrom in die Aktuelle oder eine andere Wiedergabeliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  IMPORT [{&amp;quot;Name&amp;quot;|ID}] FROM {STDIN|&amp;quot;Filename&amp;quot;} [AS {RPLD|PLS|M3U|VCLT|PLAIN}]&lt;br /&gt;
&lt;br /&gt;
==== EXPORT ====&lt;br /&gt;
Exportiert die Aktuelle oder eine andere Wiedergabeliste in eine Datei oder gibt sie über den aktuellen Datenstrom aus.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  EXPORT [{&amp;quot;Name&amp;quot;|ID}] TO {STDOUT|&amp;quot;Filename&amp;quot;} [AS {RPLD|PLS|M3U|VCLT|PLAIN}]&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Wiedergabelisten Eintrags Verwaltung ===&lt;br /&gt;
Bei den folgenden Befehlen steht &#039;&#039;PLE&#039;&#039; immer für &amp;quot;&#039;&#039;PlayList Entry&#039;&#039;&amp;quot; (Wiedergabelisten Eintrag).&lt;br /&gt;
&lt;br /&gt;
==== LISTPLE ====&lt;br /&gt;
Zeigt alle Einträge in einer Wiedergabeliste an.&lt;br /&gt;
Es werden entweder wie Einträge der aktuellen Liste oder der angegebenen Angezeigt.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  LISTPLE [{&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== SHOWPLE ====&lt;br /&gt;
Dieser Befehl zeigt einen bestimmten Eintrag an.&lt;br /&gt;
Es wird entweder in der aktuellen Liste, in der angegebenen oder in allen Listen gesucht.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SHOWPLE {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID|ANY}]&lt;br /&gt;
&lt;br /&gt;
==== COPYPLE ====&lt;br /&gt;
Dieser Befehl kopiert einen Eintrag aus der aktuellen, einer angegebenen Liste oder einen aus allen Listen gesuchten Eintrag in eine andere Liste.&lt;br /&gt;
Eine Position an welcher er in der neuen Liste stehen soll kann optional angegeben werden.&lt;br /&gt;
Der neue Eintrag erhält eine neue &#039;&#039;Global Track Number&#039;&#039; sowie &#039;&#039;Short Global Track Number&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  COPYPLE {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID|ANY}] TO {&amp;quot;Name&amp;quot;|ID} [AT POSITION]&lt;br /&gt;
&lt;br /&gt;
==== MOVEPLE ====&lt;br /&gt;
Gleich der Funktion &#039;&#039;COPYPLE&#039;&#039; nur das diese Funktion den Eintrag nicht kopiert sondern verschiebt. Die &#039;&#039;Global Track Number&#039;&#039; sowie &#039;&#039;Short Global Track Number&#039;&#039; bleibt erhalten.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  MOVEPLE {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID|ANY}] TO {&amp;quot;Name&amp;quot;|ID} [AT POSITION]&lt;br /&gt;
&lt;br /&gt;
==== DELPLE ====&lt;br /&gt;
Diese Funktion löscht einen Eintrag aus der aktuellen oder einer angegebenen Liste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  DELPLE {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID}]&lt;br /&gt;
&lt;br /&gt;
==== QUEUEPLE ====&lt;br /&gt;
Dieser Befehl ist eine Kurzform des &#039;&#039;COPYPLE&#039;&#039; Befehls bei dem die Ziehlliste immer die Haupt Wiedergabewarteschlagen-Spielliste.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  QUEUEPLE {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID|ANY}] [AT POSITION]&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Zeigerverwaltung ===&lt;br /&gt;
==== SETPOINTER ====&lt;br /&gt;
Setzt den angegebenen Wiedergabelistenzeiger auf einen angegebenen Wiedergabelisten Eintrag.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SETPOINTER {CURRENT|DEFAULT|STARTUP|TEMP} {long:0xLongID|0xLongID|short:0xShortID|uuid:UUID|pointer:name} [FROM {&amp;quot;Name&amp;quot;|ID|ANY}]&lt;br /&gt;
&lt;br /&gt;
===== Bedeutungen der Einzelnen Zeiger =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Zeigername&lt;br /&gt;
 ! Gültigkeit&lt;br /&gt;
 ! Zeiger Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 ! CURRENT&lt;br /&gt;
 | Global&lt;br /&gt;
 | Sollte die Haupt Wiedergabewarteschlagen-Spielliste leer laufen so wird der Titel auf den dieser Zeiger verweist automatisch in die Spielliste kopiert und dieser Zeiger einen Eintrag weiter geschoben in der Wiedergabeliste in der sich der Eintrag auf den er Zeigt befindet. Auf diese Weise kann eine &#039;&#039;Spiele alles ab hier&#039;&#039; Funktion implementiert werden wie sie viele andere Wiedergabe-Programme besitzen.&lt;br /&gt;
 |-&lt;br /&gt;
 ! DEFAULT&lt;br /&gt;
 | Global&lt;br /&gt;
 | Sollte der &#039;&#039;CURRENT&#039;&#039;-Zeiger bei einer Weiterschiebe-Operation an das Ende der Wiedergabeliste stoßen so wird er erneut mit dem Inhalt dieses Zeigers initialisiert. Auf diese weise kann ein &#039;&#039;Wenn am Ende dann beginn vom Neuen&#039;&#039; Funktion wie es viele Wiedergabe-Programme besitzen implementiert werden. Diese Zeiger Logik kann aber auch zur Implementierung höheren Funktionen verwendet werden, wie dem automatischen Wechsel zwischen verschiedenen Listen.&lt;br /&gt;
 |-&lt;br /&gt;
 ! STARTUP&lt;br /&gt;
 | Global&lt;br /&gt;
 | Der Wiedergabelisten Eintrag auf den dieser Zeiger verweist wird beim Starten des Daemons automatisch abgespielt. Dies gescheit bevor die normale Abarbeitung der restlichen Titel in der Haupt Wiedergabewarteschlagen-Spielliste beginnt.&lt;br /&gt;
 |-&lt;br /&gt;
 ! TEMP&lt;br /&gt;
 | Klient Verbindung&lt;br /&gt;
 | Dieser Zeiger ist rein für die Benutzung in einer Klient Applikation bestimmt. Diese könnte ihn zum Beispiel auf den Aktuell in einem [[GUI]] ausgewählten Listeneintrag verwiesen lassen.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== SHOWPOINTER ====&lt;br /&gt;
Zeigt alle oder nur den angebenden Wiedergabelistenzeiger an.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  SHOWPOINTER [{CURRENT|DEFAULT|STARTUP|TEMP}]&lt;br /&gt;
&lt;br /&gt;
=== Befehle zur Permanent Speicherung ===&lt;br /&gt;
==== STORE ====&lt;br /&gt;
Dieser Befehl lässt den Daemon seinen Aktuellen Zustand Speichern.&lt;br /&gt;
Dieser kann zum Beispiel vor dem Beenden genutzt werden um den zustand dann wiederherstellen zu können beim nächsten Start. Je nach Parameter wird dieser Befehl vom Daemon beim Beenden eigenständig durchgeführt.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  STORE&lt;br /&gt;
&lt;br /&gt;
==== RESTORE ====&lt;br /&gt;
Stellt den Zustand wie er mit &#039;&#039;STORE&#039;&#039; gespeichert wurde wieder her.&lt;br /&gt;
Dies kann als Beispiel beim Starten des Daemons verwendet werden um den Zustand wieder her zu stellen der beim beenden herrschte. Je nach Parameter wird dieser Befehl vom Daemon selbstständig beim Starten ausgeführt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Wichtig:&#039;&#039; Ein mehrfaches verwenden dieses Befehls kann zu Duplikaten führen.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  RESTORE&lt;br /&gt;
&lt;br /&gt;
=== Veraltete Befehle ===&lt;br /&gt;
Die folgenden Befehle sind veraltet. Sie werden mit Version 0.1.0 voraussichtlich entfernt werden.&lt;br /&gt;
Sie sollten auf keinen Fall Verwendung finden.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
  ADD2Q entry&lt;br /&gt;
  DELFQ identifier&lt;br /&gt;
&lt;br /&gt;
=== Andere Befehle und geplante Befehle ===&lt;br /&gt;
Die folgenden Befehle sind in diesem Dokument nicht beschreiben, oder noch in Planung. Sie sollten aktuell nicht verwendet werden.&lt;br /&gt;
&lt;br /&gt;
  SEARCHPLE {&amp;quot;search string&amp;quot;|0xdiscid|uuid} [{AS|IN} {ALL|TITLE|ARTIST|VERSION|FILENAME|DISCID|UUID|TAG:&amp;quot;Tagname&amp;quot;}] [FROM {&amp;quot;Name&amp;quot;|ID|ANY}]&lt;br /&gt;
  UPDATE [{&amp;quot;Name&amp;quot;|ID|ANY}] {TO|FROM} {STDIN|STDOUT|&amp;quot;Filename&amp;quot;} [AS {RPLD|PLS|M3U|VCLT|XSPF|PLAIN}] USING {ALL|TITLE|ARTIST|VERSION|FILENAME|DISCID|UUID|TAG:&amp;quot;Tagname&amp;quot;} [AND ...] [POLICY {DEFAULT|OLD|NEW} {KEEP|DELETE}]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Homepage|roaraudio.keep-cool.org}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;br /&gt;
{{Stub}}&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9686</id>
		<title>RoarAudio/Vortrag/Was ist RoarAudio</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9686"/>
		<updated>2011-04-09T01:16:10Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Produkte */ + ne menge Inhalt...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über das [[RoarAudio]] Projekt vor einem Unixpublikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortag &amp;quot;Was ist RoarAudio?&amp;quot; soll kurz das RoarAudio Projekt vorstellen. Er bewegt sich auf einer nicht-technischen Ebene und ist für alle Arten von Zuhörern geeignet.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können. Auch kann man mit roard -- Was das ist Später -- direkt beispielsweise Internet Radio senden.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Audio Stack unter UNIX und GNU/Linux ===&lt;br /&gt;
Unter UNIX und auch unter GNU/Linux greifen Programme niemals direkt auf Hardware zu. Selbiges gilt auch für die Audio Ausgabe. Im allgemeinen Falle durchlaufen sie drei Schichten:&lt;br /&gt;
* Die Interne Schicht des Programms das etwas abspielen will,&lt;br /&gt;
* Das Sound System,&lt;br /&gt;
* Die Audio Treiber im Kernel.&lt;br /&gt;
&lt;br /&gt;
In einigen fällen sind die Audio Treiber im Kernel und das Sound System das selbe. Dies ist beispielsweise bei OSS, dem Open Sound System, und ALSA, der Advanced Linux Sound Architecture. Oft ist dies aber auch getrennt. Diese beiden Treiber Pakete sind die wohl bekanntesten, auch wenn OSS entgegen landläufiger Meinung auf keinem aktuellen Betriebssystem als Standard Treiber vorkommt. OSS wird heute faktisch nur noch Emuliert.&lt;br /&gt;
&lt;br /&gt;
=== RoarAudio Projektziele ===&lt;br /&gt;
Das RoarAudio Projekt hat sich zum Ziel gesetzt ein Sound System zu entwickeln das folgende Eigenschaften hat:&lt;br /&gt;
* Es soll den POSIX Philosophien weitestgehend gerecht werden.&lt;br /&gt;
* Besonders hervorzuheben ist die starke Anlehnung an das POSIX Ein-/Ausgabekonzept.&lt;br /&gt;
* Auch hervorzuheben ist die Portabilität: RoarAudio ist verfügbar für 8-Bit µ-Controllern bis hin zu Großrechnern mit OpenVMS, GNU/Linux, Alle arten von BSDs und Win32 eingeschlossen.&lt;br /&gt;
* Echte Netzwerkstransparenz. Daraus resultiert unmittelbar ein Server-Klient Konzept. Optimierungen für den häufigen Fall das Klient und Server auf dem Selben Rechner sind existieren.&lt;br /&gt;
* Funktionalität für die Radio Produktion.&lt;br /&gt;
* Funktionalität für den Einsatz im Bühnen und Lautraum Bereich.&lt;br /&gt;
&lt;br /&gt;
Aus den obigen Überlegungen wurde klar das es sinnvoll ist keine klassische Software Entwicklung zu betreiben sondern viel mehr ein Protokoll zu entwickeln und eine Referenz Implementierung an zu bieten. Dies gescheit auch in der Praxis auf diesem Wege. Mehr dazu später.&lt;br /&gt;
&lt;br /&gt;
=== Produkte ===&lt;br /&gt;
Das Projekt arbeitet an mehren Produkten gleichzeitig. Dazu gehören das Besagte Protokoll im Mittelpunkt und die angegliederten Implementierungen. Neben den direkt auf das Protokoll Bezug nehmenden Produkten werden auch einige nicht unmittelbar damit zusammenhängenden Software Pakete gepflegt die aber im Umfeld von RoarAudio nützlich sind.&lt;br /&gt;
&lt;br /&gt;
Im folgenden werden nun ein paar dieser Produkte kurz vorgestellt.&lt;br /&gt;
&lt;br /&gt;
==== Protokolle ====&lt;br /&gt;
Wie bereits erwähnt ist der Kern des Projekts das RoarAudio Protokoll.&lt;br /&gt;
&lt;br /&gt;
Dieses wird unabhängig von der Software entwickelt. Es wird bei der Entwicklung keinerlei Rücksicht auf die spätere Implementierung genommen so das eine Implementierungs unabhängige und saubere Struktur entsteht.&lt;br /&gt;
&lt;br /&gt;
Neben dem RoarAudio Protokoll ist noch erwähnenswert das ein zweites Protokoll namens Tantalos entwickelt wird: Dabei handelt es such um ein Protokoll zum automatischen finden von Kontent wie Musik im Netzwerk.&lt;br /&gt;
&lt;br /&gt;
==== Haupt Paket ====&lt;br /&gt;
Das Haupt Paket (&amp;quot;roaraudio&amp;quot;) ist ein versuch das Protokoll Referenz zu implementieren. Aber auch diese Implementierung ist unvollständig (primär bedingt durch die Zeit die es braucht die neuen Spezifikationen um zu setzen).&lt;br /&gt;
&lt;br /&gt;
Das Paket besteht aus &#039;&#039;roard&#039;&#039;, dem Sound Server, &#039;&#039;libroar und freunden&#039;&#039; welche die Klient seitige Schnittstelle liefern und einigen Hilfsprogrammen so wie so genannten &#039;&#039;Kompatibilitäts Layern&#039;&#039;. &#039;&#039;roard&#039;&#039; kann neben dem RoarAudio Protokoll auch verschiedene Protokolle anderer Sound Systeme. Die &#039;&#039;Kompatibilitäts Layern&#039;&#039; dienen dazu Software die für andere Sound Systeme geschrieben sind mit RoarAudio Unterstützung so zu sagen &#039;&#039;nach zu rüsten&#039;&#039;. Es handelt sich hierbei nicht nur um eine OSS Emulation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===== VS API =====&lt;br /&gt;
...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== µRoar und µRoarD ====&lt;br /&gt;
Neben der Implementierung durch das Haupt Paket entstanden im Laufe der Zeit weitere Implementierungen des Protokolls. Die wichtigsten zwei sind µRoar und µRoarD.&lt;br /&gt;
&lt;br /&gt;
Bei µRoar handelt es sich um eine Klient Bibliothek unter der LGPL Version 3. Diese wurde ursprünglich entwickelt um unter Win32 proprietären Programmen den Zugriff auf RoarAudio Server zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
µRoarD hingegen ist ein zweiter RoarAudio Server. Er ist bei weitem nicht so vollständig wie roard dafür aber wie der Name schon erraten lässt deutlich schlanker.&lt;br /&gt;
&lt;br /&gt;
==== RoarAudio PlayList Daemon ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== aroarfw und SCRSI ====&lt;br /&gt;
Zu guter Letzt gibt es noch verschiedene Produkte für den Eingebetteten und teilweise Eingebetteten Einsatz:&lt;br /&gt;
&lt;br /&gt;
aroarfw ist einen Hardware und System unabhäniges Framework zur Entwicklung von Software die RoarAudio verwendet. Es ist vor allem für Kleinst-Rechner wie µ-Controllern gedacht.&lt;br /&gt;
&lt;br /&gt;
Bei SCRSI handelt es sich um eine Schnittstelle die zwischen die das eigentliche Programm und die Schnittstelle zu RoarAudio eingefügt wird. Dies dient vor allem zum einbetten von µRoarD in andere Applikationen.&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9685</id>
		<title>RoarAudio/Vortrag/Was ist RoarAudio</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9685"/>
		<updated>2011-04-09T00:46:55Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* RoarAudio Projektziele */ +Inhalt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über das [[RoarAudio]] Projekt vor einem Unixpublikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortag &amp;quot;Was ist RoarAudio?&amp;quot; soll kurz das RoarAudio Projekt vorstellen. Er bewegt sich auf einer nicht-technischen Ebene und ist für alle Arten von Zuhörern geeignet.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können. Auch kann man mit roard -- Was das ist Später -- direkt beispielsweise Internet Radio senden.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Audio Stack unter UNIX und GNU/Linux ===&lt;br /&gt;
Unter UNIX und auch unter GNU/Linux greifen Programme niemals direkt auf Hardware zu. Selbiges gilt auch für die Audio Ausgabe. Im allgemeinen Falle durchlaufen sie drei Schichten:&lt;br /&gt;
* Die Interne Schicht des Programms das etwas abspielen will,&lt;br /&gt;
* Das Sound System,&lt;br /&gt;
* Die Audio Treiber im Kernel.&lt;br /&gt;
&lt;br /&gt;
In einigen fällen sind die Audio Treiber im Kernel und das Sound System das selbe. Dies ist beispielsweise bei OSS, dem Open Sound System, und ALSA, der Advanced Linux Sound Architecture. Oft ist dies aber auch getrennt. Diese beiden Treiber Pakete sind die wohl bekanntesten, auch wenn OSS entgegen landläufiger Meinung auf keinem aktuellen Betriebssystem als Standard Treiber vorkommt. OSS wird heute faktisch nur noch Emuliert.&lt;br /&gt;
&lt;br /&gt;
=== RoarAudio Projektziele ===&lt;br /&gt;
Das RoarAudio Projekt hat sich zum Ziel gesetzt ein Sound System zu entwickeln das folgende Eigenschaften hat:&lt;br /&gt;
* Es soll den POSIX Philosophien weitestgehend gerecht werden.&lt;br /&gt;
* Besonders hervorzuheben ist die starke Anlehnung an das POSIX Ein-/Ausgabekonzept.&lt;br /&gt;
* Auch hervorzuheben ist die Portabilität: RoarAudio ist verfügbar für 8-Bit µ-Controllern bis hin zu Großrechnern mit OpenVMS, GNU/Linux, Alle arten von BSDs und Win32 eingeschlossen.&lt;br /&gt;
* Echte Netzwerkstransparenz. Daraus resultiert unmittelbar ein Server-Klient Konzept. Optimierungen für den häufigen Fall das Klient und Server auf dem Selben Rechner sind existieren.&lt;br /&gt;
* Funktionalität für die Radio Produktion.&lt;br /&gt;
* Funktionalität für den Einsatz im Bühnen und Lautraum Bereich.&lt;br /&gt;
&lt;br /&gt;
Aus den obigen Überlegungen wurde klar das es sinnvoll ist keine klassische Software Entwicklung zu betreiben sondern viel mehr ein Protokoll zu entwickeln und eine Referenz Implementierung an zu bieten. Dies gescheit auch in der Praxis auf diesem Wege. Mehr dazu später.&lt;br /&gt;
&lt;br /&gt;
=== Produkte ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Protokolle ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Haupt Packet ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
===== VS API =====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== µRoar und µRoarD ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== RoarAudio PlayList Daemon ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== aroarfw und SCRSI ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9684</id>
		<title>RoarAudio/Vortrag/Was ist RoarAudio</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9684"/>
		<updated>2011-04-09T00:37:14Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Audio Stack unter UNIX und GNU/Linux */ +Inhalt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über das [[RoarAudio]] Projekt vor einem Unixpublikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortag &amp;quot;Was ist RoarAudio?&amp;quot; soll kurz das RoarAudio Projekt vorstellen. Er bewegt sich auf einer nicht-technischen Ebene und ist für alle Arten von Zuhörern geeignet.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können. Auch kann man mit roard -- Was das ist Später -- direkt beispielsweise Internet Radio senden.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Audio Stack unter UNIX und GNU/Linux ===&lt;br /&gt;
Unter UNIX und auch unter GNU/Linux greifen Programme niemals direkt auf Hardware zu. Selbiges gilt auch für die Audio Ausgabe. Im allgemeinen Falle durchlaufen sie drei Schichten:&lt;br /&gt;
* Die Interne Schicht des Programms das etwas abspielen will,&lt;br /&gt;
* Das Sound System,&lt;br /&gt;
* Die Audio Treiber im Kernel.&lt;br /&gt;
&lt;br /&gt;
In einigen fällen sind die Audio Treiber im Kernel und das Sound System das selbe. Dies ist beispielsweise bei OSS, dem Open Sound System, und ALSA, der Advanced Linux Sound Architecture. Oft ist dies aber auch getrennt. Diese beiden Treiber Pakete sind die wohl bekanntesten, auch wenn OSS entgegen landläufiger Meinung auf keinem aktuellen Betriebssystem als Standard Treiber vorkommt. OSS wird heute faktisch nur noch Emuliert.&lt;br /&gt;
&lt;br /&gt;
=== RoarAudio Projektziele ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Produkte ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Protokolle ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Haupt Packet ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
===== VS API =====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== µRoar und µRoarD ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== RoarAudio PlayList Daemon ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== aroarfw und SCRSI ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9683</id>
		<title>RoarAudio/Vortrag/Was ist RoarAudio</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9683"/>
		<updated>2011-04-09T00:29:39Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Was ist RoarAudio? */ +Inhalt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über das [[RoarAudio]] Projekt vor einem Unixpublikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortag &amp;quot;Was ist RoarAudio?&amp;quot; soll kurz das RoarAudio Projekt vorstellen. Er bewegt sich auf einer nicht-technischen Ebene und ist für alle Arten von Zuhörern geeignet.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein so genanntes Sound System. Es ist die Software welche zwischen einer Applikation des Benutzers, zum Beispiel eine Player, und dem Treiber sich befindet.&lt;br /&gt;
&lt;br /&gt;
Das Sound System, und so auch RoarAudio, sorgt dafür das sich mehre Programme die vorhandene Hardware teilen können. Es sorgt dafür das einzelne Programme nicht gegenseitig sich den Zugang zu den Resourcen der Soundkarte versperren.&lt;br /&gt;
&lt;br /&gt;
Auch fügt das Sound System zusätzliche Funktionalitäten hinzu. Hierzu zählen zum Beispiel getrennte Lautstärke Regelung für verschiedene Programme.&lt;br /&gt;
&lt;br /&gt;
RoarAudio ist besonders auf die Produktion von Radio in Echtzeit ausgelegt. Es ist Netzwerktransparent. Das heißt das Programme auch über das Netzwerk Zugriff nehmen können. Auch kann man mit roard -- Was das ist Später -- direkt beispielsweise Internet Radio senden.&lt;br /&gt;
&lt;br /&gt;
Neben seiner guten Netzwerkfähigkeit hebt sich RoarAudio auch durch die gute Unterstützung von Komprimierten Audio Übertragungen und der Unterstützung für Meta Daten hervor.&lt;br /&gt;
&lt;br /&gt;
=== Audio Stack unter UNIX und GNU/Linux ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== RoarAudio Projektziele ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Produkte ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Protokolle ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Haupt Packet ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
===== VS API =====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== µRoar und µRoarD ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== RoarAudio PlayList Daemon ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== aroarfw und SCRSI ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9682</id>
		<title>RoarAudio/Vortrag/Was ist RoarAudio</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9682"/>
		<updated>2011-04-09T00:16:38Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Vortrag */ +TOC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über das [[RoarAudio]] Projekt vor einem Unixpublikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortag &amp;quot;Was ist RoarAudio?&amp;quot; soll kurz das RoarAudio Projekt vorstellen. Er bewegt sich auf einer nicht-technischen Ebene und ist für alle Arten von Zuhörern geeignet.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Audio Stack unter UNIX und GNU/Linux ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== RoarAudio Projektziele ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Produkte ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Protokolle ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== Haupt Packet ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
===== VS API =====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== µRoar und µRoarD ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== RoarAudio PlayList Daemon ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== aroarfw und SCRSI ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9681</id>
		<title>RoarAudio/Vortrag/Was ist RoarAudio</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Was_ist_RoarAudio&amp;diff=9681"/>
		<updated>2011-04-09T00:13:04Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: BEGIN{}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über das [[RoarAudio]] Projekt vor einem Unixpublikum mit keinem oder geringem Vorwissen zum Thema.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortag &amp;quot;Was ist RoarAudio?&amp;quot; soll kurz das RoarAudio Projekt vorstellen. Er bewegt sich auf einer nicht-technischen Ebene und ist für alle Arten von Zuhörern geeignet.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Programmieren/Intro&amp;diff=9680</id>
		<title>RoarAudio/Programmieren/Intro</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Programmieren/Intro&amp;diff=9680"/>
		<updated>2011-04-08T11:52:04Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* libroar */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dies ist eine minimale Einleitung zur Programmierung mittels der [[RoarAudio]] Standard Bibliotheken.&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung setzt grundlegendes Verständnis zur Funktionsweise von RoarAudio voraus.&lt;br /&gt;
&lt;br /&gt;
Dieses Dokument beschreibt die Standard API. Für sehr einfache Programme mag es angebracht sein die [[RoarAudio/Programmieren/Simple|Simple API]] oder die [[RoarAudio/Programmieren/VS|Very Simple API]] zu verwenden.&lt;br /&gt;
&lt;br /&gt;
== Header Dateien ==&lt;br /&gt;
Um die RoarAudio API verwenden zu können müssen als erstes die richtigen Header eingebunden werden.&lt;br /&gt;
In aller Regel reicht es den Standard Header ein zu binden, welcher die meisten nötigen Header wiederum selbst einbindet:&lt;br /&gt;
 #include &amp;lt;roaraudio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur Verwendung von libroardsp, libroarlight, libroarmidi und libroareio müssen weiterhin folgende Header entsprechend eingebunden werden:&lt;br /&gt;
 #include &amp;lt;libroardsp/libroardsp.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;libroarlight/libroarlight.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;libroarmidi/libroarmidi.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;libroareio/libroareio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterhin gibt es noch einen speziellen Header zur Verwendung von Einheiten:&lt;br /&gt;
 #include &amp;lt;roaraudio/units.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verbindung zum Server ==&lt;br /&gt;
In aller Regel muss zu Beginn eine Verbindung zum Server aufgenommen werden. Dazu wird ein Objekt für die Verbindung angelegt und dies dann mit dem Server verbunden. Ist die Arbeit getan so wird die Verbindung wieder Beendet. Die Verbindung sollte aber offen gehalten werden sofern in absehbarer Zeit sonst eine neue Verbindung aufgebaut werden müsste. (Etwa sollte sie nicht bei einem Lied Wechsel in einem Player erst abgebaut und dann erneut Aufgebaut werden, sondern bestehen bleiben solange der Player nicht beendet wird durch den Benutzer).&lt;br /&gt;
&lt;br /&gt;
Öffnen eines Steuerkanals:&lt;br /&gt;
 struct roar_connection con; // Steuer Verbindung&lt;br /&gt;
 &lt;br /&gt;
 if ( roar_simple_connect(&amp;amp;con, NULL, &amp;quot;Klient Name&amp;quot;)) == -1 ) {&lt;br /&gt;
  return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird ein Objekt names &#039;&#039;con&#039;&#039; erzeugt und mit dem Standard Server (NULL) verbunden.&lt;br /&gt;
Wird anstatt &#039;&#039;NULL&#039;&#039; ein String übergeben so wird dieser als Server Name/Adresse verwendet. Das letzte Argument ist der Name des neuen Klienten. Dieser wird beispielsweise durch &#039;&#039;roarctl&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
Ist die Arbeit getan so kann die Verbindung einfach durch &#039;&#039;roar_disconnect()&#039;&#039; wieder geschlossen werden:&lt;br /&gt;
&lt;br /&gt;
 roar_disconnect(&amp;amp;con);&lt;br /&gt;
&lt;br /&gt;
== Erstellen eines Streams ==&lt;br /&gt;
Ist die Verbindung zum Server aufgebaut so wird in aller Regel eine Datenverbindung &#039;&#039;Stream&#039;&#039; aufgebaut. Der der Einfachkeit wegen werden in diesem Dokument nur Streams behandelt die direkt durch die Bibliothek verbunden werden.&lt;br /&gt;
&lt;br /&gt;
Um einen Stream zu öffnen benötigt man nun zwei weitere Objekte: Das Stream Objekt welches die Informationen über den Stream selbst beinhaltet und das VIO Objekt welches uns die Möglichkeit bietet Daten mit dem Stream aus zu tauchen.&lt;br /&gt;
&lt;br /&gt;
 struct roar_stream stream;  // Stream Objekt&lt;br /&gt;
 struct roar_vio_calls vio;  // VIO Objekt&lt;br /&gt;
&lt;br /&gt;
Nachdem beide Objekte erstellt sind öffnen wir nun eine Daten Verbindung zum &#039;&#039;Abspielen von Waveform Daten&#039;&#039;. Dies sind Streams zum abspielen von &#039;&#039;normaler&#039;&#039; Musik ([[PCM]] und PCM ähnliche Formate, kein [[MIDI]]).&lt;br /&gt;
&lt;br /&gt;
 if ( roar_vio_simple_new_stream_obj(&amp;amp;vio,&lt;br /&gt;
                                     &amp;amp;con,&lt;br /&gt;
                                     &amp;amp;stream,&lt;br /&gt;
                                      rate, channels, bits,&lt;br /&gt;
                                      ROAR_CODEC_DEFAULT, ROAR_DIR_PLAY&lt;br /&gt;
                                    ) == -1 ) {&lt;br /&gt;
  return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Hierbei expandiert ROAR_CODEC_DEFAULT zu dem nativen PCM Format der aktuellen Maschine. ROAR_DIR_PLAY gibt an das wir Audio Daten abspielen möchten. rate, channels, bits sind entsprechend von der Applikation zu setzen entsprechend der aktuellen Daten. Übliche werte sind hier als Beispiel rate=44100Hz, channels=2, bits=16.&lt;br /&gt;
&lt;br /&gt;
Sollen keine weiteren Informationen auf dem Stream gesetzt werden (Mixer Einstellungen, Meta Daten oder ähnliches) so kann das Stream Objekt ignoriert werden. Diese Einleitung tut dies, anderen Anleitungen mögen auf dieses Objekt detahierter eingehen.&lt;br /&gt;
&lt;br /&gt;
Wollen wir nun Daten an den Server schicken so verwenden wir die VIO API. In unserem falle die Funktion &#039;&#039;roar_vio_write()&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 ret = roar_vio_write(&amp;amp;vio, buffer, len);&lt;br /&gt;
&lt;br /&gt;
Die Funktion erwartet einen Datenpuffer sowie dessen Größe. Sie liefert die Anzahl der geschriebenen Byte zurück. Siehe auch write(2).&lt;br /&gt;
&lt;br /&gt;
Erreicht unsere Applikation das Ende der Daten (zum Beispiel das Dateiende der Quell-Datei) so schließen wir das VIO Objeckt mittels &#039;&#039;roar_vio_close()&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 roar_vio_close(&amp;amp;vio);&lt;br /&gt;
&lt;br /&gt;
Der Stream wird auf Seite des Servers beendet sobald dieser einen internen Puffer vollständig geleert hat. Dies kann je nach verwendetem Codec durchaus mehre Sekunden dauern. bei PCM Daten sollte dies allerdings im Milisekunden Bereich liegen und kann ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Das Stream Objekt (&#039;&#039;stream&#039;&#039;) das wir oben angelegt haben verliert mit diesem Ereignis seine Gültigkeit. Aus diesem Grunde kann es ab dem Zeitpunkt zu dem wir das VIO Objekt geschlossen haben als ungültig angesehen werden.&lt;br /&gt;
&lt;br /&gt;
== Themen Liste ==&lt;br /&gt;
=== libroar ===&lt;br /&gt;
; [[RoarAudio/Programmieren/Simple|Simple API]]&lt;br /&gt;
: API um simple Streams auf zu bauen.&lt;br /&gt;
; [[RoarAudio/Programmieren/Stream|Stream API]]&lt;br /&gt;
: API zur Steuerung von Streams.&lt;br /&gt;
; [[RoarAudio/Programmieren/Control|Control API]]&lt;br /&gt;
: API zur Steuerung des Servers.&lt;br /&gt;
; [[RoarAudio/Programmieren/VIO|Virtuelle IO (VIO)]]&lt;br /&gt;
: API für IO Handling.&lt;br /&gt;
; [[RoarAudio/Programmieren/VIO DSTR|VIO DSTR API]]&lt;br /&gt;
: API für das öffnen von VIO Objekten anhand von Beschreibenden Strings (z.B. URLs)&lt;br /&gt;
; [[RoarAudio/Programmieren/VIO Typen|VIO Typen Liste]]&lt;br /&gt;
: Liste von möglichen VIO Typen.&lt;br /&gt;
; [[RoarAudio/Programmieren/Buffer|Memory Puffer]]&lt;br /&gt;
: API zur komfortablen Verwaltung von Memory Puffern.&lt;br /&gt;
; [[RoarAudio/Programmieren/MemMgr|Memory Management API]]&lt;br /&gt;
: API zur Memory Verwaltung.&lt;br /&gt;
; [[RoarAudio/Programmieren/roardl|RoarAudio Dynamic Library API]]&lt;br /&gt;
: API zum dynamischen Laden von Bibliotheken (z.B. Plugins)&lt;br /&gt;
&lt;br /&gt;
=== libroardsp ===&lt;br /&gt;
; [[RoarAudio/Programmieren/Filter|Filter]]&lt;br /&gt;
: Verwenden von Signal Filtern.&lt;br /&gt;
; [[RoarAudio/Programmieren/Fader|Fader]]&lt;br /&gt;
: Überblend-Efeckte.&lt;br /&gt;
; [[RoarAudio/Programmieren/Transcode|Transcode]]&lt;br /&gt;
: Signal En-/De-/Transcoder.&lt;br /&gt;
; [[RoarAudio/Programmieren/Andere DSP Funktionen|Andere DSP Funktionen]]&lt;br /&gt;
: Andere Signalverarbeitungs Funktionen.&lt;br /&gt;
&lt;br /&gt;
=== libroarlight ===&lt;br /&gt;
; [[RoarAudio/Programmieren/RoarDMX|RoarDMX]]&lt;br /&gt;
: RoarDMX Licht Steuerungs Codec&lt;br /&gt;
&lt;br /&gt;
=== libroarmidi ===&lt;br /&gt;
; [[RoarAudio/Programmieren/MIDI|MIDI]]&lt;br /&gt;
: Umgang mit MIDI Signalen.&lt;br /&gt;
&lt;br /&gt;
=== libroareio ===&lt;br /&gt;
; [[RoarAudio/Programmieren/CDriver|CDriver]]&lt;br /&gt;
: Klient seitige Treiber.&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [[RoarAudio]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Homepage|roaraudio.keep-cool.org}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
{{Stub}}&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9679</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9679"/>
		<updated>2011-04-07T14:43:49Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Warten auf Stream Ende */ +Inhalt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist die VS API? ===&lt;br /&gt;
Die VS API (von engl. &amp;quot;&#039;&#039;&#039;V&#039;&#039;&#039;ery &#039;&#039;&#039;S&#039;&#039;&#039;imple &#039;&#039;&#039;API&#039;&#039;&#039;&amp;quot;) ist eine Schnittstelle auf hoher Ebene welche durch libroar angeboten wird. Sie ist stark an OpenBSD&#039;s sndio, aRtsc (KDE 2.x und 3.x) und pulsesimple angelehnt. Sie ist entwikelt worden um neuen Entwicklern und Entwicklern die mit den anderen Systemen zu tun hatten den Umstieg zu erleichtern.&lt;br /&gt;
&lt;br /&gt;
Die VS API bedient nur einen sehr kleinen Bereich von RoarAudios Fähigkeiten. Sie ist auch nur für das Abspielen und Aufnehmen von Streams geeignet und hat keine allgemeinen Steuer Funktionen. Sie kann aber, anders als bei ähnlichen ähnlichen Implementierungen der anderen Sound Systeme, beliebig mit der Haupt API kombiniert werden.&lt;br /&gt;
&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
Die VS API ist die im Moment höchste Schicht in libroar. Sie Abstrahiert mehre darunter liegenden Schichten wie die Simple API und VIO/DSTR.&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
Die VS API ist wie fast alles rund um RoarAudio Objekt Orientiert. Sie verwendet primär das so genannte VSS (von engl. &amp;quot;VS State&amp;quot;) Objekt das sowohl Steuer-, Daten-, Datei-Verbindung Objekte sowie alle Puffer und Speicher Objekte die intern verwendet werden enthält.&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
Der Streaming Mode ist der &#039;&#039;&#039;native&#039;&#039;&#039; Modus. Hier wird das VS Objeckt (VSS) geöffnet und dann mittels Schreibe- und Lese-Befehlen die Audio Daten zum Server geschickt beziehungsweise von dort abgeholt. Ist man Fertig so wird das VS Objekt wieder geschlossen.&lt;br /&gt;
&lt;br /&gt;
Zum öffnen gibt es zwei Funktionen: roar_vs_new_simple() und roar_vs_new_playback(). Letztere ist lediglich ein Aufruf auf die erstere und übergibt beim Richtungs und Subsystem Parameter (engl. &amp;quot;stream direction&amp;quot;) den wert ROAR_DIR_PLAY. Da oft nur Wiedergabe gewünscht ist, ist diese Funktion viel zu finden.&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden Audio Daten gelesen oder geschrieben. Dies geschieht mittels roar_vs_read() beziehungsweise roar_vs_write().&lt;br /&gt;
&lt;br /&gt;
Im letzten Schritt wird das Objekt wieder freigegeben und die Verbindungen geschlossen. Dies gescheit mittels roar_vs_close().&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten oder andere Steuerinformationen (Siehe weiter am Ende des Vortrags) gesetzt werden sollten diese vor dem ersten Aufruf von roar_vs_read() beziehungsweise roar_vs_write() gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_simple(server, &amp;quot;MyApp&amp;quot;, rate, channels, codec, bits, ROAR_DIR_PLAY, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { // main loop...&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde ein Stream zum Server &#039;&#039;server&#039;&#039; aufgebaut, Die Audio Parameter finden sich in &#039;&#039;rate&#039;&#039;, &#039;&#039;channels&#039;&#039;, &#039;&#039;codec&#039;&#039; und &#039;&#039;bits&#039;&#039;. Er ist zur Wiedergabe (ROAR_DIR_PLAY).&lt;br /&gt;
Die Variablen &#039;&#039;ret&#039;&#039; und &#039;&#039;err&#039; werden im nächsten Kapitel erläutert.&lt;br /&gt;
&lt;br /&gt;
Der Parameter &#039;&#039;server&#039;&#039; kann (und sollte meistens auch) den Wert NULL haben. Dies steht für das verbinden zum Default Server.&lt;br /&gt;
&lt;br /&gt;
Auch ist der Applikationsname (hier: &amp;quot;&#039;&#039;MyApp&#039;&#039;&amp;quot;) angegeben. Dieser sollte einen Sprechenden Namen für das Produkt beinhalten. Normalerweise das was man auf der Packung oder der CD Hülle in großen Lettern erwartet.&lt;br /&gt;
&lt;br /&gt;
Folgendes sollte nicht verwendet werden:&lt;br /&gt;
* Versionen (ggf. noch &#039;&#039;major releases&#039;&#039;),&lt;br /&gt;
* Datei Namen (&amp;quot;myapp.bin&amp;quot;, &amp;quot;myapp.exe&amp;quot;),&lt;br /&gt;
* Pfad Namen (&amp;quot;/usr/bin/player&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Auf die Audio Parameter soll hier nicht weiter eingegangen werden als diese Grundlagen Wissen sind den Zeitrahmen sprengen würden.&lt;br /&gt;
&lt;br /&gt;
Der Richtungs und Subsystem Parameter hat im oberen Beispiel den Wert ROAR_DIR_PLAY. Andere Werte sind als Beispiel ROAR_DIR_RECORD, ROAR_DIR_MONITOR oder auch ROAR_DIR_MIDI_IN. Genaueres sollte aus passenden Tabellen entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Der zweite Parameter bei der Funktion roar_vs_close() (hier ROAR_VS_FALSE) gibt an ob beim Schließen des Objekts auch auf Server Seite der Stream direkt beendet werden soll (ROAR_VS_TRUE) oder nicht (ROAR_VS_FALSE). Im Falle das er nicht direkt beendet werden soll (Normalfall) wird noch zu Ende gespielt bis alle Puffer leer sind. Dies macht vor allem bei komprimierten Codecs wie Ogg Vorbis (ROAR_CODEC_OGG_VORBIS) einen unterschied der Teilweise im Sekunden Bereich liegt.&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
Die VS API besitzt einen Datei Modus (engl. &amp;quot;file mode&amp;quot;) in dem sie direkt Dateien aber auch Streams abspielen kann. Dazu wird die Verbindung mittels roar_vs_new_from_file() geöffnet. Anschließend wird mittels roar_vs_run() oder roar_vs_iterate() der Datenstrom zum Server geschrieben. Am Schluss wird das Objekt normal mittels roar_vs_close() geschlossen.&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten, Lautstärke oder ähnliches gesetzt werden so sollte dies vor dem Aufruf von roar_vs_run() beziehungsweise vor dem ersten Aufruf von roar_vs_iterate() gesehen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_run(vss, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird zum Server &#039;&#039;&#039;server&#039;&#039;&#039; (sollte normalerweise NULL sein) verbunden. Der Klient Name ist &amp;quot;&#039;&#039;&#039;MyApp&#039;&#039;&#039;&amp;quot;. Als Dateiname wird &#039;&#039;&#039;filename&#039;&#039;&#039; verwendet. Danach wird roar_vs_run() aufgerufen was bis zum Dateiende (EOF) die Datei abspielt. Am ende wird ganz normal mittels roar_vs_close() die Verbindung geschlossen.&lt;br /&gt;
&lt;br /&gt;
Da roar_vs_run() so lange läuft bis es das Dateiende erreicht oder ein Fehler auftritt ist blockt ist es nicht (trivial) möglich im selben Kontext weitere Dinge parallel aus zu führen. Da viele Programme aber ohne hin einen eigenen Thread für die Tonausgabe verwenden ist dies eine geringe Einschränkung. Für alle anderen Felle gibt es roar_vs_iterate() wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { /* main loop */&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_iterate(vss, ROAR_VS_WAIT, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
Viele Applikationen erwarten einen Gepufferten Modus vor zu finden in dem sie einen Ring Puffer mit sehr definiertem zustand vor finden in den sie Arbeiten können. Dieses Vorgehen ist nur mit einem Lokalen Ringpuffer möglich der recht groß ist und viele Nachteile in sich birgt. Aus diesem Grunde wird dieser Modus nicht Empfohlen.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle soll auch nur Kurz erwähnt sein das dieser Existiert und mit der Funktion roar_vs_buffer() zu steuern ist. Weitere Informationen finden sich in der Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Um nicht weiter zu Verwirren direkt zum Nächsten Kapitel...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
Zur Lautstärkesteuerung stehen in der VS API drei Funktionen zur Verfügung: roar_vs_volume_mono(), roar_vs_volume_stereo() und roar_vs_volume_get().&lt;br /&gt;
&lt;br /&gt;
Die beiden Ersetzen setzen die Lautstärke, jeweils im Mono oder im Stereo Modus. Das heißt sollte eine Datenstrom eine andere Anzahl von Kanälen haben so rechnen diese Funktionen automatisch um.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke Skala geht vom 0 bis 1 (inklusive).&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird die Lautstärke auf 50% (-6dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = 0.5; /* 50% */&lt;br /&gt;
ret = roar_vs_volume_mono(vss, c, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im zweiten Beispiel wird der Linke Kanal auf 50% (-6dB) und der Rechte Kanal auf 25% (-12dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l = 0.5, r = 0.25;&lt;br /&gt;
ret = roar_vs_volume_stereo(vss, l, r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke lässt sich mittels roar_vs_volume_get() wie folgt auslesen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l, r;&lt;br /&gt;
ret = roar_vs_volume_get(vss, &amp;amp;l, &amp;amp;r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte die Mono-Lautstärke und nicht die L/R-Lautstärke gewünscht sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = (l + r)/2.0;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zum Stumm schalten sollte die Lautstärke nicht geändert werden sondern das Mute-Flag verwendet werden (Nächste Folie).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Nicht Blockender Zugriffsmodus ===&lt;br /&gt;
Wie auf normalen Filehandles in der UNIX Welt kann auch auf VS Objekten ein Nicht-Blockender Modus verwendet werden. Das heißt das Lese- und Schreibbefehle nicht blockieren sondern nur im internen Puffer operieren und somit schneller zurückkehren. Der Nachteil ist das dabei so genannte &amp;quot;short reads&amp;quot; beziehungsweise &amp;quot;short writes&amp;quot; häufiger passieren.&lt;br /&gt;
&lt;br /&gt;
Der Nicht Blockierende Modus kann mittels der Funktion roar_vs_blocking() verwendet werden wie im folgenden Beispiel gezeigt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_blocking(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der zweite Parameter gibt dabei an ob der Modus gesetzt werden soll (ROAR_VS_TRUE) oder zurückgesetzt (ROAR_VS_FALSE). Natürlich kann er auch gekippt (ROAR_VS_TOGGLE) oder Abgefragt werden (ROAR_VS_ASK).&lt;br /&gt;
&lt;br /&gt;
=== Warten auf Stream Ende ===&lt;br /&gt;
Mit der Funktion roar_vs_sync() kann man auf das Ende des Streams warten.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_write(vss, buf, len, &amp;amp;err); // letzter Schreibzugriff&lt;br /&gt;
ret = roar_vs_sync(vss, ROAR_VS_WAIT, &amp;amp;err);&lt;br /&gt;
// am Stream-Ende&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es sollte nach dem Aufruf von roar_vs_sync() entweder direkt der Stream geschlossen werden oder erneut geschrieben. In letzterem Fall wird ein Knacken oder ähnliches zu hören sein durch die Unterlaufs bedingte Unterbrechung (engl. &amp;quot;underrun&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9678</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9678"/>
		<updated>2011-04-07T14:38:18Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Non-Blocking */ +Inhalt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist die VS API? ===&lt;br /&gt;
Die VS API (von engl. &amp;quot;&#039;&#039;&#039;V&#039;&#039;&#039;ery &#039;&#039;&#039;S&#039;&#039;&#039;imple &#039;&#039;&#039;API&#039;&#039;&#039;&amp;quot;) ist eine Schnittstelle auf hoher Ebene welche durch libroar angeboten wird. Sie ist stark an OpenBSD&#039;s sndio, aRtsc (KDE 2.x und 3.x) und pulsesimple angelehnt. Sie ist entwikelt worden um neuen Entwicklern und Entwicklern die mit den anderen Systemen zu tun hatten den Umstieg zu erleichtern.&lt;br /&gt;
&lt;br /&gt;
Die VS API bedient nur einen sehr kleinen Bereich von RoarAudios Fähigkeiten. Sie ist auch nur für das Abspielen und Aufnehmen von Streams geeignet und hat keine allgemeinen Steuer Funktionen. Sie kann aber, anders als bei ähnlichen ähnlichen Implementierungen der anderen Sound Systeme, beliebig mit der Haupt API kombiniert werden.&lt;br /&gt;
&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
Die VS API ist die im Moment höchste Schicht in libroar. Sie Abstrahiert mehre darunter liegenden Schichten wie die Simple API und VIO/DSTR.&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
Die VS API ist wie fast alles rund um RoarAudio Objekt Orientiert. Sie verwendet primär das so genannte VSS (von engl. &amp;quot;VS State&amp;quot;) Objekt das sowohl Steuer-, Daten-, Datei-Verbindung Objekte sowie alle Puffer und Speicher Objekte die intern verwendet werden enthält.&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
Der Streaming Mode ist der &#039;&#039;&#039;native&#039;&#039;&#039; Modus. Hier wird das VS Objeckt (VSS) geöffnet und dann mittels Schreibe- und Lese-Befehlen die Audio Daten zum Server geschickt beziehungsweise von dort abgeholt. Ist man Fertig so wird das VS Objekt wieder geschlossen.&lt;br /&gt;
&lt;br /&gt;
Zum öffnen gibt es zwei Funktionen: roar_vs_new_simple() und roar_vs_new_playback(). Letztere ist lediglich ein Aufruf auf die erstere und übergibt beim Richtungs und Subsystem Parameter (engl. &amp;quot;stream direction&amp;quot;) den wert ROAR_DIR_PLAY. Da oft nur Wiedergabe gewünscht ist, ist diese Funktion viel zu finden.&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden Audio Daten gelesen oder geschrieben. Dies geschieht mittels roar_vs_read() beziehungsweise roar_vs_write().&lt;br /&gt;
&lt;br /&gt;
Im letzten Schritt wird das Objekt wieder freigegeben und die Verbindungen geschlossen. Dies gescheit mittels roar_vs_close().&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten oder andere Steuerinformationen (Siehe weiter am Ende des Vortrags) gesetzt werden sollten diese vor dem ersten Aufruf von roar_vs_read() beziehungsweise roar_vs_write() gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_simple(server, &amp;quot;MyApp&amp;quot;, rate, channels, codec, bits, ROAR_DIR_PLAY, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { // main loop...&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde ein Stream zum Server &#039;&#039;server&#039;&#039; aufgebaut, Die Audio Parameter finden sich in &#039;&#039;rate&#039;&#039;, &#039;&#039;channels&#039;&#039;, &#039;&#039;codec&#039;&#039; und &#039;&#039;bits&#039;&#039;. Er ist zur Wiedergabe (ROAR_DIR_PLAY).&lt;br /&gt;
Die Variablen &#039;&#039;ret&#039;&#039; und &#039;&#039;err&#039; werden im nächsten Kapitel erläutert.&lt;br /&gt;
&lt;br /&gt;
Der Parameter &#039;&#039;server&#039;&#039; kann (und sollte meistens auch) den Wert NULL haben. Dies steht für das verbinden zum Default Server.&lt;br /&gt;
&lt;br /&gt;
Auch ist der Applikationsname (hier: &amp;quot;&#039;&#039;MyApp&#039;&#039;&amp;quot;) angegeben. Dieser sollte einen Sprechenden Namen für das Produkt beinhalten. Normalerweise das was man auf der Packung oder der CD Hülle in großen Lettern erwartet.&lt;br /&gt;
&lt;br /&gt;
Folgendes sollte nicht verwendet werden:&lt;br /&gt;
* Versionen (ggf. noch &#039;&#039;major releases&#039;&#039;),&lt;br /&gt;
* Datei Namen (&amp;quot;myapp.bin&amp;quot;, &amp;quot;myapp.exe&amp;quot;),&lt;br /&gt;
* Pfad Namen (&amp;quot;/usr/bin/player&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Auf die Audio Parameter soll hier nicht weiter eingegangen werden als diese Grundlagen Wissen sind den Zeitrahmen sprengen würden.&lt;br /&gt;
&lt;br /&gt;
Der Richtungs und Subsystem Parameter hat im oberen Beispiel den Wert ROAR_DIR_PLAY. Andere Werte sind als Beispiel ROAR_DIR_RECORD, ROAR_DIR_MONITOR oder auch ROAR_DIR_MIDI_IN. Genaueres sollte aus passenden Tabellen entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Der zweite Parameter bei der Funktion roar_vs_close() (hier ROAR_VS_FALSE) gibt an ob beim Schließen des Objekts auch auf Server Seite der Stream direkt beendet werden soll (ROAR_VS_TRUE) oder nicht (ROAR_VS_FALSE). Im Falle das er nicht direkt beendet werden soll (Normalfall) wird noch zu Ende gespielt bis alle Puffer leer sind. Dies macht vor allem bei komprimierten Codecs wie Ogg Vorbis (ROAR_CODEC_OGG_VORBIS) einen unterschied der Teilweise im Sekunden Bereich liegt.&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
Die VS API besitzt einen Datei Modus (engl. &amp;quot;file mode&amp;quot;) in dem sie direkt Dateien aber auch Streams abspielen kann. Dazu wird die Verbindung mittels roar_vs_new_from_file() geöffnet. Anschließend wird mittels roar_vs_run() oder roar_vs_iterate() der Datenstrom zum Server geschrieben. Am Schluss wird das Objekt normal mittels roar_vs_close() geschlossen.&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten, Lautstärke oder ähnliches gesetzt werden so sollte dies vor dem Aufruf von roar_vs_run() beziehungsweise vor dem ersten Aufruf von roar_vs_iterate() gesehen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_run(vss, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird zum Server &#039;&#039;&#039;server&#039;&#039;&#039; (sollte normalerweise NULL sein) verbunden. Der Klient Name ist &amp;quot;&#039;&#039;&#039;MyApp&#039;&#039;&#039;&amp;quot;. Als Dateiname wird &#039;&#039;&#039;filename&#039;&#039;&#039; verwendet. Danach wird roar_vs_run() aufgerufen was bis zum Dateiende (EOF) die Datei abspielt. Am ende wird ganz normal mittels roar_vs_close() die Verbindung geschlossen.&lt;br /&gt;
&lt;br /&gt;
Da roar_vs_run() so lange läuft bis es das Dateiende erreicht oder ein Fehler auftritt ist blockt ist es nicht (trivial) möglich im selben Kontext weitere Dinge parallel aus zu führen. Da viele Programme aber ohne hin einen eigenen Thread für die Tonausgabe verwenden ist dies eine geringe Einschränkung. Für alle anderen Felle gibt es roar_vs_iterate() wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { /* main loop */&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_iterate(vss, ROAR_VS_WAIT, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
Viele Applikationen erwarten einen Gepufferten Modus vor zu finden in dem sie einen Ring Puffer mit sehr definiertem zustand vor finden in den sie Arbeiten können. Dieses Vorgehen ist nur mit einem Lokalen Ringpuffer möglich der recht groß ist und viele Nachteile in sich birgt. Aus diesem Grunde wird dieser Modus nicht Empfohlen.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle soll auch nur Kurz erwähnt sein das dieser Existiert und mit der Funktion roar_vs_buffer() zu steuern ist. Weitere Informationen finden sich in der Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Um nicht weiter zu Verwirren direkt zum Nächsten Kapitel...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
Zur Lautstärkesteuerung stehen in der VS API drei Funktionen zur Verfügung: roar_vs_volume_mono(), roar_vs_volume_stereo() und roar_vs_volume_get().&lt;br /&gt;
&lt;br /&gt;
Die beiden Ersetzen setzen die Lautstärke, jeweils im Mono oder im Stereo Modus. Das heißt sollte eine Datenstrom eine andere Anzahl von Kanälen haben so rechnen diese Funktionen automatisch um.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke Skala geht vom 0 bis 1 (inklusive).&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird die Lautstärke auf 50% (-6dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = 0.5; /* 50% */&lt;br /&gt;
ret = roar_vs_volume_mono(vss, c, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im zweiten Beispiel wird der Linke Kanal auf 50% (-6dB) und der Rechte Kanal auf 25% (-12dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l = 0.5, r = 0.25;&lt;br /&gt;
ret = roar_vs_volume_stereo(vss, l, r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke lässt sich mittels roar_vs_volume_get() wie folgt auslesen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l, r;&lt;br /&gt;
ret = roar_vs_volume_get(vss, &amp;amp;l, &amp;amp;r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte die Mono-Lautstärke und nicht die L/R-Lautstärke gewünscht sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = (l + r)/2.0;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zum Stumm schalten sollte die Lautstärke nicht geändert werden sondern das Mute-Flag verwendet werden (Nächste Folie).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Nicht Blockender Zugriffsmodus ===&lt;br /&gt;
Wie auf normalen Filehandles in der UNIX Welt kann auch auf VS Objekten ein Nicht-Blockender Modus verwendet werden. Das heißt das Lese- und Schreibbefehle nicht blockieren sondern nur im internen Puffer operieren und somit schneller zurückkehren. Der Nachteil ist das dabei so genannte &amp;quot;short reads&amp;quot; beziehungsweise &amp;quot;short writes&amp;quot; häufiger passieren.&lt;br /&gt;
&lt;br /&gt;
Der Nicht Blockierende Modus kann mittels der Funktion roar_vs_blocking() verwendet werden wie im folgenden Beispiel gezeigt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_blocking(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der zweite Parameter gibt dabei an ob der Modus gesetzt werden soll (ROAR_VS_TRUE) oder zurückgesetzt (ROAR_VS_FALSE). Natürlich kann er auch gekippt (ROAR_VS_TOGGLE) oder Abgefragt werden (ROAR_VS_ASK).&lt;br /&gt;
&lt;br /&gt;
=== Warten auf Stream Ende ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9677</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9677"/>
		<updated>2011-04-07T14:02:55Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Optionales */ + nen paar kapittel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist die VS API? ===&lt;br /&gt;
Die VS API (von engl. &amp;quot;&#039;&#039;&#039;V&#039;&#039;&#039;ery &#039;&#039;&#039;S&#039;&#039;&#039;imple &#039;&#039;&#039;API&#039;&#039;&#039;&amp;quot;) ist eine Schnittstelle auf hoher Ebene welche durch libroar angeboten wird. Sie ist stark an OpenBSD&#039;s sndio, aRtsc (KDE 2.x und 3.x) und pulsesimple angelehnt. Sie ist entwikelt worden um neuen Entwicklern und Entwicklern die mit den anderen Systemen zu tun hatten den Umstieg zu erleichtern.&lt;br /&gt;
&lt;br /&gt;
Die VS API bedient nur einen sehr kleinen Bereich von RoarAudios Fähigkeiten. Sie ist auch nur für das Abspielen und Aufnehmen von Streams geeignet und hat keine allgemeinen Steuer Funktionen. Sie kann aber, anders als bei ähnlichen ähnlichen Implementierungen der anderen Sound Systeme, beliebig mit der Haupt API kombiniert werden.&lt;br /&gt;
&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
Die VS API ist die im Moment höchste Schicht in libroar. Sie Abstrahiert mehre darunter liegenden Schichten wie die Simple API und VIO/DSTR.&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
Die VS API ist wie fast alles rund um RoarAudio Objekt Orientiert. Sie verwendet primär das so genannte VSS (von engl. &amp;quot;VS State&amp;quot;) Objekt das sowohl Steuer-, Daten-, Datei-Verbindung Objekte sowie alle Puffer und Speicher Objekte die intern verwendet werden enthält.&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
Der Streaming Mode ist der &#039;&#039;&#039;native&#039;&#039;&#039; Modus. Hier wird das VS Objeckt (VSS) geöffnet und dann mittels Schreibe- und Lese-Befehlen die Audio Daten zum Server geschickt beziehungsweise von dort abgeholt. Ist man Fertig so wird das VS Objekt wieder geschlossen.&lt;br /&gt;
&lt;br /&gt;
Zum öffnen gibt es zwei Funktionen: roar_vs_new_simple() und roar_vs_new_playback(). Letztere ist lediglich ein Aufruf auf die erstere und übergibt beim Richtungs und Subsystem Parameter (engl. &amp;quot;stream direction&amp;quot;) den wert ROAR_DIR_PLAY. Da oft nur Wiedergabe gewünscht ist, ist diese Funktion viel zu finden.&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden Audio Daten gelesen oder geschrieben. Dies geschieht mittels roar_vs_read() beziehungsweise roar_vs_write().&lt;br /&gt;
&lt;br /&gt;
Im letzten Schritt wird das Objekt wieder freigegeben und die Verbindungen geschlossen. Dies gescheit mittels roar_vs_close().&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten oder andere Steuerinformationen (Siehe weiter am Ende des Vortrags) gesetzt werden sollten diese vor dem ersten Aufruf von roar_vs_read() beziehungsweise roar_vs_write() gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_simple(server, &amp;quot;MyApp&amp;quot;, rate, channels, codec, bits, ROAR_DIR_PLAY, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { // main loop...&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde ein Stream zum Server &#039;&#039;server&#039;&#039; aufgebaut, Die Audio Parameter finden sich in &#039;&#039;rate&#039;&#039;, &#039;&#039;channels&#039;&#039;, &#039;&#039;codec&#039;&#039; und &#039;&#039;bits&#039;&#039;. Er ist zur Wiedergabe (ROAR_DIR_PLAY).&lt;br /&gt;
Die Variablen &#039;&#039;ret&#039;&#039; und &#039;&#039;err&#039; werden im nächsten Kapitel erläutert.&lt;br /&gt;
&lt;br /&gt;
Der Parameter &#039;&#039;server&#039;&#039; kann (und sollte meistens auch) den Wert NULL haben. Dies steht für das verbinden zum Default Server.&lt;br /&gt;
&lt;br /&gt;
Auch ist der Applikationsname (hier: &amp;quot;&#039;&#039;MyApp&#039;&#039;&amp;quot;) angegeben. Dieser sollte einen Sprechenden Namen für das Produkt beinhalten. Normalerweise das was man auf der Packung oder der CD Hülle in großen Lettern erwartet.&lt;br /&gt;
&lt;br /&gt;
Folgendes sollte nicht verwendet werden:&lt;br /&gt;
* Versionen (ggf. noch &#039;&#039;major releases&#039;&#039;),&lt;br /&gt;
* Datei Namen (&amp;quot;myapp.bin&amp;quot;, &amp;quot;myapp.exe&amp;quot;),&lt;br /&gt;
* Pfad Namen (&amp;quot;/usr/bin/player&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Auf die Audio Parameter soll hier nicht weiter eingegangen werden als diese Grundlagen Wissen sind den Zeitrahmen sprengen würden.&lt;br /&gt;
&lt;br /&gt;
Der Richtungs und Subsystem Parameter hat im oberen Beispiel den Wert ROAR_DIR_PLAY. Andere Werte sind als Beispiel ROAR_DIR_RECORD, ROAR_DIR_MONITOR oder auch ROAR_DIR_MIDI_IN. Genaueres sollte aus passenden Tabellen entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Der zweite Parameter bei der Funktion roar_vs_close() (hier ROAR_VS_FALSE) gibt an ob beim Schließen des Objekts auch auf Server Seite der Stream direkt beendet werden soll (ROAR_VS_TRUE) oder nicht (ROAR_VS_FALSE). Im Falle das er nicht direkt beendet werden soll (Normalfall) wird noch zu Ende gespielt bis alle Puffer leer sind. Dies macht vor allem bei komprimierten Codecs wie Ogg Vorbis (ROAR_CODEC_OGG_VORBIS) einen unterschied der Teilweise im Sekunden Bereich liegt.&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
Die VS API besitzt einen Datei Modus (engl. &amp;quot;file mode&amp;quot;) in dem sie direkt Dateien aber auch Streams abspielen kann. Dazu wird die Verbindung mittels roar_vs_new_from_file() geöffnet. Anschließend wird mittels roar_vs_run() oder roar_vs_iterate() der Datenstrom zum Server geschrieben. Am Schluss wird das Objekt normal mittels roar_vs_close() geschlossen.&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten, Lautstärke oder ähnliches gesetzt werden so sollte dies vor dem Aufruf von roar_vs_run() beziehungsweise vor dem ersten Aufruf von roar_vs_iterate() gesehen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_run(vss, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird zum Server &#039;&#039;&#039;server&#039;&#039;&#039; (sollte normalerweise NULL sein) verbunden. Der Klient Name ist &amp;quot;&#039;&#039;&#039;MyApp&#039;&#039;&#039;&amp;quot;. Als Dateiname wird &#039;&#039;&#039;filename&#039;&#039;&#039; verwendet. Danach wird roar_vs_run() aufgerufen was bis zum Dateiende (EOF) die Datei abspielt. Am ende wird ganz normal mittels roar_vs_close() die Verbindung geschlossen.&lt;br /&gt;
&lt;br /&gt;
Da roar_vs_run() so lange läuft bis es das Dateiende erreicht oder ein Fehler auftritt ist blockt ist es nicht (trivial) möglich im selben Kontext weitere Dinge parallel aus zu führen. Da viele Programme aber ohne hin einen eigenen Thread für die Tonausgabe verwenden ist dies eine geringe Einschränkung. Für alle anderen Felle gibt es roar_vs_iterate() wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { /* main loop */&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_iterate(vss, ROAR_VS_WAIT, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
Viele Applikationen erwarten einen Gepufferten Modus vor zu finden in dem sie einen Ring Puffer mit sehr definiertem zustand vor finden in den sie Arbeiten können. Dieses Vorgehen ist nur mit einem Lokalen Ringpuffer möglich der recht groß ist und viele Nachteile in sich birgt. Aus diesem Grunde wird dieser Modus nicht Empfohlen.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle soll auch nur Kurz erwähnt sein das dieser Existiert und mit der Funktion roar_vs_buffer() zu steuern ist. Weitere Informationen finden sich in der Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Um nicht weiter zu Verwirren direkt zum Nächsten Kapitel...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
Zur Lautstärkesteuerung stehen in der VS API drei Funktionen zur Verfügung: roar_vs_volume_mono(), roar_vs_volume_stereo() und roar_vs_volume_get().&lt;br /&gt;
&lt;br /&gt;
Die beiden Ersetzen setzen die Lautstärke, jeweils im Mono oder im Stereo Modus. Das heißt sollte eine Datenstrom eine andere Anzahl von Kanälen haben so rechnen diese Funktionen automatisch um.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke Skala geht vom 0 bis 1 (inklusive).&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird die Lautstärke auf 50% (-6dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = 0.5; /* 50% */&lt;br /&gt;
ret = roar_vs_volume_mono(vss, c, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im zweiten Beispiel wird der Linke Kanal auf 50% (-6dB) und der Rechte Kanal auf 25% (-12dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l = 0.5, r = 0.25;&lt;br /&gt;
ret = roar_vs_volume_stereo(vss, l, r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke lässt sich mittels roar_vs_volume_get() wie folgt auslesen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l, r;&lt;br /&gt;
ret = roar_vs_volume_get(vss, &amp;amp;l, &amp;amp;r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte die Mono-Lautstärke und nicht die L/R-Lautstärke gewünscht sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = (l + r)/2.0;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zum Stumm schalten sollte die Lautstärke nicht geändert werden sondern das Mute-Flag verwendet werden (Nächste Folie).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Non-Blocking ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Warten auf Stream Ende ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9676</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9676"/>
		<updated>2011-04-07T13:55:05Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Gepufferter Modus */ +Absichtlicher Stub&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist die VS API? ===&lt;br /&gt;
Die VS API (von engl. &amp;quot;&#039;&#039;&#039;V&#039;&#039;&#039;ery &#039;&#039;&#039;S&#039;&#039;&#039;imple &#039;&#039;&#039;API&#039;&#039;&#039;&amp;quot;) ist eine Schnittstelle auf hoher Ebene welche durch libroar angeboten wird. Sie ist stark an OpenBSD&#039;s sndio, aRtsc (KDE 2.x und 3.x) und pulsesimple angelehnt. Sie ist entwikelt worden um neuen Entwicklern und Entwicklern die mit den anderen Systemen zu tun hatten den Umstieg zu erleichtern.&lt;br /&gt;
&lt;br /&gt;
Die VS API bedient nur einen sehr kleinen Bereich von RoarAudios Fähigkeiten. Sie ist auch nur für das Abspielen und Aufnehmen von Streams geeignet und hat keine allgemeinen Steuer Funktionen. Sie kann aber, anders als bei ähnlichen ähnlichen Implementierungen der anderen Sound Systeme, beliebig mit der Haupt API kombiniert werden.&lt;br /&gt;
&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
Die VS API ist die im Moment höchste Schicht in libroar. Sie Abstrahiert mehre darunter liegenden Schichten wie die Simple API und VIO/DSTR.&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
Die VS API ist wie fast alles rund um RoarAudio Objekt Orientiert. Sie verwendet primär das so genannte VSS (von engl. &amp;quot;VS State&amp;quot;) Objekt das sowohl Steuer-, Daten-, Datei-Verbindung Objekte sowie alle Puffer und Speicher Objekte die intern verwendet werden enthält.&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
Der Streaming Mode ist der &#039;&#039;&#039;native&#039;&#039;&#039; Modus. Hier wird das VS Objeckt (VSS) geöffnet und dann mittels Schreibe- und Lese-Befehlen die Audio Daten zum Server geschickt beziehungsweise von dort abgeholt. Ist man Fertig so wird das VS Objekt wieder geschlossen.&lt;br /&gt;
&lt;br /&gt;
Zum öffnen gibt es zwei Funktionen: roar_vs_new_simple() und roar_vs_new_playback(). Letztere ist lediglich ein Aufruf auf die erstere und übergibt beim Richtungs und Subsystem Parameter (engl. &amp;quot;stream direction&amp;quot;) den wert ROAR_DIR_PLAY. Da oft nur Wiedergabe gewünscht ist, ist diese Funktion viel zu finden.&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden Audio Daten gelesen oder geschrieben. Dies geschieht mittels roar_vs_read() beziehungsweise roar_vs_write().&lt;br /&gt;
&lt;br /&gt;
Im letzten Schritt wird das Objekt wieder freigegeben und die Verbindungen geschlossen. Dies gescheit mittels roar_vs_close().&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten oder andere Steuerinformationen (Siehe weiter am Ende des Vortrags) gesetzt werden sollten diese vor dem ersten Aufruf von roar_vs_read() beziehungsweise roar_vs_write() gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_simple(server, &amp;quot;MyApp&amp;quot;, rate, channels, codec, bits, ROAR_DIR_PLAY, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { // main loop...&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde ein Stream zum Server &#039;&#039;server&#039;&#039; aufgebaut, Die Audio Parameter finden sich in &#039;&#039;rate&#039;&#039;, &#039;&#039;channels&#039;&#039;, &#039;&#039;codec&#039;&#039; und &#039;&#039;bits&#039;&#039;. Er ist zur Wiedergabe (ROAR_DIR_PLAY).&lt;br /&gt;
Die Variablen &#039;&#039;ret&#039;&#039; und &#039;&#039;err&#039; werden im nächsten Kapitel erläutert.&lt;br /&gt;
&lt;br /&gt;
Der Parameter &#039;&#039;server&#039;&#039; kann (und sollte meistens auch) den Wert NULL haben. Dies steht für das verbinden zum Default Server.&lt;br /&gt;
&lt;br /&gt;
Auch ist der Applikationsname (hier: &amp;quot;&#039;&#039;MyApp&#039;&#039;&amp;quot;) angegeben. Dieser sollte einen Sprechenden Namen für das Produkt beinhalten. Normalerweise das was man auf der Packung oder der CD Hülle in großen Lettern erwartet.&lt;br /&gt;
&lt;br /&gt;
Folgendes sollte nicht verwendet werden:&lt;br /&gt;
* Versionen (ggf. noch &#039;&#039;major releases&#039;&#039;),&lt;br /&gt;
* Datei Namen (&amp;quot;myapp.bin&amp;quot;, &amp;quot;myapp.exe&amp;quot;),&lt;br /&gt;
* Pfad Namen (&amp;quot;/usr/bin/player&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Auf die Audio Parameter soll hier nicht weiter eingegangen werden als diese Grundlagen Wissen sind den Zeitrahmen sprengen würden.&lt;br /&gt;
&lt;br /&gt;
Der Richtungs und Subsystem Parameter hat im oberen Beispiel den Wert ROAR_DIR_PLAY. Andere Werte sind als Beispiel ROAR_DIR_RECORD, ROAR_DIR_MONITOR oder auch ROAR_DIR_MIDI_IN. Genaueres sollte aus passenden Tabellen entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Der zweite Parameter bei der Funktion roar_vs_close() (hier ROAR_VS_FALSE) gibt an ob beim Schließen des Objekts auch auf Server Seite der Stream direkt beendet werden soll (ROAR_VS_TRUE) oder nicht (ROAR_VS_FALSE). Im Falle das er nicht direkt beendet werden soll (Normalfall) wird noch zu Ende gespielt bis alle Puffer leer sind. Dies macht vor allem bei komprimierten Codecs wie Ogg Vorbis (ROAR_CODEC_OGG_VORBIS) einen unterschied der Teilweise im Sekunden Bereich liegt.&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
Die VS API besitzt einen Datei Modus (engl. &amp;quot;file mode&amp;quot;) in dem sie direkt Dateien aber auch Streams abspielen kann. Dazu wird die Verbindung mittels roar_vs_new_from_file() geöffnet. Anschließend wird mittels roar_vs_run() oder roar_vs_iterate() der Datenstrom zum Server geschrieben. Am Schluss wird das Objekt normal mittels roar_vs_close() geschlossen.&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten, Lautstärke oder ähnliches gesetzt werden so sollte dies vor dem Aufruf von roar_vs_run() beziehungsweise vor dem ersten Aufruf von roar_vs_iterate() gesehen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_run(vss, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird zum Server &#039;&#039;&#039;server&#039;&#039;&#039; (sollte normalerweise NULL sein) verbunden. Der Klient Name ist &amp;quot;&#039;&#039;&#039;MyApp&#039;&#039;&#039;&amp;quot;. Als Dateiname wird &#039;&#039;&#039;filename&#039;&#039;&#039; verwendet. Danach wird roar_vs_run() aufgerufen was bis zum Dateiende (EOF) die Datei abspielt. Am ende wird ganz normal mittels roar_vs_close() die Verbindung geschlossen.&lt;br /&gt;
&lt;br /&gt;
Da roar_vs_run() so lange läuft bis es das Dateiende erreicht oder ein Fehler auftritt ist blockt ist es nicht (trivial) möglich im selben Kontext weitere Dinge parallel aus zu führen. Da viele Programme aber ohne hin einen eigenen Thread für die Tonausgabe verwenden ist dies eine geringe Einschränkung. Für alle anderen Felle gibt es roar_vs_iterate() wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { /* main loop */&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_iterate(vss, ROAR_VS_WAIT, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
Viele Applikationen erwarten einen Gepufferten Modus vor zu finden in dem sie einen Ring Puffer mit sehr definiertem zustand vor finden in den sie Arbeiten können. Dieses Vorgehen ist nur mit einem Lokalen Ringpuffer möglich der recht groß ist und viele Nachteile in sich birgt. Aus diesem Grunde wird dieser Modus nicht Empfohlen.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle soll auch nur Kurz erwähnt sein das dieser Existiert und mit der Funktion roar_vs_buffer() zu steuern ist. Weitere Informationen finden sich in der Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Um nicht weiter zu Verwirren direkt zum Nächsten Kapitel...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
Zur Lautstärkesteuerung stehen in der VS API drei Funktionen zur Verfügung: roar_vs_volume_mono(), roar_vs_volume_stereo() und roar_vs_volume_get().&lt;br /&gt;
&lt;br /&gt;
Die beiden Ersetzen setzen die Lautstärke, jeweils im Mono oder im Stereo Modus. Das heißt sollte eine Datenstrom eine andere Anzahl von Kanälen haben so rechnen diese Funktionen automatisch um.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke Skala geht vom 0 bis 1 (inklusive).&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird die Lautstärke auf 50% (-6dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = 0.5; /* 50% */&lt;br /&gt;
ret = roar_vs_volume_mono(vss, c, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im zweiten Beispiel wird der Linke Kanal auf 50% (-6dB) und der Rechte Kanal auf 25% (-12dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l = 0.5, r = 0.25;&lt;br /&gt;
ret = roar_vs_volume_stereo(vss, l, r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke lässt sich mittels roar_vs_volume_get() wie folgt auslesen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l, r;&lt;br /&gt;
ret = roar_vs_volume_get(vss, &amp;amp;l, &amp;amp;r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte die Mono-Lautstärke und nicht die L/R-Lautstärke gewünscht sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = (l + r)/2.0;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zum Stumm schalten sollte die Lautstärke nicht geändert werden sondern das Mute-Flag verwendet werden (Nächste Folie).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9675</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9675"/>
		<updated>2011-04-07T13:45:39Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Was ist die VS API? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist die VS API? ===&lt;br /&gt;
Die VS API (von engl. &amp;quot;&#039;&#039;&#039;V&#039;&#039;&#039;ery &#039;&#039;&#039;S&#039;&#039;&#039;imple &#039;&#039;&#039;API&#039;&#039;&#039;&amp;quot;) ist eine Schnittstelle auf hoher Ebene welche durch libroar angeboten wird. Sie ist stark an OpenBSD&#039;s sndio, aRtsc (KDE 2.x und 3.x) und pulsesimple angelehnt. Sie ist entwikelt worden um neuen Entwicklern und Entwicklern die mit den anderen Systemen zu tun hatten den Umstieg zu erleichtern.&lt;br /&gt;
&lt;br /&gt;
Die VS API bedient nur einen sehr kleinen Bereich von RoarAudios Fähigkeiten. Sie ist auch nur für das Abspielen und Aufnehmen von Streams geeignet und hat keine allgemeinen Steuer Funktionen. Sie kann aber, anders als bei ähnlichen ähnlichen Implementierungen der anderen Sound Systeme, beliebig mit der Haupt API kombiniert werden.&lt;br /&gt;
&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
Die VS API ist die im Moment höchste Schicht in libroar. Sie Abstrahiert mehre darunter liegenden Schichten wie die Simple API und VIO/DSTR.&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
Die VS API ist wie fast alles rund um RoarAudio Objekt Orientiert. Sie verwendet primär das so genannte VSS (von engl. &amp;quot;VS State&amp;quot;) Objekt das sowohl Steuer-, Daten-, Datei-Verbindung Objekte sowie alle Puffer und Speicher Objekte die intern verwendet werden enthält.&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
Der Streaming Mode ist der &#039;&#039;&#039;native&#039;&#039;&#039; Modus. Hier wird das VS Objeckt (VSS) geöffnet und dann mittels Schreibe- und Lese-Befehlen die Audio Daten zum Server geschickt beziehungsweise von dort abgeholt. Ist man Fertig so wird das VS Objekt wieder geschlossen.&lt;br /&gt;
&lt;br /&gt;
Zum öffnen gibt es zwei Funktionen: roar_vs_new_simple() und roar_vs_new_playback(). Letztere ist lediglich ein Aufruf auf die erstere und übergibt beim Richtungs und Subsystem Parameter (engl. &amp;quot;stream direction&amp;quot;) den wert ROAR_DIR_PLAY. Da oft nur Wiedergabe gewünscht ist, ist diese Funktion viel zu finden.&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden Audio Daten gelesen oder geschrieben. Dies geschieht mittels roar_vs_read() beziehungsweise roar_vs_write().&lt;br /&gt;
&lt;br /&gt;
Im letzten Schritt wird das Objekt wieder freigegeben und die Verbindungen geschlossen. Dies gescheit mittels roar_vs_close().&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten oder andere Steuerinformationen (Siehe weiter am Ende des Vortrags) gesetzt werden sollten diese vor dem ersten Aufruf von roar_vs_read() beziehungsweise roar_vs_write() gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_simple(server, &amp;quot;MyApp&amp;quot;, rate, channels, codec, bits, ROAR_DIR_PLAY, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { // main loop...&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde ein Stream zum Server &#039;&#039;server&#039;&#039; aufgebaut, Die Audio Parameter finden sich in &#039;&#039;rate&#039;&#039;, &#039;&#039;channels&#039;&#039;, &#039;&#039;codec&#039;&#039; und &#039;&#039;bits&#039;&#039;. Er ist zur Wiedergabe (ROAR_DIR_PLAY).&lt;br /&gt;
Die Variablen &#039;&#039;ret&#039;&#039; und &#039;&#039;err&#039; werden im nächsten Kapitel erläutert.&lt;br /&gt;
&lt;br /&gt;
Der Parameter &#039;&#039;server&#039;&#039; kann (und sollte meistens auch) den Wert NULL haben. Dies steht für das verbinden zum Default Server.&lt;br /&gt;
&lt;br /&gt;
Auch ist der Applikationsname (hier: &amp;quot;&#039;&#039;MyApp&#039;&#039;&amp;quot;) angegeben. Dieser sollte einen Sprechenden Namen für das Produkt beinhalten. Normalerweise das was man auf der Packung oder der CD Hülle in großen Lettern erwartet.&lt;br /&gt;
&lt;br /&gt;
Folgendes sollte nicht verwendet werden:&lt;br /&gt;
* Versionen (ggf. noch &#039;&#039;major releases&#039;&#039;),&lt;br /&gt;
* Datei Namen (&amp;quot;myapp.bin&amp;quot;, &amp;quot;myapp.exe&amp;quot;),&lt;br /&gt;
* Pfad Namen (&amp;quot;/usr/bin/player&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Auf die Audio Parameter soll hier nicht weiter eingegangen werden als diese Grundlagen Wissen sind den Zeitrahmen sprengen würden.&lt;br /&gt;
&lt;br /&gt;
Der Richtungs und Subsystem Parameter hat im oberen Beispiel den Wert ROAR_DIR_PLAY. Andere Werte sind als Beispiel ROAR_DIR_RECORD, ROAR_DIR_MONITOR oder auch ROAR_DIR_MIDI_IN. Genaueres sollte aus passenden Tabellen entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Der zweite Parameter bei der Funktion roar_vs_close() (hier ROAR_VS_FALSE) gibt an ob beim Schließen des Objekts auch auf Server Seite der Stream direkt beendet werden soll (ROAR_VS_TRUE) oder nicht (ROAR_VS_FALSE). Im Falle das er nicht direkt beendet werden soll (Normalfall) wird noch zu Ende gespielt bis alle Puffer leer sind. Dies macht vor allem bei komprimierten Codecs wie Ogg Vorbis (ROAR_CODEC_OGG_VORBIS) einen unterschied der Teilweise im Sekunden Bereich liegt.&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
Die VS API besitzt einen Datei Modus (engl. &amp;quot;file mode&amp;quot;) in dem sie direkt Dateien aber auch Streams abspielen kann. Dazu wird die Verbindung mittels roar_vs_new_from_file() geöffnet. Anschließend wird mittels roar_vs_run() oder roar_vs_iterate() der Datenstrom zum Server geschrieben. Am Schluss wird das Objekt normal mittels roar_vs_close() geschlossen.&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten, Lautstärke oder ähnliches gesetzt werden so sollte dies vor dem Aufruf von roar_vs_run() beziehungsweise vor dem ersten Aufruf von roar_vs_iterate() gesehen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_run(vss, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird zum Server &#039;&#039;&#039;server&#039;&#039;&#039; (sollte normalerweise NULL sein) verbunden. Der Klient Name ist &amp;quot;&#039;&#039;&#039;MyApp&#039;&#039;&#039;&amp;quot;. Als Dateiname wird &#039;&#039;&#039;filename&#039;&#039;&#039; verwendet. Danach wird roar_vs_run() aufgerufen was bis zum Dateiende (EOF) die Datei abspielt. Am ende wird ganz normal mittels roar_vs_close() die Verbindung geschlossen.&lt;br /&gt;
&lt;br /&gt;
Da roar_vs_run() so lange läuft bis es das Dateiende erreicht oder ein Fehler auftritt ist blockt ist es nicht (trivial) möglich im selben Kontext weitere Dinge parallel aus zu führen. Da viele Programme aber ohne hin einen eigenen Thread für die Tonausgabe verwenden ist dies eine geringe Einschränkung. Für alle anderen Felle gibt es roar_vs_iterate() wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { /* main loop */&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_iterate(vss, ROAR_VS_WAIT, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
Zur Lautstärkesteuerung stehen in der VS API drei Funktionen zur Verfügung: roar_vs_volume_mono(), roar_vs_volume_stereo() und roar_vs_volume_get().&lt;br /&gt;
&lt;br /&gt;
Die beiden Ersetzen setzen die Lautstärke, jeweils im Mono oder im Stereo Modus. Das heißt sollte eine Datenstrom eine andere Anzahl von Kanälen haben so rechnen diese Funktionen automatisch um.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke Skala geht vom 0 bis 1 (inklusive).&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird die Lautstärke auf 50% (-6dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = 0.5; /* 50% */&lt;br /&gt;
ret = roar_vs_volume_mono(vss, c, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im zweiten Beispiel wird der Linke Kanal auf 50% (-6dB) und der Rechte Kanal auf 25% (-12dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l = 0.5, r = 0.25;&lt;br /&gt;
ret = roar_vs_volume_stereo(vss, l, r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke lässt sich mittels roar_vs_volume_get() wie folgt auslesen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l, r;&lt;br /&gt;
ret = roar_vs_volume_get(vss, &amp;amp;l, &amp;amp;r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte die Mono-Lautstärke und nicht die L/R-Lautstärke gewünscht sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = (l + r)/2.0;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zum Stumm schalten sollte die Lautstärke nicht geändert werden sondern das Mute-Flag verwendet werden (Nächste Folie).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9674</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9674"/>
		<updated>2011-04-07T13:37:17Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Streaming Modus */ +Inhalt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist die VS API? ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
Die VS API ist die im Moment höchste Schicht in libroar. Sie Abstrahiert mehre darunter liegenden Schichten wie die Simple API und VIO/DSTR.&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
Die VS API ist wie fast alles rund um RoarAudio Objekt Orientiert. Sie verwendet primär das so genannte VSS (von engl. &amp;quot;VS State&amp;quot;) Objekt das sowohl Steuer-, Daten-, Datei-Verbindung Objekte sowie alle Puffer und Speicher Objekte die intern verwendet werden enthält.&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
Der Streaming Mode ist der &#039;&#039;&#039;native&#039;&#039;&#039; Modus. Hier wird das VS Objeckt (VSS) geöffnet und dann mittels Schreibe- und Lese-Befehlen die Audio Daten zum Server geschickt beziehungsweise von dort abgeholt. Ist man Fertig so wird das VS Objekt wieder geschlossen.&lt;br /&gt;
&lt;br /&gt;
Zum öffnen gibt es zwei Funktionen: roar_vs_new_simple() und roar_vs_new_playback(). Letztere ist lediglich ein Aufruf auf die erstere und übergibt beim Richtungs und Subsystem Parameter (engl. &amp;quot;stream direction&amp;quot;) den wert ROAR_DIR_PLAY. Da oft nur Wiedergabe gewünscht ist, ist diese Funktion viel zu finden.&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden Audio Daten gelesen oder geschrieben. Dies geschieht mittels roar_vs_read() beziehungsweise roar_vs_write().&lt;br /&gt;
&lt;br /&gt;
Im letzten Schritt wird das Objekt wieder freigegeben und die Verbindungen geschlossen. Dies gescheit mittels roar_vs_close().&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten oder andere Steuerinformationen (Siehe weiter am Ende des Vortrags) gesetzt werden sollten diese vor dem ersten Aufruf von roar_vs_read() beziehungsweise roar_vs_write() gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_simple(server, &amp;quot;MyApp&amp;quot;, rate, channels, codec, bits, ROAR_DIR_PLAY, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { // main loop...&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde ein Stream zum Server &#039;&#039;server&#039;&#039; aufgebaut, Die Audio Parameter finden sich in &#039;&#039;rate&#039;&#039;, &#039;&#039;channels&#039;&#039;, &#039;&#039;codec&#039;&#039; und &#039;&#039;bits&#039;&#039;. Er ist zur Wiedergabe (ROAR_DIR_PLAY).&lt;br /&gt;
Die Variablen &#039;&#039;ret&#039;&#039; und &#039;&#039;err&#039; werden im nächsten Kapitel erläutert.&lt;br /&gt;
&lt;br /&gt;
Der Parameter &#039;&#039;server&#039;&#039; kann (und sollte meistens auch) den Wert NULL haben. Dies steht für das verbinden zum Default Server.&lt;br /&gt;
&lt;br /&gt;
Auch ist der Applikationsname (hier: &amp;quot;&#039;&#039;MyApp&#039;&#039;&amp;quot;) angegeben. Dieser sollte einen Sprechenden Namen für das Produkt beinhalten. Normalerweise das was man auf der Packung oder der CD Hülle in großen Lettern erwartet.&lt;br /&gt;
&lt;br /&gt;
Folgendes sollte nicht verwendet werden:&lt;br /&gt;
* Versionen (ggf. noch &#039;&#039;major releases&#039;&#039;),&lt;br /&gt;
* Datei Namen (&amp;quot;myapp.bin&amp;quot;, &amp;quot;myapp.exe&amp;quot;),&lt;br /&gt;
* Pfad Namen (&amp;quot;/usr/bin/player&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Auf die Audio Parameter soll hier nicht weiter eingegangen werden als diese Grundlagen Wissen sind den Zeitrahmen sprengen würden.&lt;br /&gt;
&lt;br /&gt;
Der Richtungs und Subsystem Parameter hat im oberen Beispiel den Wert ROAR_DIR_PLAY. Andere Werte sind als Beispiel ROAR_DIR_RECORD, ROAR_DIR_MONITOR oder auch ROAR_DIR_MIDI_IN. Genaueres sollte aus passenden Tabellen entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Der zweite Parameter bei der Funktion roar_vs_close() (hier ROAR_VS_FALSE) gibt an ob beim Schließen des Objekts auch auf Server Seite der Stream direkt beendet werden soll (ROAR_VS_TRUE) oder nicht (ROAR_VS_FALSE). Im Falle das er nicht direkt beendet werden soll (Normalfall) wird noch zu Ende gespielt bis alle Puffer leer sind. Dies macht vor allem bei komprimierten Codecs wie Ogg Vorbis (ROAR_CODEC_OGG_VORBIS) einen unterschied der Teilweise im Sekunden Bereich liegt.&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
Die VS API besitzt einen Datei Modus (engl. &amp;quot;file mode&amp;quot;) in dem sie direkt Dateien aber auch Streams abspielen kann. Dazu wird die Verbindung mittels roar_vs_new_from_file() geöffnet. Anschließend wird mittels roar_vs_run() oder roar_vs_iterate() der Datenstrom zum Server geschrieben. Am Schluss wird das Objekt normal mittels roar_vs_close() geschlossen.&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten, Lautstärke oder ähnliches gesetzt werden so sollte dies vor dem Aufruf von roar_vs_run() beziehungsweise vor dem ersten Aufruf von roar_vs_iterate() gesehen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_run(vss, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird zum Server &#039;&#039;&#039;server&#039;&#039;&#039; (sollte normalerweise NULL sein) verbunden. Der Klient Name ist &amp;quot;&#039;&#039;&#039;MyApp&#039;&#039;&#039;&amp;quot;. Als Dateiname wird &#039;&#039;&#039;filename&#039;&#039;&#039; verwendet. Danach wird roar_vs_run() aufgerufen was bis zum Dateiende (EOF) die Datei abspielt. Am ende wird ganz normal mittels roar_vs_close() die Verbindung geschlossen.&lt;br /&gt;
&lt;br /&gt;
Da roar_vs_run() so lange läuft bis es das Dateiende erreicht oder ein Fehler auftritt ist blockt ist es nicht (trivial) möglich im selben Kontext weitere Dinge parallel aus zu führen. Da viele Programme aber ohne hin einen eigenen Thread für die Tonausgabe verwenden ist dies eine geringe Einschränkung. Für alle anderen Felle gibt es roar_vs_iterate() wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { /* main loop */&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_iterate(vss, ROAR_VS_WAIT, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
Zur Lautstärkesteuerung stehen in der VS API drei Funktionen zur Verfügung: roar_vs_volume_mono(), roar_vs_volume_stereo() und roar_vs_volume_get().&lt;br /&gt;
&lt;br /&gt;
Die beiden Ersetzen setzen die Lautstärke, jeweils im Mono oder im Stereo Modus. Das heißt sollte eine Datenstrom eine andere Anzahl von Kanälen haben so rechnen diese Funktionen automatisch um.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke Skala geht vom 0 bis 1 (inklusive).&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird die Lautstärke auf 50% (-6dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = 0.5; /* 50% */&lt;br /&gt;
ret = roar_vs_volume_mono(vss, c, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im zweiten Beispiel wird der Linke Kanal auf 50% (-6dB) und der Rechte Kanal auf 25% (-12dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l = 0.5, r = 0.25;&lt;br /&gt;
ret = roar_vs_volume_stereo(vss, l, r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke lässt sich mittels roar_vs_volume_get() wie folgt auslesen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l, r;&lt;br /&gt;
ret = roar_vs_volume_get(vss, &amp;amp;l, &amp;amp;r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte die Mono-Lautstärke und nicht die L/R-Lautstärke gewünscht sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = (l + r)/2.0;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zum Stumm schalten sollte die Lautstärke nicht geändert werden sondern das Mute-Flag verwendet werden (Nächste Folie).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9673</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9673"/>
		<updated>2011-04-07T11:32:26Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Vortrag */ + /* Was ist die VS API? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist die VS API? ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
Die VS API ist die im Moment höchste Schicht in libroar. Sie Abstrahiert mehre darunter liegenden Schichten wie die Simple API und VIO/DSTR.&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
Die VS API ist wie fast alles rund um RoarAudio Objekt Orientiert. Sie verwendet primär das so genannte VSS (von engl. &amp;quot;VS State&amp;quot;) Objekt das sowohl Steuer-, Daten-, Datei-Verbindung Objekte sowie alle Puffer und Speicher Objekte die intern verwendet werden enthält.&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
Die VS API besitzt einen Datei Modus (engl. &amp;quot;file mode&amp;quot;) in dem sie direkt Dateien aber auch Streams abspielen kann. Dazu wird die Verbindung mittels roar_vs_new_from_file() geöffnet. Anschließend wird mittels roar_vs_run() oder roar_vs_iterate() der Datenstrom zum Server geschrieben. Am Schluss wird das Objekt normal mittels roar_vs_close() geschlossen.&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten, Lautstärke oder ähnliches gesetzt werden so sollte dies vor dem Aufruf von roar_vs_run() beziehungsweise vor dem ersten Aufruf von roar_vs_iterate() gesehen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_run(vss, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird zum Server &#039;&#039;&#039;server&#039;&#039;&#039; (sollte normalerweise NULL sein) verbunden. Der Klient Name ist &amp;quot;&#039;&#039;&#039;MyApp&#039;&#039;&#039;&amp;quot;. Als Dateiname wird &#039;&#039;&#039;filename&#039;&#039;&#039; verwendet. Danach wird roar_vs_run() aufgerufen was bis zum Dateiende (EOF) die Datei abspielt. Am ende wird ganz normal mittels roar_vs_close() die Verbindung geschlossen.&lt;br /&gt;
&lt;br /&gt;
Da roar_vs_run() so lange läuft bis es das Dateiende erreicht oder ein Fehler auftritt ist blockt ist es nicht (trivial) möglich im selben Kontext weitere Dinge parallel aus zu führen. Da viele Programme aber ohne hin einen eigenen Thread für die Tonausgabe verwenden ist dies eine geringe Einschränkung. Für alle anderen Felle gibt es roar_vs_iterate() wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { /* main loop */&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_iterate(vss, ROAR_VS_WAIT, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
Zur Lautstärkesteuerung stehen in der VS API drei Funktionen zur Verfügung: roar_vs_volume_mono(), roar_vs_volume_stereo() und roar_vs_volume_get().&lt;br /&gt;
&lt;br /&gt;
Die beiden Ersetzen setzen die Lautstärke, jeweils im Mono oder im Stereo Modus. Das heißt sollte eine Datenstrom eine andere Anzahl von Kanälen haben so rechnen diese Funktionen automatisch um.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke Skala geht vom 0 bis 1 (inklusive).&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird die Lautstärke auf 50% (-6dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = 0.5; /* 50% */&lt;br /&gt;
ret = roar_vs_volume_mono(vss, c, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im zweiten Beispiel wird der Linke Kanal auf 50% (-6dB) und der Rechte Kanal auf 25% (-12dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l = 0.5, r = 0.25;&lt;br /&gt;
ret = roar_vs_volume_stereo(vss, l, r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke lässt sich mittels roar_vs_volume_get() wie folgt auslesen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l, r;&lt;br /&gt;
ret = roar_vs_volume_get(vss, &amp;amp;l, &amp;amp;r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte die Mono-Lautstärke und nicht die L/R-Lautstärke gewünscht sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = (l + r)/2.0;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zum Stumm schalten sollte die Lautstärke nicht geändert werden sondern das Mute-Flag verwendet werden (Nächste Folie).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9672</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9672"/>
		<updated>2011-04-07T11:28:17Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Schichten */ bissel text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
Die VS API ist die im Moment höchste Schicht in libroar. Sie Abstrahiert mehre darunter liegenden Schichten wie die Simple API und VIO/DSTR.&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
Die VS API ist wie fast alles rund um RoarAudio Objekt Orientiert. Sie verwendet primär das so genannte VSS (von engl. &amp;quot;VS State&amp;quot;) Objekt das sowohl Steuer-, Daten-, Datei-Verbindung Objekte sowie alle Puffer und Speicher Objekte die intern verwendet werden enthält.&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
Die VS API besitzt einen Datei Modus (engl. &amp;quot;file mode&amp;quot;) in dem sie direkt Dateien aber auch Streams abspielen kann. Dazu wird die Verbindung mittels roar_vs_new_from_file() geöffnet. Anschließend wird mittels roar_vs_run() oder roar_vs_iterate() der Datenstrom zum Server geschrieben. Am Schluss wird das Objekt normal mittels roar_vs_close() geschlossen.&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten, Lautstärke oder ähnliches gesetzt werden so sollte dies vor dem Aufruf von roar_vs_run() beziehungsweise vor dem ersten Aufruf von roar_vs_iterate() gesehen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_run(vss, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird zum Server &#039;&#039;&#039;server&#039;&#039;&#039; (sollte normalerweise NULL sein) verbunden. Der Klient Name ist &amp;quot;&#039;&#039;&#039;MyApp&#039;&#039;&#039;&amp;quot;. Als Dateiname wird &#039;&#039;&#039;filename&#039;&#039;&#039; verwendet. Danach wird roar_vs_run() aufgerufen was bis zum Dateiende (EOF) die Datei abspielt. Am ende wird ganz normal mittels roar_vs_close() die Verbindung geschlossen.&lt;br /&gt;
&lt;br /&gt;
Da roar_vs_run() so lange läuft bis es das Dateiende erreicht oder ein Fehler auftritt ist blockt ist es nicht (trivial) möglich im selben Kontext weitere Dinge parallel aus zu führen. Da viele Programme aber ohne hin einen eigenen Thread für die Tonausgabe verwenden ist dies eine geringe Einschränkung. Für alle anderen Felle gibt es roar_vs_iterate() wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { /* main loop */&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_iterate(vss, ROAR_VS_WAIT, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
Zur Lautstärkesteuerung stehen in der VS API drei Funktionen zur Verfügung: roar_vs_volume_mono(), roar_vs_volume_stereo() und roar_vs_volume_get().&lt;br /&gt;
&lt;br /&gt;
Die beiden Ersetzen setzen die Lautstärke, jeweils im Mono oder im Stereo Modus. Das heißt sollte eine Datenstrom eine andere Anzahl von Kanälen haben so rechnen diese Funktionen automatisch um.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke Skala geht vom 0 bis 1 (inklusive).&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird die Lautstärke auf 50% (-6dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = 0.5; /* 50% */&lt;br /&gt;
ret = roar_vs_volume_mono(vss, c, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im zweiten Beispiel wird der Linke Kanal auf 50% (-6dB) und der Rechte Kanal auf 25% (-12dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l = 0.5, r = 0.25;&lt;br /&gt;
ret = roar_vs_volume_stereo(vss, l, r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke lässt sich mittels roar_vs_volume_get() wie folgt auslesen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l, r;&lt;br /&gt;
ret = roar_vs_volume_get(vss, &amp;amp;l, &amp;amp;r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte die Mono-Lautstärke und nicht die L/R-Lautstärke gewünscht sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = (l + r)/2.0;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zum Stumm schalten sollte die Lautstärke nicht geändert werden sondern das Mute-Flag verwendet werden (Nächste Folie).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9671</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9671"/>
		<updated>2011-04-07T11:11:18Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* OOP */ bissel text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
Die VS API ist wie fast alles rund um RoarAudio Objekt Orientiert. Sie verwendet primär das so genannte VSS (von engl. &amp;quot;VS State&amp;quot;) Objekt das sowohl Steuer-, Daten-, Datei-Verbindung Objekte sowie alle Puffer und Speicher Objekte die intern verwendet werden enthält.&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
Die VS API besitzt einen Datei Modus (engl. &amp;quot;file mode&amp;quot;) in dem sie direkt Dateien aber auch Streams abspielen kann. Dazu wird die Verbindung mittels roar_vs_new_from_file() geöffnet. Anschließend wird mittels roar_vs_run() oder roar_vs_iterate() der Datenstrom zum Server geschrieben. Am Schluss wird das Objekt normal mittels roar_vs_close() geschlossen.&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten, Lautstärke oder ähnliches gesetzt werden so sollte dies vor dem Aufruf von roar_vs_run() beziehungsweise vor dem ersten Aufruf von roar_vs_iterate() gesehen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_run(vss, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird zum Server &#039;&#039;&#039;server&#039;&#039;&#039; (sollte normalerweise NULL sein) verbunden. Der Klient Name ist &amp;quot;&#039;&#039;&#039;MyApp&#039;&#039;&#039;&amp;quot;. Als Dateiname wird &#039;&#039;&#039;filename&#039;&#039;&#039; verwendet. Danach wird roar_vs_run() aufgerufen was bis zum Dateiende (EOF) die Datei abspielt. Am ende wird ganz normal mittels roar_vs_close() die Verbindung geschlossen.&lt;br /&gt;
&lt;br /&gt;
Da roar_vs_run() so lange läuft bis es das Dateiende erreicht oder ein Fehler auftritt ist blockt ist es nicht (trivial) möglich im selben Kontext weitere Dinge parallel aus zu führen. Da viele Programme aber ohne hin einen eigenen Thread für die Tonausgabe verwenden ist dies eine geringe Einschränkung. Für alle anderen Felle gibt es roar_vs_iterate() wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { /* main loop */&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_iterate(vss, ROAR_VS_WAIT, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
Zur Lautstärkesteuerung stehen in der VS API drei Funktionen zur Verfügung: roar_vs_volume_mono(), roar_vs_volume_stereo() und roar_vs_volume_get().&lt;br /&gt;
&lt;br /&gt;
Die beiden Ersetzen setzen die Lautstärke, jeweils im Mono oder im Stereo Modus. Das heißt sollte eine Datenstrom eine andere Anzahl von Kanälen haben so rechnen diese Funktionen automatisch um.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke Skala geht vom 0 bis 1 (inklusive).&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird die Lautstärke auf 50% (-6dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = 0.5; /* 50% */&lt;br /&gt;
ret = roar_vs_volume_mono(vss, c, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im zweiten Beispiel wird der Linke Kanal auf 50% (-6dB) und der Rechte Kanal auf 25% (-12dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l = 0.5, r = 0.25;&lt;br /&gt;
ret = roar_vs_volume_stereo(vss, l, r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke lässt sich mittels roar_vs_volume_get() wie folgt auslesen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l, r;&lt;br /&gt;
ret = roar_vs_volume_get(vss, &amp;amp;l, &amp;amp;r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte die Mono-Lautstärke und nicht die L/R-Lautstärke gewünscht sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = (l + r)/2.0;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zum Stumm schalten sollte die Lautstärke nicht geändert werden sondern das Mute-Flag verwendet werden (Nächste Folie).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9670</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9670"/>
		<updated>2011-04-07T11:01:25Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Datei Modus */ +Inhalt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
Die VS API besitzt einen Datei Modus (engl. &amp;quot;file mode&amp;quot;) in dem sie direkt Dateien aber auch Streams abspielen kann. Dazu wird die Verbindung mittels roar_vs_new_from_file() geöffnet. Anschließend wird mittels roar_vs_run() oder roar_vs_iterate() der Datenstrom zum Server geschrieben. Am Schluss wird das Objekt normal mittels roar_vs_close() geschlossen.&lt;br /&gt;
&lt;br /&gt;
Sollten Meta Daten, Lautstärke oder ähnliches gesetzt werden so sollte dies vor dem Aufruf von roar_vs_run() beziehungsweise vor dem ersten Aufruf von roar_vs_iterate() gesehen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_run(vss, &amp;amp;err);&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird zum Server &#039;&#039;&#039;server&#039;&#039;&#039; (sollte normalerweise NULL sein) verbunden. Der Klient Name ist &amp;quot;&#039;&#039;&#039;MyApp&#039;&#039;&#039;&amp;quot;. Als Dateiname wird &#039;&#039;&#039;filename&#039;&#039;&#039; verwendet. Danach wird roar_vs_run() aufgerufen was bis zum Dateiende (EOF) die Datei abspielt. Am ende wird ganz normal mittels roar_vs_close() die Verbindung geschlossen.&lt;br /&gt;
&lt;br /&gt;
Da roar_vs_run() so lange läuft bis es das Dateiende erreicht oder ein Fehler auftritt ist blockt ist es nicht (trivial) möglich im selben Kontext weitere Dinge parallel aus zu führen. Da viele Programme aber ohne hin einen eigenen Thread für die Tonausgabe verwenden ist dies eine geringe Einschränkung. Für alle anderen Felle gibt es roar_vs_iterate() wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;roar_vs_t * vss = roar_vs_new_from_file(server, &amp;quot;MyApp&amp;quot;, filename, &amp;amp;err);&lt;br /&gt;
&lt;br /&gt;
while (alive) { /* main loop */&lt;br /&gt;
 // ...&lt;br /&gt;
 ret = roar_vs_iterate(vss, ROAR_VS_WAIT, &amp;amp;err);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ret = roar_vs_close(vss, ROAR_VS_FALSE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
Zur Lautstärkesteuerung stehen in der VS API drei Funktionen zur Verfügung: roar_vs_volume_mono(), roar_vs_volume_stereo() und roar_vs_volume_get().&lt;br /&gt;
&lt;br /&gt;
Die beiden Ersetzen setzen die Lautstärke, jeweils im Mono oder im Stereo Modus. Das heißt sollte eine Datenstrom eine andere Anzahl von Kanälen haben so rechnen diese Funktionen automatisch um.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke Skala geht vom 0 bis 1 (inklusive).&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird die Lautstärke auf 50% (-6dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = 0.5; /* 50% */&lt;br /&gt;
ret = roar_vs_volume_mono(vss, c, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im zweiten Beispiel wird der Linke Kanal auf 50% (-6dB) und der Rechte Kanal auf 25% (-12dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l = 0.5, r = 0.25;&lt;br /&gt;
ret = roar_vs_volume_stereo(vss, l, r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke lässt sich mittels roar_vs_volume_get() wie folgt auslesen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l, r;&lt;br /&gt;
ret = roar_vs_volume_get(vss, &amp;amp;l, &amp;amp;r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte die Mono-Lautstärke und nicht die L/R-Lautstärke gewünscht sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = (l + r)/2.0;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zum Stumm schalten sollte die Lautstärke nicht geändert werden sondern das Mute-Flag verwendet werden (Nächste Folie).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9669</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9669"/>
		<updated>2011-04-07T10:27:57Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Lautstärkesteuerung */ +Inhalt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
Zur Lautstärkesteuerung stehen in der VS API drei Funktionen zur Verfügung: roar_vs_volume_mono(), roar_vs_volume_stereo() und roar_vs_volume_get().&lt;br /&gt;
&lt;br /&gt;
Die beiden Ersetzen setzen die Lautstärke, jeweils im Mono oder im Stereo Modus. Das heißt sollte eine Datenstrom eine andere Anzahl von Kanälen haben so rechnen diese Funktionen automatisch um.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke Skala geht vom 0 bis 1 (inklusive).&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird die Lautstärke auf 50% (-6dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = 0.5; /* 50% */&lt;br /&gt;
ret = roar_vs_volume_mono(vss, c, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im zweiten Beispiel wird der Linke Kanal auf 50% (-6dB) und der Rechte Kanal auf 25% (-12dB) eingestellt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l = 0.5, r = 0.25;&lt;br /&gt;
ret = roar_vs_volume_stereo(vss, l, r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke lässt sich mittels roar_vs_volume_get() wie folgt auslesen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float l, r;&lt;br /&gt;
ret = roar_vs_volume_get(vss, &amp;amp;l, &amp;amp;r, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte die Mono-Lautstärke und nicht die L/R-Lautstärke gewünscht sein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;float c = (l + r)/2.0;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zum Stumm schalten sollte die Lautstärke nicht geändert werden sondern das Mute-Flag verwendet werden (Nächste Folie).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9668</id>
		<title>RoarAudio/Vortrag/Programmieren mit RoarAudio VS</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Programmieren_mit_RoarAudio_VS&amp;diff=9668"/>
		<updated>2011-04-07T10:16:14Z</updated>

		<summary type="html">&lt;p&gt;Ph3-der-loewe: /* Flags */ + Inhalt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#fee846;text-align:left; color: #000;font-weight:bold;font-size:125%;margin: 0px 5px 0px 0; padding: 4px 4px 4px 14px;&amp;quot;&amp;gt;Was ist RoarAudio?&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0 5px 5px 0; padding: 1em 1em 1em 1em; border: 1px solid #fee846; background-color:#fffdf5;&amp;quot;&amp;gt;&lt;br /&gt;
; Ziel : ein Vortrag über [[RoarAudio]]s VS API vor einem Unixpublikum mit geringem Vorwissen zum Thema. Nach ende des Vortags sollen die Hörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
Der Vortrag soll eine Einführung in die Programmierung mit der VS API aus libroar liefern. Im laufe des Vortrags werden die grundlegenden API Funktionen vorgestellt und mit Code Beispielen erläutert. Am Ende des Vortrags sollten die Zuhörer in der Lage sein einfache Programme mit der VS API zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Als Vorwissen empfiehlt es sich einen der Einführenden Vorträge besucht zu haben.&lt;br /&gt;
&lt;br /&gt;
== Über den Referent ==&lt;br /&gt;
Philipp &#039;ph3-der-loewe&#039; Schafft schreibt seit etwa 10 Jahren Software (primär in C und Perl).&lt;br /&gt;
Im Moment studiert er Elektrotechnik/Automatisierungstechnik.&lt;br /&gt;
&lt;br /&gt;
Besondere Interessen liegen in dem Bereich der Netzwerke und Bus Systeme, Mikrocontrollern, Kryptographie und Digitaler Audio Verarbeitung sowie Entwicklung kreativer Lösungen für Mathematik und Logik Rätseln und Übungen.&lt;br /&gt;
&lt;br /&gt;
In seiner Freizeit beschäftigt er sich außerdem intensiv mit Großkatzen.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Theorie ===&lt;br /&gt;
==== Schichten ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== OOP ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Streaming Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Fehler Behandlung ===&lt;br /&gt;
* Die meisten Aufraufe werfen -1 zurück im Fehlerfall. Ausnahmen sind beispielsweise Funktionen welche einen Pointer zurückgeben. Diese werfen NULL.&lt;br /&gt;
* IO Funktionen können &amp;quot;short reads&amp;quot; bzw. &amp;quot;short writes&amp;quot; erzeugen.&lt;br /&gt;
* Die Fehlervariable (&amp;amp;err) beinhaltet &#039;&#039;im Fehlerfall&#039;&#039; einen Fehler Code. Dieser kann mittels roar_vs_strerr(err) in eine Zeichenkette gewandelt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;int err;&lt;br /&gt;
ssize_t ret = roar_vs_write(vss, buf, len, &amp;amp;err);&lt;br /&gt;
if ( ret == -1 ) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;Fehler beim schreiben: %s\n&amp;quot;, roar_vs_strerr(err));&lt;br /&gt;
} else if ( ret &amp;lt; (ssize_t)len) {&lt;br /&gt;
 fprintf(stderr, &amp;quot;\&amp;quot;Short write\&amp;quot;, nur %zi von %zu Bytes geschieben\n&amp;quot;, ret, len);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datei Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Gepufferter Modus ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Meta Daten ===&lt;br /&gt;
Derzeit stellt die VS API zwei Meta Daten Schnittstellen zur Verfügung: Titel Meta Daten und Stream Rolle.&lt;br /&gt;
&lt;br /&gt;
==== Titel Meta Daten ====&lt;br /&gt;
Die Titel Meta Daten (Normalerweise nur &amp;quot;Meta Daten) sind Informationen über den Aktuellen Titel: Künstler, Titel, Album, Genre, Version, Titelnummer, RPG, und viele mehr.&lt;br /&gt;
&lt;br /&gt;
Diese werden mit der Funktion roar_vs_meta() gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;struct roar_keyval kv[3] = {&lt;br /&gt;
 {&amp;quot;TITEL&amp;quot;, &amp;quot;Test Titel&amp;quot;},&lt;br /&gt;
 {&amp;quot;ARTIST&amp;quot;, &amp;quot;Irgendwer&amp;quot;},&lt;br /&gt;
 {&amp;quot;VERSION&amp;quot;, &amp;quot;Vortrags Remix&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
ret = roar_vs_meta(vss, kv, 3 /* Anzahl der Datensätze */, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stream Rolle ====&lt;br /&gt;
Die Stream Rolle (engl. &amp;quot;stream role&amp;quot;) gibt die Funktion des Streams an: Musik, Video, Ereignisse (z.B. Fehlermeldungs Töne), Spiel, Hintergrund Musik, Telephon,...&lt;br /&gt;
&lt;br /&gt;
Diese wird mit der Funktion roar_vs_role() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_role(vss, ROAR_ROLE_MUSIC, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lautstärkesteuerung ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Aktuell unterstützt die VS die beiden Flags &amp;quot;Mute&amp;quot; und &amp;quot;Pause&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Das Mute Flag schaltet die Ausgabe des Tons ab, der Stream läuft aber weiterhin. Das Flag Pause hält den Stream an so das er später fortgesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Flags werden mit den Funktionen roar_vs_pause() und roar_vs_mute() gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_mute(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beziehungsweise:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ret = roar_vs_pause(vss, ROAR_VS_TRUE, &amp;amp;err);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anstatt ROAR_VS_TRUE (zum setzen) kann natuerlich auch ROAR_VS_FALSE (zum rücksetzen) und ROAR_VS_TOGGLE (zum kippen) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Mittels ROAR_VS_ASK kann der zustand angefragt werden.&lt;br /&gt;
&lt;br /&gt;
== Optionales ==&lt;br /&gt;
=== Interface zur Haupt API ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RoarAudio]]&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Ph3-der-loewe</name></author>
	</entry>
</feed>