<?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=Che</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=Che"/>
	<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/Spezial:Beitr%C3%A4ge/Che"/>
	<updated>2026-04-09T01:07:56Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.42.5</generator>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=UUGRN_Diskussion:10_Jahre_UUGRN_e.V./Vortr%C3%A4ge&amp;diff=7826</id>
		<title>UUGRN Diskussion:10 Jahre UUGRN e.V./Vorträge</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=UUGRN_Diskussion:10_Jahre_UUGRN_e.V./Vortr%C3%A4ge&amp;diff=7826"/>
		<updated>2009-05-11T19:32:38Z</updated>

		<summary type="html">&lt;p&gt;Che: ssh_config dafuer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|{{UUGRN:10 Jahre UUGRN e.V./Orga}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Organisatorisches ==&lt;br /&gt;
Wir können am Freitag eher Kurzvorträge (je 15-30min) und Samstag eher die längeren (45 und 90 min) sinnvoll einbauen.&lt;br /&gt;
Freitag kann etwa 20-22:30 verwendet werden, Samstag ab 15 Uhr bis 22:30. &lt;br /&gt;
&lt;br /&gt;
Die Tabelle auf der [[UUGRN:10 Jahre UUGRN e.V./Vorträge|Vortragsplanung]] ist als mögliche Richtschnur gedacht.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Rabe|rabe]] 19:20, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Kann man sich da einfach mal Eintragen? so auf verdacht? Oder wie willste das absprechen? --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 20:37, 29. Apr. 2009 (UTC)&lt;br /&gt;
:: Nein, bitte noch nichts vorwegnehmen. Die Liste soll mehr einfach nur ein mögliches Zeitraster zeigen.&lt;br /&gt;
:: Da ich aber noch weitere Referenten gezielt ansprechen will, die möglicherweise auch von weiter weg anreisen, will ich denen natürlich das Vorrecht auf einen Zeitslot lassen.&lt;br /&gt;
:: Und letztlich sollen die Vorträge auch eine Art Themenbogen spannen, d.h. ähnliche Themenbereiche gruppieren.&lt;br /&gt;
:: --[[Benutzer:Rabe|rabe]] 21:01, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Sollen die Vortraege im kleinen Raum oder im grossen stattfinden? Ich persoenlich favorisiere den kleinen Raum, da so das Publikum eher &amp;quot;sichtbar&amp;quot; ist und die nicht-interessierten nicht von Vortraegen &#039;&#039;gestoert&#039;&#039; werden. Alternative Vorschlaege? --[[Benutzer:SHL|SHL]] 09:52, 30. Apr. 2009 (UTC)&lt;br /&gt;
: Ich moechte nur kurz drauf hinweisen das das gantze jetzt auf der Orga ML besprochen wird. Nicht das sich jemand wundert :) --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 03:12, 1. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== CAcert Vortrag ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;wonderer&#039;&#039; wuerde sich dazu bereit erklaeren einen Vortrag ueber CAcert zu halten. Genauer Inhalt koennte man vorher noch rechtzeitig mit ihm ab sprechen. Eine Assurance Veranstaltung im Anschluss ist auch moeglich. Bitte um Rueckmeldung damit ich ihm bescheit sagen kann. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:33, 5. Apr. 2009 (UTC)&lt;br /&gt;
: find ich gut --[[Benutzer:SHL|SHL]] 13:28, 6. Apr. 2009 (UTC)&lt;br /&gt;
: [x] Dafür ... eine genaue(!) Zeitplanung kann ich aber noch nicht anbieten. --[[Benutzer:Rabe|rabe]] 06:18, 29. Apr. 2009 (UTC)&lt;br /&gt;
: [x] Dafür ... weiß auch noch nix über neuerungen --[[Benutzer:BERT|BERT]] 15:33, 11. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Kurtz Vortrag ssh_config ==&lt;br /&gt;
&lt;br /&gt;
ich koennte an einen kurzen (15 min) Vortrag ueber ssh_config(5) halten. Denke das Der koennte auch am Fr. Abends wohl laufen. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:40, 5. Apr. 2009 (UTC)&lt;br /&gt;
: [x] Dafür: Für Freitag abend lohnt sich das. Ich würde das Thema allerdings etwas ausweiten auf &amp;quot;SSH als Transport&amp;quot;. --[[Benutzer:Rabe|rabe]] 06:19, 29. Apr. 2009 (UTC)&lt;br /&gt;
: [X] auch dafuer. --[[Benutzer:SHL|SHL]] 06:58, 29. Apr. 2009 (UTC)&lt;br /&gt;
: Nur als Stichworte, was ich da gerne hören würde (u.a., vielleicht ist ja auch für mich etwas neues, nützliches dabei): Mastermode, Cipher-wahl (SSH-HPN), Pubkeys absichlich ignorieren (bestimmte Testrechner), ForwardAgent, X-forwarding&lt;br /&gt;
:: Ich wollte primaer darauf eingehen was man alles setzen koennte, vor allem auf Host-Profile. Was ich an sich nicht machen wollte sind crypto fragen da ich meine das man damit 1) ne ganze Woche fuellen kann, 2) die meisten abhaengt. Mastermode kann ich aber auf jeden Fall rein packen. Bei den anderen Sachen wuerde ich mal schauen wie ich die Zeit eingeteilt bekomme. &lt;br /&gt;
--[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 20:41, 29. Apr. 2009 (UTC)&lt;br /&gt;
: [X] auch dafuer. --[[Benutzer:Che|che]] 19:32, 11. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== VortragsWorkshop RoarAudio ==&lt;br /&gt;
&lt;br /&gt;
ich wuerde gerne nochmal was zum thema [[RoarAudio]] machen nach dem das das letzte mal schief gegangen ist. Grade wenn man Publikum von etwas weiter weg anlocken kann sollte die schnitt menge der hoerer klein sein. Wuerde diesmal versuchen ihn kurz zu gestalten und ehr in Richtung workshop ueber gehen zu lassen. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:43, 5. Apr. 2009 (UTC)&lt;br /&gt;
: [X] keine Ahnung von der Materie, aber klingt nicht uninteressant. --[[Benutzer:SHL|SHL]] 06:58, 29. Apr. 2009 (UTC)&lt;br /&gt;
: [X] Das würd mich interessieren, v.a. da ich mal was gelesen habe mit Ansteuermöglichkeit eines MIDI Mixers --[[Benutzer:DocBone|DocBone]] 13:38, 11. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: RoarAudio Vortrags-Workshop (hat wer nen Titel? ;)&lt;br /&gt;
; Inhalt: Einführung in RoarAudio, Installation, Einrichten und Benutzen&lt;br /&gt;
; Zielgruppe: Alle die Musik mögen. Muschel Grundkenntnisse vorteilhaft&lt;br /&gt;
; Dauer: ca. 35-45 Minuten Vortrag, 10-20 Minuten Vorführung, N+ Minuten Praxis&lt;br /&gt;
&lt;br /&gt;
== Meta-Vortrag: Vorträge halten ==&lt;br /&gt;
&lt;br /&gt;
Ich könnte einen Metavortrag über das Halten von Vorträgen halten, wenn daran Interesse besteht. Stichpunktmäßige Inhalte: Vorbereitung, Tools, Foliengestaltung, Strukturierung, Auftreten. Meiungen? --[[Benutzer:Mile|Mile]] 20:47, 7. Apr. 2009 (UTC)&lt;br /&gt;
: gute Idee, das Thema gefällt mir - hättest Du ein Problem damit, diesen Vortrag auf Freitag zu setzen, und den Samstag für Fachvorträge &amp;quot;frei zu halten&amp;quot;? --[[Benutzer:SHL|SHL]] 12:57, 8. Apr. 2009 (UTC)&lt;br /&gt;
: Nachdem ich gestern bei einem Vortrag beinahe eingeschlafen bin ( als Zuhörer ) sind mit Tipps wie ich es selber besser machen kann immer willkommen. --[[Benutzer:Che|che]] 09:45, 9. Apr. 2009 (UTC)&lt;br /&gt;
:: Ok, dann bereite ich diesen Vortrag vor. Unten angefügte Zusammenfassung sei dem Review Panel hiermit zur Berücksichtigung bei der Auswahl der Vorträge vorgeschlagen. ;-) --[[Benutzer:Mile|Mile]] 13:09, 9. Apr. 2009 (UTC)&lt;br /&gt;
: [X] Dafuer --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 10:49, 2. Mai 2009 (UTC)&lt;br /&gt;
: [X] Dafür --[[Benutzer:BERT|BERT]] 15:34, 11. Mai 2009 (UTC)&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: Wie halte ich einen Vortrag&lt;br /&gt;
; Inhalt: Der Vortrag diskutiert die Vorbereitung, Erstellung und Durchführung von technischen oder wissenschaftlichen Vorträgen. Geeignete und ungeeignete Präsentationswerkzeuge werden skizziert. Es wird auf Foliengestaltung und die Vorbereitung von Grafiken - und dabei häufig gemachte Fehler - eingegangen. Ebenso werden Tipps für eine sinnvolle Strukturierung und ein angemessenes Auftreten gegeben.&lt;br /&gt;
; Zielgruppe: Alle, die technische oder wissenschaftliche Präsentationen halten.&lt;br /&gt;
; Dauer: 30-45 Minuten.&lt;br /&gt;
&lt;br /&gt;
== Vortrag über den neuen Tiling-Window-Manager i3 ==&lt;br /&gt;
&lt;br /&gt;
Ich könnte einen Vortrag über meinen Windowmanager [http://i3.zekjur.net/ i3] anbieten. Ich würde sowohl etwas über den Windowmanager an sich, als auch über die Entstehungsgeschichte und was so alles dazugehört erzählen. Interesse, anyone?&lt;br /&gt;
: [x] --[[Benutzer:Rabe|rabe]] 06:16, 29. Apr. 2009 (UTC)&lt;br /&gt;
: Interesse , aber bitte nicht nur erzählen sondern auch zeigen  --[[Benutzer:Che|che]] 08:29, 30. Apr. 2009 (UTC)&lt;br /&gt;
:: Natürlich ist eine Demo inbegriffen. Wenn’s noch Fragen gibt, kann ich dir die dann auch direkt beantworten. Feel free :-). [[Benutzer:SECuRE|sECuRE]] 02:24, 1. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
; Zielgruppe: Mindestens alle UUGRNler, prinzipiell ist das Thema für jeden interessant, der sich für Computer interessiert.&lt;br /&gt;
; Dauer: ca. 30 Minuten&lt;br /&gt;
&lt;br /&gt;
== Informationsspeicherung und deren Möglichkeiten und Probleme ==&lt;br /&gt;
&lt;br /&gt;
Nein, keine VDS sondern Ablage von Daten in Computersystemen. Über RAIDs, [[ZFS]], [[AFS]] und was man so als Heim-Anwender tun kann. --[[Benutzer:SHL|SHL]] 15:57, 30. Apr. 2009 (UTC)&lt;br /&gt;
: Gestern bei [[NoName:Chaotische_Viertelstunde]] gehalten. --[[Benutzer:SHL|SHL]] 08:11, 1. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: Informationsspeicherung&lt;br /&gt;
; Inhalt: An Hand eines recht einfachen Beispiels erkläre ich die Möglichkeiten und Probleme der modernen Informationsspeicherung sowie verschiedene RAID-Levels und Lösungsansätze. &lt;br /&gt;
; Zielgruppe: theoretisch alle, da das Thema sehr nicht-technisch gehalten ist&lt;br /&gt;
; Dauer: ca. 30 Minuten.&lt;br /&gt;
&lt;br /&gt;
== Kerberos Security ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dieser Vortrag existiert noch nicht und wird nur gebaut, wenn genug Leute Interesse haben.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kerberos im Detail und im täglichen Einsatz. --[[Benutzer:SHL|SHL]] 15:57, 30. Apr. 2009 (UTC)&lt;br /&gt;
: Dafür. Eventuell willst du das dann auch im NoName e.V. vortragen im Rahmen der lange geplanten C¼h halten. 02:26, 1. Mai 2009 (UTC)&lt;br /&gt;
:: Recycling lebt vom Mitmachen! Das war ja mein Plan ;) --[[Benutzer:SHL|SHL]] 07:20, 1. Mai 2009 (UTC)&lt;br /&gt;
:: BTW: siehe [[NoName:Chaotische_Viertelstunde]] --[[Benutzer:SHL|SHL]] 08:11, 1. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: [X] Dafuer --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 10:49, 2. Mai 2009 (UTC)&lt;br /&gt;
: [X] Dafuer --15:35, 11. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: Kerberos 5&lt;br /&gt;
; Inhalt: Kerberos: wo fängt man an, wie funktioniert das und was macht man damit?&lt;br /&gt;
; Zielgruppe: technisch versierte Zuhörer, Grundlagen von Security und Netzwerk-Technik sollte vorhanden sein&lt;br /&gt;
; Dauer: ca. 30 Minuten.&lt;br /&gt;
&lt;br /&gt;
== OpenAFS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dieser Vortrag existiert noch nicht und wird nur gebaut, wenn genug Leute Interesse haben.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[OpenAFS]] für redundante Datenhaltung und halb-intelligenten Storage. --[[Benutzer:SHL|SHL]] 15:57, 30. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: OpenAFS&lt;br /&gt;
; Inhalt: Was ist OpenAFS, was kann man damit erreichen, wofür kann man es nutzen und wie macht man das alles?&lt;br /&gt;
; Zielgruppe: technisch versierte Zuhörer, Grundlagen von Storage und Kerberos sind prima&lt;br /&gt;
; Dauer: ca. 30 Minuten.&lt;br /&gt;
&lt;br /&gt;
== Spatial Databases (Räumliche Datenbanken) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dieser Vortrag existiert noch nicht und wird nur gebaut, wenn genug Leute Interesse haben.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: [X] Dafuer --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 10:49, 2. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: Spatial Databases&lt;br /&gt;
; Inhalt: Es wird zuerst kurz um die Theorie der Räumlichen Datenbanken gehen. Was sind überhaupt räumliche Daten, welche Queries, Indexstrukturen gibt es im Umfeld RDB. Danach werde ich eine kleine Einführung in PostGIS (die räumliche Erweiterung von PostgreSQL) geben. Diese wird allerdings sehr einfach ausfallen. Ich möchte hier gerne mehr auf die Theorie als auf die Praxis eingehen.&lt;br /&gt;
; Zielgruppe: Jeder der an Datenbanken interessiert ist und noch nicht mit RDB gearbeitet hat.&lt;br /&gt;
; Dauer: ca. 30 - 45 Minuten.&lt;br /&gt;
&lt;br /&gt;
== OpenSolaris - Einführung ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dieser Vortrag existiert noch nicht und wird nur gebaut, wenn genug Leute Interesse haben.&#039;&#039; --[[Benutzer:SHL|SHL]] 13:45, 1. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: [X] Dafuer --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 10:49, 2. Mai 2009 (UTC)&lt;br /&gt;
: [X] Dafuer --[[Benutzer:Che|che]] 18:35, 10. Mai 2009 (UTC)&lt;br /&gt;
: [X] Dafuer --[[Benutzer:DocBone|DocBone]] 13:35, 11. Mai 2009 (UTC)&lt;br /&gt;
: [X] Dafuer --[[Benutzer:BERT|BERT]] 15:36, 11. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Was mich persoenlich interessieren wuerde waere das Packet System. Was ich denke was klar ist, ist allgemeines zu einem POSIX konformen/kompatiblen/aehnlichen System. Da vielleicht nur drauf eingehen wie weit es kompatibel bzw. konform ist. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 16:39, 11. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: OpenSolaris-Einführung&lt;br /&gt;
; Inhalt: Eine Einführung in [[OpenSolaris]] mit einer kurzen Übersicht über die Funktionalität und den aktuellen Stand.&lt;br /&gt;
; Zielgruppe: effektiv jeder&lt;br /&gt;
; Dauer: ca. 30 Minuten.&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=UUGRN_Diskussion:10_Jahre_UUGRN_e.V./Vortr%C3%A4ge&amp;diff=7806</id>
		<title>UUGRN Diskussion:10 Jahre UUGRN e.V./Vorträge</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=UUGRN_Diskussion:10_Jahre_UUGRN_e.V./Vortr%C3%A4ge&amp;diff=7806"/>
		<updated>2009-05-10T18:35:12Z</updated>

		<summary type="html">&lt;p&gt;Che: Opensolaris : dafuer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Organisatorisches ==&lt;br /&gt;
Wir können am Freitag eher Kurzvorträge (je 15-30min) und Samstag eher die längeren (45 und 90 min) sinnvoll einbauen.&lt;br /&gt;
Freitag kann etwa 20-22:30 verwendet werden, Samstag ab 15 Uhr bis 22:30. &lt;br /&gt;
&lt;br /&gt;
Die Tabelle auf der [[UUGRN:10 Jahre UUGRN e.V./Vorträge|Vortragsplanung]] ist als mögliche Richtschnur gedacht.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Rabe|rabe]] 19:20, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Kann man sich da einfach mal Eintragen? so auf verdacht? Oder wie willste das absprechen? --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 20:37, 29. Apr. 2009 (UTC)&lt;br /&gt;
:: Nein, bitte noch nichts vorwegnehmen. Die Liste soll mehr einfach nur ein mögliches Zeitraster zeigen.&lt;br /&gt;
:: Da ich aber noch weitere Referenten gezielt ansprechen will, die möglicherweise auch von weiter weg anreisen, will ich denen natürlich das Vorrecht auf einen Zeitslot lassen.&lt;br /&gt;
:: Und letztlich sollen die Vorträge auch eine Art Themenbogen spannen, d.h. ähnliche Themenbereiche gruppieren.&lt;br /&gt;
:: --[[Benutzer:Rabe|rabe]] 21:01, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Sollen die Vortraege im kleinen Raum oder im grossen stattfinden? Ich persoenlich favorisiere den kleinen Raum, da so das Publikum eher &amp;quot;sichtbar&amp;quot; ist und die nicht-interessierten nicht von Vortraegen &#039;&#039;gestoert&#039;&#039; werden. Alternative Vorschlaege? --[[Benutzer:SHL|SHL]] 09:52, 30. Apr. 2009 (UTC)&lt;br /&gt;
: Ich moechte nur kurz drauf hinweisen das das gantze jetzt auf der Orga ML besprochen wird. Nicht das sich jemand wundert :) --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 03:12, 1. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== CAcert Vortrag ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;wonderer&#039;&#039; wuerde sich dazu bereit erklaeren einen Vortrag ueber CAcert zu halten. Genauer Inhalt koennte man vorher noch rechtzeitig mit ihm ab sprechen. Eine Assurance Veranstaltung im Anschluss ist auch moeglich. Bitte um Rueckmeldung damit ich ihm bescheit sagen kann. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:33, 5. Apr. 2009 (UTC)&lt;br /&gt;
: find ich gut --[[Benutzer:SHL|SHL]] 13:28, 6. Apr. 2009 (UTC)&lt;br /&gt;
: [x] Dafür ... eine genaue(!) Zeitplanung kann ich aber noch nicht anbieten. --[[Benutzer:Rabe|rabe]] 06:18, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Kurtz Vortrag ssh_config ==&lt;br /&gt;
&lt;br /&gt;
ich koennte an einen kurzen (15 min) Vortrag ueber ssh_config(5) halten. Denke das Der koennte auch am Fr. Abends wohl laufen. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:40, 5. Apr. 2009 (UTC)&lt;br /&gt;
: [x] Dafür: Für Freitag abend lohnt sich das. Ich würde das Thema allerdings etwas ausweiten auf &amp;quot;SSH als Transport&amp;quot;. --[[Benutzer:Rabe|rabe]] 06:19, 29. Apr. 2009 (UTC)&lt;br /&gt;
: [X] auch dafuer. --[[Benutzer:SHL|SHL]] 06:58, 29. Apr. 2009 (UTC)&lt;br /&gt;
: Nur als Stichworte, was ich da gerne hören würde (u.a., vielleicht ist ja auch für mich etwas neues, nützliches dabei): Mastermode, Cipher-wahl (SSH-HPN), Pubkeys absichlich ignorieren (bestimmte Testrechner), ForwardAgent, X-forwarding&lt;br /&gt;
:: Ich wollte primaer darauf eingehen was man alles setzen koennte, vor allem auf Host-Profile. Was ich an sich nicht machen wollte sind crypto fragen da ich meine das man damit 1) ne ganze Woche fuellen kann, 2) die meisten abhaengt. Mastermode kann ich aber auf jeden Fall rein packen. Bei den anderen Sachen wuerde ich mal schauen wie ich die Zeit eingeteilt bekomme. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 20:41, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== VortragsWorkshop RoarAudio ==&lt;br /&gt;
&lt;br /&gt;
ich wuerde gerne nochmal was zum thema [[RoarAudio]] machen nach dem das das letzte mal schief gegangen ist. Grade wenn man Publikum von etwas weiter weg anlocken kann sollte die schnitt menge der hoerer klein sein. Wuerde diesmal versuchen ihn kurz zu gestalten und ehr in Richtung workshop ueber gehen zu lassen. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:43, 5. Apr. 2009 (UTC)&lt;br /&gt;
: [X] keine Ahnung von der Materie, aber klingt nicht uninteressant. --[[Benutzer:SHL|SHL]] 06:58, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: RoarAudio Vortrags-Workshop (hat wer nen Titel? ;)&lt;br /&gt;
; Inhalt: Einführung in RoarAudio, Installation, Einrichten und Benutzen&lt;br /&gt;
; Zielgruppe: Alle die Musik mögen. Muschel Grundkenntnisse vorteilhaft&lt;br /&gt;
; Dauer: ca. 35-45 Minuten Vortrag, 10-20 Minuten Vorführung, N+ Minuten Praxis&lt;br /&gt;
&lt;br /&gt;
== Meta-Vortrag: Vorträge halten ==&lt;br /&gt;
&lt;br /&gt;
Ich könnte einen Metavortrag über das Halten von Vorträgen halten, wenn daran Interesse besteht. Stichpunktmäßige Inhalte: Vorbereitung, Tools, Foliengestaltung, Strukturierung, Auftreten. Meiungen? --[[Benutzer:Mile|Mile]] 20:47, 7. Apr. 2009 (UTC)&lt;br /&gt;
: gute Idee, das Thema gefällt mir - hättest Du ein Problem damit, diesen Vortrag auf Freitag zu setzen, und den Samstag für Fachvorträge &amp;quot;frei zu halten&amp;quot;? --[[Benutzer:SHL|SHL]] 12:57, 8. Apr. 2009 (UTC)&lt;br /&gt;
: Nachdem ich gestern bei einem Vortrag beinahe eingeschlafen bin ( als Zuhörer ) sind mit Tipps wie ich es selber besser machen kann immer willkommen. --[[Benutzer:Che|che]] 09:45, 9. Apr. 2009 (UTC)&lt;br /&gt;
:: Ok, dann bereite ich diesen Vortrag vor. Unten angefügte Zusammenfassung sei dem Review Panel hiermit zur Berücksichtigung bei der Auswahl der Vorträge vorgeschlagen. ;-) --[[Benutzer:Mile|Mile]] 13:09, 9. Apr. 2009 (UTC)&lt;br /&gt;
: [X] Dafuer --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 10:49, 2. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: Wie halte ich einen Vortrag&lt;br /&gt;
; Inhalt: Der Vortrag diskutiert die Vorbereitung, Erstellung und Durchführung von technischen oder wissenschaftlichen Vorträgen. Geeignete und ungeeignete Präsentationswerkzeuge werden skizziert. Es wird auf Foliengestaltung und die Vorbereitung von Grafiken - und dabei häufig gemachte Fehler - eingegangen. Ebenso werden Tipps für eine sinnvolle Strukturierung und ein angemessenes Auftreten gegeben.&lt;br /&gt;
; Zielgruppe: Alle, die technische oder wissenschaftliche Präsentationen halten.&lt;br /&gt;
; Dauer: 30-45 Minuten.&lt;br /&gt;
&lt;br /&gt;
== Vortrag über den neuen Tiling-Window-Manager i3 ==&lt;br /&gt;
&lt;br /&gt;
Ich könnte einen Vortrag über meinen Windowmanager [http://i3.zekjur.net/ i3] anbieten. Ich würde sowohl etwas über den Windowmanager an sich, als auch über die Entstehungsgeschichte und was so alles dazugehört erzählen. Interesse, anyone?&lt;br /&gt;
: [x] --[[Benutzer:Rabe|rabe]] 06:16, 29. Apr. 2009 (UTC)&lt;br /&gt;
: Interesse , aber bitte nicht nur erzählen sondern auch zeigen  --[[Benutzer:Che|che]] 08:29, 30. Apr. 2009 (UTC)&lt;br /&gt;
:: Natürlich ist eine Demo inbegriffen. Wenn’s noch Fragen gibt, kann ich dir die dann auch direkt beantworten. Feel free :-). [[Benutzer:SECuRE|sECuRE]] 02:24, 1. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
; Zielgruppe: Mindestens alle UUGRNler, prinzipiell ist das Thema für jeden interessant, der sich für Computer interessiert.&lt;br /&gt;
; Dauer: ca. 30 Minuten&lt;br /&gt;
&lt;br /&gt;
== Informationsspeicherung und deren Möglichkeiten und Probleme ==&lt;br /&gt;
&lt;br /&gt;
Nein, keine VDS sondern Ablage von Daten in Computersystemen. Über RAIDs, [[ZFS]], [[AFS]] und was man so als Heim-Anwender tun kann. --[[Benutzer:SHL|SHL]] 15:57, 30. Apr. 2009 (UTC)&lt;br /&gt;
: Gestern bei [[NoName:Chaotische_Viertelstunde]] gehalten. --[[Benutzer:SHL|SHL]] 08:11, 1. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: Informationsspeicherung&lt;br /&gt;
; Inhalt: An Hand eines recht einfachen Beispiels erkläre ich die Möglichkeiten und Probleme der modernen Informationsspeicherung sowie verschiedene RAID-Levels und Lösungsansätze. &lt;br /&gt;
; Zielgruppe: theoretisch alle, da das Thema sehr nicht-technisch gehalten ist&lt;br /&gt;
; Dauer: ca. 30 Minuten.&lt;br /&gt;
&lt;br /&gt;
== Kerberos Security ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dieser Vortrag existiert noch nicht und wird nur gebaut, wenn genug Leute Interesse haben.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kerberos im Detail und im täglichen Einsatz. --[[Benutzer:SHL|SHL]] 15:57, 30. Apr. 2009 (UTC)&lt;br /&gt;
: Dafür. Eventuell willst du das dann auch im NoName e.V. vortragen im Rahmen der lange geplanten C¼h halten. 02:26, 1. Mai 2009 (UTC)&lt;br /&gt;
:: Recycling lebt vom Mitmachen! Das war ja mein Plan ;) --[[Benutzer:SHL|SHL]] 07:20, 1. Mai 2009 (UTC)&lt;br /&gt;
:: BTW: siehe [[NoName:Chaotische_Viertelstunde]] --[[Benutzer:SHL|SHL]] 08:11, 1. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: [X] Dafuer --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 10:49, 2. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: Kerberos 5&lt;br /&gt;
; Inhalt: Kerberos: wo fängt man an, wie funktioniert das und was macht man damit?&lt;br /&gt;
; Zielgruppe: technisch versierte Zuhörer, Grundlagen von Security und Netzwerk-Technik sollte vorhanden sein&lt;br /&gt;
; Dauer: ca. 30 Minuten.&lt;br /&gt;
&lt;br /&gt;
== OpenAFS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dieser Vortrag existiert noch nicht und wird nur gebaut, wenn genug Leute Interesse haben.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[OpenAFS]] für redundante Datenhaltung und halb-intelligenten Storage. --[[Benutzer:SHL|SHL]] 15:57, 30. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: OpenAFS&lt;br /&gt;
; Inhalt: Was ist OpenAFS, was kann man damit erreichen, wofür kann man es nutzen und wie macht man das alles?&lt;br /&gt;
; Zielgruppe: technisch versierte Zuhörer, Grundlagen von Storage und Kerberos sind prima&lt;br /&gt;
; Dauer: ca. 30 Minuten.&lt;br /&gt;
&lt;br /&gt;
== Spatial Databases (Räumliche Datenbanken) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dieser Vortrag existiert noch nicht und wird nur gebaut, wenn genug Leute Interesse haben.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: [X] Dafuer --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 10:49, 2. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: Spatial Databases&lt;br /&gt;
; Inhalt: Es wird zuerst kurz um die Theorie der Räumlichen Datenbanken gehen. Was sind überhaupt räumliche Daten, welche Queries, Indexstrukturen gibt es im Umfeld RDB. Danach werde ich eine kleine Einführung in PostGIS (die räumliche Erweiterung von PostgreSQL) geben. Diese wird allerdings sehr einfach ausfallen. Ich möchte hier gerne mehr auf die Theorie als auf die Praxis eingehen.&lt;br /&gt;
; Zielgruppe: Jeder der an Datenbanken interessiert ist und noch nicht mit RDB gearbeitet hat.&lt;br /&gt;
; Dauer: ca. 30 - 45 Minuten.&lt;br /&gt;
&lt;br /&gt;
== OpenSolaris - Einführung ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dieser Vortrag existiert noch nicht und wird nur gebaut, wenn genug Leute Interesse haben.&#039;&#039; --[[Benutzer:SHL|SHL]] 13:45, 1. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: [X] Dafuer --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 10:49, 2. Mai 2009 (UTC)&lt;br /&gt;
: [X] Dafuer --[[Benutzer:Che|che]] 18:35, 10. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: OpenSolaris-Einführung&lt;br /&gt;
; Inhalt: Eine Einführung in [[OpenSolaris]] mit einer kurzen Übersicht über die Funktionalität und den aktuellen Stand.&lt;br /&gt;
; Zielgruppe: effektiv jeder&lt;br /&gt;
; Dauer: ca. 30 Minuten.&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=OpenSolaris_User_Group_Rhein_Neckar/T-Shirts&amp;diff=7778</id>
		<title>OpenSolaris User Group Rhein Neckar/T-Shirts</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=OpenSolaris_User_Group_Rhein_Neckar/T-Shirts&amp;diff=7778"/>
		<updated>2009-05-09T21:13:24Z</updated>

		<summary type="html">&lt;p&gt;Che: added:che&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sun sponsert uns T-Shirts! ==&lt;br /&gt;
&lt;br /&gt;
Jede User Group kann für ihre Mitglieder bei Sun kostenlos ziemlich schicke [[OpenSolaris]] T-Shirts bekommen. Da machen wir natürlich mit! &lt;br /&gt;
Die Shirts sind &#039;&#039;&#039;vollkommen kostenlos&#039;&#039;&#039;, es entstehen auch keine Versandkosten oder irgendwelche versteckten Kosten, wir müssen nur wissen was wir haben wollen. Die Shirts sehen in etwa [http://mail.opensolaris.org/pipermail/advocacy-discuss/attachments/20090427/e0a0b8bd/attachment-0001.jpe so] aus.&lt;br /&gt;
&lt;br /&gt;
Wer eins möchte, unabhängig davon welches Betriebssystem im [[grub]] ganz oben steht, bitte hier in die Liste eintragen. Ich kann leider nicht sagen wie groß die Shirts ausfallen, daher vielleicht lieber etwas größer oder kleiner planen und notfalls nicht mitgrillen. ;-)&lt;br /&gt;
&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
 ! das Shirt in der Größe...&lt;br /&gt;
 ! ...wer möchte ein solches?&lt;br /&gt;
 |-&lt;br /&gt;
 | men&#039;s small shirts || [[Benutzer:BERT|Bert]]&lt;br /&gt;
 |-&lt;br /&gt;
 | men&#039;s medium shirts || bisher niemand&lt;br /&gt;
 |-&lt;br /&gt;
 | men&#039;s large shirts || [[Benutzer:motte|motte]],[[Benutzer:schwede|schwede]],&lt;br /&gt;
 |-&lt;br /&gt;
 | men&#039;s extra-large shirts || bisher niemand&lt;br /&gt;
 |-&lt;br /&gt;
 | men&#039;s extra-large TALL shirts || Gibheer&lt;br /&gt;
 |-&lt;br /&gt;
 | men&#039;s extra-extra-large shirts || [[Benutzer:SHL|SHL]], [[Benutzer:Che|Che]]&lt;br /&gt;
 |-&lt;br /&gt;
 | women&#039;s small shirts || bisher niemand&lt;br /&gt;
 |-&lt;br /&gt;
 | women&#039;s medium shirts || bisher niemand&lt;br /&gt;
 |-&lt;br /&gt;
 | women&#039;s large shirts || bisher niemand&lt;br /&gt;
 |-&lt;br /&gt;
 | women&#039;s extra-large shirts  || [[Benutzer:Stormwind|Stormwind]]&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die T-Shirts rechtzeitig zum [[UUGRN:10 Jahre UUGRN e.V.|10 Jahre UUGRN FIXME]] ankommen, definiere ich als &#039;&#039;&#039;deadline&#039;&#039;&#039; den 15.05.2009. --[[Benutzer:SHL|SHL]] 14:42, 9. Mai 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== siehe auch ===&lt;br /&gt;
&lt;br /&gt;
* [[OpenSolaris User Group Rhein Neckar]]&lt;br /&gt;
* [[OpenSolaris]]&lt;br /&gt;
* http://www.opensolaris.org/jive/thread.jspa?threadID=83223&amp;amp;tstart=0&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=UUGRN_Diskussion:10_Jahre_UUGRN_e.V./Vortr%C3%A4ge&amp;diff=7516</id>
		<title>UUGRN Diskussion:10 Jahre UUGRN e.V./Vorträge</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=UUGRN_Diskussion:10_Jahre_UUGRN_e.V./Vortr%C3%A4ge&amp;diff=7516"/>
		<updated>2009-04-30T08:29:15Z</updated>

		<summary type="html">&lt;p&gt;Che: Interesse i3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Organisatorisches ==&lt;br /&gt;
Wir können am Freitag eher Kurzvorträge (je 15-30min) und Samstag eher die längeren (45 und 90 min) sinnvoll einbauen.&lt;br /&gt;
Freitag kann etwa 20-22:30 verwendet werden, Samstag ab 15 Uhr bis 22:30. &lt;br /&gt;
&lt;br /&gt;
Die Tabelle auf der [[UUGRN:10 Jahre UUGRN e.V./Vorträge|Vortragsplanung]] ist als mögliche Richtschnur gedacht.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Rabe|rabe]] 19:20, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Kann man sich da einfach mal Eintragen? so auf verdacht? Oder wie willste das absprechen? --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 20:37, 29. Apr. 2009 (UTC)&lt;br /&gt;
:: Nein, bitte noch nichts vorwegnehmen. Die Liste soll mehr einfach nur ein mögliches Zeitraster zeigen.&lt;br /&gt;
:: Da ich aber noch weitere Referenten gezielt ansprechen will, die möglicherweise auch von weiter weg anreisen, will ich denen natürlich das Vorrecht auf einen Zeitslot lassen.&lt;br /&gt;
:: Und letztlich sollen die Vorträge auch eine Art Themenbogen spannen, d.h. ähnliche Themenbereiche gruppieren.&lt;br /&gt;
:: --[[Benutzer:Rabe|rabe]] 21:01, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== CAcert Vortrag ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;wonderer&#039;&#039; wuerde sich dazu bereit erklaeren einen Vortrag ueber CAcert zu halten. Genauer Inhalt koennte man vorher noch rechtzeitig mit ihm ab sprechen. Eine Assurance Veranstaltung im Anschluss ist auch moeglich. Bitte um Rueckmeldung damit ich ihm bescheit sagen kann. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:33, 5. Apr. 2009 (UTC)&lt;br /&gt;
: find ich gut --[[Benutzer:SHL|SHL]] 13:28, 6. Apr. 2009 (UTC)&lt;br /&gt;
: [x] Dafür ... eine genaue(!) Zeitplanung kann ich aber noch nicht anbieten. --[[Benutzer:Rabe|rabe]] 06:18, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Kurtz Vortrag ssh_config ==&lt;br /&gt;
&lt;br /&gt;
ich koennte an einen kurzen (15 min) Vortrag ueber ssh_config(5) halten. Denke das Der koennte auch am Fr. Abends wohl laufen. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:40, 5. Apr. 2009 (UTC)&lt;br /&gt;
: [x] Dafür: Für Freitag abend lohnt sich das. Ich würde das Thema allerdings etwas ausweiten auf &amp;quot;SSH als Transport&amp;quot;. --[[Benutzer:Rabe|rabe]] 06:19, 29. Apr. 2009 (UTC)&lt;br /&gt;
: [X] auch dafuer. --[[Benutzer:SHL|SHL]] 06:58, 29. Apr. 2009 (UTC)&lt;br /&gt;
: Nur als Stichworte, was ich da gerne hören würde (u.a., vielleicht ist ja auch für mich etwas neues, nützliches dabei): Mastermode, Cipher-wahl (SSH-HPN), Pubkeys absichlich ignorieren (bestimmte Testrechner), ForwardAgent, X-forwarding&lt;br /&gt;
:: Ich wollte primaer darauf eingehen was man alles setzen koennte, vor allem auf Host-Profile. Was ich an sich nicht machen wollte sind crypto fragen da ich meine das man damit 1) ne ganze Woche fuellen kann, 2) die meisten abhaengt. Mastermode kann ich aber auf jeden Fall rein packen. Bei den anderen Sachen wuerde ich mal schauen wie ich die Zeit eingeteilt bekomme. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 20:41, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== VortragsWorkshop RoarAudio ==&lt;br /&gt;
&lt;br /&gt;
ich wuerde gerne nochmal was zum thema [[RoarAudio]] machen nach dem das das letzte mal schief gegangen ist. Grade wenn man Publikum von etwas weiter weg anlocken kann sollte die schnitt menge der hoerer klein sein. Wuerde diesmal versuchen ihn kurz zu gestalten und ehr in Richtung workshop ueber gehen zu lassen. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:43, 5. Apr. 2009 (UTC)&lt;br /&gt;
: [X] keine Ahnung von der Materie, aber klingt nicht uninteressant. --[[Benutzer:SHL|SHL]] 06:58, 29. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Meta-Vortrag: Vorträge halten ==&lt;br /&gt;
&lt;br /&gt;
Ich könnte einen Metavortrag über das Halten von Vorträgen halten, wenn daran Interesse besteht. Stichpunktmäßige Inhalte: Vorbereitung, Tools, Foliengestaltung, Strukturierung, Auftreten. Meiungen? --[[Benutzer:Mile|Mile]] 20:47, 7. Apr. 2009 (UTC)&lt;br /&gt;
: gute Idee, das Thema gefällt mir - hättest Du ein Problem damit, diesen Vortrag auf Freitag zu setzen, und den Samstag für Fachvorträge &amp;quot;frei zu halten&amp;quot;? --[[Benutzer:SHL|SHL]] 12:57, 8. Apr. 2009 (UTC)&lt;br /&gt;
: Nachdem ich gestern bei einem Vortrag beinahe eingeschlafen bin ( als Zuhörer ) sind mit Tipps wie ich es selber besser machen kann immer willkommen. --[[Benutzer:Che|che]] 09:45, 9. Apr. 2009 (UTC)&lt;br /&gt;
:: Ok, dann bereite ich diesen Vortrag vor. Unten angefügte Zusammenfassung sei dem Review Panel hiermit zur Berücksichtigung bei der Auswahl der Vorträge vorgeschlagen. ;-) --[[Benutzer:Mile|Mile]] 13:09, 9. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Zusammenfassung ===&lt;br /&gt;
; Titel: Wie halte ich einen Vortrag&lt;br /&gt;
; Inhalt: Der Vortrag diskutiert die Vorbereitung, Erstellung und Durchführung von technischen oder wissenschaftlichen Vorträgen. Geeignete und ungeeignete Präsentationswerkzeuge werden skizziert. Es wird auf Foliengestaltung und die Vorbereitung von Grafiken - und dabei häufig gemachte Fehler - eingegangen. Ebenso werden Tipps für eine sinnvolle Strukturierung und ein angemessenes Auftreten gegeben.&lt;br /&gt;
; Zielgruppe: Alle, die technische oder wissenschaftliche Präsentationen halten.&lt;br /&gt;
; Dauer: 30-45 Minuten.&lt;br /&gt;
&lt;br /&gt;
== Vortrag über den neuen Tiling-Window-Manager i3 ==&lt;br /&gt;
&lt;br /&gt;
Ich könnte einen Vortrag über meinen Windowmanager [http://i3.zekjur.net/ i3] anbieten. Ich würde sowohl etwas über den Windowmanager an sich, als auch über die Entstehungsgeschichte und was so alles dazugehört erzählen. Interesse, anyone?&lt;br /&gt;
: [x] --[[Benutzer:Rabe|rabe]] 06:16, 29. Apr. 2009 (UTC)&lt;br /&gt;
: Interesse , aber bitte nicht nur erzählen sondern auch zeigen  --[[Benutzer:Che|che]] 08:29, 30. Apr. 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Diskussion:OpenSolaris&amp;diff=7148</id>
		<title>Diskussion:OpenSolaris</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Diskussion:OpenSolaris&amp;diff=7148"/>
		<updated>2009-04-09T10:00:43Z</updated>

		<summary type="html">&lt;p&gt;Che: Info SPARC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Weblinks stammen hauptsächlich aus meiner del.icio.us-Library. Feel free to extend. ;-) --[[Benutzer:SHL|SHL]] 10:52, 23. Mär. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Beim Durchstöbern der Hardwareseiten hab ich fast nur Infos zur Intel Architektur gefunden, fast nichts zur SUN eigenen SPARC. Ist meiner Meinung nach auch ein interessantes Thema, habe aber leider nicht Zeit genug um da weiter zu stöbern. Und war es nicht auch so, daß SUN bei einer der schon etwas älteren Solaris Versionen nicht ganz auf x86 verzichten wollte und bei der nächsten Version dann doch wieder aus dem Hut zauberte &#039;&#039;( Solaris 9 in 2003 )&#039;&#039; ? Kostete damals 20 Dollar für x86 und beliebige Anzahl von Installationen, für SPARC war&#039;s kostenlos.&lt;br /&gt;
--[[Benutzer:Che|che]] 10:00, 9. Apr. 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=UUGRN_Diskussion:10_Jahre_UUGRN_e.V./Vortr%C3%A4ge&amp;diff=7147</id>
		<title>UUGRN Diskussion:10 Jahre UUGRN e.V./Vorträge</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=UUGRN_Diskussion:10_Jahre_UUGRN_e.V./Vortr%C3%A4ge&amp;diff=7147"/>
		<updated>2009-04-09T09:45:31Z</updated>

		<summary type="html">&lt;p&gt;Che: Zustimmung zum Metavortrag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CAcert Vortrag ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;wonderer&#039;&#039; wuerde sich dazu bereit erklaeren einen Vortrag ueber CAcert zu halten. Genauer Inhalt koennte man vorher noch rechtzeitig mit ihm ab sprechen. Eine Assurance Veranstaltung im Anschluss ist auch moeglich. Bitte um Rueckmeldung damit ich ihm bescheit sagen kann. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:33, 5. Apr. 2009 (UTC)&lt;br /&gt;
: find ich gut --[[Benutzer:SHL|SHL]] 13:28, 6. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Kurtz Vortrag ssh_config ==&lt;br /&gt;
&lt;br /&gt;
ich koennte an einen kurzen (15 min) Vortrag ueber ssh_config(5) halten. Denke das Der koennte auch am Fr. Abends wohl laufen. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:40, 5. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== VortragsWorkshop RoarAudio ==&lt;br /&gt;
&lt;br /&gt;
ich wuerde gerne nochmal was zum thema [[RoarAudio]] machen nach dem das das letzte mal schief gegangen ist. Grade wenn man Publikum von etwas weiter weg anlocken kann sollte die schnitt menge der hoerer klein sein. Wuerde diesmal versuchen ihn kurz zu gestalten und ehr in Richtung workshop ueber gehen zu lassen. --[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 15:43, 5. Apr. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Meta-Vortrag: Vorträge halten ==&lt;br /&gt;
&lt;br /&gt;
Ich könnte einen Metavortrag über das Halten von Vorträgen halten, wenn daran Interesse besteht. Stichpunktmäßige Inhalte: Vorbereitung, Tools, Foliengestaltung, Strukturierung, Auftreten. Meiungen? --[[Benutzer:Mile|Mile]] 20:47, 7. Apr. 2009 (UTC)&lt;br /&gt;
: gute Idee, das Thema gefällt mir - hättest Du ein Problem damit, diesen Vortrag auf Freitag zu setzen, und den Samstag für Fachvorträge &amp;quot;frei zu halten&amp;quot;? --[[Benutzer:SHL|SHL]] 12:57, 8. Apr. 2009 (UTC)&lt;br /&gt;
: Nachdem ich gestern bei einem Vortrag beinahe eingeschlafen bin ( als Zuhörer ) sind mit Tipps wie ich es selber besser machen kann immer willkommen. --[[Benutzer:Che|che]] 09:45, 9. Apr. 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=UUGRN_Diskussion:10_Jahre_UUGRN_e.V./Pressemeldung&amp;diff=7122</id>
		<title>UUGRN Diskussion:10 Jahre UUGRN e.V./Pressemeldung</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=UUGRN_Diskussion:10_Jahre_UUGRN_e.V./Pressemeldung&amp;diff=7122"/>
		<updated>2009-04-07T09:29:32Z</updated>

		<summary type="html">&lt;p&gt;Che: Start&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Steht schon fest welche Presse überhaupt Meldungen bekommen soll?&lt;br /&gt;
&lt;br /&gt;
Nur &amp;quot;Linux-Zeitungen&amp;quot; = Fachpresse&lt;br /&gt;
&lt;br /&gt;
oder auch die lokalen Tageszeitungen?&lt;br /&gt;
&lt;br /&gt;
Da müssen wohl verschiedene Inhalte rein, bei der Tagespresse darf ein &amp;quot;Werbeblock&amp;quot; für Linux / Unix nicht fehlen.&lt;br /&gt;
&lt;br /&gt;
-- [[Benutzer:Che|che]] 09:29, 7. Apr. 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6805</id>
		<title>RoarAudio/Vortrag/Erster Vortrag</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6805"/>
		<updated>2009-02-06T10:35:25Z</updated>

		<summary type="html">&lt;p&gt;Che: /* Probleme des Realtime Audio Mischens */   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 [[RoarAudio]] und die Realtime Audio mixing Problematik vor einem Unixpublikum mit keinen oder kaum 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;
== Der Autor ==&lt;br /&gt;
[[Benutzer:Ph3-der-loewe|Philipp &#039;&#039;ph3-der-loewe&#039;&#039; Schafft]], Software Entwickler und Projekt Urheber.&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
RoarAudio ist ein Sound-Server für POSIX konformen Betriebssysteme (GNU/Linux, *BSD, Mac OS X und andere) unter aktiver Entwicklung. Er bietet gegenüber anderen Sound-Servern zusätzliche Funktionen für den Betrieb in kleinen Radio und TV Studios, aber auch den Heimgebrauch. Dieser Vortrag soll einen Einblick in RoarAudio, seine Funktionalität und Funktionsweise sowie damit verbunden Problemstellungen auf einfachem Niveau bieten. Den Abschluss bildet eine Demonstration.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein Soundserver.&lt;br /&gt;
&lt;br /&gt;
==== Was ist ein Soundserver ====&lt;br /&gt;
Ein Soundserver ist eine Programm dass im Hintergrund Audio Daten mischt und das Ergebnis weiter leitet, meist an eine Soundcard.&lt;br /&gt;
&lt;br /&gt;
Soundserver werden benötigt wenn wenn das unterliegende Audio-Ausgabegerät nur einen einzigen Datenstrom zu einer Zeit verarbeiten kann (Single Stream Soundcards). Sie stellen eine Art virtuelle Soundcard dar zu der Programme wie Player ihre Daten schicken können um eine simultane Ausgabe mit zum Beispiel Notify-Sounds von Chat Clients oder ähnlichem zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Sie bieten meist weitere Funktionen wie das Mischen unter Berücksichtigung von verschiedenen Pegeln. Einige Soundserver ermöglichen auch die Benutzung von Netzwerken zur Übertragung von Audio Daten für die Wiedergabe auf einer anderen Maschine. Dies beides kann auch RoarAudio.&lt;br /&gt;
&lt;br /&gt;
=== Projekt Ziele ===&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
Das Projekt verfolgt im Prinzip das Ziel, eine leistungsfähige Mischsoftware für den Studio Betrieb zur Verfügung zu stellen, aber dennoch ein Produkt zu liefern das auch für den Heim-Anwender angemessen ist.&lt;br /&gt;
&lt;br /&gt;
==== für Heim-Anwender ====&lt;br /&gt;
Heim-Anwender Teilen sich in zwei Gruppen auf:&lt;br /&gt;
Die größere Menge interessiert es nicht wieso Musik aus den Lautsprechern kommt, Hauptsache sie tut es. Für diese Gruppe muss RoarAudio einfach &#039;&#039;out of the box&#039;&#039; funktionieren.&lt;br /&gt;
Die andere Gruppe sind Anwender die mehr machen wollen. Hier soll RoarAudio ein leistungsstarkes Backend sein das möglichst Ressourcen schonend alle gewünschten Funktionen anbietet.&lt;br /&gt;
&lt;br /&gt;
==== Im Studio Betrieb ====&lt;br /&gt;
Wie oben schon angedeutet ist RoarAudio aber im Studio-Einsatz wesentlich interessanter: in einem klassischen Studio steht meist ein großes analoges Mischpult. Dies ist eine wundervolle Sache solange man primär analoge Eingänge braucht: beispielsweise von einer Band. In heutigen Radio- und Fernsehstudios kommen aber die meisten Kanäle aus dem Rechner oder anderen digitalen Geräten wie CD Spielern.&lt;br /&gt;
&lt;br /&gt;
Ein analoges Mischen hat hier nun mehre Nachteile, die wichtigsten sind wohl:&lt;br /&gt;
* Analoges Rauschen&lt;br /&gt;
* Verzerrungen im Frequenzgang&lt;br /&gt;
* Klirren&lt;br /&gt;
* Quantisierungsrauchen&lt;br /&gt;
* Effekte durch asynchrone Abtastung&lt;br /&gt;
&lt;br /&gt;
Eine Alternative wäre in einigen Fällen sicherlich ein Digital-Mischpult. Diese sind aber meist sehr teuer.&lt;br /&gt;
&lt;br /&gt;
RoarAudio kommt hier als erst einmal reine Software-basierende Lösung. Natürlich ist es möglich über die Steuerschnittstellen auch externe Hardware anzuschließen. Hier gibt es auch Planungen, ein Hardware Frontend zu entwerfen das dann kostengünstig zu haben ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exkurs: Codecs und Container ===&lt;br /&gt;
Ein Codec ist eine Spezifikation (meist werden auch die Implementierungen Codec genannt) wie Rohdaten, im Falle von Audio meist PCM Daten, als Datenstrom oder -block repräsentiert werden. Hierzu zählt meist als primäres Kriterium die Kompression. Weitere Informationen wie Synchronisationsdaten können ebenfalls durch den Codec spezifiziert sein, werden aber meist im Container abgelegt.&lt;br /&gt;
&lt;br /&gt;
Ein Container ist im Gegensatz zu einem Codec eine Spezifikation wie Daten die mittels Codecs in eine Datei codiert wurden in oder einen Stream verpackt werden. Hierzu zählen Dinge wie globale File-Magic, Angabe des Codecs, Meta Daten, Angaben über rate/bps/channels und Ähnliches.&lt;br /&gt;
&lt;br /&gt;
==== Verschiedene Arten von Codecs ====&lt;br /&gt;
* Verlustfreie&lt;br /&gt;
* Verlustbehaftete&lt;br /&gt;
* Musik Codecs&lt;br /&gt;
* Sprach Codecs&lt;br /&gt;
* Niederlatenz Codecs&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was hebt RoarAudio hervor? ===&lt;br /&gt;
Hier Sollen einige der besonderen Fähigkeiten von RoarAudio erläutert werden.&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
RoarAudio zeichnet sich dadurch aus daß er zusätzlich zu PCM Rohdaten auch höher Codecs versteht. Dies hat mehre Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio als Background Stream abzuspielen.&lt;br /&gt;
* Es ist dem Server möglich direkt Streaming-Server wie [[icecast]] zu bedienen. Es ist keine weitere &#039;&#039;lange pipe&#039;&#039; nötig um Webradio zu senden. Dies verringert die Störanfälligkeit erheblich und verringert die Latenz, da pipe-Puffer entfallen.&lt;br /&gt;
* Auch ist es nur mit stark komprimierenden Codecs möglich über die dem Heim-Anwender zur Verfügung stehenden Schmalband-Anschlüsse Audio entweder von Client zu Server oder zwischen zwei Servern auszutauschen. Auch eine Kopplung über ISDN Kanäle ist so möglich.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk-Transparenz ====&lt;br /&gt;
RoarAudio ist Netzwerks-transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer lokalen Instanz oder einer auf einem anderen Rechner.&lt;br /&gt;
&lt;br /&gt;
Zu diesem Zweck werden mehre Protokolle unterstützt: UNIX Domain Sockets für lokale Verbindungen sowie TCP/IP und DECnet für Verbindungen mit entfernten Rechnern. Auch existiert Support für verschiedene Proxy Typen.&lt;br /&gt;
&lt;br /&gt;
==== Background Streams ====&lt;br /&gt;
Background Streams sind Streams die vom Server selbst bearbeitet werden und keinen Player benötigen um abgespielt zu werden. Dies kann zum Beispiel genutzt werden um Hintergrundmusik einzuspielen wie beispielsweise in einem Kaufhaus. Auch Webradio Streams werden hier unterstützt.&lt;br /&gt;
&lt;br /&gt;
==== Meta Daten ====&lt;br /&gt;
RoarAudio hat die Fähigkeit auf per Stream Basis Meta Daten ab zu legen. Die Mechanismen sind denen von Vorbis Comments nachempfunden und können prinzipiell mehr. Einiges davon ist allerdings noch nicht vollständig implementiert.&lt;br /&gt;
&lt;br /&gt;
Es besteht neben dem manuellen Setzen die Möglichkeit daß ein Player sie setzt und das &#039;&#039;roard&#039;&#039; sie selbstständig setzt. Im letzteren Falle werden diese von verschiedenen anderen Streams zusammen gesetzt. Dies kann nützlich sein um automatisch beim Streaming die Metadaten von einem Player zu übernehmen um die Titel-Informationen weiter zu führen. Manuelles setzen mag als Beispiel interessant sein um den Sendernamen zu setzen.&lt;br /&gt;
&lt;br /&gt;
==== Virtual IO ====&lt;br /&gt;
&#039;&#039;(gestrichen)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Kompatibilitäts Bibliotheken ====&lt;br /&gt;
&#039;&#039;Viele Programme haben keine Unterstützung für RoarAudio, was nun?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um dieses Problem zu lösen gibt es diverse Kompatibilitäts-Bibliotheken.&lt;br /&gt;
Diese stellen Bibliotheken dar welche binär-kompatibel andere Audio Systeme emulieren.&lt;br /&gt;
Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und leiten dann alle Anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechenden Bibliothek.&lt;br /&gt;
&lt;br /&gt;
Die mit Abstand wohl wichtigste ist &#039;&#039;&#039;libroaresd&#039;&#039;&#039;, welche das [[EsounD]] Interface emuliert. das EsounD Interface wird von den allermeisten Applikationen unterstützt da es das wohl älteste Soundserver Interface ist. Es existiert seit 1998.&lt;br /&gt;
&lt;br /&gt;
Weitere Kompatibilitäts Bibliotheken gibt es für das YIFF Sound System, KDEs aRtsc und PulseAudio. Zusammen mit den existierenden Plugins deckt dies nahezu den vollständigen Player Markt fuer GNU/Linux und BSD ab.&lt;br /&gt;
&lt;br /&gt;
===== Welche Schnittstelle für was? =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Interface&lt;br /&gt;
 ! Beispiel Applikationen&lt;br /&gt;
 |-&lt;br /&gt;
 | libroar&lt;br /&gt;
 | roaraudio-tools, XMMS, mplayer, (xine)&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | GNOME, KDE, XMMS, xine, Amarok, wine,... (177 weitere unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | libao&lt;br /&gt;
 | vorbis-tools, FLAC tools, mpd, mpg321, gnomoradio, somaplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | aRts(c) (KDE)&lt;br /&gt;
 | Player mit aRts support: mplayer, xine; kwave, kaudiocreator,...&lt;br /&gt;
 |-&lt;br /&gt;
 | PulseAudio&lt;br /&gt;
 | Ein paar Programme, die meisten über Plugins. (nicht viel unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | YIFF&lt;br /&gt;
 | y-tools&lt;br /&gt;
 |-&lt;br /&gt;
 | gstreamer&lt;br /&gt;
 | GNOME, Alle GNOME Player. Dieverse andere.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Konzepte und Architektur ===&lt;br /&gt;
RoarAudio ist zwar in C geschrieben aber größtenteils Objekt-orientiert. Er umfasst im Moment etwa 28 tausend Zeilen C. (EsounD kommt auf rund 15 tausend, PulseAudio 74 tausend und aRts auf 130 tausend).&lt;br /&gt;
&lt;br /&gt;
==== Clients und Streams ====&lt;br /&gt;
&lt;br /&gt;
Vor allem wichtig und nach Außen hin sichtbar sind die Client und Stream Objekte.&lt;br /&gt;
Ein Client Objekt verkörpert einen (Netzwerk) Client, zum Beispiel einen Player oder ein Steuerprogramm wie roarctl. Es kann auch Stream Objekte assoziiert haben (Beispielsweise im Falle von Abspielen von Musik).&lt;br /&gt;
&lt;br /&gt;
Ein Stream Objekt stellt einen eigentlichen Audio Datenstrom dar. Dieses Objekt beinhaltet diverse Informationen über den Datenstrom: Informationen wie der roard ihn auslesen kann, Sample Rate/Bits/Channels, Meta Daten und vieles mehr. Ein Stream gehört immer zu einem Client, wobei der Client auch der roard selbst sein kann. Er lässt sich durch &#039;&#039;attachen&#039;&#039; wechseln. Dies kommt zum Einsatz um Hintergrund-Streams zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei jedem Audio Datenstrom der in den roard hinein oder heraus fließt handelt es sich um einen Stream. Dies schließt Datenströme zu Geräten wie Soundcards mit ein. Hierdurch ist eine maximale Flexibilität gegeben.&lt;br /&gt;
&lt;br /&gt;
===== Stream Typen =====&lt;br /&gt;
Es gibt diverse verschiedene Streamtypen. Die folgende Tabelle beschreibt sie kurz:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Typ&lt;br /&gt;
 ! Richtung&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Play&lt;br /&gt;
 | zu Server&lt;br /&gt;
 | Standard Typ: eingehende Audio Daten.&lt;br /&gt;
 |-&lt;br /&gt;
 | Monitor&lt;br /&gt;
 | von Server&lt;br /&gt;
 | Hier werden die aktuellen gemischten Audio Daten vom Server abgefragt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Filter&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Dieser Stream dient zum Zwischenschalten von Filtern im Mixer&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Dieser Stream geht an einen Driver Richtung Soundcard oder ähnlichem&lt;br /&gt;
 |-&lt;br /&gt;
 | Mixing&lt;br /&gt;
 | keine&lt;br /&gt;
 | Interne Audio Puffer genutzt zum Mischen der Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | Bidir&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Play und Monitor in einem.&lt;br /&gt;
 |-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 | Record&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Flag Abhänig&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Internal&lt;br /&gt;
 | keine&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Stream Flags =====&lt;br /&gt;
Ein Stream kann desweiteren Flags haben die sein Verhalten genauer bestimmen. Die Flags sind hier zusammen gefasst:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary&lt;br /&gt;
 | Bei Ende des Streams beendet sich roard selbst.&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | Es wird Ein Output Driver für diesen Stream verwendet.&lt;br /&gt;
 |-&lt;br /&gt;
 | Source&lt;br /&gt;
 | Bei diesem Stream handelt es sich um eine Source.&lt;br /&gt;
 |-&lt;br /&gt;
 | Sync&lt;br /&gt;
 | Der Stream ist Synchron (mit Hardware bzw. seinem Ziel)&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Ausgehende Streams mit diesem Flag beziehen ihre Meta Daten automatisch von eingehenden Streams mit diesem Flag.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Driver ====&lt;br /&gt;
Ein Driver ist ein Objekt das eine Schnittstelle zur Verfügung stellt um externe Ressourcen anzusprechen, die sich nicht der UNIX IO Philosophie entsprechend verhalten (Erweiterte Handshake zum Beispiel). Dies können Soundcards oder auch Streaming Server sein. Hierzu zählen als Beispiel der OSS (Open Sound System) und der libshout (Icecast) Treiber.&lt;br /&gt;
&lt;br /&gt;
==== Sources ====&lt;br /&gt;
Eine Source ist an sich ein normaler Stream. Der Unterschied besteht darin das roard selbst den Stream beim Starten initialisiert. Neben Test Szenarien ist dies vor allem hilfreich um sich die Audio Ausgabe eines anderen Rechners lokal zu spiegeln.&lt;br /&gt;
&lt;br /&gt;
==== Codecfilter ====&lt;br /&gt;
Bei den Codecfiltern handelt es sich um ein Abstraktions Layer welches roard die Möglichkeit gibt höhere Codecs zu sprechen wie etwa Ogg Vorbis. Einige Codecfilter können nur Lesen andere auch Schreiben. Wird ein Stream mit einem unterstützen Codec aufgebaut so wird automatisch eine Instanz eines passenden Codecfilters erzeugt. Sie verhalten sich somit weitgehend transparent. Viele höheren Codec sind allerdings nicht in der Lage alle Stream Typen zu bedienen. Der Streamtype Filter wird am wenigsten unterstützt da er ein exaktes Timing und Blocking Verhalten benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Filter ====&lt;br /&gt;
* filter&lt;br /&gt;
* ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme des Realtime Audio Mischens ===&lt;br /&gt;
Beim Mischen in Realtime kommen zu den Problemen, die beim normalen Mischen von Audio auftreten, noch weitere hinzu.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Probleme sind:&lt;br /&gt;
&lt;br /&gt;
* Resampling - Wenn nicht alle Streams dieselbe Abtastfrequenz haben müssen die betroffenen Streams auf die Abtastrate des Ausgangs umgerechnet werden. Hierzu gibt es diverse Verfahren. Man kann sich das etwa wie das Skalieren eines Bildes vorstellen: Es gibt Filter die schnell sind und welche die gut sind. Muss man in Realtime resampeln so muss man vor allem schnell sein, will aber auch noch möglichst gut sein. Viele Soundserver behalten schlichtweg die Pegel entsprechend der neuen Abtasterate länger oder kürzer bei (s.g. zoh - Zero Order Hold). Dies erzeugt Rechteck Signale welche wiederum diverse Oberwellen erzeugen. RoarAudio setzt hier Polynomapproximation dritten Grades ein. Dies reduziert die Oberwellen schon deutlich dank leichter Tiefpass Eigenschaft.&lt;br /&gt;
* Da nicht für den gesamten Titel der Amplituden-Gang bestimmt werden kann ist es möglich daß es zu sogenanntem Clipping kommt. Clipping bezeichnet das Problem, daß die Summe der Amplituden aller Eingangssignale größer ist als der zulässige Wertebereich. In diesem Falle wird das Ausgangssignal geclippt, sprich es wird auf den maximalen sich im zulässigen Wertebereich liegenden Wert herunter gesetzt. Dies lässt sich nicht vollkommen vermeiden aber durch geschickte Wahl des Mischverfahrens reduzieren. Es empfiehlt sich dennoch einen ReplayGain einzubeziehen. Dieser kann das Clipping zwar auch nicht komplett verhindern aber der Soundserver kann besser abschätzen wie die Gefahr für Clipping ist und rechtzeitig reagieren.&lt;br /&gt;
* Vor allem beim Pegel-Umrechnen kommt es selbstverständlich zu Rechenungenauigkeiten. Um diese zu minimieren skaliert RoarAudio die Signale auf bis zu ihrer doppelten Größe um Rechenungenauigkeiten zu vermeiden. bei einem 16 Bit Eingangssignal wird als Beispiel auf 32 Bit skaliert was zusätzliche 96dB Rauschabstand während der Umrechnung liefert.&lt;br /&gt;
* &amp;lt;s&amp;gt;Werden Signale mit verschiedenen Pegeln gemischt so kann es sinnvoll sein mit der Breite der Ausgangs-Samples hoch zu gehen. Als Beispiel: wenn zwei Signale mit je 16 Bit mit den Pegeln 1 und 1/4 gemischt werden reduziert der Rauschabstand des zweiten Signals um 12dB. Man sollte überlegen auf 24 Bit am Ausgang zu wechseln. Die Allgemeine Regel lautet: für den Faktor 2 oder 6dB die ein Signal abgeschwächt wird braucht man am Ausgang ein Bit mehr. Wenn mal also eine Hintergrund-Musik mit -48dB auf Sprache mischt (durchaus realistisch) muss man von 16 Bit am Ausgang auf 24 Bit hoch gehen um keinen Qualitäts-Verlust der Musik zu erhalten.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Einige Formate sind nicht Frame basierend. Dies sind vor allem MIDI Formate. Hier kann es passieren daß die Synchronisation zwischen diesen Streams und den anderen sich an Frame-Grenzen treffe. Dies kann zu unschönen Nebeneffekten führen. Manche Codecs sind auch nur in der Lage auf gewisse Zeitraster Ende-Marken zu setzen was in unsauberen Enden mit Artefakten enden kann. Im Realtime Bereich lässt sich dies nicht korrigieren und solche Codecs sollten vermieden werden.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem: Lokale Synchronität ====&lt;br /&gt;
Die wichtigsten Störfaktoren sind:&lt;br /&gt;
&lt;br /&gt;
* Wie jede Hardware besitzen Soundkarten eine Verzögerung. Das heißt daß sie eine gewisse Zeit brauchen zwischen Erhalt von Daten und deren Ausgabe. Diese Zeit liegt im Bereich von wenigen Millisekunden (z.B. Studio Karten) und kann bis in den Bereich von mehren hundert Millisekunden gehen (z.B. 2.5 Euro USB Karten von $SUPERMARKT), je nach Karte. Die meisten Karten bieten aber eine Möglichkeit abzufragen wo sie gerade in ihrem Puffer sind. Wie dies genau funktioniert ist von Karte zu Karte unterschiedlich. Der Treiber der Karte ist dafür zuständig diese Funktionen an höhere Interfaces (OSS, alsa, sndio,...) weiterzureichen und den Applikationen zur Verfügung zu stellen.&lt;br /&gt;
* Neben dem Delay in der Hardware erzeugen selbstverständlich auch der Kernel und die Treiber eine weitere Verzögerung. Dies passiert aus vielen Gründen: Der Programmcode muss natürlich erst einmal ausgeführt werden. Auch werden Interupts nicht unbedingt sofort bearbeitet (zum Beispiel weil gerade ein anderer, höherwertiger bearbeitet wird).&lt;br /&gt;
* Die nächste Schicht, die Sound APIs, erzeugen auf ähnliche Weise weitere Delays. Hier kommt dazu das viele mit relativ großen Puffern arbeiten (Beispielsweise EsounD mit 0.28sec - im Vergleich zu roard mit Standard Puffer von 0.01sec). Die Puffergröße ist in dem meisten Fällen die kleinste Einheit in der Synchronität gewährleistet werden kann.&lt;br /&gt;
* Da die meisten Systeme (alle auf denen RoarAudio läuft) Multitasking betreiben stellt sich ein weiteres Problem: Der entsprechende Prozess muss eine Zeitscheibe bekommen bevor er reagieren kann. Läuft ein anderer Prozess gerade so muss er potentiell warten. Auf den meisten POSIX kompatiblem Systemen basiert das Multitasking zwar auf Ereignissen, sprich ein Prozess läuft so lange bis ein anderer ein Ereignis zu bearbeiten hat (keine feste Zeitscheiben-Länge), was dazu führt das dieses Problem ist nicht all zu groß ist. Aber es kann natürlich gerade ein anderer Prozess mit höherer Priorität laufen der ein anderes Ereignis bearbeitet und somit nicht vom Kernel unterbrochen wird.&lt;br /&gt;
* Unsynchrones clocking&lt;br /&gt;
&lt;br /&gt;
==== Problem: Netzwerk Synchronität ====&lt;br /&gt;
* lag&lt;br /&gt;
* jitter&lt;br /&gt;
* Netzwerk Implementierungen&lt;br /&gt;
&lt;br /&gt;
==== Lösungsansätze ====&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ignorieren&#039;&#039;&#039; - Diverse Probleme lassen sich schlichtweg einfach ignorieren. Dies sind vor allem Probleme die sich statistisch über die Zeit aufheben. Ist diese Strategie möglich so sollte sie verfolgt werden im Sinne von KISS (Keep It Small and Simple). Sie kann natürlich auch extrem daneben liegen und man sollte sich um eine echte Lösung bemühen.&lt;br /&gt;
* &#039;&#039;&#039;TOS&#039;&#039;&#039; - Setzen des TOS (Type Of Service) Feldes bei IP mag helfen. Viele Backbone Provider ignorieren dieses Feld zwar aber im LAN kann es durchaus helfen. Gerade bei anderer starker, lang packetiger Kommunikation zwischen dem eignen und dem Ziehl Rechner (file transfers).&lt;br /&gt;
* &#039;&#039;&#039;QoS&#039;&#039;&#039; - Benutzung von QoS (Quality of Service) kann im Backbone Bereich die Latenz erheblich senken da man das Puffer-Verhalten der Geräte beeinflusst. Der Nachteil ist, daß hierzu Unterstützung da sein muss. mit IPv6 scheint sich hier aber einiges zu bessern.&lt;br /&gt;
* &#039;&#039;&#039;Geschickte Auswahl von Algorithmen und Protokollen&#039;&#039;&#039; - Die Auswahl der Algorithmen und Protokolle ist entscheidend. Für die meisten Aufgaben gibt es mehre mögliche Lösungen (&#039;&#039;Viele Wege führen nach Rom&#039;&#039;). Aber nicht alle sind gleich gut geeignet. Deswegen sollte hier eine sinnvolle Auswahl getroffen werden.&lt;br /&gt;
* &#039;&#039;&#039;Künstlicher Delay&#039;&#039;&#039; - Es besteht die Möglichkeit einzelne Streams oder Ereignisse künstlich leicht zu verzögern. Hierdurch kann ein Abgleich der Latenzen gemacht werden was dazu dient Synchronität herzustellen. Normalerweise werden alle Streams so lange verzögert bis sie eine &#039;&#039;künstliche&#039;&#039; Latenz gleich dem Stream haben der die höchste Latenz aufweist.&lt;br /&gt;
* &#039;&#039;&#039;Resampling&#039;&#039;&#039; - Sind mehre Clocks beteiligt oder kommen die Daten etwas zu schnell oder zu langsam kann man leichtes Resampling betreiben. Das heißt das das Signal künstlich gestaucht oder in die Länge gezogen wird. Geschieht dies nicht ruckartig kann das Gehör den Unterschied nicht wahrnehmen solange dieses Resamping nur in kleinen Bereichen passiert (je nach Literatur 2% bis 5%, Werte die größer sind als die Ungenauigkeit von Quarzen und somit geeignet sind um Clock driffting auszugleichen.).&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
...&lt;br /&gt;
==== Win32 Port ====&lt;br /&gt;
Ein Win32 Port existiert zum jetzigen Zeitpunkt nicht. Dies liegt an mehren Faktoren: Zum einen ist Win32, was den nahe-realtime Betrieb angeht, nicht zuverlässig genug. Zum anderen ist bei Win32 das Networking kein Teil des Kernels wie auf UNIX und POSIX Systemen: Es ist viel mehr teilweise im Userland. Dies hat zur Folge das zu jedem Zeitpunkt eine Applikation wissen muss von welchem Type ein Filehandle ist, da man Basis Funktionen wie read(), write(), close() nicht auf alle Filehandles anwenden kann. Vielmehr hat jeder Type von Filehandles seinen eigenen Satz Funtionen. RoarAudio verfolgt die UNIX Philosophie: &#039;&#039;Alles ist eine Datei&#039;&#039;. Große Patches wären nötig.&lt;br /&gt;
&lt;br /&gt;
Ein Weiteres ist das ein solcher Port viel Zeit in Anspruch nimmt und weder das Projekt noch die Freie Software Bewegung voranbringt.&lt;br /&gt;
&lt;br /&gt;
Im Moment existieren kleinere Patches die vielleicht irgendwann mal Basis Funktionalität mit sich bringen könnten. An ein roard für Win32 ist in absehbarer Zeit nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
Allerdings laufen Teile von RoarAudio in Cygwin mehr oder minder gut. Viele Probleme treten hier auf aber es ist prinzipiell möglich es unter Cygwin zum Laufen zu bringen (außerhalb des nahe-realtime Betriebs).&lt;br /&gt;
&lt;br /&gt;
Es besteht aber die Möglichkeit einige Win32 Applikationen mittels pseudo Web Radio Streams anzubinden.&lt;br /&gt;
&lt;br /&gt;
==== MP3 ====&lt;br /&gt;
* Kein Streaming&lt;br /&gt;
* Keine Meta Daten&lt;br /&gt;
* Schlechte Qualität&lt;br /&gt;
* Patente&lt;br /&gt;
&lt;br /&gt;
=== Querverweise ===&lt;br /&gt;
; [http://raum.keep-cool.org/ RAUM Media Container]&lt;br /&gt;
: Für RoarAudio entwickelter Container, vor allem für Speex und CELT.&lt;br /&gt;
; [http://www.icecast.org/ Icecast] - Multimedia streaming server&lt;br /&gt;
: Software für Webradio und WebTV streaming.&lt;br /&gt;
; [http://www.xiph.org/ Xiph.Org Foundation]&lt;br /&gt;
: Organisation zur Entwicklung von freien Codecs.&lt;br /&gt;
; SIP&lt;br /&gt;
: Standard für VoIP - Internet-Telephonie.&lt;br /&gt;
&lt;br /&gt;
=== Vorführung ===&lt;br /&gt;
{{Vortrags Zeit|30}}&lt;br /&gt;
&lt;br /&gt;
* Allgemeiner Betrieb&lt;br /&gt;
** roard&lt;br /&gt;
** roarvorbis/roarcatplay?&lt;br /&gt;
** roarctl&lt;br /&gt;
** xmms&lt;br /&gt;
* Background Streams&lt;br /&gt;
** roarradio&lt;br /&gt;
* Kompatibilitäts Bibliotheken&lt;br /&gt;
** libroaresd:&lt;br /&gt;
*** &amp;lt;s&amp;gt;xmms&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;mplayer&amp;lt;/s&amp;gt;&lt;br /&gt;
*** Amarok&lt;br /&gt;
&lt;br /&gt;
== Fragen ==&lt;br /&gt;
* &#039;&#039;immer gerne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6804</id>
		<title>RoarAudio/Vortrag/Erster Vortrag</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6804"/>
		<updated>2009-02-06T09:51:31Z</updated>

		<summary type="html">&lt;p&gt;Che: /* Clients und Streams */  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 [[RoarAudio]] und die Realtime Audio mixing Problematik vor einem Unixpublikum mit keinen oder kaum 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;
== Der Autor ==&lt;br /&gt;
[[Benutzer:Ph3-der-loewe|Philipp &#039;&#039;ph3-der-loewe&#039;&#039; Schafft]], Software Entwickler und Projekt Urheber.&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
RoarAudio ist ein Sound-Server für POSIX konformen Betriebssysteme (GNU/Linux, *BSD, Mac OS X und andere) unter aktiver Entwicklung. Er bietet gegenüber anderen Sound-Servern zusätzliche Funktionen für den Betrieb in kleinen Radio und TV Studios, aber auch den Heimgebrauch. Dieser Vortrag soll einen Einblick in RoarAudio, seine Funktionalität und Funktionsweise sowie damit verbunden Problemstellungen auf einfachem Niveau bieten. Den Abschluss bildet eine Demonstration.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein Soundserver.&lt;br /&gt;
&lt;br /&gt;
==== Was ist ein Soundserver ====&lt;br /&gt;
Ein Soundserver ist eine Programm dass im Hintergrund Audio Daten mischt und das Ergebnis weiter leitet, meist an eine Soundcard.&lt;br /&gt;
&lt;br /&gt;
Soundserver werden benötigt wenn wenn das unterliegende Audio-Ausgabegerät nur einen einzigen Datenstrom zu einer Zeit verarbeiten kann (Single Stream Soundcards). Sie stellen eine Art virtuelle Soundcard dar zu der Programme wie Player ihre Daten schicken können um eine simultane Ausgabe mit zum Beispiel Notify-Sounds von Chat Clients oder ähnlichem zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Sie bieten meist weitere Funktionen wie das Mischen unter Berücksichtigung von verschiedenen Pegeln. Einige Soundserver ermöglichen auch die Benutzung von Netzwerken zur Übertragung von Audio Daten für die Wiedergabe auf einer anderen Maschine. Dies beides kann auch RoarAudio.&lt;br /&gt;
&lt;br /&gt;
=== Projekt Ziele ===&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
Das Projekt verfolgt im Prinzip das Ziel, eine leistungsfähige Mischsoftware für den Studio Betrieb zur Verfügung zu stellen, aber dennoch ein Produkt zu liefern das auch für den Heim-Anwender angemessen ist.&lt;br /&gt;
&lt;br /&gt;
==== für Heim-Anwender ====&lt;br /&gt;
Heim-Anwender Teilen sich in zwei Gruppen auf:&lt;br /&gt;
Die größere Menge interessiert es nicht wieso Musik aus den Lautsprechern kommt, Hauptsache sie tut es. Für diese Gruppe muss RoarAudio einfach &#039;&#039;out of the box&#039;&#039; funktionieren.&lt;br /&gt;
Die andere Gruppe sind Anwender die mehr machen wollen. Hier soll RoarAudio ein leistungsstarkes Backend sein das möglichst Ressourcen schonend alle gewünschten Funktionen anbietet.&lt;br /&gt;
&lt;br /&gt;
==== Im Studio Betrieb ====&lt;br /&gt;
Wie oben schon angedeutet ist RoarAudio aber im Studio-Einsatz wesentlich interessanter: in einem klassischen Studio steht meist ein großes analoges Mischpult. Dies ist eine wundervolle Sache solange man primär analoge Eingänge braucht: beispielsweise von einer Band. In heutigen Radio- und Fernsehstudios kommen aber die meisten Kanäle aus dem Rechner oder anderen digitalen Geräten wie CD Spielern.&lt;br /&gt;
&lt;br /&gt;
Ein analoges Mischen hat hier nun mehre Nachteile, die wichtigsten sind wohl:&lt;br /&gt;
* Analoges Rauschen&lt;br /&gt;
* Verzerrungen im Frequenzgang&lt;br /&gt;
* Klirren&lt;br /&gt;
* Quantisierungsrauchen&lt;br /&gt;
* Effekte durch asynchrone Abtastung&lt;br /&gt;
&lt;br /&gt;
Eine Alternative wäre in einigen Fällen sicherlich ein Digital-Mischpult. Diese sind aber meist sehr teuer.&lt;br /&gt;
&lt;br /&gt;
RoarAudio kommt hier als erst einmal reine Software-basierende Lösung. Natürlich ist es möglich über die Steuerschnittstellen auch externe Hardware anzuschließen. Hier gibt es auch Planungen, ein Hardware Frontend zu entwerfen das dann kostengünstig zu haben ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exkurs: Codecs und Container ===&lt;br /&gt;
Ein Codec ist eine Spezifikation (meist werden auch die Implementierungen Codec genannt) wie Rohdaten, im Falle von Audio meist PCM Daten, als Datenstrom oder -block repräsentiert werden. Hierzu zählt meist als primäres Kriterium die Kompression. Weitere Informationen wie Synchronisationsdaten können ebenfalls durch den Codec spezifiziert sein, werden aber meist im Container abgelegt.&lt;br /&gt;
&lt;br /&gt;
Ein Container ist im Gegensatz zu einem Codec eine Spezifikation wie Daten die mittels Codecs in eine Datei codiert wurden in oder einen Stream verpackt werden. Hierzu zählen Dinge wie globale File-Magic, Angabe des Codecs, Meta Daten, Angaben über rate/bps/channels und Ähnliches.&lt;br /&gt;
&lt;br /&gt;
==== Verschiedene Arten von Codecs ====&lt;br /&gt;
* Verlustfreie&lt;br /&gt;
* Verlustbehaftete&lt;br /&gt;
* Musik Codecs&lt;br /&gt;
* Sprach Codecs&lt;br /&gt;
* Niederlatenz Codecs&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was hebt RoarAudio hervor? ===&lt;br /&gt;
Hier Sollen einige der besonderen Fähigkeiten von RoarAudio erläutert werden.&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
RoarAudio zeichnet sich dadurch aus daß er zusätzlich zu PCM Rohdaten auch höher Codecs versteht. Dies hat mehre Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio als Background Stream abzuspielen.&lt;br /&gt;
* Es ist dem Server möglich direkt Streaming-Server wie [[icecast]] zu bedienen. Es ist keine weitere &#039;&#039;lange pipe&#039;&#039; nötig um Webradio zu senden. Dies verringert die Störanfälligkeit erheblich und verringert die Latenz, da pipe-Puffer entfallen.&lt;br /&gt;
* Auch ist es nur mit stark komprimierenden Codecs möglich über die dem Heim-Anwender zur Verfügung stehenden Schmalband-Anschlüsse Audio entweder von Client zu Server oder zwischen zwei Servern auszutauschen. Auch eine Kopplung über ISDN Kanäle ist so möglich.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk-Transparenz ====&lt;br /&gt;
RoarAudio ist Netzwerks-transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer lokalen Instanz oder einer auf einem anderen Rechner.&lt;br /&gt;
&lt;br /&gt;
Zu diesem Zweck werden mehre Protokolle unterstützt: UNIX Domain Sockets für lokale Verbindungen sowie TCP/IP und DECnet für Verbindungen mit entfernten Rechnern. Auch existiert Support für verschiedene Proxy Typen.&lt;br /&gt;
&lt;br /&gt;
==== Background Streams ====&lt;br /&gt;
Background Streams sind Streams die vom Server selbst bearbeitet werden und keinen Player benötigen um abgespielt zu werden. Dies kann zum Beispiel genutzt werden um Hintergrundmusik einzuspielen wie beispielsweise in einem Kaufhaus. Auch Webradio Streams werden hier unterstützt.&lt;br /&gt;
&lt;br /&gt;
==== Meta Daten ====&lt;br /&gt;
RoarAudio hat die Fähigkeit auf per Stream Basis Meta Daten ab zu legen. Die Mechanismen sind denen von Vorbis Comments nachempfunden und können prinzipiell mehr. Einiges davon ist allerdings noch nicht vollständig implementiert.&lt;br /&gt;
&lt;br /&gt;
Es besteht neben dem manuellen Setzen die Möglichkeit daß ein Player sie setzt und das &#039;&#039;roard&#039;&#039; sie selbstständig setzt. Im letzteren Falle werden diese von verschiedenen anderen Streams zusammen gesetzt. Dies kann nützlich sein um automatisch beim Streaming die Metadaten von einem Player zu übernehmen um die Titel-Informationen weiter zu führen. Manuelles setzen mag als Beispiel interessant sein um den Sendernamen zu setzen.&lt;br /&gt;
&lt;br /&gt;
==== Virtual IO ====&lt;br /&gt;
&#039;&#039;(gestrichen)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Kompatibilitäts Bibliotheken ====&lt;br /&gt;
&#039;&#039;Viele Programme haben keine Unterstützung für RoarAudio, was nun?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um dieses Problem zu lösen gibt es diverse Kompatibilitäts-Bibliotheken.&lt;br /&gt;
Diese stellen Bibliotheken dar welche binär-kompatibel andere Audio Systeme emulieren.&lt;br /&gt;
Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und leiten dann alle Anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechenden Bibliothek.&lt;br /&gt;
&lt;br /&gt;
Die mit Abstand wohl wichtigste ist &#039;&#039;&#039;libroaresd&#039;&#039;&#039;, welche das [[EsounD]] Interface emuliert. das EsounD Interface wird von den allermeisten Applikationen unterstützt da es das wohl älteste Soundserver Interface ist. Es existiert seit 1998.&lt;br /&gt;
&lt;br /&gt;
Weitere Kompatibilitäts Bibliotheken gibt es für das YIFF Sound System, KDEs aRtsc und PulseAudio. Zusammen mit den existierenden Plugins deckt dies nahezu den vollständigen Player Markt fuer GNU/Linux und BSD ab.&lt;br /&gt;
&lt;br /&gt;
===== Welche Schnittstelle für was? =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Interface&lt;br /&gt;
 ! Beispiel Applikationen&lt;br /&gt;
 |-&lt;br /&gt;
 | libroar&lt;br /&gt;
 | roaraudio-tools, XMMS, mplayer, (xine)&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | GNOME, KDE, XMMS, xine, Amarok, wine,... (177 weitere unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | libao&lt;br /&gt;
 | vorbis-tools, FLAC tools, mpd, mpg321, gnomoradio, somaplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | aRts(c) (KDE)&lt;br /&gt;
 | Player mit aRts support: mplayer, xine; kwave, kaudiocreator,...&lt;br /&gt;
 |-&lt;br /&gt;
 | PulseAudio&lt;br /&gt;
 | Ein paar Programme, die meisten über Plugins. (nicht viel unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | YIFF&lt;br /&gt;
 | y-tools&lt;br /&gt;
 |-&lt;br /&gt;
 | gstreamer&lt;br /&gt;
 | GNOME, Alle GNOME Player. Dieverse andere.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Konzepte und Architektur ===&lt;br /&gt;
RoarAudio ist zwar in C geschrieben aber größtenteils Objekt-orientiert. Er umfasst im Moment etwa 28 tausend Zeilen C. (EsounD kommt auf rund 15 tausend, PulseAudio 74 tausend und aRts auf 130 tausend).&lt;br /&gt;
&lt;br /&gt;
==== Clients und Streams ====&lt;br /&gt;
&lt;br /&gt;
Vor allem wichtig und nach Außen hin sichtbar sind die Client und Stream Objekte.&lt;br /&gt;
Ein Client Objekt verkörpert einen (Netzwerk) Client, zum Beispiel einen Player oder ein Steuerprogramm wie roarctl. Es kann auch Stream Objekte assoziiert haben (Beispielsweise im Falle von Abspielen von Musik).&lt;br /&gt;
&lt;br /&gt;
Ein Stream Objekt stellt einen eigentlichen Audio Datenstrom dar. Dieses Objekt beinhaltet diverse Informationen über den Datenstrom: Informationen wie der roard ihn auslesen kann, Sample Rate/Bits/Channels, Meta Daten und vieles mehr. Ein Stream gehört immer zu einem Client, wobei der Client auch der roard selbst sein kann. Er lässt sich durch &#039;&#039;attachen&#039;&#039; wechseln. Dies kommt zum Einsatz um Hintergrund-Streams zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei jedem Audio Datenstrom der in den roard hinein oder heraus fließt handelt es sich um einen Stream. Dies schließt Datenströme zu Geräten wie Soundcards mit ein. Hierdurch ist eine maximale Flexibilität gegeben.&lt;br /&gt;
&lt;br /&gt;
===== Stream Typen =====&lt;br /&gt;
Es gibt diverse verschiedene Streamtypen. Die folgende Tabelle beschreibt sie kurz:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Typ&lt;br /&gt;
 ! Richtung&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Play&lt;br /&gt;
 | zu Server&lt;br /&gt;
 | Standard Typ: eingehende Audio Daten.&lt;br /&gt;
 |-&lt;br /&gt;
 | Monitor&lt;br /&gt;
 | von Server&lt;br /&gt;
 | Hier werden die aktuellen gemischten Audio Daten vom Server abgefragt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Filter&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Dieser Stream dient zum Zwischenschalten von Filtern im Mixer&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Dieser Stream geht an einen Driver Richtung Soundcard oder ähnlichem&lt;br /&gt;
 |-&lt;br /&gt;
 | Mixing&lt;br /&gt;
 | keine&lt;br /&gt;
 | Interne Audio Puffer genutzt zum Mischen der Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | Bidir&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Play und Monitor in einem.&lt;br /&gt;
 |-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 | Record&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Flag Abhänig&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Internal&lt;br /&gt;
 | keine&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Stream Flags =====&lt;br /&gt;
Ein Stream kann desweiteren Flags haben die sein Verhalten genauer bestimmen. Die Flags sind hier zusammen gefasst:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary&lt;br /&gt;
 | Bei Ende des Streams beendet sich roard selbst.&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | Es wird Ein Output Driver für diesen Stream verwendet.&lt;br /&gt;
 |-&lt;br /&gt;
 | Source&lt;br /&gt;
 | Bei diesem Stream handelt es sich um eine Source.&lt;br /&gt;
 |-&lt;br /&gt;
 | Sync&lt;br /&gt;
 | Der Stream ist Synchron (mit Hardware bzw. seinem Ziel)&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Ausgehende Streams mit diesem Flag beziehen ihre Meta Daten automatisch von eingehenden Streams mit diesem Flag.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Driver ====&lt;br /&gt;
Ein Driver ist ein Objekt das eine Schnittstelle zur Verfügung stellt um externe Ressourcen anzusprechen, die sich nicht der UNIX IO Philosophie entsprechend verhalten (Erweiterte Handshake zum Beispiel). Dies können Soundcards oder auch Streaming Server sein. Hierzu zählen als Beispiel der OSS (Open Sound System) und der libshout (Icecast) Treiber.&lt;br /&gt;
&lt;br /&gt;
==== Sources ====&lt;br /&gt;
Eine Source ist an sich ein normaler Stream. Der Unterschied besteht darin das roard selbst den Stream beim Starten initialisiert. Neben Test Szenarien ist dies vor allem hilfreich um sich die Audio Ausgabe eines anderen Rechners lokal zu spiegeln.&lt;br /&gt;
&lt;br /&gt;
==== Codecfilter ====&lt;br /&gt;
Bei den Codecfiltern handelt es sich um ein Abstraktions Layer welches roard die Möglichkeit gibt höhere Codecs zu sprechen wie etwa Ogg Vorbis. Einige Codecfilter können nur Lesen andere auch Schreiben. Wird ein Stream mit einem unterstützen Codec aufgebaut so wird automatisch eine Instanz eines passenden Codecfilters erzeugt. Sie verhalten sich somit weitgehend transparent. Viele höheren Codec sind allerdings nicht in der Lage alle Stream Typen zu bedienen. Der Streamtype Filter wird am wenigsten unterstützt da er ein exaktes Timing und Blocking Verhalten benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Filter ====&lt;br /&gt;
* filter&lt;br /&gt;
* ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme des Realtime Audio Mischens ===&lt;br /&gt;
Beim Mischen in Realtime kommen zu den Problemen die beim normalen Mischen von Audio auftreten noch weitere hinzu.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Probleme sind:&lt;br /&gt;
&lt;br /&gt;
* Resampling - Wenn nicht alle Streams dieselbe Abtastfrequens haben müssen die betroffenen Streams auf die Abtastrate des Ausgangs umgerechnet werden. Hierzu gibt es diverse Verfahren. Man kann sich das etwa wie das Skalieren eines Bildes vorstellen: Es gibt Filter die schnell sind und welche die gut sind. Muss man in Realtime resampeln so muss man vor allem schnell sein, will aber auch noch möglichst gut sein. Viele Soundserver behalten schlichtweg die Pegel entsprechend der neuen Abtaste Rate länger oder kürzer bei (s.g. zoh - Zero Order Hold). Dies erzeugt Rechteck Signale welche wiederum diverse Oberwellen erzeugen. RoarAudio setzt hier Polynomapproximation dritten Grades ein. Dies reduziert die Oberwellen schon deutlich dank leichter Tiefpass Eigenschaft.&lt;br /&gt;
* Da nicht für den gesamten Titel der Amplituden-Gang bestimmt werden kann ist es möglich daß es zu sogenanntem Clipping kommt. Clipping bezeichnet das Problem, daß die Summe der Amplituden aller Eingangssignale größer ist als der zulässige Wertebereich. In diesem Falle wird das Ausgangssignal geclippt, sprich es wird auf den maximalen sich im zulässigen Wertebereich liegenden Wert herunter gesetzt. Dies lässt sich nicht vollkommen vermeiden aber durch geschickte Wahl des Mischverfahrens reduzieren. Es empfiehlt sich dennoch einen ReplayGain einzubeziehen. Dieser kann das Clipping zwar auch nicht komplett verhindern aber der Soundserver kann besser abschätzen wie die Gefahr für Clipping ist und rechtzeitig reagieren.&lt;br /&gt;
* Vor Allem beim Pegel umrechnen kommt es selbstverständlich zu Rechenungenauigkeiten. Um diese zu minimieren skaliert RoarAudio die Signale auf bis zu ihrer doppelten Größe auf um Rechenungenauigkeiten zu vermeiden. bei einem 16 Bit Eingangssignal wird als Beispiel auf 32 Bit skaliert was zusätzliche 96dB Rauschabstand während der Umrechnung liefert.&lt;br /&gt;
* &amp;lt;s&amp;gt;Werden Signale mit verschiedenen Pegeln gemischt so kann es sinnvoll sein mit der Breite der Ausgangs-Samples hoch zu gehen. Als Beispiel: wenn zwei Signale mit je 16 Bit mit den Pegeln 1 und 1/4 gemischt werden reduziert der Rauschabstand des zweiten Signals um 12dB. Man sollte überlegen auf 24 Bit am Ausgang zu wechseln. Die Allgemeine Regel lautet: für den Faktor 2 oder 6dB die ein Signal abgeschwächt wird braucht man am Ausgang ein Bit mehr. Wenn mal also eine Hintergrund-Musik mit -48dB auf Sprache mischt (durchaus realistisch) muss man von 16 Bit am Ausgang auf 24 Bit hoch gehen um keinen Qualitäts-Verlust der Musik zu erhalten.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Einige Formate sind nicht Frame basierend. Dies sind vor allem MIDI Formate Hier kann es passieren das die Synchronisation zwischen diesen Streams und den anderen sich an Frame-Grenzen treffe. Dies kann zu unschönen Nebeneffekten führen. Manche Codecs sind auch nur in der Lage auf gewisse Zeitraster Ende-Marken zu setzen was in unsauberen Enden mit Artefakten enden kann. Im Realtime Bereich lässt sich dies nicht korrigieren und solche Codecs sollten vermieden werden.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem: Lokale Synchronität ====&lt;br /&gt;
Die wichtigsten Störfaktoren sind:&lt;br /&gt;
&lt;br /&gt;
* Wie jede Hardware besitzen Soundkarten eine Verzögerung. Das heißt daß sie eine gewisse Zeit brauchen zwischen Erhalt von Daten und deren Ausgabe. Diese Zeit liegt im Bereich von wenigen Millisekunden (z.B. Studio Karten) und kann bis in den Bereich von mehren hundert Millisekunden gehen (z.B. 2.5 Euro USB Karten von $SUPERMARKT), je nach Karte. Die meisten Karten bieten aber eine Möglichkeit ab zu fragen wo sie gerade in ihrem Puffer sind. Wie dies genau funktioniert ist von Karte zu Karte unterschiedlich. Der Treiber der Karte ist dafür zuständig diese Funktionen an höhere Interfaces (OSS, alsa, sndio,...) weiterzureichen und den Applikationen zur Verfügung zu stellen.&lt;br /&gt;
* Neben dem Delay in der Hardware erzeugt selbstverständlich auch der Kernel und die Treiber eine weiter Verzögerung. Dies passiert aus vielen Gründen: Der Programmcode muss natürlich erst einmal ausgeführt werden. Auch werden Interupts nicht um bedingt sofort bearbeitet (zum Beispiel weil gerade ein anderer, höherwertiger bearbeitet wird).&lt;br /&gt;
* Die nächste Schicht, die Sound APIs, erzeugen auf ähnliche Weise weitere Delays. Hier kommt dazu das viele mit relativ großen Puffern arbeiten (Beispielsweise EsounD mit 0.28sec - im Vergleich zu roard mit Standard Puffer von 0.01sec). Die Puffergröße ist in dem meisten Fällen die kleinste Einheit in der Synchronität gewährleistet werden kann.&lt;br /&gt;
* Da die meisten Systeme (alle auf denen RoarAudio läuft) Multitasking betreiben stellt sich ein weiteres Problem: Der entsprechende Prozess muss eine Zeitscheibe bekommen bevor er reagieren kann. Läuft ein anderer Prozess gerade so muss er potentiell warten. Auf den meisten POSIX kompatiblem Systemen basiert das Multitasking zwar auf Ereignissen, sprich ein Prozess läuft so lange bis ein anderer ein Ereignis zu bearbeiten hat (keine feste Zeitscheiben-Länge), was dazu führt das dieses Problem ist nicht all zu groß ist. Aber es kann natürlich gerade ein anderer Prozess mit höherer Priorität laufen der ein anderes Ereignis bearbeitet und somit nicht vom Kernel unterbrochen wird.&lt;br /&gt;
* Unsynchrones clocking&lt;br /&gt;
&lt;br /&gt;
==== Problem: Netzwerk Synchronität ====&lt;br /&gt;
* lag&lt;br /&gt;
* jitter&lt;br /&gt;
* Netzwerk Implementierungen&lt;br /&gt;
&lt;br /&gt;
==== Lösungsansätze ====&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ignorieren&#039;&#039;&#039; - Diverse Probleme lassen sich schlichtweg einfach Ignorieren. Dies sind vor allem Probleme die sich statistisch über die zeit Aufheben. Ist diese Strategie möglich so sollte sie verfolgt werden im sinne von KISS (Keep It Small and Simple). Sie kann natürlich auch extrem daneben liegen und man sollte sich um eine echte Lösung bemühen.&lt;br /&gt;
* &#039;&#039;&#039;TOS&#039;&#039;&#039; - Setzen des TOS (Type Of Service) Feldes bei IP mag helfen. Viele Backbone provider ignoriren dieses Feld zwar aber im LAN kann es durchaus helfen. Gerade bei anderer starker, lang packetiger Kommunikation zwischen dem eignen und dem Ziehl Rechner (file transfers).&lt;br /&gt;
* &#039;&#039;&#039;QoS&#039;&#039;&#039; - Benutzung von QoS (Quality of Service) kann im Backbone Bereich da die Latenz erheblich senken da man das Puffer verhalten der Geräte beeinflusst. Der Nachteil ist das hierzu Unterstützung da sein muss. mit IPv6 scheint sich hier aber einiges zu bessern.&lt;br /&gt;
* &#039;&#039;&#039;Geschickte Auswahl von Algorithmen und Protokollen&#039;&#039;&#039; - Die Auswahl der Algorithmen und Protokolle ist entscheidend. Für die meisten Aufgaben gibt es mehre mögliche Lösungen (&#039;&#039;Viele Wege führen nach Rom&#039;&#039;). Aber nicht alle sind gleich gut geeignet. Deswegen sollte hier eine sinnvolle Auswahl getroffen werden.&lt;br /&gt;
* &#039;&#039;&#039;Künstlicher Delay&#039;&#039;&#039; - Es besteht die Möglichkeit einzelne Streams oder Ereignisse künstlich leicht heraus zu zögern. Hierdurch kann ein Abgleich der Latenzen gemacht werden was dazu dient Syncronität her zu stellen. Normalerweise werden alle Streams so lange verzögert bis sie eine &#039;&#039;künstliche&#039;&#039; Latenzs gleich dem Stream haben der die höchste Latenz aufweist.&lt;br /&gt;
* &#039;&#039;&#039;Resampling&#039;&#039;&#039; - Sind mehre Clocks beteiligt oder kommen die Daten etwas zu schnell oder zu langsam kann man leichtes Resampling betreiben. Das heißt das das Signal künstlich gestaucht oder in die Länge gezogen wird. Geschiet dies nicht ruckartig kann das Gehör den unterschied nicht wahrnehmen solange dieses Resamping nur in kleinen Bereichen passiert (je nach Literatur 2% bis 5%, werte die größer sind als die Ungenauigkeit von Quarzen und somit gegeigent sind um Clock driffting aus zu gleichen.).&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
...&lt;br /&gt;
==== Win32 Port ====&lt;br /&gt;
Ein Win32 Port existiert zum jetzigen Zeitpunkt nicht. Dies liegt an mehren Faktoren: Zum einen ist Win32, was den nahe-realtime Betrieb angeht, nicht zuverlässig genug. Zum anderen ist bei Win32 das Networking kein Teil des Kernels wie auf UNIX und POSIX Systemen: Es ist viel mehr teilweise im Userland. Dies hat zur Folge das zu jedem Zeitpunkt eine Applikation wissen muss von welchem Type ein Filehandle ist, da man Basis Funktionen wie read(), write(), close() nicht auf alle Filehandles anwenden kann. Vielmehr hat jeder Type von Filehandles seinen eigenen Satz Funtionen. RoarAudio verfolgt die UNIX Philosophie: &#039;&#039;Alles ist eine Datei&#039;&#039;. Große Patches wären nötig.&lt;br /&gt;
&lt;br /&gt;
Ein Weiteres ist das ein solcher Port viel Zeit in Anspruch nimmt und weder das Projekt noch die Freie Software Bewegung voranbringt.&lt;br /&gt;
&lt;br /&gt;
Im Moment existieren kleinere Patches die vielleicht irgendwann mal Basis Funktionalität mit sich bringen könnten. An ein roard für Win32 ist in absehbarer Zeit nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
Allerdings laufen Teile von RoarAudio in Cygwin mehr oder minder gut. Viele Probleme treten hier auf aber es ist prinzipiell möglich es unter Cygwin zum Laufen zu bringen (außerhalb des nahe-realtime Betriebs).&lt;br /&gt;
&lt;br /&gt;
Es besteht aber die Möglichkeit einige Win32 Applikationen mittels pseudo Web Radio Streams anzubinden.&lt;br /&gt;
&lt;br /&gt;
==== MP3 ====&lt;br /&gt;
* Kein Streaming&lt;br /&gt;
* Keine Meta Daten&lt;br /&gt;
* Schlechte Qualität&lt;br /&gt;
* Patente&lt;br /&gt;
&lt;br /&gt;
=== Querverweise ===&lt;br /&gt;
; [http://raum.keep-cool.org/ RAUM Media Container]&lt;br /&gt;
: Für RoarAudio entwickelter Container, vor allem für Speex und CELT.&lt;br /&gt;
; [http://www.icecast.org/ Icecast] - Multimedia streaming server&lt;br /&gt;
: Software für Webradio und WebTV streaming.&lt;br /&gt;
; [http://www.xiph.org/ Xiph.Org Foundation]&lt;br /&gt;
: Organisation zur Entwicklung von freien Codecs.&lt;br /&gt;
; SIP&lt;br /&gt;
: Standard für VoIP - Internet-Telephonie.&lt;br /&gt;
&lt;br /&gt;
=== Vorführung ===&lt;br /&gt;
{{Vortrags Zeit|30}}&lt;br /&gt;
&lt;br /&gt;
* Allgemeiner Betrieb&lt;br /&gt;
** roard&lt;br /&gt;
** roarvorbis/roarcatplay?&lt;br /&gt;
** roarctl&lt;br /&gt;
** xmms&lt;br /&gt;
* Background Streams&lt;br /&gt;
** roarradio&lt;br /&gt;
* Kompatibilitäts Bibliotheken&lt;br /&gt;
** libroaresd:&lt;br /&gt;
*** &amp;lt;s&amp;gt;xmms&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;mplayer&amp;lt;/s&amp;gt;&lt;br /&gt;
*** Amarok&lt;br /&gt;
&lt;br /&gt;
== Fragen ==&lt;br /&gt;
* &#039;&#039;immer gerne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6803</id>
		<title>RoarAudio/Vortrag/Erster Vortrag</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6803"/>
		<updated>2009-02-06T09:47:57Z</updated>

		<summary type="html">&lt;p&gt;Che: /* Kompatibilitäts Bibliotheken */  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 [[RoarAudio]] und die Realtime Audio mixing Problematik vor einem Unixpublikum mit keinen oder kaum 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;
== Der Autor ==&lt;br /&gt;
[[Benutzer:Ph3-der-loewe|Philipp &#039;&#039;ph3-der-loewe&#039;&#039; Schafft]], Software Entwickler und Projekt Urheber.&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
RoarAudio ist ein Sound-Server für POSIX konformen Betriebssysteme (GNU/Linux, *BSD, Mac OS X und andere) unter aktiver Entwicklung. Er bietet gegenüber anderen Sound-Servern zusätzliche Funktionen für den Betrieb in kleinen Radio und TV Studios, aber auch den Heimgebrauch. Dieser Vortrag soll einen Einblick in RoarAudio, seine Funktionalität und Funktionsweise sowie damit verbunden Problemstellungen auf einfachem Niveau bieten. Den Abschluss bildet eine Demonstration.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein Soundserver.&lt;br /&gt;
&lt;br /&gt;
==== Was ist ein Soundserver ====&lt;br /&gt;
Ein Soundserver ist eine Programm dass im Hintergrund Audio Daten mischt und das Ergebnis weiter leitet, meist an eine Soundcard.&lt;br /&gt;
&lt;br /&gt;
Soundserver werden benötigt wenn wenn das unterliegende Audio-Ausgabegerät nur einen einzigen Datenstrom zu einer Zeit verarbeiten kann (Single Stream Soundcards). Sie stellen eine Art virtuelle Soundcard dar zu der Programme wie Player ihre Daten schicken können um eine simultane Ausgabe mit zum Beispiel Notify-Sounds von Chat Clients oder ähnlichem zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Sie bieten meist weitere Funktionen wie das Mischen unter Berücksichtigung von verschiedenen Pegeln. Einige Soundserver ermöglichen auch die Benutzung von Netzwerken zur Übertragung von Audio Daten für die Wiedergabe auf einer anderen Maschine. Dies beides kann auch RoarAudio.&lt;br /&gt;
&lt;br /&gt;
=== Projekt Ziele ===&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
Das Projekt verfolgt im Prinzip das Ziel, eine leistungsfähige Mischsoftware für den Studio Betrieb zur Verfügung zu stellen, aber dennoch ein Produkt zu liefern das auch für den Heim-Anwender angemessen ist.&lt;br /&gt;
&lt;br /&gt;
==== für Heim-Anwender ====&lt;br /&gt;
Heim-Anwender Teilen sich in zwei Gruppen auf:&lt;br /&gt;
Die größere Menge interessiert es nicht wieso Musik aus den Lautsprechern kommt, Hauptsache sie tut es. Für diese Gruppe muss RoarAudio einfach &#039;&#039;out of the box&#039;&#039; funktionieren.&lt;br /&gt;
Die andere Gruppe sind Anwender die mehr machen wollen. Hier soll RoarAudio ein leistungsstarkes Backend sein das möglichst Ressourcen schonend alle gewünschten Funktionen anbietet.&lt;br /&gt;
&lt;br /&gt;
==== Im Studio Betrieb ====&lt;br /&gt;
Wie oben schon angedeutet ist RoarAudio aber im Studio-Einsatz wesentlich interessanter: in einem klassischen Studio steht meist ein großes analoges Mischpult. Dies ist eine wundervolle Sache solange man primär analoge Eingänge braucht: beispielsweise von einer Band. In heutigen Radio- und Fernsehstudios kommen aber die meisten Kanäle aus dem Rechner oder anderen digitalen Geräten wie CD Spielern.&lt;br /&gt;
&lt;br /&gt;
Ein analoges Mischen hat hier nun mehre Nachteile, die wichtigsten sind wohl:&lt;br /&gt;
* Analoges Rauschen&lt;br /&gt;
* Verzerrungen im Frequenzgang&lt;br /&gt;
* Klirren&lt;br /&gt;
* Quantisierungsrauchen&lt;br /&gt;
* Effekte durch asynchrone Abtastung&lt;br /&gt;
&lt;br /&gt;
Eine Alternative wäre in einigen Fällen sicherlich ein Digital-Mischpult. Diese sind aber meist sehr teuer.&lt;br /&gt;
&lt;br /&gt;
RoarAudio kommt hier als erst einmal reine Software-basierende Lösung. Natürlich ist es möglich über die Steuerschnittstellen auch externe Hardware anzuschließen. Hier gibt es auch Planungen, ein Hardware Frontend zu entwerfen das dann kostengünstig zu haben ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exkurs: Codecs und Container ===&lt;br /&gt;
Ein Codec ist eine Spezifikation (meist werden auch die Implementierungen Codec genannt) wie Rohdaten, im Falle von Audio meist PCM Daten, als Datenstrom oder -block repräsentiert werden. Hierzu zählt meist als primäres Kriterium die Kompression. Weitere Informationen wie Synchronisationsdaten können ebenfalls durch den Codec spezifiziert sein, werden aber meist im Container abgelegt.&lt;br /&gt;
&lt;br /&gt;
Ein Container ist im Gegensatz zu einem Codec eine Spezifikation wie Daten die mittels Codecs in eine Datei codiert wurden in oder einen Stream verpackt werden. Hierzu zählen Dinge wie globale File-Magic, Angabe des Codecs, Meta Daten, Angaben über rate/bps/channels und Ähnliches.&lt;br /&gt;
&lt;br /&gt;
==== Verschiedene Arten von Codecs ====&lt;br /&gt;
* Verlustfreie&lt;br /&gt;
* Verlustbehaftete&lt;br /&gt;
* Musik Codecs&lt;br /&gt;
* Sprach Codecs&lt;br /&gt;
* Niederlatenz Codecs&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was hebt RoarAudio hervor? ===&lt;br /&gt;
Hier Sollen einige der besonderen Fähigkeiten von RoarAudio erläutert werden.&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
RoarAudio zeichnet sich dadurch aus daß er zusätzlich zu PCM Rohdaten auch höher Codecs versteht. Dies hat mehre Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio als Background Stream abzuspielen.&lt;br /&gt;
* Es ist dem Server möglich direkt Streaming-Server wie [[icecast]] zu bedienen. Es ist keine weitere &#039;&#039;lange pipe&#039;&#039; nötig um Webradio zu senden. Dies verringert die Störanfälligkeit erheblich und verringert die Latenz, da pipe-Puffer entfallen.&lt;br /&gt;
* Auch ist es nur mit stark komprimierenden Codecs möglich über die dem Heim-Anwender zur Verfügung stehenden Schmalband-Anschlüsse Audio entweder von Client zu Server oder zwischen zwei Servern auszutauschen. Auch eine Kopplung über ISDN Kanäle ist so möglich.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk-Transparenz ====&lt;br /&gt;
RoarAudio ist Netzwerks-transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer lokalen Instanz oder einer auf einem anderen Rechner.&lt;br /&gt;
&lt;br /&gt;
Zu diesem Zweck werden mehre Protokolle unterstützt: UNIX Domain Sockets für lokale Verbindungen sowie TCP/IP und DECnet für Verbindungen mit entfernten Rechnern. Auch existiert Support für verschiedene Proxy Typen.&lt;br /&gt;
&lt;br /&gt;
==== Background Streams ====&lt;br /&gt;
Background Streams sind Streams die vom Server selbst bearbeitet werden und keinen Player benötigen um abgespielt zu werden. Dies kann zum Beispiel genutzt werden um Hintergrundmusik einzuspielen wie beispielsweise in einem Kaufhaus. Auch Webradio Streams werden hier unterstützt.&lt;br /&gt;
&lt;br /&gt;
==== Meta Daten ====&lt;br /&gt;
RoarAudio hat die Fähigkeit auf per Stream Basis Meta Daten ab zu legen. Die Mechanismen sind denen von Vorbis Comments nachempfunden und können prinzipiell mehr. Einiges davon ist allerdings noch nicht vollständig implementiert.&lt;br /&gt;
&lt;br /&gt;
Es besteht neben dem manuellen Setzen die Möglichkeit daß ein Player sie setzt und das &#039;&#039;roard&#039;&#039; sie selbstständig setzt. Im letzteren Falle werden diese von verschiedenen anderen Streams zusammen gesetzt. Dies kann nützlich sein um automatisch beim Streaming die Metadaten von einem Player zu übernehmen um die Titel-Informationen weiter zu führen. Manuelles setzen mag als Beispiel interessant sein um den Sendernamen zu setzen.&lt;br /&gt;
&lt;br /&gt;
==== Virtual IO ====&lt;br /&gt;
&#039;&#039;(gestrichen)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Kompatibilitäts Bibliotheken ====&lt;br /&gt;
&#039;&#039;Viele Programme haben keine Unterstützung für RoarAudio, was nun?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um dieses Problem zu lösen gibt es diverse Kompatibilitäts-Bibliotheken.&lt;br /&gt;
Diese stellen Bibliotheken dar welche binär-kompatibel andere Audio Systeme emulieren.&lt;br /&gt;
Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und leiten dann alle Anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechenden Bibliothek.&lt;br /&gt;
&lt;br /&gt;
Die mit Abstand wohl wichtigste ist &#039;&#039;&#039;libroaresd&#039;&#039;&#039;, welche das [[EsounD]] Interface emuliert. das EsounD Interface wird von den allermeisten Applikationen unterstützt da es das wohl älteste Soundserver Interface ist. Es existiert seit 1998.&lt;br /&gt;
&lt;br /&gt;
Weitere Kompatibilitäts Bibliotheken gibt es für das YIFF Sound System, KDEs aRtsc und PulseAudio. Zusammen mit den existierenden Plugins deckt dies nahezu den vollständigen Player Markt fuer GNU/Linux und BSD ab.&lt;br /&gt;
&lt;br /&gt;
===== Welche Schnittstelle für was? =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Interface&lt;br /&gt;
 ! Beispiel Applikationen&lt;br /&gt;
 |-&lt;br /&gt;
 | libroar&lt;br /&gt;
 | roaraudio-tools, XMMS, mplayer, (xine)&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | GNOME, KDE, XMMS, xine, Amarok, wine,... (177 weitere unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | libao&lt;br /&gt;
 | vorbis-tools, FLAC tools, mpd, mpg321, gnomoradio, somaplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | aRts(c) (KDE)&lt;br /&gt;
 | Player mit aRts support: mplayer, xine; kwave, kaudiocreator,...&lt;br /&gt;
 |-&lt;br /&gt;
 | PulseAudio&lt;br /&gt;
 | Ein paar Programme, die meisten über Plugins. (nicht viel unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | YIFF&lt;br /&gt;
 | y-tools&lt;br /&gt;
 |-&lt;br /&gt;
 | gstreamer&lt;br /&gt;
 | GNOME, Alle GNOME Player. Dieverse andere.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Konzepte und Architektur ===&lt;br /&gt;
RoarAudio ist zwar in C geschrieben aber größtenteils Objekt-orientiert. Er umfasst im Moment etwa 28 tausend Zeilen C. (EsounD kommt auf rund 15 tausend, PulseAudio 74 tausend und aRts auf 130 tausend).&lt;br /&gt;
&lt;br /&gt;
==== Clients und Streams ====&lt;br /&gt;
&lt;br /&gt;
Vor allem wichtig und nach Außen hin sichtbar sind die Client und Stream Objekte.&lt;br /&gt;
Ein Client Objekt verkörpert einen (Netzwerk) Client, zum Beispiel einen Player oder ein Steuerprogramm wie roarctl. Es kann auch Stream Objekte assoziiert haben (Beispielsweise im Falle von Abspielen von Musik).&lt;br /&gt;
&lt;br /&gt;
Ein Stream Objekt stellt einen eigentlichen Audio Datenstrom da. Dieses Objekt beinhaltet diverse Informationen über den Datenstrom: Informationen wie der roard ihn auslesen kann, Sample Rate/Bits/Channels, Meta Daten und vieles mehr. Ein Stream gehört immer zu einem Client. Wobei der Client auch der roard selbst sein. Er lässt sich durch &#039;&#039;attachen&#039;&#039; wechseln. Dies kommt zum Einsatz um Hintergrund Streams zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei jedem Audio Datenstrom der in den roard hinein oder heraus fließt handelt es sich um einen Stream. Dies schließt Datenströme zu Geräten wie Soundcards mit ein. Hier durch ist eine maximale Flexibilität gegeben.&lt;br /&gt;
&lt;br /&gt;
===== Stream Typen =====&lt;br /&gt;
Es gibt diverse Verschiedene Stream typen. Die folgende Tabelle Beschreibt sie kurz:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Typ&lt;br /&gt;
 ! Richtung&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Play&lt;br /&gt;
 | zu Server&lt;br /&gt;
 | Standard Typ: eingehende Audio Daten.&lt;br /&gt;
 |-&lt;br /&gt;
 | Monitor&lt;br /&gt;
 | von Server&lt;br /&gt;
 | Hier werden die aktuellen gemischten Audio Daten vom Server abgefragt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Filter&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Dieser Stream dient zum zwischenschalten von Filtern im Mixer&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Dieser Stream geht an einen Driver Richtung Soundcard oder ähnlichem&lt;br /&gt;
 |-&lt;br /&gt;
 | Mixing&lt;br /&gt;
 | keine&lt;br /&gt;
 | Interne Audio Puffer genutzt zum Mischen der Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | Bidir&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Play und Monitor in einem.&lt;br /&gt;
 |-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 | Record&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Flag Abhänig&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Internal&lt;br /&gt;
 | keine&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Stream Flags =====&lt;br /&gt;
Ein Stream kann desweiteren Flags haben die sein Verhalten genauer bestimmen. Die Flags sind hier zusammen gefasst:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary&lt;br /&gt;
 | Bei Ende des Streams beendet sich roard selbst.&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | Es wird Ein Output Driver für diesen Stream verwendet.&lt;br /&gt;
 |-&lt;br /&gt;
 | Source&lt;br /&gt;
 | Bei diesem Stream handelt es sich um eine Source.&lt;br /&gt;
 |-&lt;br /&gt;
 | Sync&lt;br /&gt;
 | Der Stream ist Synchron (mit Hardware bzw. seinem Ziel)&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Ausgehende Streams mit diesem Flag beziehen ihre Meta Daten automatisch von eingehenden Streams mit diesem Flag.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Driver ====&lt;br /&gt;
Ein Driver ist ein Objekt das eine Schnittstelle zur Verfügung stellt um externe Ressourcen anzusprechen, die sich nicht der UNIX IO Philosophie entsprechend verhalten (Erweiterte Handshake zum Beispiel). Dies können Soundcards oder auch Streaming Server sein. Hierzu zählen als Beispiel der OSS (Open Sound System) und der libshout (Icecast) Treiber.&lt;br /&gt;
&lt;br /&gt;
==== Sources ====&lt;br /&gt;
Eine Source ist an sich ein normaler Stream. Der Unterschied besteht darin das roard selbst den Stream beim Starten initialisiert. Neben Test Szenarien ist dies vor allem hilfreich um sich die Audio Ausgabe eines anderen Rechners lokal zu spiegeln.&lt;br /&gt;
&lt;br /&gt;
==== Codecfilter ====&lt;br /&gt;
Bei den Codecfiltern handelt es sich um ein Abstraktions Layer welches roard die Möglichkeit gibt höhere Codecs zu sprechen wie etwa Ogg Vorbis. Einige Codecfilter können nur Lesen andere auch Schreiben. Wird ein Stream mit einem unterstützen Codec aufgebaut so wird automatisch eine Instanz eines passenden Codecfilters erzeugt. Sie verhalten sich somit weitgehend transparent. Viele höheren Codec sind allerdings nicht in der Lage alle Stream Typen zu bedienen. Der Streamtype Filter wird am wenigsten unterstützt da er ein exaktes Timing und Blocking Verhalten benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Filter ====&lt;br /&gt;
* filter&lt;br /&gt;
* ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme des Realtime Audio Mischens ===&lt;br /&gt;
Beim Mischen in Realtime kommen zu den Problemen die beim normalen Mischen von Audio auftreten noch weitere hinzu.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Probleme sind:&lt;br /&gt;
&lt;br /&gt;
* Resampling - Wenn nicht alle Streams dieselbe Abtastfrequens haben müssen die betroffenen Streams auf die Abtastrate des Ausgangs umgerechnet werden. Hierzu gibt es diverse Verfahren. Man kann sich das etwa wie das Skalieren eines Bildes vorstellen: Es gibt Filter die schnell sind und welche die gut sind. Muss man in Realtime resampeln so muss man vor allem schnell sein, will aber auch noch möglichst gut sein. Viele Soundserver behalten schlichtweg die Pegel entsprechend der neuen Abtaste Rate länger oder kürzer bei (s.g. zoh - Zero Order Hold). Dies erzeugt Rechteck Signale welche wiederum diverse Oberwellen erzeugen. RoarAudio setzt hier Polynomapproximation dritten Grades ein. Dies reduziert die Oberwellen schon deutlich dank leichter Tiefpass Eigenschaft.&lt;br /&gt;
* Da nicht für den gesamten Titel der Amplituden-Gang bestimmt werden kann ist es möglich daß es zu sogenanntem Clipping kommt. Clipping bezeichnet das Problem, daß die Summe der Amplituden aller Eingangssignale größer ist als der zulässige Wertebereich. In diesem Falle wird das Ausgangssignal geclippt, sprich es wird auf den maximalen sich im zulässigen Wertebereich liegenden Wert herunter gesetzt. Dies lässt sich nicht vollkommen vermeiden aber durch geschickte Wahl des Mischverfahrens reduzieren. Es empfiehlt sich dennoch einen ReplayGain einzubeziehen. Dieser kann das Clipping zwar auch nicht komplett verhindern aber der Soundserver kann besser abschätzen wie die Gefahr für Clipping ist und rechtzeitig reagieren.&lt;br /&gt;
* Vor Allem beim Pegel umrechnen kommt es selbstverständlich zu Rechenungenauigkeiten. Um diese zu minimieren skaliert RoarAudio die Signale auf bis zu ihrer doppelten Größe auf um Rechenungenauigkeiten zu vermeiden. bei einem 16 Bit Eingangssignal wird als Beispiel auf 32 Bit skaliert was zusätzliche 96dB Rauschabstand während der Umrechnung liefert.&lt;br /&gt;
* &amp;lt;s&amp;gt;Werden Signale mit verschiedenen Pegeln gemischt so kann es sinnvoll sein mit der Breite der Ausgangs-Samples hoch zu gehen. Als Beispiel: wenn zwei Signale mit je 16 Bit mit den Pegeln 1 und 1/4 gemischt werden reduziert der Rauschabstand des zweiten Signals um 12dB. Man sollte überlegen auf 24 Bit am Ausgang zu wechseln. Die Allgemeine Regel lautet: für den Faktor 2 oder 6dB die ein Signal abgeschwächt wird braucht man am Ausgang ein Bit mehr. Wenn mal also eine Hintergrund-Musik mit -48dB auf Sprache mischt (durchaus realistisch) muss man von 16 Bit am Ausgang auf 24 Bit hoch gehen um keinen Qualitäts-Verlust der Musik zu erhalten.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Einige Formate sind nicht Frame basierend. Dies sind vor allem MIDI Formate Hier kann es passieren das die Synchronisation zwischen diesen Streams und den anderen sich an Frame-Grenzen treffe. Dies kann zu unschönen Nebeneffekten führen. Manche Codecs sind auch nur in der Lage auf gewisse Zeitraster Ende-Marken zu setzen was in unsauberen Enden mit Artefakten enden kann. Im Realtime Bereich lässt sich dies nicht korrigieren und solche Codecs sollten vermieden werden.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem: Lokale Synchronität ====&lt;br /&gt;
Die wichtigsten Störfaktoren sind:&lt;br /&gt;
&lt;br /&gt;
* Wie jede Hardware besitzen Soundkarten eine Verzögerung. Das heißt daß sie eine gewisse Zeit brauchen zwischen Erhalt von Daten und deren Ausgabe. Diese Zeit liegt im Bereich von wenigen Millisekunden (z.B. Studio Karten) und kann bis in den Bereich von mehren hundert Millisekunden gehen (z.B. 2.5 Euro USB Karten von $SUPERMARKT), je nach Karte. Die meisten Karten bieten aber eine Möglichkeit ab zu fragen wo sie gerade in ihrem Puffer sind. Wie dies genau funktioniert ist von Karte zu Karte unterschiedlich. Der Treiber der Karte ist dafür zuständig diese Funktionen an höhere Interfaces (OSS, alsa, sndio,...) weiterzureichen und den Applikationen zur Verfügung zu stellen.&lt;br /&gt;
* Neben dem Delay in der Hardware erzeugt selbstverständlich auch der Kernel und die Treiber eine weiter Verzögerung. Dies passiert aus vielen Gründen: Der Programmcode muss natürlich erst einmal ausgeführt werden. Auch werden Interupts nicht um bedingt sofort bearbeitet (zum Beispiel weil gerade ein anderer, höherwertiger bearbeitet wird).&lt;br /&gt;
* Die nächste Schicht, die Sound APIs, erzeugen auf ähnliche Weise weitere Delays. Hier kommt dazu das viele mit relativ großen Puffern arbeiten (Beispielsweise EsounD mit 0.28sec - im Vergleich zu roard mit Standard Puffer von 0.01sec). Die Puffergröße ist in dem meisten Fällen die kleinste Einheit in der Synchronität gewährleistet werden kann.&lt;br /&gt;
* Da die meisten Systeme (alle auf denen RoarAudio läuft) Multitasking betreiben stellt sich ein weiteres Problem: Der entsprechende Prozess muss eine Zeitscheibe bekommen bevor er reagieren kann. Läuft ein anderer Prozess gerade so muss er potentiell warten. Auf den meisten POSIX kompatiblem Systemen basiert das Multitasking zwar auf Ereignissen, sprich ein Prozess läuft so lange bis ein anderer ein Ereignis zu bearbeiten hat (keine feste Zeitscheiben-Länge), was dazu führt das dieses Problem ist nicht all zu groß ist. Aber es kann natürlich gerade ein anderer Prozess mit höherer Priorität laufen der ein anderes Ereignis bearbeitet und somit nicht vom Kernel unterbrochen wird.&lt;br /&gt;
* Unsynchrones clocking&lt;br /&gt;
&lt;br /&gt;
==== Problem: Netzwerk Synchronität ====&lt;br /&gt;
* lag&lt;br /&gt;
* jitter&lt;br /&gt;
* Netzwerk Implementierungen&lt;br /&gt;
&lt;br /&gt;
==== Lösungsansätze ====&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ignorieren&#039;&#039;&#039; - Diverse Probleme lassen sich schlichtweg einfach Ignorieren. Dies sind vor allem Probleme die sich statistisch über die zeit Aufheben. Ist diese Strategie möglich so sollte sie verfolgt werden im sinne von KISS (Keep It Small and Simple). Sie kann natürlich auch extrem daneben liegen und man sollte sich um eine echte Lösung bemühen.&lt;br /&gt;
* &#039;&#039;&#039;TOS&#039;&#039;&#039; - Setzen des TOS (Type Of Service) Feldes bei IP mag helfen. Viele Backbone provider ignoriren dieses Feld zwar aber im LAN kann es durchaus helfen. Gerade bei anderer starker, lang packetiger Kommunikation zwischen dem eignen und dem Ziehl Rechner (file transfers).&lt;br /&gt;
* &#039;&#039;&#039;QoS&#039;&#039;&#039; - Benutzung von QoS (Quality of Service) kann im Backbone Bereich da die Latenz erheblich senken da man das Puffer verhalten der Geräte beeinflusst. Der Nachteil ist das hierzu Unterstützung da sein muss. mit IPv6 scheint sich hier aber einiges zu bessern.&lt;br /&gt;
* &#039;&#039;&#039;Geschickte Auswahl von Algorithmen und Protokollen&#039;&#039;&#039; - Die Auswahl der Algorithmen und Protokolle ist entscheidend. Für die meisten Aufgaben gibt es mehre mögliche Lösungen (&#039;&#039;Viele Wege führen nach Rom&#039;&#039;). Aber nicht alle sind gleich gut geeignet. Deswegen sollte hier eine sinnvolle Auswahl getroffen werden.&lt;br /&gt;
* &#039;&#039;&#039;Künstlicher Delay&#039;&#039;&#039; - Es besteht die Möglichkeit einzelne Streams oder Ereignisse künstlich leicht heraus zu zögern. Hierdurch kann ein Abgleich der Latenzen gemacht werden was dazu dient Syncronität her zu stellen. Normalerweise werden alle Streams so lange verzögert bis sie eine &#039;&#039;künstliche&#039;&#039; Latenzs gleich dem Stream haben der die höchste Latenz aufweist.&lt;br /&gt;
* &#039;&#039;&#039;Resampling&#039;&#039;&#039; - Sind mehre Clocks beteiligt oder kommen die Daten etwas zu schnell oder zu langsam kann man leichtes Resampling betreiben. Das heißt das das Signal künstlich gestaucht oder in die Länge gezogen wird. Geschiet dies nicht ruckartig kann das Gehör den unterschied nicht wahrnehmen solange dieses Resamping nur in kleinen Bereichen passiert (je nach Literatur 2% bis 5%, werte die größer sind als die Ungenauigkeit von Quarzen und somit gegeigent sind um Clock driffting aus zu gleichen.).&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
...&lt;br /&gt;
==== Win32 Port ====&lt;br /&gt;
Ein Win32 Port existiert zum jetzigen Zeitpunkt nicht. Dies liegt an mehren Faktoren: Zum einen ist Win32, was den nahe-realtime Betrieb angeht, nicht zuverlässig genug. Zum anderen ist bei Win32 das Networking kein Teil des Kernels wie auf UNIX und POSIX Systemen: Es ist viel mehr teilweise im Userland. Dies hat zur Folge das zu jedem Zeitpunkt eine Applikation wissen muss von welchem Type ein Filehandle ist, da man Basis Funktionen wie read(), write(), close() nicht auf alle Filehandles anwenden kann. Vielmehr hat jeder Type von Filehandles seinen eigenen Satz Funtionen. RoarAudio verfolgt die UNIX Philosophie: &#039;&#039;Alles ist eine Datei&#039;&#039;. Große Patches wären nötig.&lt;br /&gt;
&lt;br /&gt;
Ein Weiteres ist das ein solcher Port viel Zeit in Anspruch nimmt und weder das Projekt noch die Freie Software Bewegung voranbringt.&lt;br /&gt;
&lt;br /&gt;
Im Moment existieren kleinere Patches die vielleicht irgendwann mal Basis Funktionalität mit sich bringen könnten. An ein roard für Win32 ist in absehbarer Zeit nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
Allerdings laufen Teile von RoarAudio in Cygwin mehr oder minder gut. Viele Probleme treten hier auf aber es ist prinzipiell möglich es unter Cygwin zum Laufen zu bringen (außerhalb des nahe-realtime Betriebs).&lt;br /&gt;
&lt;br /&gt;
Es besteht aber die Möglichkeit einige Win32 Applikationen mittels pseudo Web Radio Streams anzubinden.&lt;br /&gt;
&lt;br /&gt;
==== MP3 ====&lt;br /&gt;
* Kein Streaming&lt;br /&gt;
* Keine Meta Daten&lt;br /&gt;
* Schlechte Qualität&lt;br /&gt;
* Patente&lt;br /&gt;
&lt;br /&gt;
=== Querverweise ===&lt;br /&gt;
; [http://raum.keep-cool.org/ RAUM Media Container]&lt;br /&gt;
: Für RoarAudio entwickelter Container, vor allem für Speex und CELT.&lt;br /&gt;
; [http://www.icecast.org/ Icecast] - Multimedia streaming server&lt;br /&gt;
: Software für Webradio und WebTV streaming.&lt;br /&gt;
; [http://www.xiph.org/ Xiph.Org Foundation]&lt;br /&gt;
: Organisation zur Entwicklung von freien Codecs.&lt;br /&gt;
; SIP&lt;br /&gt;
: Standard für VoIP - Internet-Telephonie.&lt;br /&gt;
&lt;br /&gt;
=== Vorführung ===&lt;br /&gt;
{{Vortrags Zeit|30}}&lt;br /&gt;
&lt;br /&gt;
* Allgemeiner Betrieb&lt;br /&gt;
** roard&lt;br /&gt;
** roarvorbis/roarcatplay?&lt;br /&gt;
** roarctl&lt;br /&gt;
** xmms&lt;br /&gt;
* Background Streams&lt;br /&gt;
** roarradio&lt;br /&gt;
* Kompatibilitäts Bibliotheken&lt;br /&gt;
** libroaresd:&lt;br /&gt;
*** &amp;lt;s&amp;gt;xmms&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;mplayer&amp;lt;/s&amp;gt;&lt;br /&gt;
*** Amarok&lt;br /&gt;
&lt;br /&gt;
== Fragen ==&lt;br /&gt;
* &#039;&#039;immer gerne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6802</id>
		<title>RoarAudio/Vortrag/Erster Vortrag</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6802"/>
		<updated>2009-02-06T09:46:38Z</updated>

		<summary type="html">&lt;p&gt;Che: /* Meta Daten */  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 [[RoarAudio]] und die Realtime Audio mixing Problematik vor einem Unixpublikum mit keinen oder kaum 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;
== Der Autor ==&lt;br /&gt;
[[Benutzer:Ph3-der-loewe|Philipp &#039;&#039;ph3-der-loewe&#039;&#039; Schafft]], Software Entwickler und Projekt Urheber.&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
RoarAudio ist ein Sound-Server für POSIX konformen Betriebssysteme (GNU/Linux, *BSD, Mac OS X und andere) unter aktiver Entwicklung. Er bietet gegenüber anderen Sound-Servern zusätzliche Funktionen für den Betrieb in kleinen Radio und TV Studios, aber auch den Heimgebrauch. Dieser Vortrag soll einen Einblick in RoarAudio, seine Funktionalität und Funktionsweise sowie damit verbunden Problemstellungen auf einfachem Niveau bieten. Den Abschluss bildet eine Demonstration.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein Soundserver.&lt;br /&gt;
&lt;br /&gt;
==== Was ist ein Soundserver ====&lt;br /&gt;
Ein Soundserver ist eine Programm dass im Hintergrund Audio Daten mischt und das Ergebnis weiter leitet, meist an eine Soundcard.&lt;br /&gt;
&lt;br /&gt;
Soundserver werden benötigt wenn wenn das unterliegende Audio-Ausgabegerät nur einen einzigen Datenstrom zu einer Zeit verarbeiten kann (Single Stream Soundcards). Sie stellen eine Art virtuelle Soundcard dar zu der Programme wie Player ihre Daten schicken können um eine simultane Ausgabe mit zum Beispiel Notify-Sounds von Chat Clients oder ähnlichem zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Sie bieten meist weitere Funktionen wie das Mischen unter Berücksichtigung von verschiedenen Pegeln. Einige Soundserver ermöglichen auch die Benutzung von Netzwerken zur Übertragung von Audio Daten für die Wiedergabe auf einer anderen Maschine. Dies beides kann auch RoarAudio.&lt;br /&gt;
&lt;br /&gt;
=== Projekt Ziele ===&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
Das Projekt verfolgt im Prinzip das Ziel, eine leistungsfähige Mischsoftware für den Studio Betrieb zur Verfügung zu stellen, aber dennoch ein Produkt zu liefern das auch für den Heim-Anwender angemessen ist.&lt;br /&gt;
&lt;br /&gt;
==== für Heim-Anwender ====&lt;br /&gt;
Heim-Anwender Teilen sich in zwei Gruppen auf:&lt;br /&gt;
Die größere Menge interessiert es nicht wieso Musik aus den Lautsprechern kommt, Hauptsache sie tut es. Für diese Gruppe muss RoarAudio einfach &#039;&#039;out of the box&#039;&#039; funktionieren.&lt;br /&gt;
Die andere Gruppe sind Anwender die mehr machen wollen. Hier soll RoarAudio ein leistungsstarkes Backend sein das möglichst Ressourcen schonend alle gewünschten Funktionen anbietet.&lt;br /&gt;
&lt;br /&gt;
==== Im Studio Betrieb ====&lt;br /&gt;
Wie oben schon angedeutet ist RoarAudio aber im Studio-Einsatz wesentlich interessanter: in einem klassischen Studio steht meist ein großes analoges Mischpult. Dies ist eine wundervolle Sache solange man primär analoge Eingänge braucht: beispielsweise von einer Band. In heutigen Radio- und Fernsehstudios kommen aber die meisten Kanäle aus dem Rechner oder anderen digitalen Geräten wie CD Spielern.&lt;br /&gt;
&lt;br /&gt;
Ein analoges Mischen hat hier nun mehre Nachteile, die wichtigsten sind wohl:&lt;br /&gt;
* Analoges Rauschen&lt;br /&gt;
* Verzerrungen im Frequenzgang&lt;br /&gt;
* Klirren&lt;br /&gt;
* Quantisierungsrauchen&lt;br /&gt;
* Effekte durch asynchrone Abtastung&lt;br /&gt;
&lt;br /&gt;
Eine Alternative wäre in einigen Fällen sicherlich ein Digital-Mischpult. Diese sind aber meist sehr teuer.&lt;br /&gt;
&lt;br /&gt;
RoarAudio kommt hier als erst einmal reine Software-basierende Lösung. Natürlich ist es möglich über die Steuerschnittstellen auch externe Hardware anzuschließen. Hier gibt es auch Planungen, ein Hardware Frontend zu entwerfen das dann kostengünstig zu haben ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exkurs: Codecs und Container ===&lt;br /&gt;
Ein Codec ist eine Spezifikation (meist werden auch die Implementierungen Codec genannt) wie Rohdaten, im Falle von Audio meist PCM Daten, als Datenstrom oder -block repräsentiert werden. Hierzu zählt meist als primäres Kriterium die Kompression. Weitere Informationen wie Synchronisationsdaten können ebenfalls durch den Codec spezifiziert sein, werden aber meist im Container abgelegt.&lt;br /&gt;
&lt;br /&gt;
Ein Container ist im Gegensatz zu einem Codec eine Spezifikation wie Daten die mittels Codecs in eine Datei codiert wurden in oder einen Stream verpackt werden. Hierzu zählen Dinge wie globale File-Magic, Angabe des Codecs, Meta Daten, Angaben über rate/bps/channels und Ähnliches.&lt;br /&gt;
&lt;br /&gt;
==== Verschiedene Arten von Codecs ====&lt;br /&gt;
* Verlustfreie&lt;br /&gt;
* Verlustbehaftete&lt;br /&gt;
* Musik Codecs&lt;br /&gt;
* Sprach Codecs&lt;br /&gt;
* Niederlatenz Codecs&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was hebt RoarAudio hervor? ===&lt;br /&gt;
Hier Sollen einige der besonderen Fähigkeiten von RoarAudio erläutert werden.&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
RoarAudio zeichnet sich dadurch aus daß er zusätzlich zu PCM Rohdaten auch höher Codecs versteht. Dies hat mehre Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio als Background Stream abzuspielen.&lt;br /&gt;
* Es ist dem Server möglich direkt Streaming-Server wie [[icecast]] zu bedienen. Es ist keine weitere &#039;&#039;lange pipe&#039;&#039; nötig um Webradio zu senden. Dies verringert die Störanfälligkeit erheblich und verringert die Latenz, da pipe-Puffer entfallen.&lt;br /&gt;
* Auch ist es nur mit stark komprimierenden Codecs möglich über die dem Heim-Anwender zur Verfügung stehenden Schmalband-Anschlüsse Audio entweder von Client zu Server oder zwischen zwei Servern auszutauschen. Auch eine Kopplung über ISDN Kanäle ist so möglich.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk-Transparenz ====&lt;br /&gt;
RoarAudio ist Netzwerks-transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer lokalen Instanz oder einer auf einem anderen Rechner.&lt;br /&gt;
&lt;br /&gt;
Zu diesem Zweck werden mehre Protokolle unterstützt: UNIX Domain Sockets für lokale Verbindungen sowie TCP/IP und DECnet für Verbindungen mit entfernten Rechnern. Auch existiert Support für verschiedene Proxy Typen.&lt;br /&gt;
&lt;br /&gt;
==== Background Streams ====&lt;br /&gt;
Background Streams sind Streams die vom Server selbst bearbeitet werden und keinen Player benötigen um abgespielt zu werden. Dies kann zum Beispiel genutzt werden um Hintergrundmusik einzuspielen wie beispielsweise in einem Kaufhaus. Auch Webradio Streams werden hier unterstützt.&lt;br /&gt;
&lt;br /&gt;
==== Meta Daten ====&lt;br /&gt;
RoarAudio hat die Fähigkeit auf per Stream Basis Meta Daten ab zu legen. Die Mechanismen sind denen von Vorbis Comments nachempfunden und können prinzipiell mehr. Einiges davon ist allerdings noch nicht vollständig implementiert.&lt;br /&gt;
&lt;br /&gt;
Es besteht neben dem manuellen Setzen die Möglichkeit daß ein Player sie setzt und das &#039;&#039;roard&#039;&#039; sie selbstständig setzt. Im letzteren Falle werden diese von verschiedenen anderen Streams zusammen gesetzt. Dies kann nützlich sein um automatisch beim Streaming die Metadaten von einem Player zu übernehmen um die Titel-Informationen weiter zu führen. Manuelles setzen mag als Beispiel interessant sein um den Sendernamen zu setzen.&lt;br /&gt;
&lt;br /&gt;
==== Virtual IO ====&lt;br /&gt;
&#039;&#039;(gestrichen)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Kompatibilitäts Bibliotheken ====&lt;br /&gt;
&#039;&#039;Viele Programme haben keine Unterstützung für RoarAudio, was nun?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um dieses Problem zu lösen gibt es diverse Kompatibilitäts-Bibliotheken.&lt;br /&gt;
Diese stellen Bibliotheken dar welche binär-kompatibel andere Audio Systeme emulieren.&lt;br /&gt;
Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und leiten dann alle Anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechenden Bibliothek.&lt;br /&gt;
&lt;br /&gt;
Die mit Abstand wohl wichtigste ist &#039;&#039;&#039;libroaresd&#039;&#039;&#039; welche das [[EsounD]] Interface emuliert. das EsounD Interface wird von den allermeisten Applikationen unterstützt da es das wohl älteste Soundserver Interface ist. Es existiert seit 1998.&lt;br /&gt;
&lt;br /&gt;
Weitere Kompatibilitäts Bibliotheken gibt es für das YIFF Sound System, KDEs aRtsc und PulseAudio. Zusammen mit den existierenden Plugins deckt dies nahezu den vollständigen Player Markt fuer GNU/Linux und BSD ab.&lt;br /&gt;
&lt;br /&gt;
===== Welche Schnittstelle für was? =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Interface&lt;br /&gt;
 ! Beispiel Applikationen&lt;br /&gt;
 |-&lt;br /&gt;
 | libroar&lt;br /&gt;
 | roaraudio-tools, XMMS, mplayer, (xine)&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | GNOME, KDE, XMMS, xine, Amarok, wine,... (177 weitere unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | libao&lt;br /&gt;
 | vorbis-tools, FLAC tools, mpd, mpg321, gnomoradio, somaplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | aRts(c) (KDE)&lt;br /&gt;
 | Player mit aRts support: mplayer, xine; kwave, kaudiocreator,...&lt;br /&gt;
 |-&lt;br /&gt;
 | PulseAudio&lt;br /&gt;
 | Ein paar Programme, die meisten über Plugins. (nicht viel unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | YIFF&lt;br /&gt;
 | y-tools&lt;br /&gt;
 |-&lt;br /&gt;
 | gstreamer&lt;br /&gt;
 | GNOME, Alle GNOME Player. Dieverse andere.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Konzepte und Architektur ===&lt;br /&gt;
RoarAudio ist zwar in C geschrieben aber größtenteils Objekt-orientiert. Er umfasst im Moment etwa 28 tausend Zeilen C. (EsounD kommt auf rund 15 tausend, PulseAudio 74 tausend und aRts auf 130 tausend).&lt;br /&gt;
&lt;br /&gt;
==== Clients und Streams ====&lt;br /&gt;
&lt;br /&gt;
Vor allem wichtig und nach Außen hin sichtbar sind die Client und Stream Objekte.&lt;br /&gt;
Ein Client Objekt verkörpert einen (Netzwerk) Client, zum Beispiel einen Player oder ein Steuerprogramm wie roarctl. Es kann auch Stream Objekte assoziiert haben (Beispielsweise im Falle von Abspielen von Musik).&lt;br /&gt;
&lt;br /&gt;
Ein Stream Objekt stellt einen eigentlichen Audio Datenstrom da. Dieses Objekt beinhaltet diverse Informationen über den Datenstrom: Informationen wie der roard ihn auslesen kann, Sample Rate/Bits/Channels, Meta Daten und vieles mehr. Ein Stream gehört immer zu einem Client. Wobei der Client auch der roard selbst sein. Er lässt sich durch &#039;&#039;attachen&#039;&#039; wechseln. Dies kommt zum Einsatz um Hintergrund Streams zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei jedem Audio Datenstrom der in den roard hinein oder heraus fließt handelt es sich um einen Stream. Dies schließt Datenströme zu Geräten wie Soundcards mit ein. Hier durch ist eine maximale Flexibilität gegeben.&lt;br /&gt;
&lt;br /&gt;
===== Stream Typen =====&lt;br /&gt;
Es gibt diverse Verschiedene Stream typen. Die folgende Tabelle Beschreibt sie kurz:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Typ&lt;br /&gt;
 ! Richtung&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Play&lt;br /&gt;
 | zu Server&lt;br /&gt;
 | Standard Typ: eingehende Audio Daten.&lt;br /&gt;
 |-&lt;br /&gt;
 | Monitor&lt;br /&gt;
 | von Server&lt;br /&gt;
 | Hier werden die aktuellen gemischten Audio Daten vom Server abgefragt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Filter&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Dieser Stream dient zum zwischenschalten von Filtern im Mixer&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Dieser Stream geht an einen Driver Richtung Soundcard oder ähnlichem&lt;br /&gt;
 |-&lt;br /&gt;
 | Mixing&lt;br /&gt;
 | keine&lt;br /&gt;
 | Interne Audio Puffer genutzt zum Mischen der Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | Bidir&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Play und Monitor in einem.&lt;br /&gt;
 |-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 | Record&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Flag Abhänig&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Internal&lt;br /&gt;
 | keine&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Stream Flags =====&lt;br /&gt;
Ein Stream kann desweiteren Flags haben die sein Verhalten genauer bestimmen. Die Flags sind hier zusammen gefasst:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary&lt;br /&gt;
 | Bei Ende des Streams beendet sich roard selbst.&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | Es wird Ein Output Driver für diesen Stream verwendet.&lt;br /&gt;
 |-&lt;br /&gt;
 | Source&lt;br /&gt;
 | Bei diesem Stream handelt es sich um eine Source.&lt;br /&gt;
 |-&lt;br /&gt;
 | Sync&lt;br /&gt;
 | Der Stream ist Synchron (mit Hardware bzw. seinem Ziel)&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Ausgehende Streams mit diesem Flag beziehen ihre Meta Daten automatisch von eingehenden Streams mit diesem Flag.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Driver ====&lt;br /&gt;
Ein Driver ist ein Objekt das eine Schnittstelle zur Verfügung stellt um externe Ressourcen anzusprechen, die sich nicht der UNIX IO Philosophie entsprechend verhalten (Erweiterte Handshake zum Beispiel). Dies können Soundcards oder auch Streaming Server sein. Hierzu zählen als Beispiel der OSS (Open Sound System) und der libshout (Icecast) Treiber.&lt;br /&gt;
&lt;br /&gt;
==== Sources ====&lt;br /&gt;
Eine Source ist an sich ein normaler Stream. Der Unterschied besteht darin das roard selbst den Stream beim Starten initialisiert. Neben Test Szenarien ist dies vor allem hilfreich um sich die Audio Ausgabe eines anderen Rechners lokal zu spiegeln.&lt;br /&gt;
&lt;br /&gt;
==== Codecfilter ====&lt;br /&gt;
Bei den Codecfiltern handelt es sich um ein Abstraktions Layer welches roard die Möglichkeit gibt höhere Codecs zu sprechen wie etwa Ogg Vorbis. Einige Codecfilter können nur Lesen andere auch Schreiben. Wird ein Stream mit einem unterstützen Codec aufgebaut so wird automatisch eine Instanz eines passenden Codecfilters erzeugt. Sie verhalten sich somit weitgehend transparent. Viele höheren Codec sind allerdings nicht in der Lage alle Stream Typen zu bedienen. Der Streamtype Filter wird am wenigsten unterstützt da er ein exaktes Timing und Blocking Verhalten benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Filter ====&lt;br /&gt;
* filter&lt;br /&gt;
* ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme des Realtime Audio Mischens ===&lt;br /&gt;
Beim Mischen in Realtime kommen zu den Problemen die beim normalen Mischen von Audio auftreten noch weitere hinzu.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Probleme sind:&lt;br /&gt;
&lt;br /&gt;
* Resampling - Wenn nicht alle Streams dieselbe Abtastfrequens haben müssen die betroffenen Streams auf die Abtastrate des Ausgangs umgerechnet werden. Hierzu gibt es diverse Verfahren. Man kann sich das etwa wie das Skalieren eines Bildes vorstellen: Es gibt Filter die schnell sind und welche die gut sind. Muss man in Realtime resampeln so muss man vor allem schnell sein, will aber auch noch möglichst gut sein. Viele Soundserver behalten schlichtweg die Pegel entsprechend der neuen Abtaste Rate länger oder kürzer bei (s.g. zoh - Zero Order Hold). Dies erzeugt Rechteck Signale welche wiederum diverse Oberwellen erzeugen. RoarAudio setzt hier Polynomapproximation dritten Grades ein. Dies reduziert die Oberwellen schon deutlich dank leichter Tiefpass Eigenschaft.&lt;br /&gt;
* Da nicht für den gesamten Titel der Amplituden-Gang bestimmt werden kann ist es möglich daß es zu sogenanntem Clipping kommt. Clipping bezeichnet das Problem, daß die Summe der Amplituden aller Eingangssignale größer ist als der zulässige Wertebereich. In diesem Falle wird das Ausgangssignal geclippt, sprich es wird auf den maximalen sich im zulässigen Wertebereich liegenden Wert herunter gesetzt. Dies lässt sich nicht vollkommen vermeiden aber durch geschickte Wahl des Mischverfahrens reduzieren. Es empfiehlt sich dennoch einen ReplayGain einzubeziehen. Dieser kann das Clipping zwar auch nicht komplett verhindern aber der Soundserver kann besser abschätzen wie die Gefahr für Clipping ist und rechtzeitig reagieren.&lt;br /&gt;
* Vor Allem beim Pegel umrechnen kommt es selbstverständlich zu Rechenungenauigkeiten. Um diese zu minimieren skaliert RoarAudio die Signale auf bis zu ihrer doppelten Größe auf um Rechenungenauigkeiten zu vermeiden. bei einem 16 Bit Eingangssignal wird als Beispiel auf 32 Bit skaliert was zusätzliche 96dB Rauschabstand während der Umrechnung liefert.&lt;br /&gt;
* &amp;lt;s&amp;gt;Werden Signale mit verschiedenen Pegeln gemischt so kann es sinnvoll sein mit der Breite der Ausgangs-Samples hoch zu gehen. Als Beispiel: wenn zwei Signale mit je 16 Bit mit den Pegeln 1 und 1/4 gemischt werden reduziert der Rauschabstand des zweiten Signals um 12dB. Man sollte überlegen auf 24 Bit am Ausgang zu wechseln. Die Allgemeine Regel lautet: für den Faktor 2 oder 6dB die ein Signal abgeschwächt wird braucht man am Ausgang ein Bit mehr. Wenn mal also eine Hintergrund-Musik mit -48dB auf Sprache mischt (durchaus realistisch) muss man von 16 Bit am Ausgang auf 24 Bit hoch gehen um keinen Qualitäts-Verlust der Musik zu erhalten.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Einige Formate sind nicht Frame basierend. Dies sind vor allem MIDI Formate Hier kann es passieren das die Synchronisation zwischen diesen Streams und den anderen sich an Frame-Grenzen treffe. Dies kann zu unschönen Nebeneffekten führen. Manche Codecs sind auch nur in der Lage auf gewisse Zeitraster Ende-Marken zu setzen was in unsauberen Enden mit Artefakten enden kann. Im Realtime Bereich lässt sich dies nicht korrigieren und solche Codecs sollten vermieden werden.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem: Lokale Synchronität ====&lt;br /&gt;
Die wichtigsten Störfaktoren sind:&lt;br /&gt;
&lt;br /&gt;
* Wie jede Hardware besitzen Soundkarten eine Verzögerung. Das heißt daß sie eine gewisse Zeit brauchen zwischen Erhalt von Daten und deren Ausgabe. Diese Zeit liegt im Bereich von wenigen Millisekunden (z.B. Studio Karten) und kann bis in den Bereich von mehren hundert Millisekunden gehen (z.B. 2.5 Euro USB Karten von $SUPERMARKT), je nach Karte. Die meisten Karten bieten aber eine Möglichkeit ab zu fragen wo sie gerade in ihrem Puffer sind. Wie dies genau funktioniert ist von Karte zu Karte unterschiedlich. Der Treiber der Karte ist dafür zuständig diese Funktionen an höhere Interfaces (OSS, alsa, sndio,...) weiterzureichen und den Applikationen zur Verfügung zu stellen.&lt;br /&gt;
* Neben dem Delay in der Hardware erzeugt selbstverständlich auch der Kernel und die Treiber eine weiter Verzögerung. Dies passiert aus vielen Gründen: Der Programmcode muss natürlich erst einmal ausgeführt werden. Auch werden Interupts nicht um bedingt sofort bearbeitet (zum Beispiel weil gerade ein anderer, höherwertiger bearbeitet wird).&lt;br /&gt;
* Die nächste Schicht, die Sound APIs, erzeugen auf ähnliche Weise weitere Delays. Hier kommt dazu das viele mit relativ großen Puffern arbeiten (Beispielsweise EsounD mit 0.28sec - im Vergleich zu roard mit Standard Puffer von 0.01sec). Die Puffergröße ist in dem meisten Fällen die kleinste Einheit in der Synchronität gewährleistet werden kann.&lt;br /&gt;
* Da die meisten Systeme (alle auf denen RoarAudio läuft) Multitasking betreiben stellt sich ein weiteres Problem: Der entsprechende Prozess muss eine Zeitscheibe bekommen bevor er reagieren kann. Läuft ein anderer Prozess gerade so muss er potentiell warten. Auf den meisten POSIX kompatiblem Systemen basiert das Multitasking zwar auf Ereignissen, sprich ein Prozess läuft so lange bis ein anderer ein Ereignis zu bearbeiten hat (keine feste Zeitscheiben-Länge), was dazu führt das dieses Problem ist nicht all zu groß ist. Aber es kann natürlich gerade ein anderer Prozess mit höherer Priorität laufen der ein anderes Ereignis bearbeitet und somit nicht vom Kernel unterbrochen wird.&lt;br /&gt;
* Unsynchrones clocking&lt;br /&gt;
&lt;br /&gt;
==== Problem: Netzwerk Synchronität ====&lt;br /&gt;
* lag&lt;br /&gt;
* jitter&lt;br /&gt;
* Netzwerk Implementierungen&lt;br /&gt;
&lt;br /&gt;
==== Lösungsansätze ====&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ignorieren&#039;&#039;&#039; - Diverse Probleme lassen sich schlichtweg einfach Ignorieren. Dies sind vor allem Probleme die sich statistisch über die zeit Aufheben. Ist diese Strategie möglich so sollte sie verfolgt werden im sinne von KISS (Keep It Small and Simple). Sie kann natürlich auch extrem daneben liegen und man sollte sich um eine echte Lösung bemühen.&lt;br /&gt;
* &#039;&#039;&#039;TOS&#039;&#039;&#039; - Setzen des TOS (Type Of Service) Feldes bei IP mag helfen. Viele Backbone provider ignoriren dieses Feld zwar aber im LAN kann es durchaus helfen. Gerade bei anderer starker, lang packetiger Kommunikation zwischen dem eignen und dem Ziehl Rechner (file transfers).&lt;br /&gt;
* &#039;&#039;&#039;QoS&#039;&#039;&#039; - Benutzung von QoS (Quality of Service) kann im Backbone Bereich da die Latenz erheblich senken da man das Puffer verhalten der Geräte beeinflusst. Der Nachteil ist das hierzu Unterstützung da sein muss. mit IPv6 scheint sich hier aber einiges zu bessern.&lt;br /&gt;
* &#039;&#039;&#039;Geschickte Auswahl von Algorithmen und Protokollen&#039;&#039;&#039; - Die Auswahl der Algorithmen und Protokolle ist entscheidend. Für die meisten Aufgaben gibt es mehre mögliche Lösungen (&#039;&#039;Viele Wege führen nach Rom&#039;&#039;). Aber nicht alle sind gleich gut geeignet. Deswegen sollte hier eine sinnvolle Auswahl getroffen werden.&lt;br /&gt;
* &#039;&#039;&#039;Künstlicher Delay&#039;&#039;&#039; - Es besteht die Möglichkeit einzelne Streams oder Ereignisse künstlich leicht heraus zu zögern. Hierdurch kann ein Abgleich der Latenzen gemacht werden was dazu dient Syncronität her zu stellen. Normalerweise werden alle Streams so lange verzögert bis sie eine &#039;&#039;künstliche&#039;&#039; Latenzs gleich dem Stream haben der die höchste Latenz aufweist.&lt;br /&gt;
* &#039;&#039;&#039;Resampling&#039;&#039;&#039; - Sind mehre Clocks beteiligt oder kommen die Daten etwas zu schnell oder zu langsam kann man leichtes Resampling betreiben. Das heißt das das Signal künstlich gestaucht oder in die Länge gezogen wird. Geschiet dies nicht ruckartig kann das Gehör den unterschied nicht wahrnehmen solange dieses Resamping nur in kleinen Bereichen passiert (je nach Literatur 2% bis 5%, werte die größer sind als die Ungenauigkeit von Quarzen und somit gegeigent sind um Clock driffting aus zu gleichen.).&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
...&lt;br /&gt;
==== Win32 Port ====&lt;br /&gt;
Ein Win32 Port existiert zum jetzigen Zeitpunkt nicht. Dies liegt an mehren Faktoren: Zum einen ist Win32, was den nahe-realtime Betrieb angeht, nicht zuverlässig genug. Zum anderen ist bei Win32 das Networking kein Teil des Kernels wie auf UNIX und POSIX Systemen: Es ist viel mehr teilweise im Userland. Dies hat zur Folge das zu jedem Zeitpunkt eine Applikation wissen muss von welchem Type ein Filehandle ist, da man Basis Funktionen wie read(), write(), close() nicht auf alle Filehandles anwenden kann. Vielmehr hat jeder Type von Filehandles seinen eigenen Satz Funtionen. RoarAudio verfolgt die UNIX Philosophie: &#039;&#039;Alles ist eine Datei&#039;&#039;. Große Patches wären nötig.&lt;br /&gt;
&lt;br /&gt;
Ein Weiteres ist das ein solcher Port viel Zeit in Anspruch nimmt und weder das Projekt noch die Freie Software Bewegung voranbringt.&lt;br /&gt;
&lt;br /&gt;
Im Moment existieren kleinere Patches die vielleicht irgendwann mal Basis Funktionalität mit sich bringen könnten. An ein roard für Win32 ist in absehbarer Zeit nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
Allerdings laufen Teile von RoarAudio in Cygwin mehr oder minder gut. Viele Probleme treten hier auf aber es ist prinzipiell möglich es unter Cygwin zum Laufen zu bringen (außerhalb des nahe-realtime Betriebs).&lt;br /&gt;
&lt;br /&gt;
Es besteht aber die Möglichkeit einige Win32 Applikationen mittels pseudo Web Radio Streams anzubinden.&lt;br /&gt;
&lt;br /&gt;
==== MP3 ====&lt;br /&gt;
* Kein Streaming&lt;br /&gt;
* Keine Meta Daten&lt;br /&gt;
* Schlechte Qualität&lt;br /&gt;
* Patente&lt;br /&gt;
&lt;br /&gt;
=== Querverweise ===&lt;br /&gt;
; [http://raum.keep-cool.org/ RAUM Media Container]&lt;br /&gt;
: Für RoarAudio entwickelter Container, vor allem für Speex und CELT.&lt;br /&gt;
; [http://www.icecast.org/ Icecast] - Multimedia streaming server&lt;br /&gt;
: Software für Webradio und WebTV streaming.&lt;br /&gt;
; [http://www.xiph.org/ Xiph.Org Foundation]&lt;br /&gt;
: Organisation zur Entwicklung von freien Codecs.&lt;br /&gt;
; SIP&lt;br /&gt;
: Standard für VoIP - Internet-Telephonie.&lt;br /&gt;
&lt;br /&gt;
=== Vorführung ===&lt;br /&gt;
{{Vortrags Zeit|30}}&lt;br /&gt;
&lt;br /&gt;
* Allgemeiner Betrieb&lt;br /&gt;
** roard&lt;br /&gt;
** roarvorbis/roarcatplay?&lt;br /&gt;
** roarctl&lt;br /&gt;
** xmms&lt;br /&gt;
* Background Streams&lt;br /&gt;
** roarradio&lt;br /&gt;
* Kompatibilitäts Bibliotheken&lt;br /&gt;
** libroaresd:&lt;br /&gt;
*** &amp;lt;s&amp;gt;xmms&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;mplayer&amp;lt;/s&amp;gt;&lt;br /&gt;
*** Amarok&lt;br /&gt;
&lt;br /&gt;
== Fragen ==&lt;br /&gt;
* &#039;&#039;immer gerne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6801</id>
		<title>RoarAudio/Vortrag/Erster Vortrag</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6801"/>
		<updated>2009-02-06T09:44:47Z</updated>

		<summary type="html">&lt;p&gt;Che: /* Netzwerk-Transparenz */  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 [[RoarAudio]] und die Realtime Audio mixing Problematik vor einem Unixpublikum mit keinen oder kaum 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;
== Der Autor ==&lt;br /&gt;
[[Benutzer:Ph3-der-loewe|Philipp &#039;&#039;ph3-der-loewe&#039;&#039; Schafft]], Software Entwickler und Projekt Urheber.&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
RoarAudio ist ein Sound-Server für POSIX konformen Betriebssysteme (GNU/Linux, *BSD, Mac OS X und andere) unter aktiver Entwicklung. Er bietet gegenüber anderen Sound-Servern zusätzliche Funktionen für den Betrieb in kleinen Radio und TV Studios, aber auch den Heimgebrauch. Dieser Vortrag soll einen Einblick in RoarAudio, seine Funktionalität und Funktionsweise sowie damit verbunden Problemstellungen auf einfachem Niveau bieten. Den Abschluss bildet eine Demonstration.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein Soundserver.&lt;br /&gt;
&lt;br /&gt;
==== Was ist ein Soundserver ====&lt;br /&gt;
Ein Soundserver ist eine Programm dass im Hintergrund Audio Daten mischt und das Ergebnis weiter leitet, meist an eine Soundcard.&lt;br /&gt;
&lt;br /&gt;
Soundserver werden benötigt wenn wenn das unterliegende Audio-Ausgabegerät nur einen einzigen Datenstrom zu einer Zeit verarbeiten kann (Single Stream Soundcards). Sie stellen eine Art virtuelle Soundcard dar zu der Programme wie Player ihre Daten schicken können um eine simultane Ausgabe mit zum Beispiel Notify-Sounds von Chat Clients oder ähnlichem zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Sie bieten meist weitere Funktionen wie das Mischen unter Berücksichtigung von verschiedenen Pegeln. Einige Soundserver ermöglichen auch die Benutzung von Netzwerken zur Übertragung von Audio Daten für die Wiedergabe auf einer anderen Maschine. Dies beides kann auch RoarAudio.&lt;br /&gt;
&lt;br /&gt;
=== Projekt Ziele ===&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
Das Projekt verfolgt im Prinzip das Ziel, eine leistungsfähige Mischsoftware für den Studio Betrieb zur Verfügung zu stellen, aber dennoch ein Produkt zu liefern das auch für den Heim-Anwender angemessen ist.&lt;br /&gt;
&lt;br /&gt;
==== für Heim-Anwender ====&lt;br /&gt;
Heim-Anwender Teilen sich in zwei Gruppen auf:&lt;br /&gt;
Die größere Menge interessiert es nicht wieso Musik aus den Lautsprechern kommt, Hauptsache sie tut es. Für diese Gruppe muss RoarAudio einfach &#039;&#039;out of the box&#039;&#039; funktionieren.&lt;br /&gt;
Die andere Gruppe sind Anwender die mehr machen wollen. Hier soll RoarAudio ein leistungsstarkes Backend sein das möglichst Ressourcen schonend alle gewünschten Funktionen anbietet.&lt;br /&gt;
&lt;br /&gt;
==== Im Studio Betrieb ====&lt;br /&gt;
Wie oben schon angedeutet ist RoarAudio aber im Studio-Einsatz wesentlich interessanter: in einem klassischen Studio steht meist ein großes analoges Mischpult. Dies ist eine wundervolle Sache solange man primär analoge Eingänge braucht: beispielsweise von einer Band. In heutigen Radio- und Fernsehstudios kommen aber die meisten Kanäle aus dem Rechner oder anderen digitalen Geräten wie CD Spielern.&lt;br /&gt;
&lt;br /&gt;
Ein analoges Mischen hat hier nun mehre Nachteile, die wichtigsten sind wohl:&lt;br /&gt;
* Analoges Rauschen&lt;br /&gt;
* Verzerrungen im Frequenzgang&lt;br /&gt;
* Klirren&lt;br /&gt;
* Quantisierungsrauchen&lt;br /&gt;
* Effekte durch asynchrone Abtastung&lt;br /&gt;
&lt;br /&gt;
Eine Alternative wäre in einigen Fällen sicherlich ein Digital-Mischpult. Diese sind aber meist sehr teuer.&lt;br /&gt;
&lt;br /&gt;
RoarAudio kommt hier als erst einmal reine Software-basierende Lösung. Natürlich ist es möglich über die Steuerschnittstellen auch externe Hardware anzuschließen. Hier gibt es auch Planungen, ein Hardware Frontend zu entwerfen das dann kostengünstig zu haben ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exkurs: Codecs und Container ===&lt;br /&gt;
Ein Codec ist eine Spezifikation (meist werden auch die Implementierungen Codec genannt) wie Rohdaten, im Falle von Audio meist PCM Daten, als Datenstrom oder -block repräsentiert werden. Hierzu zählt meist als primäres Kriterium die Kompression. Weitere Informationen wie Synchronisationsdaten können ebenfalls durch den Codec spezifiziert sein, werden aber meist im Container abgelegt.&lt;br /&gt;
&lt;br /&gt;
Ein Container ist im Gegensatz zu einem Codec eine Spezifikation wie Daten die mittels Codecs in eine Datei codiert wurden in oder einen Stream verpackt werden. Hierzu zählen Dinge wie globale File-Magic, Angabe des Codecs, Meta Daten, Angaben über rate/bps/channels und Ähnliches.&lt;br /&gt;
&lt;br /&gt;
==== Verschiedene Arten von Codecs ====&lt;br /&gt;
* Verlustfreie&lt;br /&gt;
* Verlustbehaftete&lt;br /&gt;
* Musik Codecs&lt;br /&gt;
* Sprach Codecs&lt;br /&gt;
* Niederlatenz Codecs&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was hebt RoarAudio hervor? ===&lt;br /&gt;
Hier Sollen einige der besonderen Fähigkeiten von RoarAudio erläutert werden.&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
RoarAudio zeichnet sich dadurch aus daß er zusätzlich zu PCM Rohdaten auch höher Codecs versteht. Dies hat mehre Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio als Background Stream abzuspielen.&lt;br /&gt;
* Es ist dem Server möglich direkt Streaming-Server wie [[icecast]] zu bedienen. Es ist keine weitere &#039;&#039;lange pipe&#039;&#039; nötig um Webradio zu senden. Dies verringert die Störanfälligkeit erheblich und verringert die Latenz, da pipe-Puffer entfallen.&lt;br /&gt;
* Auch ist es nur mit stark komprimierenden Codecs möglich über die dem Heim-Anwender zur Verfügung stehenden Schmalband-Anschlüsse Audio entweder von Client zu Server oder zwischen zwei Servern auszutauschen. Auch eine Kopplung über ISDN Kanäle ist so möglich.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk-Transparenz ====&lt;br /&gt;
RoarAudio ist Netzwerks-transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer lokalen Instanz oder einer auf einem anderen Rechner.&lt;br /&gt;
&lt;br /&gt;
Zu diesem Zweck werden mehre Protokolle unterstützt: UNIX Domain Sockets für lokale Verbindungen sowie TCP/IP und DECnet für Verbindungen mit entfernten Rechnern. Auch existiert Support für verschiedene Proxy Typen.&lt;br /&gt;
&lt;br /&gt;
==== Background Streams ====&lt;br /&gt;
Background Streams sind Streams die vom Server selbst bearbeitet werden und keinen Player benötigen um abgespielt zu werden. Dies kann zum Beispiel genutzt werden um Hintergrundmusik einzuspielen wie beispielsweise in einem Kaufhaus. Auch Webradio Streams werden hier unterstützt.&lt;br /&gt;
&lt;br /&gt;
==== Meta Daten ====&lt;br /&gt;
RoarAudio hat die Fähigkeit auf per Stream Basis Meta Daten ab zu legen. Die Mechanismen sind denen von Vorbis Comments nach empfunden und können prinzipiell mehr. Einiges davon ist allerdings noch nicht vollständig implementiert.&lt;br /&gt;
&lt;br /&gt;
Es besteht neben dem Manuellen Setzen die Möglichkeit das ein Player sie setzt und das &#039;&#039;roard&#039;&#039; sie selbstständig setzt. Im letzteren Falle werden diese von Verschiedenen anderen Streams zusammen gesetzt. Dies kann nützlich sein um automatisch beim Streaming die Meta daten von einem Player zu übernehmen um die Titel Informationen weiter zu führen. Manuelles setzen Mag als Beispiel interessant sein um den Sendernamen zu setzen.&lt;br /&gt;
&lt;br /&gt;
==== Virtual IO ====&lt;br /&gt;
&#039;&#039;(gestrichen)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Kompatibilitäts Bibliotheken ====&lt;br /&gt;
&#039;&#039;Viele Programme haben keine Unterstützung für RoarAudio, was nun?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um dieses Problem zu lösen gibt es diverse Kompatibilitäts-Bibliotheken.&lt;br /&gt;
Diese stellen Bibliotheken dar welche binär-kompatibel andere Audio Systeme emulieren.&lt;br /&gt;
Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und leiten dann alle Anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechenden Bibliothek.&lt;br /&gt;
&lt;br /&gt;
Die mit Abstand wohl wichtigste ist &#039;&#039;&#039;libroaresd&#039;&#039;&#039; welche das [[EsounD]] Interface emuliert. das EsounD Interface wird von den allermeisten Applikationen unterstützt da es das wohl älteste Soundserver Interface ist. Es existiert seit 1998.&lt;br /&gt;
&lt;br /&gt;
Weitere Kompatibilitäts Bibliotheken gibt es für das YIFF Sound System, KDEs aRtsc und PulseAudio. Zusammen mit den existierenden Plugins deckt dies nahezu den vollständigen Player Markt fuer GNU/Linux und BSD ab.&lt;br /&gt;
&lt;br /&gt;
===== Welche Schnittstelle für was? =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Interface&lt;br /&gt;
 ! Beispiel Applikationen&lt;br /&gt;
 |-&lt;br /&gt;
 | libroar&lt;br /&gt;
 | roaraudio-tools, XMMS, mplayer, (xine)&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | GNOME, KDE, XMMS, xine, Amarok, wine,... (177 weitere unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | libao&lt;br /&gt;
 | vorbis-tools, FLAC tools, mpd, mpg321, gnomoradio, somaplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | aRts(c) (KDE)&lt;br /&gt;
 | Player mit aRts support: mplayer, xine; kwave, kaudiocreator,...&lt;br /&gt;
 |-&lt;br /&gt;
 | PulseAudio&lt;br /&gt;
 | Ein paar Programme, die meisten über Plugins. (nicht viel unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | YIFF&lt;br /&gt;
 | y-tools&lt;br /&gt;
 |-&lt;br /&gt;
 | gstreamer&lt;br /&gt;
 | GNOME, Alle GNOME Player. Dieverse andere.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Konzepte und Architektur ===&lt;br /&gt;
RoarAudio ist zwar in C geschrieben aber größtenteils Objekt-orientiert. Er umfasst im Moment etwa 28 tausend Zeilen C. (EsounD kommt auf rund 15 tausend, PulseAudio 74 tausend und aRts auf 130 tausend).&lt;br /&gt;
&lt;br /&gt;
==== Clients und Streams ====&lt;br /&gt;
&lt;br /&gt;
Vor allem wichtig und nach Außen hin sichtbar sind die Client und Stream Objekte.&lt;br /&gt;
Ein Client Objekt verkörpert einen (Netzwerk) Client, zum Beispiel einen Player oder ein Steuerprogramm wie roarctl. Es kann auch Stream Objekte assoziiert haben (Beispielsweise im Falle von Abspielen von Musik).&lt;br /&gt;
&lt;br /&gt;
Ein Stream Objekt stellt einen eigentlichen Audio Datenstrom da. Dieses Objekt beinhaltet diverse Informationen über den Datenstrom: Informationen wie der roard ihn auslesen kann, Sample Rate/Bits/Channels, Meta Daten und vieles mehr. Ein Stream gehört immer zu einem Client. Wobei der Client auch der roard selbst sein. Er lässt sich durch &#039;&#039;attachen&#039;&#039; wechseln. Dies kommt zum Einsatz um Hintergrund Streams zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei jedem Audio Datenstrom der in den roard hinein oder heraus fließt handelt es sich um einen Stream. Dies schließt Datenströme zu Geräten wie Soundcards mit ein. Hier durch ist eine maximale Flexibilität gegeben.&lt;br /&gt;
&lt;br /&gt;
===== Stream Typen =====&lt;br /&gt;
Es gibt diverse Verschiedene Stream typen. Die folgende Tabelle Beschreibt sie kurz:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Typ&lt;br /&gt;
 ! Richtung&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Play&lt;br /&gt;
 | zu Server&lt;br /&gt;
 | Standard Typ: eingehende Audio Daten.&lt;br /&gt;
 |-&lt;br /&gt;
 | Monitor&lt;br /&gt;
 | von Server&lt;br /&gt;
 | Hier werden die aktuellen gemischten Audio Daten vom Server abgefragt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Filter&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Dieser Stream dient zum zwischenschalten von Filtern im Mixer&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Dieser Stream geht an einen Driver Richtung Soundcard oder ähnlichem&lt;br /&gt;
 |-&lt;br /&gt;
 | Mixing&lt;br /&gt;
 | keine&lt;br /&gt;
 | Interne Audio Puffer genutzt zum Mischen der Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | Bidir&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Play und Monitor in einem.&lt;br /&gt;
 |-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 | Record&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Flag Abhänig&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Internal&lt;br /&gt;
 | keine&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Stream Flags =====&lt;br /&gt;
Ein Stream kann desweiteren Flags haben die sein Verhalten genauer bestimmen. Die Flags sind hier zusammen gefasst:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary&lt;br /&gt;
 | Bei Ende des Streams beendet sich roard selbst.&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | Es wird Ein Output Driver für diesen Stream verwendet.&lt;br /&gt;
 |-&lt;br /&gt;
 | Source&lt;br /&gt;
 | Bei diesem Stream handelt es sich um eine Source.&lt;br /&gt;
 |-&lt;br /&gt;
 | Sync&lt;br /&gt;
 | Der Stream ist Synchron (mit Hardware bzw. seinem Ziel)&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Ausgehende Streams mit diesem Flag beziehen ihre Meta Daten automatisch von eingehenden Streams mit diesem Flag.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Driver ====&lt;br /&gt;
Ein Driver ist ein Objekt das eine Schnittstelle zur Verfügung stellt um externe Ressourcen anzusprechen, die sich nicht der UNIX IO Philosophie entsprechend verhalten (Erweiterte Handshake zum Beispiel). Dies können Soundcards oder auch Streaming Server sein. Hierzu zählen als Beispiel der OSS (Open Sound System) und der libshout (Icecast) Treiber.&lt;br /&gt;
&lt;br /&gt;
==== Sources ====&lt;br /&gt;
Eine Source ist an sich ein normaler Stream. Der Unterschied besteht darin das roard selbst den Stream beim Starten initialisiert. Neben Test Szenarien ist dies vor allem hilfreich um sich die Audio Ausgabe eines anderen Rechners lokal zu spiegeln.&lt;br /&gt;
&lt;br /&gt;
==== Codecfilter ====&lt;br /&gt;
Bei den Codecfiltern handelt es sich um ein Abstraktions Layer welches roard die Möglichkeit gibt höhere Codecs zu sprechen wie etwa Ogg Vorbis. Einige Codecfilter können nur Lesen andere auch Schreiben. Wird ein Stream mit einem unterstützen Codec aufgebaut so wird automatisch eine Instanz eines passenden Codecfilters erzeugt. Sie verhalten sich somit weitgehend transparent. Viele höheren Codec sind allerdings nicht in der Lage alle Stream Typen zu bedienen. Der Streamtype Filter wird am wenigsten unterstützt da er ein exaktes Timing und Blocking Verhalten benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Filter ====&lt;br /&gt;
* filter&lt;br /&gt;
* ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme des Realtime Audio Mischens ===&lt;br /&gt;
Beim Mischen in Realtime kommen zu den Problemen die beim normalen Mischen von Audio auftreten noch weitere hinzu.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Probleme sind:&lt;br /&gt;
&lt;br /&gt;
* Resampling - Wenn nicht alle Streams dieselbe Abtastfrequens haben müssen die betroffenen Streams auf die Abtastrate des Ausgangs umgerechnet werden. Hierzu gibt es diverse Verfahren. Man kann sich das etwa wie das Skalieren eines Bildes vorstellen: Es gibt Filter die schnell sind und welche die gut sind. Muss man in Realtime resampeln so muss man vor allem schnell sein, will aber auch noch möglichst gut sein. Viele Soundserver behalten schlichtweg die Pegel entsprechend der neuen Abtaste Rate länger oder kürzer bei (s.g. zoh - Zero Order Hold). Dies erzeugt Rechteck Signale welche wiederum diverse Oberwellen erzeugen. RoarAudio setzt hier Polynomapproximation dritten Grades ein. Dies reduziert die Oberwellen schon deutlich dank leichter Tiefpass Eigenschaft.&lt;br /&gt;
* Da nicht für den gesamten Titel der Amplituden-Gang bestimmt werden kann ist es möglich daß es zu sogenanntem Clipping kommt. Clipping bezeichnet das Problem, daß die Summe der Amplituden aller Eingangssignale größer ist als der zulässige Wertebereich. In diesem Falle wird das Ausgangssignal geclippt, sprich es wird auf den maximalen sich im zulässigen Wertebereich liegenden Wert herunter gesetzt. Dies lässt sich nicht vollkommen vermeiden aber durch geschickte Wahl des Mischverfahrens reduzieren. Es empfiehlt sich dennoch einen ReplayGain einzubeziehen. Dieser kann das Clipping zwar auch nicht komplett verhindern aber der Soundserver kann besser abschätzen wie die Gefahr für Clipping ist und rechtzeitig reagieren.&lt;br /&gt;
* Vor Allem beim Pegel umrechnen kommt es selbstverständlich zu Rechenungenauigkeiten. Um diese zu minimieren skaliert RoarAudio die Signale auf bis zu ihrer doppelten Größe auf um Rechenungenauigkeiten zu vermeiden. bei einem 16 Bit Eingangssignal wird als Beispiel auf 32 Bit skaliert was zusätzliche 96dB Rauschabstand während der Umrechnung liefert.&lt;br /&gt;
* &amp;lt;s&amp;gt;Werden Signale mit verschiedenen Pegeln gemischt so kann es sinnvoll sein mit der Breite der Ausgangs-Samples hoch zu gehen. Als Beispiel: wenn zwei Signale mit je 16 Bit mit den Pegeln 1 und 1/4 gemischt werden reduziert der Rauschabstand des zweiten Signals um 12dB. Man sollte überlegen auf 24 Bit am Ausgang zu wechseln. Die Allgemeine Regel lautet: für den Faktor 2 oder 6dB die ein Signal abgeschwächt wird braucht man am Ausgang ein Bit mehr. Wenn mal also eine Hintergrund-Musik mit -48dB auf Sprache mischt (durchaus realistisch) muss man von 16 Bit am Ausgang auf 24 Bit hoch gehen um keinen Qualitäts-Verlust der Musik zu erhalten.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Einige Formate sind nicht Frame basierend. Dies sind vor allem MIDI Formate Hier kann es passieren das die Synchronisation zwischen diesen Streams und den anderen sich an Frame-Grenzen treffe. Dies kann zu unschönen Nebeneffekten führen. Manche Codecs sind auch nur in der Lage auf gewisse Zeitraster Ende-Marken zu setzen was in unsauberen Enden mit Artefakten enden kann. Im Realtime Bereich lässt sich dies nicht korrigieren und solche Codecs sollten vermieden werden.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem: Lokale Synchronität ====&lt;br /&gt;
Die wichtigsten Störfaktoren sind:&lt;br /&gt;
&lt;br /&gt;
* Wie jede Hardware besitzen Soundkarten eine Verzögerung. Das heißt daß sie eine gewisse Zeit brauchen zwischen Erhalt von Daten und deren Ausgabe. Diese Zeit liegt im Bereich von wenigen Millisekunden (z.B. Studio Karten) und kann bis in den Bereich von mehren hundert Millisekunden gehen (z.B. 2.5 Euro USB Karten von $SUPERMARKT), je nach Karte. Die meisten Karten bieten aber eine Möglichkeit ab zu fragen wo sie gerade in ihrem Puffer sind. Wie dies genau funktioniert ist von Karte zu Karte unterschiedlich. Der Treiber der Karte ist dafür zuständig diese Funktionen an höhere Interfaces (OSS, alsa, sndio,...) weiterzureichen und den Applikationen zur Verfügung zu stellen.&lt;br /&gt;
* Neben dem Delay in der Hardware erzeugt selbstverständlich auch der Kernel und die Treiber eine weiter Verzögerung. Dies passiert aus vielen Gründen: Der Programmcode muss natürlich erst einmal ausgeführt werden. Auch werden Interupts nicht um bedingt sofort bearbeitet (zum Beispiel weil gerade ein anderer, höherwertiger bearbeitet wird).&lt;br /&gt;
* Die nächste Schicht, die Sound APIs, erzeugen auf ähnliche Weise weitere Delays. Hier kommt dazu das viele mit relativ großen Puffern arbeiten (Beispielsweise EsounD mit 0.28sec - im Vergleich zu roard mit Standard Puffer von 0.01sec). Die Puffergröße ist in dem meisten Fällen die kleinste Einheit in der Synchronität gewährleistet werden kann.&lt;br /&gt;
* Da die meisten Systeme (alle auf denen RoarAudio läuft) Multitasking betreiben stellt sich ein weiteres Problem: Der entsprechende Prozess muss eine Zeitscheibe bekommen bevor er reagieren kann. Läuft ein anderer Prozess gerade so muss er potentiell warten. Auf den meisten POSIX kompatiblem Systemen basiert das Multitasking zwar auf Ereignissen, sprich ein Prozess läuft so lange bis ein anderer ein Ereignis zu bearbeiten hat (keine feste Zeitscheiben-Länge), was dazu führt das dieses Problem ist nicht all zu groß ist. Aber es kann natürlich gerade ein anderer Prozess mit höherer Priorität laufen der ein anderes Ereignis bearbeitet und somit nicht vom Kernel unterbrochen wird.&lt;br /&gt;
* Unsynchrones clocking&lt;br /&gt;
&lt;br /&gt;
==== Problem: Netzwerk Synchronität ====&lt;br /&gt;
* lag&lt;br /&gt;
* jitter&lt;br /&gt;
* Netzwerk Implementierungen&lt;br /&gt;
&lt;br /&gt;
==== Lösungsansätze ====&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ignorieren&#039;&#039;&#039; - Diverse Probleme lassen sich schlichtweg einfach Ignorieren. Dies sind vor allem Probleme die sich statistisch über die zeit Aufheben. Ist diese Strategie möglich so sollte sie verfolgt werden im sinne von KISS (Keep It Small and Simple). Sie kann natürlich auch extrem daneben liegen und man sollte sich um eine echte Lösung bemühen.&lt;br /&gt;
* &#039;&#039;&#039;TOS&#039;&#039;&#039; - Setzen des TOS (Type Of Service) Feldes bei IP mag helfen. Viele Backbone provider ignoriren dieses Feld zwar aber im LAN kann es durchaus helfen. Gerade bei anderer starker, lang packetiger Kommunikation zwischen dem eignen und dem Ziehl Rechner (file transfers).&lt;br /&gt;
* &#039;&#039;&#039;QoS&#039;&#039;&#039; - Benutzung von QoS (Quality of Service) kann im Backbone Bereich da die Latenz erheblich senken da man das Puffer verhalten der Geräte beeinflusst. Der Nachteil ist das hierzu Unterstützung da sein muss. mit IPv6 scheint sich hier aber einiges zu bessern.&lt;br /&gt;
* &#039;&#039;&#039;Geschickte Auswahl von Algorithmen und Protokollen&#039;&#039;&#039; - Die Auswahl der Algorithmen und Protokolle ist entscheidend. Für die meisten Aufgaben gibt es mehre mögliche Lösungen (&#039;&#039;Viele Wege führen nach Rom&#039;&#039;). Aber nicht alle sind gleich gut geeignet. Deswegen sollte hier eine sinnvolle Auswahl getroffen werden.&lt;br /&gt;
* &#039;&#039;&#039;Künstlicher Delay&#039;&#039;&#039; - Es besteht die Möglichkeit einzelne Streams oder Ereignisse künstlich leicht heraus zu zögern. Hierdurch kann ein Abgleich der Latenzen gemacht werden was dazu dient Syncronität her zu stellen. Normalerweise werden alle Streams so lange verzögert bis sie eine &#039;&#039;künstliche&#039;&#039; Latenzs gleich dem Stream haben der die höchste Latenz aufweist.&lt;br /&gt;
* &#039;&#039;&#039;Resampling&#039;&#039;&#039; - Sind mehre Clocks beteiligt oder kommen die Daten etwas zu schnell oder zu langsam kann man leichtes Resampling betreiben. Das heißt das das Signal künstlich gestaucht oder in die Länge gezogen wird. Geschiet dies nicht ruckartig kann das Gehör den unterschied nicht wahrnehmen solange dieses Resamping nur in kleinen Bereichen passiert (je nach Literatur 2% bis 5%, werte die größer sind als die Ungenauigkeit von Quarzen und somit gegeigent sind um Clock driffting aus zu gleichen.).&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
...&lt;br /&gt;
==== Win32 Port ====&lt;br /&gt;
Ein Win32 Port existiert zum jetzigen Zeitpunkt nicht. Dies liegt an mehren Faktoren: Zum einen ist Win32, was den nahe-realtime Betrieb angeht, nicht zuverlässig genug. Zum anderen ist bei Win32 das Networking kein Teil des Kernels wie auf UNIX und POSIX Systemen: Es ist viel mehr teilweise im Userland. Dies hat zur Folge das zu jedem Zeitpunkt eine Applikation wissen muss von welchem Type ein Filehandle ist, da man Basis Funktionen wie read(), write(), close() nicht auf alle Filehandles anwenden kann. Vielmehr hat jeder Type von Filehandles seinen eigenen Satz Funtionen. RoarAudio verfolgt die UNIX Philosophie: &#039;&#039;Alles ist eine Datei&#039;&#039;. Große Patches wären nötig.&lt;br /&gt;
&lt;br /&gt;
Ein Weiteres ist das ein solcher Port viel Zeit in Anspruch nimmt und weder das Projekt noch die Freie Software Bewegung voranbringt.&lt;br /&gt;
&lt;br /&gt;
Im Moment existieren kleinere Patches die vielleicht irgendwann mal Basis Funktionalität mit sich bringen könnten. An ein roard für Win32 ist in absehbarer Zeit nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
Allerdings laufen Teile von RoarAudio in Cygwin mehr oder minder gut. Viele Probleme treten hier auf aber es ist prinzipiell möglich es unter Cygwin zum Laufen zu bringen (außerhalb des nahe-realtime Betriebs).&lt;br /&gt;
&lt;br /&gt;
Es besteht aber die Möglichkeit einige Win32 Applikationen mittels pseudo Web Radio Streams anzubinden.&lt;br /&gt;
&lt;br /&gt;
==== MP3 ====&lt;br /&gt;
* Kein Streaming&lt;br /&gt;
* Keine Meta Daten&lt;br /&gt;
* Schlechte Qualität&lt;br /&gt;
* Patente&lt;br /&gt;
&lt;br /&gt;
=== Querverweise ===&lt;br /&gt;
; [http://raum.keep-cool.org/ RAUM Media Container]&lt;br /&gt;
: Für RoarAudio entwickelter Container, vor allem für Speex und CELT.&lt;br /&gt;
; [http://www.icecast.org/ Icecast] - Multimedia streaming server&lt;br /&gt;
: Software für Webradio und WebTV streaming.&lt;br /&gt;
; [http://www.xiph.org/ Xiph.Org Foundation]&lt;br /&gt;
: Organisation zur Entwicklung von freien Codecs.&lt;br /&gt;
; SIP&lt;br /&gt;
: Standard für VoIP - Internet-Telephonie.&lt;br /&gt;
&lt;br /&gt;
=== Vorführung ===&lt;br /&gt;
{{Vortrags Zeit|30}}&lt;br /&gt;
&lt;br /&gt;
* Allgemeiner Betrieb&lt;br /&gt;
** roard&lt;br /&gt;
** roarvorbis/roarcatplay?&lt;br /&gt;
** roarctl&lt;br /&gt;
** xmms&lt;br /&gt;
* Background Streams&lt;br /&gt;
** roarradio&lt;br /&gt;
* Kompatibilitäts Bibliotheken&lt;br /&gt;
** libroaresd:&lt;br /&gt;
*** &amp;lt;s&amp;gt;xmms&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;mplayer&amp;lt;/s&amp;gt;&lt;br /&gt;
*** Amarok&lt;br /&gt;
&lt;br /&gt;
== Fragen ==&lt;br /&gt;
* &#039;&#039;immer gerne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6800</id>
		<title>RoarAudio/Vortrag/Erster Vortrag</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6800"/>
		<updated>2009-02-06T09:43:44Z</updated>

		<summary type="html">&lt;p&gt;Che: /* Codecs */  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 [[RoarAudio]] und die Realtime Audio mixing Problematik vor einem Unixpublikum mit keinen oder kaum 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;
== Der Autor ==&lt;br /&gt;
[[Benutzer:Ph3-der-loewe|Philipp &#039;&#039;ph3-der-loewe&#039;&#039; Schafft]], Software Entwickler und Projekt Urheber.&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
RoarAudio ist ein Sound-Server für POSIX konformen Betriebssysteme (GNU/Linux, *BSD, Mac OS X und andere) unter aktiver Entwicklung. Er bietet gegenüber anderen Sound-Servern zusätzliche Funktionen für den Betrieb in kleinen Radio und TV Studios, aber auch den Heimgebrauch. Dieser Vortrag soll einen Einblick in RoarAudio, seine Funktionalität und Funktionsweise sowie damit verbunden Problemstellungen auf einfachem Niveau bieten. Den Abschluss bildet eine Demonstration.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein Soundserver.&lt;br /&gt;
&lt;br /&gt;
==== Was ist ein Soundserver ====&lt;br /&gt;
Ein Soundserver ist eine Programm dass im Hintergrund Audio Daten mischt und das Ergebnis weiter leitet, meist an eine Soundcard.&lt;br /&gt;
&lt;br /&gt;
Soundserver werden benötigt wenn wenn das unterliegende Audio-Ausgabegerät nur einen einzigen Datenstrom zu einer Zeit verarbeiten kann (Single Stream Soundcards). Sie stellen eine Art virtuelle Soundcard dar zu der Programme wie Player ihre Daten schicken können um eine simultane Ausgabe mit zum Beispiel Notify-Sounds von Chat Clients oder ähnlichem zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Sie bieten meist weitere Funktionen wie das Mischen unter Berücksichtigung von verschiedenen Pegeln. Einige Soundserver ermöglichen auch die Benutzung von Netzwerken zur Übertragung von Audio Daten für die Wiedergabe auf einer anderen Maschine. Dies beides kann auch RoarAudio.&lt;br /&gt;
&lt;br /&gt;
=== Projekt Ziele ===&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
Das Projekt verfolgt im Prinzip das Ziel, eine leistungsfähige Mischsoftware für den Studio Betrieb zur Verfügung zu stellen, aber dennoch ein Produkt zu liefern das auch für den Heim-Anwender angemessen ist.&lt;br /&gt;
&lt;br /&gt;
==== für Heim-Anwender ====&lt;br /&gt;
Heim-Anwender Teilen sich in zwei Gruppen auf:&lt;br /&gt;
Die größere Menge interessiert es nicht wieso Musik aus den Lautsprechern kommt, Hauptsache sie tut es. Für diese Gruppe muss RoarAudio einfach &#039;&#039;out of the box&#039;&#039; funktionieren.&lt;br /&gt;
Die andere Gruppe sind Anwender die mehr machen wollen. Hier soll RoarAudio ein leistungsstarkes Backend sein das möglichst Ressourcen schonend alle gewünschten Funktionen anbietet.&lt;br /&gt;
&lt;br /&gt;
==== Im Studio Betrieb ====&lt;br /&gt;
Wie oben schon angedeutet ist RoarAudio aber im Studio-Einsatz wesentlich interessanter: in einem klassischen Studio steht meist ein großes analoges Mischpult. Dies ist eine wundervolle Sache solange man primär analoge Eingänge braucht: beispielsweise von einer Band. In heutigen Radio- und Fernsehstudios kommen aber die meisten Kanäle aus dem Rechner oder anderen digitalen Geräten wie CD Spielern.&lt;br /&gt;
&lt;br /&gt;
Ein analoges Mischen hat hier nun mehre Nachteile, die wichtigsten sind wohl:&lt;br /&gt;
* Analoges Rauschen&lt;br /&gt;
* Verzerrungen im Frequenzgang&lt;br /&gt;
* Klirren&lt;br /&gt;
* Quantisierungsrauchen&lt;br /&gt;
* Effekte durch asynchrone Abtastung&lt;br /&gt;
&lt;br /&gt;
Eine Alternative wäre in einigen Fällen sicherlich ein Digital-Mischpult. Diese sind aber meist sehr teuer.&lt;br /&gt;
&lt;br /&gt;
RoarAudio kommt hier als erst einmal reine Software-basierende Lösung. Natürlich ist es möglich über die Steuerschnittstellen auch externe Hardware anzuschließen. Hier gibt es auch Planungen, ein Hardware Frontend zu entwerfen das dann kostengünstig zu haben ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exkurs: Codecs und Container ===&lt;br /&gt;
Ein Codec ist eine Spezifikation (meist werden auch die Implementierungen Codec genannt) wie Rohdaten, im Falle von Audio meist PCM Daten, als Datenstrom oder -block repräsentiert werden. Hierzu zählt meist als primäres Kriterium die Kompression. Weitere Informationen wie Synchronisationsdaten können ebenfalls durch den Codec spezifiziert sein, werden aber meist im Container abgelegt.&lt;br /&gt;
&lt;br /&gt;
Ein Container ist im Gegensatz zu einem Codec eine Spezifikation wie Daten die mittels Codecs in eine Datei codiert wurden in oder einen Stream verpackt werden. Hierzu zählen Dinge wie globale File-Magic, Angabe des Codecs, Meta Daten, Angaben über rate/bps/channels und Ähnliches.&lt;br /&gt;
&lt;br /&gt;
==== Verschiedene Arten von Codecs ====&lt;br /&gt;
* Verlustfreie&lt;br /&gt;
* Verlustbehaftete&lt;br /&gt;
* Musik Codecs&lt;br /&gt;
* Sprach Codecs&lt;br /&gt;
* Niederlatenz Codecs&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was hebt RoarAudio hervor? ===&lt;br /&gt;
Hier Sollen einige der besonderen Fähigkeiten von RoarAudio erläutert werden.&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
RoarAudio zeichnet sich dadurch aus daß er zusätzlich zu PCM Rohdaten auch höher Codecs versteht. Dies hat mehre Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio als Background Stream abzuspielen.&lt;br /&gt;
* Es ist dem Server möglich direkt Streaming-Server wie [[icecast]] zu bedienen. Es ist keine weitere &#039;&#039;lange pipe&#039;&#039; nötig um Webradio zu senden. Dies verringert die Störanfälligkeit erheblich und verringert die Latenz, da pipe-Puffer entfallen.&lt;br /&gt;
* Auch ist es nur mit stark komprimierenden Codecs möglich über die dem Heim-Anwender zur Verfügung stehenden Schmalband-Anschlüsse Audio entweder von Client zu Server oder zwischen zwei Servern auszutauschen. Auch eine Kopplung über ISDN Kanäle ist so möglich.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk-Transparenz ====&lt;br /&gt;
RoarAudio ist Netzwerk transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer lokalen Instanz oder einer auf einem anderen Rechner.&lt;br /&gt;
&lt;br /&gt;
Zu diesem Zweck werden mehre Protokolle unterstützt: UNIX Domain Sockets für Lokale Verbindungen sowie TCP/IP und DECnet für Verbindungen mit entfernten Rechnern. Auch existiert Support für verschiedene Proxy Typen.&lt;br /&gt;
&lt;br /&gt;
==== Background Streams ====&lt;br /&gt;
Background Streams sind Streams die vom Server selbst bearbeitet werden und keinen Player benötigen um abgespielt zu werden. Dies kann zum Beispiel genutzt werden um Hintergrundmusik einzuspielen wie beispielsweise in einem Kaufhaus. Auch Webradio Streams werden hier unterstützt.&lt;br /&gt;
&lt;br /&gt;
==== Meta Daten ====&lt;br /&gt;
RoarAudio hat die Fähigkeit auf per Stream Basis Meta Daten ab zu legen. Die Mechanismen sind denen von Vorbis Comments nach empfunden und können prinzipiell mehr. Einiges davon ist allerdings noch nicht vollständig implementiert.&lt;br /&gt;
&lt;br /&gt;
Es besteht neben dem Manuellen Setzen die Möglichkeit das ein Player sie setzt und das &#039;&#039;roard&#039;&#039; sie selbstständig setzt. Im letzteren Falle werden diese von Verschiedenen anderen Streams zusammen gesetzt. Dies kann nützlich sein um automatisch beim Streaming die Meta daten von einem Player zu übernehmen um die Titel Informationen weiter zu führen. Manuelles setzen Mag als Beispiel interessant sein um den Sendernamen zu setzen.&lt;br /&gt;
&lt;br /&gt;
==== Virtual IO ====&lt;br /&gt;
&#039;&#039;(gestrichen)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Kompatibilitäts Bibliotheken ====&lt;br /&gt;
&#039;&#039;Viele Programme haben keine Unterstützung für RoarAudio, was nun?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um dieses Problem zu lösen gibt es diverse Kompatibilitäts-Bibliotheken.&lt;br /&gt;
Diese stellen Bibliotheken dar welche binär-kompatibel andere Audio Systeme emulieren.&lt;br /&gt;
Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und leiten dann alle Anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechenden Bibliothek.&lt;br /&gt;
&lt;br /&gt;
Die mit Abstand wohl wichtigste ist &#039;&#039;&#039;libroaresd&#039;&#039;&#039; welche das [[EsounD]] Interface emuliert. das EsounD Interface wird von den allermeisten Applikationen unterstützt da es das wohl älteste Soundserver Interface ist. Es existiert seit 1998.&lt;br /&gt;
&lt;br /&gt;
Weitere Kompatibilitäts Bibliotheken gibt es für das YIFF Sound System, KDEs aRtsc und PulseAudio. Zusammen mit den existierenden Plugins deckt dies nahezu den vollständigen Player Markt fuer GNU/Linux und BSD ab.&lt;br /&gt;
&lt;br /&gt;
===== Welche Schnittstelle für was? =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Interface&lt;br /&gt;
 ! Beispiel Applikationen&lt;br /&gt;
 |-&lt;br /&gt;
 | libroar&lt;br /&gt;
 | roaraudio-tools, XMMS, mplayer, (xine)&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | GNOME, KDE, XMMS, xine, Amarok, wine,... (177 weitere unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | libao&lt;br /&gt;
 | vorbis-tools, FLAC tools, mpd, mpg321, gnomoradio, somaplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | aRts(c) (KDE)&lt;br /&gt;
 | Player mit aRts support: mplayer, xine; kwave, kaudiocreator,...&lt;br /&gt;
 |-&lt;br /&gt;
 | PulseAudio&lt;br /&gt;
 | Ein paar Programme, die meisten über Plugins. (nicht viel unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | YIFF&lt;br /&gt;
 | y-tools&lt;br /&gt;
 |-&lt;br /&gt;
 | gstreamer&lt;br /&gt;
 | GNOME, Alle GNOME Player. Dieverse andere.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Konzepte und Architektur ===&lt;br /&gt;
RoarAudio ist zwar in C geschrieben aber größtenteils Objekt-orientiert. Er umfasst im Moment etwa 28 tausend Zeilen C. (EsounD kommt auf rund 15 tausend, PulseAudio 74 tausend und aRts auf 130 tausend).&lt;br /&gt;
&lt;br /&gt;
==== Clients und Streams ====&lt;br /&gt;
&lt;br /&gt;
Vor allem wichtig und nach Außen hin sichtbar sind die Client und Stream Objekte.&lt;br /&gt;
Ein Client Objekt verkörpert einen (Netzwerk) Client, zum Beispiel einen Player oder ein Steuerprogramm wie roarctl. Es kann auch Stream Objekte assoziiert haben (Beispielsweise im Falle von Abspielen von Musik).&lt;br /&gt;
&lt;br /&gt;
Ein Stream Objekt stellt einen eigentlichen Audio Datenstrom da. Dieses Objekt beinhaltet diverse Informationen über den Datenstrom: Informationen wie der roard ihn auslesen kann, Sample Rate/Bits/Channels, Meta Daten und vieles mehr. Ein Stream gehört immer zu einem Client. Wobei der Client auch der roard selbst sein. Er lässt sich durch &#039;&#039;attachen&#039;&#039; wechseln. Dies kommt zum Einsatz um Hintergrund Streams zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei jedem Audio Datenstrom der in den roard hinein oder heraus fließt handelt es sich um einen Stream. Dies schließt Datenströme zu Geräten wie Soundcards mit ein. Hier durch ist eine maximale Flexibilität gegeben.&lt;br /&gt;
&lt;br /&gt;
===== Stream Typen =====&lt;br /&gt;
Es gibt diverse Verschiedene Stream typen. Die folgende Tabelle Beschreibt sie kurz:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Typ&lt;br /&gt;
 ! Richtung&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Play&lt;br /&gt;
 | zu Server&lt;br /&gt;
 | Standard Typ: eingehende Audio Daten.&lt;br /&gt;
 |-&lt;br /&gt;
 | Monitor&lt;br /&gt;
 | von Server&lt;br /&gt;
 | Hier werden die aktuellen gemischten Audio Daten vom Server abgefragt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Filter&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Dieser Stream dient zum zwischenschalten von Filtern im Mixer&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Dieser Stream geht an einen Driver Richtung Soundcard oder ähnlichem&lt;br /&gt;
 |-&lt;br /&gt;
 | Mixing&lt;br /&gt;
 | keine&lt;br /&gt;
 | Interne Audio Puffer genutzt zum Mischen der Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | Bidir&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Play und Monitor in einem.&lt;br /&gt;
 |-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 | Record&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Flag Abhänig&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Internal&lt;br /&gt;
 | keine&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Stream Flags =====&lt;br /&gt;
Ein Stream kann desweiteren Flags haben die sein Verhalten genauer bestimmen. Die Flags sind hier zusammen gefasst:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary&lt;br /&gt;
 | Bei Ende des Streams beendet sich roard selbst.&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | Es wird Ein Output Driver für diesen Stream verwendet.&lt;br /&gt;
 |-&lt;br /&gt;
 | Source&lt;br /&gt;
 | Bei diesem Stream handelt es sich um eine Source.&lt;br /&gt;
 |-&lt;br /&gt;
 | Sync&lt;br /&gt;
 | Der Stream ist Synchron (mit Hardware bzw. seinem Ziel)&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Ausgehende Streams mit diesem Flag beziehen ihre Meta Daten automatisch von eingehenden Streams mit diesem Flag.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Driver ====&lt;br /&gt;
Ein Driver ist ein Objekt das eine Schnittstelle zur Verfügung stellt um externe Ressourcen anzusprechen, die sich nicht der UNIX IO Philosophie entsprechend verhalten (Erweiterte Handshake zum Beispiel). Dies können Soundcards oder auch Streaming Server sein. Hierzu zählen als Beispiel der OSS (Open Sound System) und der libshout (Icecast) Treiber.&lt;br /&gt;
&lt;br /&gt;
==== Sources ====&lt;br /&gt;
Eine Source ist an sich ein normaler Stream. Der Unterschied besteht darin das roard selbst den Stream beim Starten initialisiert. Neben Test Szenarien ist dies vor allem hilfreich um sich die Audio Ausgabe eines anderen Rechners lokal zu spiegeln.&lt;br /&gt;
&lt;br /&gt;
==== Codecfilter ====&lt;br /&gt;
Bei den Codecfiltern handelt es sich um ein Abstraktions Layer welches roard die Möglichkeit gibt höhere Codecs zu sprechen wie etwa Ogg Vorbis. Einige Codecfilter können nur Lesen andere auch Schreiben. Wird ein Stream mit einem unterstützen Codec aufgebaut so wird automatisch eine Instanz eines passenden Codecfilters erzeugt. Sie verhalten sich somit weitgehend transparent. Viele höheren Codec sind allerdings nicht in der Lage alle Stream Typen zu bedienen. Der Streamtype Filter wird am wenigsten unterstützt da er ein exaktes Timing und Blocking Verhalten benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Filter ====&lt;br /&gt;
* filter&lt;br /&gt;
* ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme des Realtime Audio Mischens ===&lt;br /&gt;
Beim Mischen in Realtime kommen zu den Problemen die beim normalen Mischen von Audio auftreten noch weitere hinzu.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Probleme sind:&lt;br /&gt;
&lt;br /&gt;
* Resampling - Wenn nicht alle Streams dieselbe Abtastfrequens haben müssen die betroffenen Streams auf die Abtastrate des Ausgangs umgerechnet werden. Hierzu gibt es diverse Verfahren. Man kann sich das etwa wie das Skalieren eines Bildes vorstellen: Es gibt Filter die schnell sind und welche die gut sind. Muss man in Realtime resampeln so muss man vor allem schnell sein, will aber auch noch möglichst gut sein. Viele Soundserver behalten schlichtweg die Pegel entsprechend der neuen Abtaste Rate länger oder kürzer bei (s.g. zoh - Zero Order Hold). Dies erzeugt Rechteck Signale welche wiederum diverse Oberwellen erzeugen. RoarAudio setzt hier Polynomapproximation dritten Grades ein. Dies reduziert die Oberwellen schon deutlich dank leichter Tiefpass Eigenschaft.&lt;br /&gt;
* Da nicht für den gesamten Titel der Amplituden-Gang bestimmt werden kann ist es möglich daß es zu sogenanntem Clipping kommt. Clipping bezeichnet das Problem, daß die Summe der Amplituden aller Eingangssignale größer ist als der zulässige Wertebereich. In diesem Falle wird das Ausgangssignal geclippt, sprich es wird auf den maximalen sich im zulässigen Wertebereich liegenden Wert herunter gesetzt. Dies lässt sich nicht vollkommen vermeiden aber durch geschickte Wahl des Mischverfahrens reduzieren. Es empfiehlt sich dennoch einen ReplayGain einzubeziehen. Dieser kann das Clipping zwar auch nicht komplett verhindern aber der Soundserver kann besser abschätzen wie die Gefahr für Clipping ist und rechtzeitig reagieren.&lt;br /&gt;
* Vor Allem beim Pegel umrechnen kommt es selbstverständlich zu Rechenungenauigkeiten. Um diese zu minimieren skaliert RoarAudio die Signale auf bis zu ihrer doppelten Größe auf um Rechenungenauigkeiten zu vermeiden. bei einem 16 Bit Eingangssignal wird als Beispiel auf 32 Bit skaliert was zusätzliche 96dB Rauschabstand während der Umrechnung liefert.&lt;br /&gt;
* &amp;lt;s&amp;gt;Werden Signale mit verschiedenen Pegeln gemischt so kann es sinnvoll sein mit der Breite der Ausgangs-Samples hoch zu gehen. Als Beispiel: wenn zwei Signale mit je 16 Bit mit den Pegeln 1 und 1/4 gemischt werden reduziert der Rauschabstand des zweiten Signals um 12dB. Man sollte überlegen auf 24 Bit am Ausgang zu wechseln. Die Allgemeine Regel lautet: für den Faktor 2 oder 6dB die ein Signal abgeschwächt wird braucht man am Ausgang ein Bit mehr. Wenn mal also eine Hintergrund-Musik mit -48dB auf Sprache mischt (durchaus realistisch) muss man von 16 Bit am Ausgang auf 24 Bit hoch gehen um keinen Qualitäts-Verlust der Musik zu erhalten.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Einige Formate sind nicht Frame basierend. Dies sind vor allem MIDI Formate Hier kann es passieren das die Synchronisation zwischen diesen Streams und den anderen sich an Frame-Grenzen treffe. Dies kann zu unschönen Nebeneffekten führen. Manche Codecs sind auch nur in der Lage auf gewisse Zeitraster Ende-Marken zu setzen was in unsauberen Enden mit Artefakten enden kann. Im Realtime Bereich lässt sich dies nicht korrigieren und solche Codecs sollten vermieden werden.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem: Lokale Synchronität ====&lt;br /&gt;
Die wichtigsten Störfaktoren sind:&lt;br /&gt;
&lt;br /&gt;
* Wie jede Hardware besitzen Soundkarten eine Verzögerung. Das heißt daß sie eine gewisse Zeit brauchen zwischen Erhalt von Daten und deren Ausgabe. Diese Zeit liegt im Bereich von wenigen Millisekunden (z.B. Studio Karten) und kann bis in den Bereich von mehren hundert Millisekunden gehen (z.B. 2.5 Euro USB Karten von $SUPERMARKT), je nach Karte. Die meisten Karten bieten aber eine Möglichkeit ab zu fragen wo sie gerade in ihrem Puffer sind. Wie dies genau funktioniert ist von Karte zu Karte unterschiedlich. Der Treiber der Karte ist dafür zuständig diese Funktionen an höhere Interfaces (OSS, alsa, sndio,...) weiterzureichen und den Applikationen zur Verfügung zu stellen.&lt;br /&gt;
* Neben dem Delay in der Hardware erzeugt selbstverständlich auch der Kernel und die Treiber eine weiter Verzögerung. Dies passiert aus vielen Gründen: Der Programmcode muss natürlich erst einmal ausgeführt werden. Auch werden Interupts nicht um bedingt sofort bearbeitet (zum Beispiel weil gerade ein anderer, höherwertiger bearbeitet wird).&lt;br /&gt;
* Die nächste Schicht, die Sound APIs, erzeugen auf ähnliche Weise weitere Delays. Hier kommt dazu das viele mit relativ großen Puffern arbeiten (Beispielsweise EsounD mit 0.28sec - im Vergleich zu roard mit Standard Puffer von 0.01sec). Die Puffergröße ist in dem meisten Fällen die kleinste Einheit in der Synchronität gewährleistet werden kann.&lt;br /&gt;
* Da die meisten Systeme (alle auf denen RoarAudio läuft) Multitasking betreiben stellt sich ein weiteres Problem: Der entsprechende Prozess muss eine Zeitscheibe bekommen bevor er reagieren kann. Läuft ein anderer Prozess gerade so muss er potentiell warten. Auf den meisten POSIX kompatiblem Systemen basiert das Multitasking zwar auf Ereignissen, sprich ein Prozess läuft so lange bis ein anderer ein Ereignis zu bearbeiten hat (keine feste Zeitscheiben-Länge), was dazu führt das dieses Problem ist nicht all zu groß ist. Aber es kann natürlich gerade ein anderer Prozess mit höherer Priorität laufen der ein anderes Ereignis bearbeitet und somit nicht vom Kernel unterbrochen wird.&lt;br /&gt;
* Unsynchrones clocking&lt;br /&gt;
&lt;br /&gt;
==== Problem: Netzwerk Synchronität ====&lt;br /&gt;
* lag&lt;br /&gt;
* jitter&lt;br /&gt;
* Netzwerk Implementierungen&lt;br /&gt;
&lt;br /&gt;
==== Lösungsansätze ====&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ignorieren&#039;&#039;&#039; - Diverse Probleme lassen sich schlichtweg einfach Ignorieren. Dies sind vor allem Probleme die sich statistisch über die zeit Aufheben. Ist diese Strategie möglich so sollte sie verfolgt werden im sinne von KISS (Keep It Small and Simple). Sie kann natürlich auch extrem daneben liegen und man sollte sich um eine echte Lösung bemühen.&lt;br /&gt;
* &#039;&#039;&#039;TOS&#039;&#039;&#039; - Setzen des TOS (Type Of Service) Feldes bei IP mag helfen. Viele Backbone provider ignoriren dieses Feld zwar aber im LAN kann es durchaus helfen. Gerade bei anderer starker, lang packetiger Kommunikation zwischen dem eignen und dem Ziehl Rechner (file transfers).&lt;br /&gt;
* &#039;&#039;&#039;QoS&#039;&#039;&#039; - Benutzung von QoS (Quality of Service) kann im Backbone Bereich da die Latenz erheblich senken da man das Puffer verhalten der Geräte beeinflusst. Der Nachteil ist das hierzu Unterstützung da sein muss. mit IPv6 scheint sich hier aber einiges zu bessern.&lt;br /&gt;
* &#039;&#039;&#039;Geschickte Auswahl von Algorithmen und Protokollen&#039;&#039;&#039; - Die Auswahl der Algorithmen und Protokolle ist entscheidend. Für die meisten Aufgaben gibt es mehre mögliche Lösungen (&#039;&#039;Viele Wege führen nach Rom&#039;&#039;). Aber nicht alle sind gleich gut geeignet. Deswegen sollte hier eine sinnvolle Auswahl getroffen werden.&lt;br /&gt;
* &#039;&#039;&#039;Künstlicher Delay&#039;&#039;&#039; - Es besteht die Möglichkeit einzelne Streams oder Ereignisse künstlich leicht heraus zu zögern. Hierdurch kann ein Abgleich der Latenzen gemacht werden was dazu dient Syncronität her zu stellen. Normalerweise werden alle Streams so lange verzögert bis sie eine &#039;&#039;künstliche&#039;&#039; Latenzs gleich dem Stream haben der die höchste Latenz aufweist.&lt;br /&gt;
* &#039;&#039;&#039;Resampling&#039;&#039;&#039; - Sind mehre Clocks beteiligt oder kommen die Daten etwas zu schnell oder zu langsam kann man leichtes Resampling betreiben. Das heißt das das Signal künstlich gestaucht oder in die Länge gezogen wird. Geschiet dies nicht ruckartig kann das Gehör den unterschied nicht wahrnehmen solange dieses Resamping nur in kleinen Bereichen passiert (je nach Literatur 2% bis 5%, werte die größer sind als die Ungenauigkeit von Quarzen und somit gegeigent sind um Clock driffting aus zu gleichen.).&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
...&lt;br /&gt;
==== Win32 Port ====&lt;br /&gt;
Ein Win32 Port existiert zum jetzigen Zeitpunkt nicht. Dies liegt an mehren Faktoren: Zum einen ist Win32, was den nahe-realtime Betrieb angeht, nicht zuverlässig genug. Zum anderen ist bei Win32 das Networking kein Teil des Kernels wie auf UNIX und POSIX Systemen: Es ist viel mehr teilweise im Userland. Dies hat zur Folge das zu jedem Zeitpunkt eine Applikation wissen muss von welchem Type ein Filehandle ist, da man Basis Funktionen wie read(), write(), close() nicht auf alle Filehandles anwenden kann. Vielmehr hat jeder Type von Filehandles seinen eigenen Satz Funtionen. RoarAudio verfolgt die UNIX Philosophie: &#039;&#039;Alles ist eine Datei&#039;&#039;. Große Patches wären nötig.&lt;br /&gt;
&lt;br /&gt;
Ein Weiteres ist das ein solcher Port viel Zeit in Anspruch nimmt und weder das Projekt noch die Freie Software Bewegung voranbringt.&lt;br /&gt;
&lt;br /&gt;
Im Moment existieren kleinere Patches die vielleicht irgendwann mal Basis Funktionalität mit sich bringen könnten. An ein roard für Win32 ist in absehbarer Zeit nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
Allerdings laufen Teile von RoarAudio in Cygwin mehr oder minder gut. Viele Probleme treten hier auf aber es ist prinzipiell möglich es unter Cygwin zum Laufen zu bringen (außerhalb des nahe-realtime Betriebs).&lt;br /&gt;
&lt;br /&gt;
Es besteht aber die Möglichkeit einige Win32 Applikationen mittels pseudo Web Radio Streams anzubinden.&lt;br /&gt;
&lt;br /&gt;
==== MP3 ====&lt;br /&gt;
* Kein Streaming&lt;br /&gt;
* Keine Meta Daten&lt;br /&gt;
* Schlechte Qualität&lt;br /&gt;
* Patente&lt;br /&gt;
&lt;br /&gt;
=== Querverweise ===&lt;br /&gt;
; [http://raum.keep-cool.org/ RAUM Media Container]&lt;br /&gt;
: Für RoarAudio entwickelter Container, vor allem für Speex und CELT.&lt;br /&gt;
; [http://www.icecast.org/ Icecast] - Multimedia streaming server&lt;br /&gt;
: Software für Webradio und WebTV streaming.&lt;br /&gt;
; [http://www.xiph.org/ Xiph.Org Foundation]&lt;br /&gt;
: Organisation zur Entwicklung von freien Codecs.&lt;br /&gt;
; SIP&lt;br /&gt;
: Standard für VoIP - Internet-Telephonie.&lt;br /&gt;
&lt;br /&gt;
=== Vorführung ===&lt;br /&gt;
{{Vortrags Zeit|30}}&lt;br /&gt;
&lt;br /&gt;
* Allgemeiner Betrieb&lt;br /&gt;
** roard&lt;br /&gt;
** roarvorbis/roarcatplay?&lt;br /&gt;
** roarctl&lt;br /&gt;
** xmms&lt;br /&gt;
* Background Streams&lt;br /&gt;
** roarradio&lt;br /&gt;
* Kompatibilitäts Bibliotheken&lt;br /&gt;
** libroaresd:&lt;br /&gt;
*** &amp;lt;s&amp;gt;xmms&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;mplayer&amp;lt;/s&amp;gt;&lt;br /&gt;
*** Amarok&lt;br /&gt;
&lt;br /&gt;
== Fragen ==&lt;br /&gt;
* &#039;&#039;immer gerne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6799</id>
		<title>RoarAudio/Vortrag/Erster Vortrag</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6799"/>
		<updated>2009-02-06T09:42:21Z</updated>

		<summary type="html">&lt;p&gt;Che: /* Im Studio Betrieb */&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]] und die Realtime Audio mixing Problematik vor einem Unixpublikum mit keinen oder kaum 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;
== Der Autor ==&lt;br /&gt;
[[Benutzer:Ph3-der-loewe|Philipp &#039;&#039;ph3-der-loewe&#039;&#039; Schafft]], Software Entwickler und Projekt Urheber.&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
RoarAudio ist ein Sound-Server für POSIX konformen Betriebssysteme (GNU/Linux, *BSD, Mac OS X und andere) unter aktiver Entwicklung. Er bietet gegenüber anderen Sound-Servern zusätzliche Funktionen für den Betrieb in kleinen Radio und TV Studios, aber auch den Heimgebrauch. Dieser Vortrag soll einen Einblick in RoarAudio, seine Funktionalität und Funktionsweise sowie damit verbunden Problemstellungen auf einfachem Niveau bieten. Den Abschluss bildet eine Demonstration.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein Soundserver.&lt;br /&gt;
&lt;br /&gt;
==== Was ist ein Soundserver ====&lt;br /&gt;
Ein Soundserver ist eine Programm dass im Hintergrund Audio Daten mischt und das Ergebnis weiter leitet, meist an eine Soundcard.&lt;br /&gt;
&lt;br /&gt;
Soundserver werden benötigt wenn wenn das unterliegende Audio-Ausgabegerät nur einen einzigen Datenstrom zu einer Zeit verarbeiten kann (Single Stream Soundcards). Sie stellen eine Art virtuelle Soundcard dar zu der Programme wie Player ihre Daten schicken können um eine simultane Ausgabe mit zum Beispiel Notify-Sounds von Chat Clients oder ähnlichem zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Sie bieten meist weitere Funktionen wie das Mischen unter Berücksichtigung von verschiedenen Pegeln. Einige Soundserver ermöglichen auch die Benutzung von Netzwerken zur Übertragung von Audio Daten für die Wiedergabe auf einer anderen Maschine. Dies beides kann auch RoarAudio.&lt;br /&gt;
&lt;br /&gt;
=== Projekt Ziele ===&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
Das Projekt verfolgt im Prinzip das Ziel, eine leistungsfähige Mischsoftware für den Studio Betrieb zur Verfügung zu stellen, aber dennoch ein Produkt zu liefern das auch für den Heim-Anwender angemessen ist.&lt;br /&gt;
&lt;br /&gt;
==== für Heim-Anwender ====&lt;br /&gt;
Heim-Anwender Teilen sich in zwei Gruppen auf:&lt;br /&gt;
Die größere Menge interessiert es nicht wieso Musik aus den Lautsprechern kommt, Hauptsache sie tut es. Für diese Gruppe muss RoarAudio einfach &#039;&#039;out of the box&#039;&#039; funktionieren.&lt;br /&gt;
Die andere Gruppe sind Anwender die mehr machen wollen. Hier soll RoarAudio ein leistungsstarkes Backend sein das möglichst Ressourcen schonend alle gewünschten Funktionen anbietet.&lt;br /&gt;
&lt;br /&gt;
==== Im Studio Betrieb ====&lt;br /&gt;
Wie oben schon angedeutet ist RoarAudio aber im Studio-Einsatz wesentlich interessanter: in einem klassischen Studio steht meist ein großes analoges Mischpult. Dies ist eine wundervolle Sache solange man primär analoge Eingänge braucht: beispielsweise von einer Band. In heutigen Radio- und Fernsehstudios kommen aber die meisten Kanäle aus dem Rechner oder anderen digitalen Geräten wie CD Spielern.&lt;br /&gt;
&lt;br /&gt;
Ein analoges Mischen hat hier nun mehre Nachteile, die wichtigsten sind wohl:&lt;br /&gt;
* Analoges Rauschen&lt;br /&gt;
* Verzerrungen im Frequenzgang&lt;br /&gt;
* Klirren&lt;br /&gt;
* Quantisierungsrauchen&lt;br /&gt;
* Effekte durch asynchrone Abtastung&lt;br /&gt;
&lt;br /&gt;
Eine Alternative wäre in einigen Fällen sicherlich ein Digital-Mischpult. Diese sind aber meist sehr teuer.&lt;br /&gt;
&lt;br /&gt;
RoarAudio kommt hier als erst einmal reine Software-basierende Lösung. Natürlich ist es möglich über die Steuerschnittstellen auch externe Hardware anzuschließen. Hier gibt es auch Planungen, ein Hardware Frontend zu entwerfen das dann kostengünstig zu haben ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exkurs: Codecs und Container ===&lt;br /&gt;
Ein Codec ist eine Spezifikation (meist werden auch die Implementierungen Codec genannt) wie Rohdaten, im Falle von Audio meist PCM Daten, als Datenstrom oder -block repräsentiert werden. Hierzu zählt meist als primäres Kriterium die Kompression. Weitere Informationen wie Synchronisationsdaten können ebenfalls durch den Codec spezifiziert sein, werden aber meist im Container abgelegt.&lt;br /&gt;
&lt;br /&gt;
Ein Container ist im Gegensatz zu einem Codec eine Spezifikation wie Daten die mittels Codecs in eine Datei codiert wurden in oder einen Stream verpackt werden. Hierzu zählen Dinge wie globale File-Magic, Angabe des Codecs, Meta Daten, Angaben über rate/bps/channels und Ähnliches.&lt;br /&gt;
&lt;br /&gt;
==== Verschiedene Arten von Codecs ====&lt;br /&gt;
* Verlustfreie&lt;br /&gt;
* Verlustbehaftete&lt;br /&gt;
* Musik Codecs&lt;br /&gt;
* Sprach Codecs&lt;br /&gt;
* Niederlatenz Codecs&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was hebt RoarAudio hervor? ===&lt;br /&gt;
Hier Sollen einige der besonderen Fähigkeiten von RoarAudio erläutert werden.&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
RoarAudio zeichnet sich dadurch aus daß er zusätzlich zu PCM Rohdaten auch höher Codecs versteht. Dies hat mehre Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio als Background Stream ab zu spielen.&lt;br /&gt;
* Es ist dem Server möglich direkt Streaming-Server wie [[icecast]] zu bedienen. Es ist keine weitere &#039;&#039;lange pipe&#039;&#039; nötig um Webradio zu senden. Dies verringert die Störanfälligkeit erheblich und verringert die Latenz, da pipe-Puffer entfallen.&lt;br /&gt;
* Auch ist es nur mit stark komprimierenden Codecs möglich über die dem Heim-Anwender zur Verfügung stehenden Schmalband Anschlüsse Audio entweder von Client zu Server oder zwischen zwei Servern auszutauschen. Auch eine Kopplung über ISDN Kanäle ist so möglich.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk-Transparenz ====&lt;br /&gt;
RoarAudio ist Netzwerk transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer lokalen Instanz oder einer auf einem anderen Rechner.&lt;br /&gt;
&lt;br /&gt;
Zu diesem Zweck werden mehre Protokolle unterstützt: UNIX Domain Sockets für Lokale Verbindungen sowie TCP/IP und DECnet für Verbindungen mit entfernten Rechnern. Auch existiert Support für verschiedene Proxy Typen.&lt;br /&gt;
&lt;br /&gt;
==== Background Streams ====&lt;br /&gt;
Background Streams sind Streams die vom Server selbst bearbeitet werden und keinen Player benötigen um abgespielt zu werden. Dies kann zum Beispiel genutzt werden um Hintergrundmusik einzuspielen wie beispielsweise in einem Kaufhaus. Auch Webradio Streams werden hier unterstützt.&lt;br /&gt;
&lt;br /&gt;
==== Meta Daten ====&lt;br /&gt;
RoarAudio hat die Fähigkeit auf per Stream Basis Meta Daten ab zu legen. Die Mechanismen sind denen von Vorbis Comments nach empfunden und können prinzipiell mehr. Einiges davon ist allerdings noch nicht vollständig implementiert.&lt;br /&gt;
&lt;br /&gt;
Es besteht neben dem Manuellen Setzen die Möglichkeit das ein Player sie setzt und das &#039;&#039;roard&#039;&#039; sie selbstständig setzt. Im letzteren Falle werden diese von Verschiedenen anderen Streams zusammen gesetzt. Dies kann nützlich sein um automatisch beim Streaming die Meta daten von einem Player zu übernehmen um die Titel Informationen weiter zu führen. Manuelles setzen Mag als Beispiel interessant sein um den Sendernamen zu setzen.&lt;br /&gt;
&lt;br /&gt;
==== Virtual IO ====&lt;br /&gt;
&#039;&#039;(gestrichen)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Kompatibilitäts Bibliotheken ====&lt;br /&gt;
&#039;&#039;Viele Programme haben keine Unterstützung für RoarAudio, was nun?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um dieses Problem zu lösen gibt es diverse Kompatibilitäts-Bibliotheken.&lt;br /&gt;
Diese stellen Bibliotheken dar welche binär-kompatibel andere Audio Systeme emulieren.&lt;br /&gt;
Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und leiten dann alle Anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechenden Bibliothek.&lt;br /&gt;
&lt;br /&gt;
Die mit Abstand wohl wichtigste ist &#039;&#039;&#039;libroaresd&#039;&#039;&#039; welche das [[EsounD]] Interface emuliert. das EsounD Interface wird von den allermeisten Applikationen unterstützt da es das wohl älteste Soundserver Interface ist. Es existiert seit 1998.&lt;br /&gt;
&lt;br /&gt;
Weitere Kompatibilitäts Bibliotheken gibt es für das YIFF Sound System, KDEs aRtsc und PulseAudio. Zusammen mit den existierenden Plugins deckt dies nahezu den vollständigen Player Markt fuer GNU/Linux und BSD ab.&lt;br /&gt;
&lt;br /&gt;
===== Welche Schnittstelle für was? =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Interface&lt;br /&gt;
 ! Beispiel Applikationen&lt;br /&gt;
 |-&lt;br /&gt;
 | libroar&lt;br /&gt;
 | roaraudio-tools, XMMS, mplayer, (xine)&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | GNOME, KDE, XMMS, xine, Amarok, wine,... (177 weitere unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | libao&lt;br /&gt;
 | vorbis-tools, FLAC tools, mpd, mpg321, gnomoradio, somaplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | aRts(c) (KDE)&lt;br /&gt;
 | Player mit aRts support: mplayer, xine; kwave, kaudiocreator,...&lt;br /&gt;
 |-&lt;br /&gt;
 | PulseAudio&lt;br /&gt;
 | Ein paar Programme, die meisten über Plugins. (nicht viel unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | YIFF&lt;br /&gt;
 | y-tools&lt;br /&gt;
 |-&lt;br /&gt;
 | gstreamer&lt;br /&gt;
 | GNOME, Alle GNOME Player. Dieverse andere.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Konzepte und Architektur ===&lt;br /&gt;
RoarAudio ist zwar in C geschrieben aber größtenteils Objekt-orientiert. Er umfasst im Moment etwa 28 tausend Zeilen C. (EsounD kommt auf rund 15 tausend, PulseAudio 74 tausend und aRts auf 130 tausend).&lt;br /&gt;
&lt;br /&gt;
==== Clients und Streams ====&lt;br /&gt;
&lt;br /&gt;
Vor allem wichtig und nach Außen hin sichtbar sind die Client und Stream Objekte.&lt;br /&gt;
Ein Client Objekt verkörpert einen (Netzwerk) Client, zum Beispiel einen Player oder ein Steuerprogramm wie roarctl. Es kann auch Stream Objekte assoziiert haben (Beispielsweise im Falle von Abspielen von Musik).&lt;br /&gt;
&lt;br /&gt;
Ein Stream Objekt stellt einen eigentlichen Audio Datenstrom da. Dieses Objekt beinhaltet diverse Informationen über den Datenstrom: Informationen wie der roard ihn auslesen kann, Sample Rate/Bits/Channels, Meta Daten und vieles mehr. Ein Stream gehört immer zu einem Client. Wobei der Client auch der roard selbst sein. Er lässt sich durch &#039;&#039;attachen&#039;&#039; wechseln. Dies kommt zum Einsatz um Hintergrund Streams zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei jedem Audio Datenstrom der in den roard hinein oder heraus fließt handelt es sich um einen Stream. Dies schließt Datenströme zu Geräten wie Soundcards mit ein. Hier durch ist eine maximale Flexibilität gegeben.&lt;br /&gt;
&lt;br /&gt;
===== Stream Typen =====&lt;br /&gt;
Es gibt diverse Verschiedene Stream typen. Die folgende Tabelle Beschreibt sie kurz:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Typ&lt;br /&gt;
 ! Richtung&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Play&lt;br /&gt;
 | zu Server&lt;br /&gt;
 | Standard Typ: eingehende Audio Daten.&lt;br /&gt;
 |-&lt;br /&gt;
 | Monitor&lt;br /&gt;
 | von Server&lt;br /&gt;
 | Hier werden die aktuellen gemischten Audio Daten vom Server abgefragt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Filter&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Dieser Stream dient zum zwischenschalten von Filtern im Mixer&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Dieser Stream geht an einen Driver Richtung Soundcard oder ähnlichem&lt;br /&gt;
 |-&lt;br /&gt;
 | Mixing&lt;br /&gt;
 | keine&lt;br /&gt;
 | Interne Audio Puffer genutzt zum Mischen der Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | Bidir&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Play und Monitor in einem.&lt;br /&gt;
 |-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 | Record&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Flag Abhänig&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Internal&lt;br /&gt;
 | keine&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Stream Flags =====&lt;br /&gt;
Ein Stream kann desweiteren Flags haben die sein Verhalten genauer bestimmen. Die Flags sind hier zusammen gefasst:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary&lt;br /&gt;
 | Bei Ende des Streams beendet sich roard selbst.&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | Es wird Ein Output Driver für diesen Stream verwendet.&lt;br /&gt;
 |-&lt;br /&gt;
 | Source&lt;br /&gt;
 | Bei diesem Stream handelt es sich um eine Source.&lt;br /&gt;
 |-&lt;br /&gt;
 | Sync&lt;br /&gt;
 | Der Stream ist Synchron (mit Hardware bzw. seinem Ziel)&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Ausgehende Streams mit diesem Flag beziehen ihre Meta Daten automatisch von eingehenden Streams mit diesem Flag.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Driver ====&lt;br /&gt;
Ein Driver ist ein Objekt das eine Schnittstelle zur Verfügung stellt um externe Ressourcen anzusprechen, die sich nicht der UNIX IO Philosophie entsprechend verhalten (Erweiterte Handshake zum Beispiel). Dies können Soundcards oder auch Streaming Server sein. Hierzu zählen als Beispiel der OSS (Open Sound System) und der libshout (Icecast) Treiber.&lt;br /&gt;
&lt;br /&gt;
==== Sources ====&lt;br /&gt;
Eine Source ist an sich ein normaler Stream. Der Unterschied besteht darin das roard selbst den Stream beim Starten initialisiert. Neben Test Szenarien ist dies vor allem hilfreich um sich die Audio Ausgabe eines anderen Rechners lokal zu spiegeln.&lt;br /&gt;
&lt;br /&gt;
==== Codecfilter ====&lt;br /&gt;
Bei den Codecfiltern handelt es sich um ein Abstraktions Layer welches roard die Möglichkeit gibt höhere Codecs zu sprechen wie etwa Ogg Vorbis. Einige Codecfilter können nur Lesen andere auch Schreiben. Wird ein Stream mit einem unterstützen Codec aufgebaut so wird automatisch eine Instanz eines passenden Codecfilters erzeugt. Sie verhalten sich somit weitgehend transparent. Viele höheren Codec sind allerdings nicht in der Lage alle Stream Typen zu bedienen. Der Streamtype Filter wird am wenigsten unterstützt da er ein exaktes Timing und Blocking Verhalten benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Filter ====&lt;br /&gt;
* filter&lt;br /&gt;
* ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme des Realtime Audio Mischens ===&lt;br /&gt;
Beim Mischen in Realtime kommen zu den Problemen die beim normalen Mischen von Audio auftreten noch weitere hinzu.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Probleme sind:&lt;br /&gt;
&lt;br /&gt;
* Resampling - Wenn nicht alle Streams dieselbe Abtastfrequens haben müssen die betroffenen Streams auf die Abtastrate des Ausgangs umgerechnet werden. Hierzu gibt es diverse Verfahren. Man kann sich das etwa wie das Skalieren eines Bildes vorstellen: Es gibt Filter die schnell sind und welche die gut sind. Muss man in Realtime resampeln so muss man vor allem schnell sein, will aber auch noch möglichst gut sein. Viele Soundserver behalten schlichtweg die Pegel entsprechend der neuen Abtaste Rate länger oder kürzer bei (s.g. zoh - Zero Order Hold). Dies erzeugt Rechteck Signale welche wiederum diverse Oberwellen erzeugen. RoarAudio setzt hier Polynomapproximation dritten Grades ein. Dies reduziert die Oberwellen schon deutlich dank leichter Tiefpass Eigenschaft.&lt;br /&gt;
* Da nicht für den gesamten Titel der Amplituden-Gang bestimmt werden kann ist es möglich daß es zu sogenanntem Clipping kommt. Clipping bezeichnet das Problem, daß die Summe der Amplituden aller Eingangssignale größer ist als der zulässige Wertebereich. In diesem Falle wird das Ausgangssignal geclippt, sprich es wird auf den maximalen sich im zulässigen Wertebereich liegenden Wert herunter gesetzt. Dies lässt sich nicht vollkommen vermeiden aber durch geschickte Wahl des Mischverfahrens reduzieren. Es empfiehlt sich dennoch einen ReplayGain einzubeziehen. Dieser kann das Clipping zwar auch nicht komplett verhindern aber der Soundserver kann besser abschätzen wie die Gefahr für Clipping ist und rechtzeitig reagieren.&lt;br /&gt;
* Vor Allem beim Pegel umrechnen kommt es selbstverständlich zu Rechenungenauigkeiten. Um diese zu minimieren skaliert RoarAudio die Signale auf bis zu ihrer doppelten Größe auf um Rechenungenauigkeiten zu vermeiden. bei einem 16 Bit Eingangssignal wird als Beispiel auf 32 Bit skaliert was zusätzliche 96dB Rauschabstand während der Umrechnung liefert.&lt;br /&gt;
* &amp;lt;s&amp;gt;Werden Signale mit verschiedenen Pegeln gemischt so kann es sinnvoll sein mit der Breite der Ausgangs-Samples hoch zu gehen. Als Beispiel: wenn zwei Signale mit je 16 Bit mit den Pegeln 1 und 1/4 gemischt werden reduziert der Rauschabstand des zweiten Signals um 12dB. Man sollte überlegen auf 24 Bit am Ausgang zu wechseln. Die Allgemeine Regel lautet: für den Faktor 2 oder 6dB die ein Signal abgeschwächt wird braucht man am Ausgang ein Bit mehr. Wenn mal also eine Hintergrund-Musik mit -48dB auf Sprache mischt (durchaus realistisch) muss man von 16 Bit am Ausgang auf 24 Bit hoch gehen um keinen Qualitäts-Verlust der Musik zu erhalten.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Einige Formate sind nicht Frame basierend. Dies sind vor allem MIDI Formate Hier kann es passieren das die Synchronisation zwischen diesen Streams und den anderen sich an Frame-Grenzen treffe. Dies kann zu unschönen Nebeneffekten führen. Manche Codecs sind auch nur in der Lage auf gewisse Zeitraster Ende-Marken zu setzen was in unsauberen Enden mit Artefakten enden kann. Im Realtime Bereich lässt sich dies nicht korrigieren und solche Codecs sollten vermieden werden.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem: Lokale Synchronität ====&lt;br /&gt;
Die wichtigsten Störfaktoren sind:&lt;br /&gt;
&lt;br /&gt;
* Wie jede Hardware besitzen Soundkarten eine Verzögerung. Das heißt daß sie eine gewisse Zeit brauchen zwischen Erhalt von Daten und deren Ausgabe. Diese Zeit liegt im Bereich von wenigen Millisekunden (z.B. Studio Karten) und kann bis in den Bereich von mehren hundert Millisekunden gehen (z.B. 2.5 Euro USB Karten von $SUPERMARKT), je nach Karte. Die meisten Karten bieten aber eine Möglichkeit ab zu fragen wo sie gerade in ihrem Puffer sind. Wie dies genau funktioniert ist von Karte zu Karte unterschiedlich. Der Treiber der Karte ist dafür zuständig diese Funktionen an höhere Interfaces (OSS, alsa, sndio,...) weiterzureichen und den Applikationen zur Verfügung zu stellen.&lt;br /&gt;
* Neben dem Delay in der Hardware erzeugt selbstverständlich auch der Kernel und die Treiber eine weiter Verzögerung. Dies passiert aus vielen Gründen: Der Programmcode muss natürlich erst einmal ausgeführt werden. Auch werden Interupts nicht um bedingt sofort bearbeitet (zum Beispiel weil gerade ein anderer, höherwertiger bearbeitet wird).&lt;br /&gt;
* Die nächste Schicht, die Sound APIs, erzeugen auf ähnliche Weise weitere Delays. Hier kommt dazu das viele mit relativ großen Puffern arbeiten (Beispielsweise EsounD mit 0.28sec - im Vergleich zu roard mit Standard Puffer von 0.01sec). Die Puffergröße ist in dem meisten Fällen die kleinste Einheit in der Synchronität gewährleistet werden kann.&lt;br /&gt;
* Da die meisten Systeme (alle auf denen RoarAudio läuft) Multitasking betreiben stellt sich ein weiteres Problem: Der entsprechende Prozess muss eine Zeitscheibe bekommen bevor er reagieren kann. Läuft ein anderer Prozess gerade so muss er potentiell warten. Auf den meisten POSIX kompatiblem Systemen basiert das Multitasking zwar auf Ereignissen, sprich ein Prozess läuft so lange bis ein anderer ein Ereignis zu bearbeiten hat (keine feste Zeitscheiben-Länge), was dazu führt das dieses Problem ist nicht all zu groß ist. Aber es kann natürlich gerade ein anderer Prozess mit höherer Priorität laufen der ein anderes Ereignis bearbeitet und somit nicht vom Kernel unterbrochen wird.&lt;br /&gt;
* Unsynchrones clocking&lt;br /&gt;
&lt;br /&gt;
==== Problem: Netzwerk Synchronität ====&lt;br /&gt;
* lag&lt;br /&gt;
* jitter&lt;br /&gt;
* Netzwerk Implementierungen&lt;br /&gt;
&lt;br /&gt;
==== Lösungsansätze ====&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ignorieren&#039;&#039;&#039; - Diverse Probleme lassen sich schlichtweg einfach Ignorieren. Dies sind vor allem Probleme die sich statistisch über die zeit Aufheben. Ist diese Strategie möglich so sollte sie verfolgt werden im sinne von KISS (Keep It Small and Simple). Sie kann natürlich auch extrem daneben liegen und man sollte sich um eine echte Lösung bemühen.&lt;br /&gt;
* &#039;&#039;&#039;TOS&#039;&#039;&#039; - Setzen des TOS (Type Of Service) Feldes bei IP mag helfen. Viele Backbone provider ignoriren dieses Feld zwar aber im LAN kann es durchaus helfen. Gerade bei anderer starker, lang packetiger Kommunikation zwischen dem eignen und dem Ziehl Rechner (file transfers).&lt;br /&gt;
* &#039;&#039;&#039;QoS&#039;&#039;&#039; - Benutzung von QoS (Quality of Service) kann im Backbone Bereich da die Latenz erheblich senken da man das Puffer verhalten der Geräte beeinflusst. Der Nachteil ist das hierzu Unterstützung da sein muss. mit IPv6 scheint sich hier aber einiges zu bessern.&lt;br /&gt;
* &#039;&#039;&#039;Geschickte Auswahl von Algorithmen und Protokollen&#039;&#039;&#039; - Die Auswahl der Algorithmen und Protokolle ist entscheidend. Für die meisten Aufgaben gibt es mehre mögliche Lösungen (&#039;&#039;Viele Wege führen nach Rom&#039;&#039;). Aber nicht alle sind gleich gut geeignet. Deswegen sollte hier eine sinnvolle Auswahl getroffen werden.&lt;br /&gt;
* &#039;&#039;&#039;Künstlicher Delay&#039;&#039;&#039; - Es besteht die Möglichkeit einzelne Streams oder Ereignisse künstlich leicht heraus zu zögern. Hierdurch kann ein Abgleich der Latenzen gemacht werden was dazu dient Syncronität her zu stellen. Normalerweise werden alle Streams so lange verzögert bis sie eine &#039;&#039;künstliche&#039;&#039; Latenzs gleich dem Stream haben der die höchste Latenz aufweist.&lt;br /&gt;
* &#039;&#039;&#039;Resampling&#039;&#039;&#039; - Sind mehre Clocks beteiligt oder kommen die Daten etwas zu schnell oder zu langsam kann man leichtes Resampling betreiben. Das heißt das das Signal künstlich gestaucht oder in die Länge gezogen wird. Geschiet dies nicht ruckartig kann das Gehör den unterschied nicht wahrnehmen solange dieses Resamping nur in kleinen Bereichen passiert (je nach Literatur 2% bis 5%, werte die größer sind als die Ungenauigkeit von Quarzen und somit gegeigent sind um Clock driffting aus zu gleichen.).&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
...&lt;br /&gt;
==== Win32 Port ====&lt;br /&gt;
Ein Win32 Port existiert zum jetzigen Zeitpunkt nicht. Dies liegt an mehren Faktoren: Zum einen ist Win32, was den nahe-realtime Betrieb angeht, nicht zuverlässig genug. Zum anderen ist bei Win32 das Networking kein Teil des Kernels wie auf UNIX und POSIX Systemen: Es ist viel mehr teilweise im Userland. Dies hat zur Folge das zu jedem Zeitpunkt eine Applikation wissen muss von welchem Type ein Filehandle ist, da man Basis Funktionen wie read(), write(), close() nicht auf alle Filehandles anwenden kann. Vielmehr hat jeder Type von Filehandles seinen eigenen Satz Funtionen. RoarAudio verfolgt die UNIX Philosophie: &#039;&#039;Alles ist eine Datei&#039;&#039;. Große Patches wären nötig.&lt;br /&gt;
&lt;br /&gt;
Ein Weiteres ist das ein solcher Port viel Zeit in Anspruch nimmt und weder das Projekt noch die Freie Software Bewegung voranbringt.&lt;br /&gt;
&lt;br /&gt;
Im Moment existieren kleinere Patches die vielleicht irgendwann mal Basis Funktionalität mit sich bringen könnten. An ein roard für Win32 ist in absehbarer Zeit nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
Allerdings laufen Teile von RoarAudio in Cygwin mehr oder minder gut. Viele Probleme treten hier auf aber es ist prinzipiell möglich es unter Cygwin zum Laufen zu bringen (außerhalb des nahe-realtime Betriebs).&lt;br /&gt;
&lt;br /&gt;
Es besteht aber die Möglichkeit einige Win32 Applikationen mittels pseudo Web Radio Streams anzubinden.&lt;br /&gt;
&lt;br /&gt;
==== MP3 ====&lt;br /&gt;
* Kein Streaming&lt;br /&gt;
* Keine Meta Daten&lt;br /&gt;
* Schlechte Qualität&lt;br /&gt;
* Patente&lt;br /&gt;
&lt;br /&gt;
=== Querverweise ===&lt;br /&gt;
; [http://raum.keep-cool.org/ RAUM Media Container]&lt;br /&gt;
: Für RoarAudio entwickelter Container, vor allem für Speex und CELT.&lt;br /&gt;
; [http://www.icecast.org/ Icecast] - Multimedia streaming server&lt;br /&gt;
: Software für Webradio und WebTV streaming.&lt;br /&gt;
; [http://www.xiph.org/ Xiph.Org Foundation]&lt;br /&gt;
: Organisation zur Entwicklung von freien Codecs.&lt;br /&gt;
; SIP&lt;br /&gt;
: Standard für VoIP - Internet-Telephonie.&lt;br /&gt;
&lt;br /&gt;
=== Vorführung ===&lt;br /&gt;
{{Vortrags Zeit|30}}&lt;br /&gt;
&lt;br /&gt;
* Allgemeiner Betrieb&lt;br /&gt;
** roard&lt;br /&gt;
** roarvorbis/roarcatplay?&lt;br /&gt;
** roarctl&lt;br /&gt;
** xmms&lt;br /&gt;
* Background Streams&lt;br /&gt;
** roarradio&lt;br /&gt;
* Kompatibilitäts Bibliotheken&lt;br /&gt;
** libroaresd:&lt;br /&gt;
*** &amp;lt;s&amp;gt;xmms&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;mplayer&amp;lt;/s&amp;gt;&lt;br /&gt;
*** Amarok&lt;br /&gt;
&lt;br /&gt;
== Fragen ==&lt;br /&gt;
* &#039;&#039;immer gerne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6798</id>
		<title>RoarAudio/Vortrag/Erster Vortrag</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6798"/>
		<updated>2009-02-06T09:40:35Z</updated>

		<summary type="html">&lt;p&gt;Che: /* Was ist ein Soundserver */&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]] und die Realtime Audio mixing Problematik vor einem Unixpublikum mit keinen oder kaum 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;
== Der Autor ==&lt;br /&gt;
[[Benutzer:Ph3-der-loewe|Philipp &#039;&#039;ph3-der-loewe&#039;&#039; Schafft]], Software Entwickler und Projekt Urheber.&lt;br /&gt;
&lt;br /&gt;
== Abstrakt ==&lt;br /&gt;
RoarAudio ist ein Sound-Server für POSIX konformen Betriebssysteme (GNU/Linux, *BSD, Mac OS X und andere) unter aktiver Entwicklung. Er bietet gegenüber anderen Sound-Servern zusätzliche Funktionen für den Betrieb in kleinen Radio und TV Studios, aber auch den Heimgebrauch. Dieser Vortrag soll einen Einblick in RoarAudio, seine Funktionalität und Funktionsweise sowie damit verbunden Problemstellungen auf einfachem Niveau bieten. Den Abschluss bildet eine Demonstration.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein Soundserver.&lt;br /&gt;
&lt;br /&gt;
==== Was ist ein Soundserver ====&lt;br /&gt;
Ein Soundserver ist eine Programm dass im Hintergrund Audio Daten mischt und das Ergebnis weiter leitet, meist an eine Soundcard.&lt;br /&gt;
&lt;br /&gt;
Soundserver werden benötigt wenn wenn das unterliegende Audio-Ausgabegerät nur einen einzigen Datenstrom zu einer Zeit verarbeiten kann (Single Stream Soundcards). Sie stellen eine Art virtuelle Soundcard dar zu der Programme wie Player ihre Daten schicken können um eine simultane Ausgabe mit zum Beispiel Notify-Sounds von Chat Clients oder ähnlichem zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Sie bieten meist weitere Funktionen wie das Mischen unter Berücksichtigung von verschiedenen Pegeln. Einige Soundserver ermöglichen auch die Benutzung von Netzwerken zur Übertragung von Audio Daten für die Wiedergabe auf einer anderen Maschine. Dies beides kann auch RoarAudio.&lt;br /&gt;
&lt;br /&gt;
=== Projekt Ziele ===&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
Das Projekt verfolgt im Prinzip das Ziel, eine leistungsfähige Mischsoftware für den Studio Betrieb zur Verfügung zu stellen, aber dennoch ein Produkt zu liefern das auch für den Heim-Anwender angemessen ist.&lt;br /&gt;
&lt;br /&gt;
==== für Heim-Anwender ====&lt;br /&gt;
Heim-Anwender Teilen sich in zwei Gruppen auf:&lt;br /&gt;
Die größere Menge interessiert es nicht wieso Musik aus den Lautsprechern kommt, Hauptsache sie tut es. Für diese Gruppe muss RoarAudio einfach &#039;&#039;out of the box&#039;&#039; funktionieren.&lt;br /&gt;
Die andere Gruppe sind Anwender die mehr machen wollen. Hier soll RoarAudio ein leistungsstarkes Backend sein das möglichst Ressourcen schonend alle gewünschten Funktionen anbietet.&lt;br /&gt;
&lt;br /&gt;
==== Im Studio Betrieb ====&lt;br /&gt;
Wie oben schon angedeutet ist RoarAudio aber im Studio Einsatz wesentlich interessanter: in einem klassischen Studio steht meist ein großes analoges Mischpult. Dies ist eine wundervolle Sache solange man primär analoge Eingänge braucht: beispielsweise von einer Band. In heutigen Radio- und Fernsehstudios kommen aber die meisten Kanäle aus dem Rechner oder anderen digitalen Geräten wie CD Spielern.&lt;br /&gt;
&lt;br /&gt;
Ein analoges Mischen hat hier nun mehre Nachteile, die wichtigsten sind wohl:&lt;br /&gt;
* Analoges Rauschen&lt;br /&gt;
* Verzerrungen im Frequenzgang&lt;br /&gt;
* Klirren&lt;br /&gt;
* Quantisierungsrauchen&lt;br /&gt;
* Effekte durch asynchrone Abtastung&lt;br /&gt;
&lt;br /&gt;
Eine Alternative wäre in einigen Fällen sicherlich ein Digital-Mischpult. Diese sind aber meist sehr teuer.&lt;br /&gt;
&lt;br /&gt;
RoarAudio kommt hier als erst einmal reine Software-basierende Lösung. Natürlich ist es möglich über die Steuerschnittstellen auch externe Hardware anzuschließen. Hier gibt es auch Planungen, ein Hardware Frontend zu entwerfen das dann kostengünstig zu haben ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exkurs: Codecs und Container ===&lt;br /&gt;
Ein Codec ist eine Spezifikation (meist werden auch die Implementierungen Codec genannt) wie Rohdaten, im Falle von Audio meist PCM Daten, als Datenstrom oder -block repräsentiert werden. Hierzu zählt meist als primäres Kriterium die Kompression. Weitere Informationen wie Synchronisationsdaten können ebenfalls durch den Codec spezifiziert sein, werden aber meist im Container abgelegt.&lt;br /&gt;
&lt;br /&gt;
Ein Container ist im Gegensatz zu einem Codec eine Spezifikation wie Daten die mittels Codecs in eine Datei codiert wurden in oder einen Stream verpackt werden. Hierzu zählen Dinge wie globale File-Magic, Angabe des Codecs, Meta Daten, Angaben über rate/bps/channels und Ähnliches.&lt;br /&gt;
&lt;br /&gt;
==== Verschiedene Arten von Codecs ====&lt;br /&gt;
* Verlustfreie&lt;br /&gt;
* Verlustbehaftete&lt;br /&gt;
* Musik Codecs&lt;br /&gt;
* Sprach Codecs&lt;br /&gt;
* Niederlatenz Codecs&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was hebt RoarAudio hervor? ===&lt;br /&gt;
Hier Sollen einige der besonderen Fähigkeiten von RoarAudio erläutert werden.&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
RoarAudio zeichnet sich dadurch aus daß er zusätzlich zu PCM Rohdaten auch höher Codecs versteht. Dies hat mehre Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio als Background Stream ab zu spielen.&lt;br /&gt;
* Es ist dem Server möglich direkt Streaming-Server wie [[icecast]] zu bedienen. Es ist keine weitere &#039;&#039;lange pipe&#039;&#039; nötig um Webradio zu senden. Dies verringert die Störanfälligkeit erheblich und verringert die Latenz, da pipe-Puffer entfallen.&lt;br /&gt;
* Auch ist es nur mit stark komprimierenden Codecs möglich über die dem Heim-Anwender zur Verfügung stehenden Schmalband Anschlüsse Audio entweder von Client zu Server oder zwischen zwei Servern auszutauschen. Auch eine Kopplung über ISDN Kanäle ist so möglich.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk-Transparenz ====&lt;br /&gt;
RoarAudio ist Netzwerk transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer lokalen Instanz oder einer auf einem anderen Rechner.&lt;br /&gt;
&lt;br /&gt;
Zu diesem Zweck werden mehre Protokolle unterstützt: UNIX Domain Sockets für Lokale Verbindungen sowie TCP/IP und DECnet für Verbindungen mit entfernten Rechnern. Auch existiert Support für verschiedene Proxy Typen.&lt;br /&gt;
&lt;br /&gt;
==== Background Streams ====&lt;br /&gt;
Background Streams sind Streams die vom Server selbst bearbeitet werden und keinen Player benötigen um abgespielt zu werden. Dies kann zum Beispiel genutzt werden um Hintergrundmusik einzuspielen wie beispielsweise in einem Kaufhaus. Auch Webradio Streams werden hier unterstützt.&lt;br /&gt;
&lt;br /&gt;
==== Meta Daten ====&lt;br /&gt;
RoarAudio hat die Fähigkeit auf per Stream Basis Meta Daten ab zu legen. Die Mechanismen sind denen von Vorbis Comments nach empfunden und können prinzipiell mehr. Einiges davon ist allerdings noch nicht vollständig implementiert.&lt;br /&gt;
&lt;br /&gt;
Es besteht neben dem Manuellen Setzen die Möglichkeit das ein Player sie setzt und das &#039;&#039;roard&#039;&#039; sie selbstständig setzt. Im letzteren Falle werden diese von Verschiedenen anderen Streams zusammen gesetzt. Dies kann nützlich sein um automatisch beim Streaming die Meta daten von einem Player zu übernehmen um die Titel Informationen weiter zu führen. Manuelles setzen Mag als Beispiel interessant sein um den Sendernamen zu setzen.&lt;br /&gt;
&lt;br /&gt;
==== Virtual IO ====&lt;br /&gt;
&#039;&#039;(gestrichen)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Kompatibilitäts Bibliotheken ====&lt;br /&gt;
&#039;&#039;Viele Programme haben keine Unterstützung für RoarAudio, was nun?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um dieses Problem zu lösen gibt es diverse Kompatibilitäts-Bibliotheken.&lt;br /&gt;
Diese stellen Bibliotheken dar welche binär-kompatibel andere Audio Systeme emulieren.&lt;br /&gt;
Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und leiten dann alle Anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechenden Bibliothek.&lt;br /&gt;
&lt;br /&gt;
Die mit Abstand wohl wichtigste ist &#039;&#039;&#039;libroaresd&#039;&#039;&#039; welche das [[EsounD]] Interface emuliert. das EsounD Interface wird von den allermeisten Applikationen unterstützt da es das wohl älteste Soundserver Interface ist. Es existiert seit 1998.&lt;br /&gt;
&lt;br /&gt;
Weitere Kompatibilitäts Bibliotheken gibt es für das YIFF Sound System, KDEs aRtsc und PulseAudio. Zusammen mit den existierenden Plugins deckt dies nahezu den vollständigen Player Markt fuer GNU/Linux und BSD ab.&lt;br /&gt;
&lt;br /&gt;
===== Welche Schnittstelle für was? =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Interface&lt;br /&gt;
 ! Beispiel Applikationen&lt;br /&gt;
 |-&lt;br /&gt;
 | libroar&lt;br /&gt;
 | roaraudio-tools, XMMS, mplayer, (xine)&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | GNOME, KDE, XMMS, xine, Amarok, wine,... (177 weitere unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | libao&lt;br /&gt;
 | vorbis-tools, FLAC tools, mpd, mpg321, gnomoradio, somaplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | aRts(c) (KDE)&lt;br /&gt;
 | Player mit aRts support: mplayer, xine; kwave, kaudiocreator,...&lt;br /&gt;
 |-&lt;br /&gt;
 | PulseAudio&lt;br /&gt;
 | Ein paar Programme, die meisten über Plugins. (nicht viel unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | YIFF&lt;br /&gt;
 | y-tools&lt;br /&gt;
 |-&lt;br /&gt;
 | gstreamer&lt;br /&gt;
 | GNOME, Alle GNOME Player. Dieverse andere.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Konzepte und Architektur ===&lt;br /&gt;
RoarAudio ist zwar in C geschrieben aber größtenteils Objekt-orientiert. Er umfasst im Moment etwa 28 tausend Zeilen C. (EsounD kommt auf rund 15 tausend, PulseAudio 74 tausend und aRts auf 130 tausend).&lt;br /&gt;
&lt;br /&gt;
==== Clients und Streams ====&lt;br /&gt;
&lt;br /&gt;
Vor allem wichtig und nach Außen hin sichtbar sind die Client und Stream Objekte.&lt;br /&gt;
Ein Client Objekt verkörpert einen (Netzwerk) Client, zum Beispiel einen Player oder ein Steuerprogramm wie roarctl. Es kann auch Stream Objekte assoziiert haben (Beispielsweise im Falle von Abspielen von Musik).&lt;br /&gt;
&lt;br /&gt;
Ein Stream Objekt stellt einen eigentlichen Audio Datenstrom da. Dieses Objekt beinhaltet diverse Informationen über den Datenstrom: Informationen wie der roard ihn auslesen kann, Sample Rate/Bits/Channels, Meta Daten und vieles mehr. Ein Stream gehört immer zu einem Client. Wobei der Client auch der roard selbst sein. Er lässt sich durch &#039;&#039;attachen&#039;&#039; wechseln. Dies kommt zum Einsatz um Hintergrund Streams zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei jedem Audio Datenstrom der in den roard hinein oder heraus fließt handelt es sich um einen Stream. Dies schließt Datenströme zu Geräten wie Soundcards mit ein. Hier durch ist eine maximale Flexibilität gegeben.&lt;br /&gt;
&lt;br /&gt;
===== Stream Typen =====&lt;br /&gt;
Es gibt diverse Verschiedene Stream typen. Die folgende Tabelle Beschreibt sie kurz:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Typ&lt;br /&gt;
 ! Richtung&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Play&lt;br /&gt;
 | zu Server&lt;br /&gt;
 | Standard Typ: eingehende Audio Daten.&lt;br /&gt;
 |-&lt;br /&gt;
 | Monitor&lt;br /&gt;
 | von Server&lt;br /&gt;
 | Hier werden die aktuellen gemischten Audio Daten vom Server abgefragt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Filter&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Dieser Stream dient zum zwischenschalten von Filtern im Mixer&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Dieser Stream geht an einen Driver Richtung Soundcard oder ähnlichem&lt;br /&gt;
 |-&lt;br /&gt;
 | Mixing&lt;br /&gt;
 | keine&lt;br /&gt;
 | Interne Audio Puffer genutzt zum Mischen der Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | Bidir&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Play und Monitor in einem.&lt;br /&gt;
 |-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 | Record&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Flag Abhänig&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Internal&lt;br /&gt;
 | keine&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Stream Flags =====&lt;br /&gt;
Ein Stream kann desweiteren Flags haben die sein Verhalten genauer bestimmen. Die Flags sind hier zusammen gefasst:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary&lt;br /&gt;
 | Bei Ende des Streams beendet sich roard selbst.&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | Es wird Ein Output Driver für diesen Stream verwendet.&lt;br /&gt;
 |-&lt;br /&gt;
 | Source&lt;br /&gt;
 | Bei diesem Stream handelt es sich um eine Source.&lt;br /&gt;
 |-&lt;br /&gt;
 | Sync&lt;br /&gt;
 | Der Stream ist Synchron (mit Hardware bzw. seinem Ziel)&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Ausgehende Streams mit diesem Flag beziehen ihre Meta Daten automatisch von eingehenden Streams mit diesem Flag.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Driver ====&lt;br /&gt;
Ein Driver ist ein Objekt das eine Schnittstelle zur Verfügung stellt um externe Ressourcen anzusprechen, die sich nicht der UNIX IO Philosophie entsprechend verhalten (Erweiterte Handshake zum Beispiel). Dies können Soundcards oder auch Streaming Server sein. Hierzu zählen als Beispiel der OSS (Open Sound System) und der libshout (Icecast) Treiber.&lt;br /&gt;
&lt;br /&gt;
==== Sources ====&lt;br /&gt;
Eine Source ist an sich ein normaler Stream. Der Unterschied besteht darin das roard selbst den Stream beim Starten initialisiert. Neben Test Szenarien ist dies vor allem hilfreich um sich die Audio Ausgabe eines anderen Rechners lokal zu spiegeln.&lt;br /&gt;
&lt;br /&gt;
==== Codecfilter ====&lt;br /&gt;
Bei den Codecfiltern handelt es sich um ein Abstraktions Layer welches roard die Möglichkeit gibt höhere Codecs zu sprechen wie etwa Ogg Vorbis. Einige Codecfilter können nur Lesen andere auch Schreiben. Wird ein Stream mit einem unterstützen Codec aufgebaut so wird automatisch eine Instanz eines passenden Codecfilters erzeugt. Sie verhalten sich somit weitgehend transparent. Viele höheren Codec sind allerdings nicht in der Lage alle Stream Typen zu bedienen. Der Streamtype Filter wird am wenigsten unterstützt da er ein exaktes Timing und Blocking Verhalten benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Filter ====&lt;br /&gt;
* filter&lt;br /&gt;
* ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme des Realtime Audio Mischens ===&lt;br /&gt;
Beim Mischen in Realtime kommen zu den Problemen die beim normalen Mischen von Audio auftreten noch weitere hinzu.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Probleme sind:&lt;br /&gt;
&lt;br /&gt;
* Resampling - Wenn nicht alle Streams dieselbe Abtastfrequens haben müssen die betroffenen Streams auf die Abtastrate des Ausgangs umgerechnet werden. Hierzu gibt es diverse Verfahren. Man kann sich das etwa wie das Skalieren eines Bildes vorstellen: Es gibt Filter die schnell sind und welche die gut sind. Muss man in Realtime resampeln so muss man vor allem schnell sein, will aber auch noch möglichst gut sein. Viele Soundserver behalten schlichtweg die Pegel entsprechend der neuen Abtaste Rate länger oder kürzer bei (s.g. zoh - Zero Order Hold). Dies erzeugt Rechteck Signale welche wiederum diverse Oberwellen erzeugen. RoarAudio setzt hier Polynomapproximation dritten Grades ein. Dies reduziert die Oberwellen schon deutlich dank leichter Tiefpass Eigenschaft.&lt;br /&gt;
* Da nicht für den gesamten Titel der Amplituden-Gang bestimmt werden kann ist es möglich daß es zu sogenanntem Clipping kommt. Clipping bezeichnet das Problem, daß die Summe der Amplituden aller Eingangssignale größer ist als der zulässige Wertebereich. In diesem Falle wird das Ausgangssignal geclippt, sprich es wird auf den maximalen sich im zulässigen Wertebereich liegenden Wert herunter gesetzt. Dies lässt sich nicht vollkommen vermeiden aber durch geschickte Wahl des Mischverfahrens reduzieren. Es empfiehlt sich dennoch einen ReplayGain einzubeziehen. Dieser kann das Clipping zwar auch nicht komplett verhindern aber der Soundserver kann besser abschätzen wie die Gefahr für Clipping ist und rechtzeitig reagieren.&lt;br /&gt;
* Vor Allem beim Pegel umrechnen kommt es selbstverständlich zu Rechenungenauigkeiten. Um diese zu minimieren skaliert RoarAudio die Signale auf bis zu ihrer doppelten Größe auf um Rechenungenauigkeiten zu vermeiden. bei einem 16 Bit Eingangssignal wird als Beispiel auf 32 Bit skaliert was zusätzliche 96dB Rauschabstand während der Umrechnung liefert.&lt;br /&gt;
* &amp;lt;s&amp;gt;Werden Signale mit verschiedenen Pegeln gemischt so kann es sinnvoll sein mit der Breite der Ausgangs-Samples hoch zu gehen. Als Beispiel: wenn zwei Signale mit je 16 Bit mit den Pegeln 1 und 1/4 gemischt werden reduziert der Rauschabstand des zweiten Signals um 12dB. Man sollte überlegen auf 24 Bit am Ausgang zu wechseln. Die Allgemeine Regel lautet: für den Faktor 2 oder 6dB die ein Signal abgeschwächt wird braucht man am Ausgang ein Bit mehr. Wenn mal also eine Hintergrund-Musik mit -48dB auf Sprache mischt (durchaus realistisch) muss man von 16 Bit am Ausgang auf 24 Bit hoch gehen um keinen Qualitäts-Verlust der Musik zu erhalten.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Einige Formate sind nicht Frame basierend. Dies sind vor allem MIDI Formate Hier kann es passieren das die Synchronisation zwischen diesen Streams und den anderen sich an Frame-Grenzen treffe. Dies kann zu unschönen Nebeneffekten führen. Manche Codecs sind auch nur in der Lage auf gewisse Zeitraster Ende-Marken zu setzen was in unsauberen Enden mit Artefakten enden kann. Im Realtime Bereich lässt sich dies nicht korrigieren und solche Codecs sollten vermieden werden.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem: Lokale Synchronität ====&lt;br /&gt;
Die wichtigsten Störfaktoren sind:&lt;br /&gt;
&lt;br /&gt;
* Wie jede Hardware besitzen Soundkarten eine Verzögerung. Das heißt daß sie eine gewisse Zeit brauchen zwischen Erhalt von Daten und deren Ausgabe. Diese Zeit liegt im Bereich von wenigen Millisekunden (z.B. Studio Karten) und kann bis in den Bereich von mehren hundert Millisekunden gehen (z.B. 2.5 Euro USB Karten von $SUPERMARKT), je nach Karte. Die meisten Karten bieten aber eine Möglichkeit ab zu fragen wo sie gerade in ihrem Puffer sind. Wie dies genau funktioniert ist von Karte zu Karte unterschiedlich. Der Treiber der Karte ist dafür zuständig diese Funktionen an höhere Interfaces (OSS, alsa, sndio,...) weiterzureichen und den Applikationen zur Verfügung zu stellen.&lt;br /&gt;
* Neben dem Delay in der Hardware erzeugt selbstverständlich auch der Kernel und die Treiber eine weiter Verzögerung. Dies passiert aus vielen Gründen: Der Programmcode muss natürlich erst einmal ausgeführt werden. Auch werden Interupts nicht um bedingt sofort bearbeitet (zum Beispiel weil gerade ein anderer, höherwertiger bearbeitet wird).&lt;br /&gt;
* Die nächste Schicht, die Sound APIs, erzeugen auf ähnliche Weise weitere Delays. Hier kommt dazu das viele mit relativ großen Puffern arbeiten (Beispielsweise EsounD mit 0.28sec - im Vergleich zu roard mit Standard Puffer von 0.01sec). Die Puffergröße ist in dem meisten Fällen die kleinste Einheit in der Synchronität gewährleistet werden kann.&lt;br /&gt;
* Da die meisten Systeme (alle auf denen RoarAudio läuft) Multitasking betreiben stellt sich ein weiteres Problem: Der entsprechende Prozess muss eine Zeitscheibe bekommen bevor er reagieren kann. Läuft ein anderer Prozess gerade so muss er potentiell warten. Auf den meisten POSIX kompatiblem Systemen basiert das Multitasking zwar auf Ereignissen, sprich ein Prozess läuft so lange bis ein anderer ein Ereignis zu bearbeiten hat (keine feste Zeitscheiben-Länge), was dazu führt das dieses Problem ist nicht all zu groß ist. Aber es kann natürlich gerade ein anderer Prozess mit höherer Priorität laufen der ein anderes Ereignis bearbeitet und somit nicht vom Kernel unterbrochen wird.&lt;br /&gt;
* Unsynchrones clocking&lt;br /&gt;
&lt;br /&gt;
==== Problem: Netzwerk Synchronität ====&lt;br /&gt;
* lag&lt;br /&gt;
* jitter&lt;br /&gt;
* Netzwerk Implementierungen&lt;br /&gt;
&lt;br /&gt;
==== Lösungsansätze ====&lt;br /&gt;
{{Vortrags Zeit|10}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ignorieren&#039;&#039;&#039; - Diverse Probleme lassen sich schlichtweg einfach Ignorieren. Dies sind vor allem Probleme die sich statistisch über die zeit Aufheben. Ist diese Strategie möglich so sollte sie verfolgt werden im sinne von KISS (Keep It Small and Simple). Sie kann natürlich auch extrem daneben liegen und man sollte sich um eine echte Lösung bemühen.&lt;br /&gt;
* &#039;&#039;&#039;TOS&#039;&#039;&#039; - Setzen des TOS (Type Of Service) Feldes bei IP mag helfen. Viele Backbone provider ignoriren dieses Feld zwar aber im LAN kann es durchaus helfen. Gerade bei anderer starker, lang packetiger Kommunikation zwischen dem eignen und dem Ziehl Rechner (file transfers).&lt;br /&gt;
* &#039;&#039;&#039;QoS&#039;&#039;&#039; - Benutzung von QoS (Quality of Service) kann im Backbone Bereich da die Latenz erheblich senken da man das Puffer verhalten der Geräte beeinflusst. Der Nachteil ist das hierzu Unterstützung da sein muss. mit IPv6 scheint sich hier aber einiges zu bessern.&lt;br /&gt;
* &#039;&#039;&#039;Geschickte Auswahl von Algorithmen und Protokollen&#039;&#039;&#039; - Die Auswahl der Algorithmen und Protokolle ist entscheidend. Für die meisten Aufgaben gibt es mehre mögliche Lösungen (&#039;&#039;Viele Wege führen nach Rom&#039;&#039;). Aber nicht alle sind gleich gut geeignet. Deswegen sollte hier eine sinnvolle Auswahl getroffen werden.&lt;br /&gt;
* &#039;&#039;&#039;Künstlicher Delay&#039;&#039;&#039; - Es besteht die Möglichkeit einzelne Streams oder Ereignisse künstlich leicht heraus zu zögern. Hierdurch kann ein Abgleich der Latenzen gemacht werden was dazu dient Syncronität her zu stellen. Normalerweise werden alle Streams so lange verzögert bis sie eine &#039;&#039;künstliche&#039;&#039; Latenzs gleich dem Stream haben der die höchste Latenz aufweist.&lt;br /&gt;
* &#039;&#039;&#039;Resampling&#039;&#039;&#039; - Sind mehre Clocks beteiligt oder kommen die Daten etwas zu schnell oder zu langsam kann man leichtes Resampling betreiben. Das heißt das das Signal künstlich gestaucht oder in die Länge gezogen wird. Geschiet dies nicht ruckartig kann das Gehör den unterschied nicht wahrnehmen solange dieses Resamping nur in kleinen Bereichen passiert (je nach Literatur 2% bis 5%, werte die größer sind als die Ungenauigkeit von Quarzen und somit gegeigent sind um Clock driffting aus zu gleichen.).&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
...&lt;br /&gt;
==== Win32 Port ====&lt;br /&gt;
Ein Win32 Port existiert zum jetzigen Zeitpunkt nicht. Dies liegt an mehren Faktoren: Zum einen ist Win32, was den nahe-realtime Betrieb angeht, nicht zuverlässig genug. Zum anderen ist bei Win32 das Networking kein Teil des Kernels wie auf UNIX und POSIX Systemen: Es ist viel mehr teilweise im Userland. Dies hat zur Folge das zu jedem Zeitpunkt eine Applikation wissen muss von welchem Type ein Filehandle ist, da man Basis Funktionen wie read(), write(), close() nicht auf alle Filehandles anwenden kann. Vielmehr hat jeder Type von Filehandles seinen eigenen Satz Funtionen. RoarAudio verfolgt die UNIX Philosophie: &#039;&#039;Alles ist eine Datei&#039;&#039;. Große Patches wären nötig.&lt;br /&gt;
&lt;br /&gt;
Ein Weiteres ist das ein solcher Port viel Zeit in Anspruch nimmt und weder das Projekt noch die Freie Software Bewegung voranbringt.&lt;br /&gt;
&lt;br /&gt;
Im Moment existieren kleinere Patches die vielleicht irgendwann mal Basis Funktionalität mit sich bringen könnten. An ein roard für Win32 ist in absehbarer Zeit nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
Allerdings laufen Teile von RoarAudio in Cygwin mehr oder minder gut. Viele Probleme treten hier auf aber es ist prinzipiell möglich es unter Cygwin zum Laufen zu bringen (außerhalb des nahe-realtime Betriebs).&lt;br /&gt;
&lt;br /&gt;
Es besteht aber die Möglichkeit einige Win32 Applikationen mittels pseudo Web Radio Streams anzubinden.&lt;br /&gt;
&lt;br /&gt;
==== MP3 ====&lt;br /&gt;
* Kein Streaming&lt;br /&gt;
* Keine Meta Daten&lt;br /&gt;
* Schlechte Qualität&lt;br /&gt;
* Patente&lt;br /&gt;
&lt;br /&gt;
=== Querverweise ===&lt;br /&gt;
; [http://raum.keep-cool.org/ RAUM Media Container]&lt;br /&gt;
: Für RoarAudio entwickelter Container, vor allem für Speex und CELT.&lt;br /&gt;
; [http://www.icecast.org/ Icecast] - Multimedia streaming server&lt;br /&gt;
: Software für Webradio und WebTV streaming.&lt;br /&gt;
; [http://www.xiph.org/ Xiph.Org Foundation]&lt;br /&gt;
: Organisation zur Entwicklung von freien Codecs.&lt;br /&gt;
; SIP&lt;br /&gt;
: Standard für VoIP - Internet-Telephonie.&lt;br /&gt;
&lt;br /&gt;
=== Vorführung ===&lt;br /&gt;
{{Vortrags Zeit|30}}&lt;br /&gt;
&lt;br /&gt;
* Allgemeiner Betrieb&lt;br /&gt;
** roard&lt;br /&gt;
** roarvorbis/roarcatplay?&lt;br /&gt;
** roarctl&lt;br /&gt;
** xmms&lt;br /&gt;
* Background Streams&lt;br /&gt;
** roarradio&lt;br /&gt;
* Kompatibilitäts Bibliotheken&lt;br /&gt;
** libroaresd:&lt;br /&gt;
*** &amp;lt;s&amp;gt;xmms&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;mplayer&amp;lt;/s&amp;gt;&lt;br /&gt;
*** Amarok&lt;br /&gt;
&lt;br /&gt;
== Fragen ==&lt;br /&gt;
* &#039;&#039;immer gerne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6774</id>
		<title>RoarAudio/Vortrag/Erster Vortrag</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio/Vortrag/Erster_Vortrag&amp;diff=6774"/>
		<updated>2009-01-26T22:30:32Z</updated>

		<summary type="html">&lt;p&gt;Che: 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 [[RoarAudio]] und die Realtime Audio mixing Problematik vor einem Unixpublikum mit keinen oder kaum 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;
== Der Autor ==&lt;br /&gt;
[[Benutzer:Ph3-der-loewe|Philipp &#039;&#039;ph3-der-loewe&#039;&#039; Schafft]], Software Entwickler und Projekt Urheber.&lt;br /&gt;
&lt;br /&gt;
== Vortrag ==&lt;br /&gt;
=== Was ist RoarAudio? ===&lt;br /&gt;
RoarAudio ist ein Soundserver.&lt;br /&gt;
&lt;br /&gt;
==== Was ist ein Soundserver ====&lt;br /&gt;
Ein Soundserver ist eine Programm das im Hintergrund Audio Daten mischt und das Ergebnis weiter leitet, meist an eine Soundcard.&lt;br /&gt;
&lt;br /&gt;
Soundserver werden benötigt wenn wenn das unterliegende Audio-Ausgabegerät nur einen Datenstrom zu einer Zeit verarbeiten kann (Single Stream Soundcards). Sie stellen eine Art virtuelle Soundcard dar zu der Programme wie Player ihre Daten schicken können um eine simultane Ausgabe mit zum Beispiel Notify-Sounds von Chat Clients oder ähnlichem zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Sie bieten meist weitere Funktionen wie das Mischen unter Berücksichtigung von verschiedenen Pegeln. Einige Soundserver ermöglichen auch die Benutzung von Netzwerken zur Übertragung von Audio Daten zur Wiedergabe auf einer anderen Maschine. Dies beides kann auch RoarAudio.&lt;br /&gt;
&lt;br /&gt;
=== Projekt Ziele ===&lt;br /&gt;
Das Projekt verfolgt im Prinzip das Ziel, eine leistungsfähige Mischsoftware für den Studio Betrieb zur Verfügung zu stellen, aber dennoch ein Produkt zu liefern das auch für den Heim-Anwender angemessen ist.&lt;br /&gt;
&lt;br /&gt;
==== für Heim-Anwender ====&lt;br /&gt;
Heim-Anwender Teilen sich in zwei Gruppen auf:&lt;br /&gt;
Die größere Menge interessiert es nicht wieso Musik aus den Lautsprechern kommt, Hauptsache sie tut es. Für diese Gruppe muss RoarAudio einfach &#039;&#039;out of the box&#039;&#039; funktionieren.&lt;br /&gt;
Die andere Gruppe sind Anwender die mehr machen wollen. Hier soll RoarAudio ein leistungsstarkes Backend sein das möglichst Ressourcen schonend alle gewünschten Funktionen anbietet.&lt;br /&gt;
&lt;br /&gt;
==== Im Studio Betrieb ====&lt;br /&gt;
Wie oben schon angedeutet ist RoarAudio aber im Studio Einsatz wesentlich interessanter: in einem klassischen Studio steht meist ein großes analoges Mischpult. Dies ist eine wundervolle Sache solange man primär analoge Eingänge braucht: beispielsweise von einer Band. In heutigen Radio- und Fernsehstudios kommen aber die meisten Kanäle aus dem Rechner oder anderen digitalen Geräten wie CD Spielern.&lt;br /&gt;
&lt;br /&gt;
Ein analoges Mischen hat hier nun mehre Nachteile, die wichtigsten sind wohl:&lt;br /&gt;
* Analoges Rauschen&lt;br /&gt;
* Verzerrungen im Frequenzgang&lt;br /&gt;
* Klirren&lt;br /&gt;
* Quantisierungsrauchen&lt;br /&gt;
* Effekte durch asynchrone Abtastung&lt;br /&gt;
&lt;br /&gt;
Eine Alternative wäre in einigen Fällen sicherlich ein Digital-Mischpult. Diese sind aber meist sehr teuer.&lt;br /&gt;
&lt;br /&gt;
RoarAudio kommt hier als erst einmal reine Software-basierende Lösung. Natürlich ist es möglich über die Steuerschnittstellen auch externe Hardware anzuschließen. Hier gibt es auch Planungen, ein Hardware Frontend zu entwerfen das dann kostengünstig zu haben ist.&lt;br /&gt;
&lt;br /&gt;
=== Exkurs: Codecs und Container ===&lt;br /&gt;
Ein Codec ist eine Spezifikation (meist werden auch die Implementierungen Codec genannt) wie Rohdaten, im Falle von Audio meist PCM Daten, als Datenstrom oder -block repräsentiert werden. Hierzu zählt meist als primäres Kriterium die Kompression. Weitere Informationen wie Synchronisationsdaten können ebenfalls durch den Codec spezifiziert sein, werden aber meist im Container abgelegt.&lt;br /&gt;
&lt;br /&gt;
Ein Container ist im Gegensatz zu einem Codec eine Spezifikation wie Daten die mittels Codecs in eine Datei codiert wurden in oder einen Stream verpackt werden. Hierzu zählen Dinge wie globale File-Magic, Angabe des Codecs, Meta Daten, Angaben über rate/bps/channels und Ähnliches.&lt;br /&gt;
&lt;br /&gt;
==== Verschiedene Arten von Codecs ====&lt;br /&gt;
* Verlustfreie&lt;br /&gt;
* Verlustbehaftete&lt;br /&gt;
* Musik Codecs&lt;br /&gt;
* Sprach Codecs&lt;br /&gt;
* Niederlatenz Codecs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Was hebt RoarAudio hervor? ===&lt;br /&gt;
Hier Sollen einige der besonderen Fähigkeiten von RoarAudio erläutert werden.&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
RoarAudio zeichnet sich dadurch aus daß er zusätzlich zu PCM Rohdaten auch höher Codecs versteht. Dies hat mehre Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio als Background Stream ab zu spielen.&lt;br /&gt;
* Es ist dem Server möglich direkt Streaming-Server wie [[icecast]] zu bedienen. Es ist keine weitere &#039;&#039;lange pipe&#039;&#039; nötig um Webradio zu senden. Dies verringert die Störanfälligkeit erheblich und verringert die Latenz, da pipe-Puffer entfallen.&lt;br /&gt;
* Auch ist es nur mit stark komprimierenden Codecs möglich über die dem Heim-Anwender zur Verfügung stehenden Schmalband Anschlüsse Audio entweder von Client zu Server oder zwischen zwei Servern auszutauschen. Auch eine Kopplung über ISDN Kanäle ist so möglich.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk-Transparenz ====&lt;br /&gt;
RoarAudio ist Netzwerk transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer lokalen Instanz oder einer auf einem anderen Rechner.&lt;br /&gt;
&lt;br /&gt;
Zu diesem Zweck werden mehre Protokolle unterstützt: UNIX Domain Sockets für Lokale Verbindungen sowie TCP/IP und DECnet für Verbindungen mit entfernten Rechnern. Auch existiert Support für verschiedene Proxy Typen.&lt;br /&gt;
&lt;br /&gt;
==== Background Streams ====&lt;br /&gt;
Background Streams sind Streams die vom Server selbst bearbeitet werden und keinen Player benötigen um abgespielt zu werden. Dies kann zum Beispiel genutzt werden um Hintergrundmusik einzuspielen wie beispielsweise in einem Kaufhaus. Auch Webradio Streams werden hier unterstützt.&lt;br /&gt;
&lt;br /&gt;
==== Virtual IO ====&lt;br /&gt;
&#039;&#039;(gestrichen)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Kompatibilitäts Bibliotheken ====&lt;br /&gt;
&#039;&#039;Viele Programme haben keine Unterstützung für RoarAudio, was nun?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um dieses Problem zu lösen gibt es diverse Kompatibilitäts-Bibliotheken.&lt;br /&gt;
Diese stellen Bibliotheken dar welche binär-kompatibel andere Audio Systeme emulieren.&lt;br /&gt;
Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und leiten dann alle Anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechenden Bibliothek.&lt;br /&gt;
&lt;br /&gt;
Die mit Abstand wohl wichtigste ist &#039;&#039;&#039;libroaresd&#039;&#039;&#039; welche das [[EsounD]] Interface emuliert. das EsounD Interface wird von den allermeisten Applikationen unterstützt da es das wohl älteste Soundserver Interface ist. Es existiert seit 1998.&lt;br /&gt;
&lt;br /&gt;
Weitere Kompatibilitäts Bibliotheken gibt es für das YIFF Sound System, KDEs aRtsc und PulseAudio. Zusammen mit den existierenden Plugins deckt dies nahezu den vollständigen Player Markt fuer GNU/Linux und BSD ab.&lt;br /&gt;
&lt;br /&gt;
===== Welche Schnittstelle für was? =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Interface&lt;br /&gt;
 ! Beispiel Applikationen&lt;br /&gt;
 |-&lt;br /&gt;
 | libroar&lt;br /&gt;
 | roaraudio-tools, XMMS, mplayer, (xine)&lt;br /&gt;
 |-&lt;br /&gt;
 | EsounD&lt;br /&gt;
 | GNOME, KDE, XMMS, xine, Amarok, wine,... (177 weitere unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | libao&lt;br /&gt;
 | vorbis-tools, FLAC tools, mpd, mpg321, gnomoradio, somaplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | aRts(c) (KDE)&lt;br /&gt;
 | Player mit aRts support: mplayer, xine; kwave, kaudiocreator,...&lt;br /&gt;
 |-&lt;br /&gt;
 | PulseAudio&lt;br /&gt;
 | Ein paar Programme, die meisten über Plugins. (nicht viel unter Debian Stable)&lt;br /&gt;
 |-&lt;br /&gt;
 | YIFF&lt;br /&gt;
 | y-tools&lt;br /&gt;
 |-&lt;br /&gt;
 | gstreamer&lt;br /&gt;
 | GNOME, Alle GNOME Player. Dieverse andere.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Konzepte und Architektur ===&lt;br /&gt;
RoarAudio ist zwar in C geschrieben aber größtenteils Objekt-orientiert.&lt;br /&gt;
&lt;br /&gt;
==== Clients und Streams ====&lt;br /&gt;
&lt;br /&gt;
Vor allem wichtig und nach Außen hin sichtbar sind die Client und Stream Objekte.&lt;br /&gt;
Ein Client Objekt verkörpert einen (Netzwerk) Client, zum Beispiel einen Player oder ein Steuerprogramm wie roarctl. Es kann auch Stream Objekte assoziiert haben (Beispielsweise im Falle von Abspielen von Musik).&lt;br /&gt;
&lt;br /&gt;
Ein Stream Objekt stellt einen eigentlichen Audio Datenstrom da. Dieses Objekt beinhaltet diverse Informationen über den Datenstrom: Informationen wie der roard ihn auslesen kann, Sample Rate/Bits/Channels, Meta Daten und vieles mehr. Ein Stream gehört immer zu einem Client. Wobei der Client auch der roard selbst sein kann und sich durch attachen wechseln läßt. Dies kommt zum Einsatz um Hintergrund Streams zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei jedem Audio Datenstrom der in den roard hinein oder heraus fließt handelt es sich um einen Stream. Dies schließt Datenströme zu Geräten wie Soundcards mit ein. Hier durch ist eine maximale Flexibilität gegeben.&lt;br /&gt;
&lt;br /&gt;
===== Stream Typen =====&lt;br /&gt;
Es gibt diverse Verschiedene Stream typen. Die folgende Tabelle Beschreibt sie kurz:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Typ&lt;br /&gt;
 ! Richtung&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Play&lt;br /&gt;
 | zu Server&lt;br /&gt;
 | Standard Typ: eingehende Audio Daten.&lt;br /&gt;
 |-&lt;br /&gt;
 | Monitor&lt;br /&gt;
 | von Server&lt;br /&gt;
 | Hier werden die aktuellen gemischten Audio Daten vom Server abgefragt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Filter&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Dieser Stream dient zum zwischenschalten von Filtern im Mixer&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Dieser Stream geht an einen Driver Richtung Soundcard oder ähnlichem&lt;br /&gt;
 |-&lt;br /&gt;
 | Mixing&lt;br /&gt;
 | keine&lt;br /&gt;
 | Interne Audio Puffer genutzt zum Mischen der Daten&lt;br /&gt;
 |-&lt;br /&gt;
 | Bidir&lt;br /&gt;
 | bidirektional&lt;br /&gt;
 | Play und Monitor in einem.&lt;br /&gt;
 |-&lt;br /&gt;
 | Record&lt;br /&gt;
 | vom Server&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Flag Abhänig&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 | Internal&lt;br /&gt;
 | keine&lt;br /&gt;
 | Im Moment nicht Unterstützt.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Stream Flags =====&lt;br /&gt;
Ein Stream kann desweiteren Flags haben die sein Verhalten genauer bestimmen. Die Flags sind hier zusammen gefasst:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Beschreibung&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary&lt;br /&gt;
 | Bei Ende des Streams beendet sich roard selbst.&lt;br /&gt;
 |-&lt;br /&gt;
 | Output&lt;br /&gt;
 | Es wird Ein Output Driver für diesen Stream verwendet.&lt;br /&gt;
 |-&lt;br /&gt;
 | Source&lt;br /&gt;
 | Bei diesem Stream handelt es sich um eine Source.&lt;br /&gt;
 |-&lt;br /&gt;
 | Sync&lt;br /&gt;
 | Der Stream ist Synchron (mit Hardware bzw. seinem Ziel)&lt;br /&gt;
 |-&lt;br /&gt;
 | Meta&lt;br /&gt;
 | Ausgehende Streams mit diesem Flag beziehen ihre Meta Daten automatisch von eingehenden Streams mit diesem Flag.&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Driver ====&lt;br /&gt;
Ein Driver ist ein Objekt das eine Schnittstelle zur Verfügung stellt um externe Ressourcen anzusprechen, die sich nicht der UNIX IO Philosophie entsprechend verhalten (Erweiterte Handshake zum Beispiel). Dies können Soundcards oder auch Streaming Server sein. Hierzu zählen als Beispiel der OSS (Open Sound System) und der libshout (Icecast) Treiber.&lt;br /&gt;
&lt;br /&gt;
==== Sources ====&lt;br /&gt;
Eine Source ist an sich ein normaler Stream. Der Unterschied besteht darin das roard selbst den Stream beim Starten initialisiert. Neben Test Szenarien ist dies vor allem hilfreich um sich die Audio Ausgabe eines anderen Rechners lokal zu spiegeln.&lt;br /&gt;
&lt;br /&gt;
==== Codecfilter ====&lt;br /&gt;
Bei den Codecfiltern handelt es sich um ein Abstraktions Layer welches roard die Möglichkeit gibt höhere Codecs zu sprechen wie etwa Ogg Vorbis. Einige Codecfilter können nur Lesen andere auch Schreiben. Wird ein Stream mit einem unterstützen Codec aufgebaut so wird automatisch eine Instanz eines passenden Codecfilters erzeugt. Sie verhalten sich somit weitgehend transparent. Viele höheren Codec sind allerdings nicht in der Lage alle Stream Typen zu bedienen. Der Streamtype Filter wird am wenigsten unterstützt da er ein exaktes Timing und Blocking Verhalten benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Filter ====&lt;br /&gt;
* filter&lt;br /&gt;
* ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme des Realtime Audio Mischens ===&lt;br /&gt;
Beim Mischen in Realtime kommen zu den Problemen die beim normalen Mischen von Audio auftreten noch weitere hinzu.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Probleme sind:&lt;br /&gt;
&lt;br /&gt;
* Resampling - Wenn nicht alle Streams dieselbe Abtastfrequens haben müssen die betroffenen Streams auf die Abtastrate des Ausgangs umgerechnet werden. Hierzu gibt es diverse Verfahren. Man kann sich das etwa wie das Skalieren eines Bildes vorstellen: Es gibt Filter die sind schnell und welche die sind gut. Muss man in Realtime resampeln so muss man vor allem schnell sein, will aber auch noch möglichst gut sein. Viele Soundserver behalten schlichtweg die Pegel entsprechend der neuen Abtaste Rate länger oder kürzer bei. Dies erzeugt Rechteck Signale welche wiederum diverse Oberwellen erzeugen. RoarAudio setzt hier Polynomapproximation dritten Grades ein. Dies reduziert die Oberwellen schon deutlich dank leichter Tiefpass Eigenschaft.&lt;br /&gt;
* Da nicht für den gesamten Titel der Amplituden-Gang bestimmt werden kann ist es möglich daß es zu sogenanntem Clipping kommt. Clipping bezeichnet das Problem, daß die Summe der Amplituden aller Eingangssignale größer ist als der zulässige Wertebereich. In diesem Falle wird das Ausgangssignal geclippt, sprich es wird auf den maximalen sich im zulässigen Wertebereich liegenden Wert herunter gesetzt. Dies lässt sich nicht vollkommen vermeiden aber durch geschickte Wahl des Mischverfahrens reduzieren. Es empfiehlt sich dennoch dem einen ReplayGain einzubeziehen. Dieser kann das Clipping zwar auch nicht komplett verhindern aber der Soundserver kann besser abschätzen wie die Gefahr für Clipping ist und rechtzeitig reagieren.&lt;br /&gt;
* Vor Allem beim Pegel umrechnen kommt es selbstverständlich zu Rechenungenauigkeiten. Um diese zu minimieren skaliert RoarAudio die Signale auf bis zu ihrer doppelten Größe auf um Rechenungenauigkeiten zu vermeiden. bei einem 16 Bit Eingangssignal wird als Beispiel auf 32 Bit skaliert was zusätzliche 96dB Rauschabstand während der Umrechnung liefert.&lt;br /&gt;
* Werden Signale mit verschiedenen Pegeln gemischt so kann es sinnvoll sein mit der Breite der Ausgangs-Samples hoch zu gehen. Als Beispiel: wenn zwei Signale mit je 16 Bit mit den Pegeln 1 und 1/4 gemischt werden reduziert der Rauschabstand des zweiten Signals um 12dB. Man sollte überlegen auf 24 Bit am Ausgang zu wechseln. Die Allgemeine Regel lautet: für den Faktor 2 oder 6dB die ein Signal abgeschwächt wird braucht man am Ausgang ein Bit mehr. Wenn mal also eine Hintergrund-Musik mit -48dB auf Sprache mischt (durchaus realistisch) muss man von 16 Bit am Ausgang auf 24 Bit hoch gehen um keinen Qualitäts-Verlust der Musik zu erhalten.&lt;br /&gt;
* Einige Formate sind nicht Frame basierend. Dies sind vor allem MIDI Formate Hier kann es passieren das die Synchronisation zwischen diesen Streams und den anderen sich an Frame-Grenzen treffe. Dies kann zu unschönen Nebeneffekten führen. Manche Codecs sind auch nur in der Lage auf gewisse Zeitraster Ende-Marken zu setzen was in unsauberen Enden mit Artefakten enden kann. Im Realtime Bereich lässt sich dies nicht korrigieren und solche Codecs sollten vermieden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem: Lokale Synchronität ====&lt;br /&gt;
Die wichtigsten Störfaktoren sind:&lt;br /&gt;
&lt;br /&gt;
* Wie jede Hardware besitzen Soundkarten eine Verzögerung. Das heißt daß sie eine gewisse Zeit brauchen zwischen Erhalt von Daten und deren Ausgabe. Diese Zeit liegt im Bereich von wenigen Millisekunden (z.B. Studio Karten) und kann bis in den Bereich von mehren hundert Millisekunden gehen (z.B. 2.5 Euro USB Karten von $SUPERMARKT), je nach Karte. Die meisten Karten bieten aber eine Möglichkeit ab zu fragen wo sie gerade in ihrem Puffer sind. Wie dies genau funktioniert ist von Karte zu Karte unterschiedlich. Der Treiber der Karte ist dafür zuständig diese Funktionen an höhere Interfaces (OSS, alsa, sndio,...) weiterzureichen und den Applikationen zur Verfügung zu stellen.&lt;br /&gt;
* Neben dem Delay in der Hardware erzeugt selbstverständlich auch der Kernel und die Treiber eine weiter Verzögerung. Dies passiert aus vielen Gründen: Der Programmcode muss natürlich erst einmal ausgeführt werden. Auch werden Interupts nicht um bedingt sofort bearbeitet (zum Beispiel weil gerade ein anderer, höherwertiger bearbeitet wird).&lt;br /&gt;
* Die nächste Schicht, die Sound APIs, erzeugen auf ähnliche Weise weitere Delays. Hier kommt dazu das viele mit relativ großen Puffern arbeiten. Die Puffergröße ist in dem meisten Fällen die kleinste Einheit in der Synchronität gewährleistet werden kann.&lt;br /&gt;
* Da die meisten Systeme (alle auf denen RoarAudio läuft) Multitasking betreiben stellt sich ein weiteres Problem: Der entsprechende Prozess muss eine Zeitscheibe bekommen bevor er reagieren kann. Läuft ein anderer Prozess gerade so muss er potentiell warten. Auf den meisten POSIX kompatiblem Systemen basiert das Multitasking zwar auf Ereignissen, sprich ein Prozess läuft so lange bis ein anderer ein Ereignis zu bearbeiten hat (keine feste Zeitscheiben-Länge), was dazu führt das dieses Problem ist nicht all zu groß ist. Aber es kann natürlich gerade ein anderer Prozess mit höherer Priorität laufen der ein anderes Ereignis bearbeitet und somit nicht vom Kernel unterbrochen wird.&lt;br /&gt;
* Unsynchrones clocking&lt;br /&gt;
&lt;br /&gt;
==== Problem: Netzwerk Synchronität ====&lt;br /&gt;
* lag&lt;br /&gt;
* jitter&lt;br /&gt;
* Netzwerk Implementierungen&lt;br /&gt;
* QoS&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
...&lt;br /&gt;
==== Win32 Port ====&lt;br /&gt;
Ein Win32 Port existiert zum jetzigen Zeitpunkt nicht. Dies liegt an mehren Faktoren: Zum einen ist Win32 nicht was den nahe-realtime Betrieb angeht nicht zuverlässig genug. Zum anderen ist bei Win32 das Networking kein Teil des Kernels wie auf UNIX und POSIX Systemen: Es ist viel mehr teilweise im Userland. Dies hat zur Folge das zu jedem Zeitpunkt eine Applikation wissen muss von welchem Type ein Filehandle ist da man Basis Funktionen wie read(), write(), close() nicht auf alle Filehandles anwenden kann. Vielmehr hat jeder Type von Filehandle seinen eigenen Satz Funtionen. RoarAudio verfolgt die UNIX Philosophie: &#039;&#039;Alles ist eine Datei&#039;&#039;. Große Patches wären nötig.&lt;br /&gt;
&lt;br /&gt;
Ein Weiteres ist das ein solcher Port viel Zeit in Anspruch nimmt und weder das Projekt noch die Freie Software Bewegung voranbringt.&lt;br /&gt;
&lt;br /&gt;
Im Moment existieren kleinere Patches die vielleicht irgendwann mal Basis Funktionalität mit sich bringen könnten. An ein roard für Win32 ist in absehbarer Zeit nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
Allerdings laufen Teile von RoarAudio in Cygwin mehr oder minder gut. Viele Probleme treten hier auf aber es ist prinzipiell möglich es unter Cygwin zum Laufen zu bringen (außerhalb des nahe-realtime Betriebs).&lt;br /&gt;
&lt;br /&gt;
Es besteht aber die Möglichkeit einige Win32 Applikationen mittels pseudo Web Radio Streams anzubinden.&lt;br /&gt;
&lt;br /&gt;
==== MP3 ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Querverweise ===&lt;br /&gt;
* RAUM&lt;br /&gt;
* Icecast&lt;br /&gt;
* SIP&lt;br /&gt;
* Xiph&lt;br /&gt;
&lt;br /&gt;
=== Vorführung ===&lt;br /&gt;
* Allgemeiner Betrieb&lt;br /&gt;
** roard&lt;br /&gt;
** roarvorbis/roarcatplay?&lt;br /&gt;
** xmms&lt;br /&gt;
* Background Streams&lt;br /&gt;
** roarradio&lt;br /&gt;
* Kompatibilitäts Bibliotheken&lt;br /&gt;
** libroaresd:&lt;br /&gt;
*** xmms&lt;br /&gt;
*** mplayer&lt;br /&gt;
*** Amarok&lt;br /&gt;
&lt;br /&gt;
== Fragen ==&lt;br /&gt;
* &#039;&#039;immer gerne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Vortrag]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio/Installation_und_Einrichtung&amp;diff=6773</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=6773"/>
		<updated>2009-01-26T21:48:58Z</updated>

		<summary type="html">&lt;p&gt;Che: Typo&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;
[[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.1beta4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Danach muss das Archiv mittels [[tar]] entpackt werden:&lt;br /&gt;
 $ tar -xzvf roaraudio-0.1beta4.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 frischgebackene [[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;
&lt;br /&gt;
== Konfigurieren ==&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;
&amp;lt;!--&lt;br /&gt;
==== mplayer ====&lt;br /&gt;
==== gstreamer ====&lt;br /&gt;
--&amp;gt;&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;
==== 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;
=== Kompatibilitäts Biblotheken ===&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;
&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;br /&gt;
{{Stub}}&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=RoarAudio&amp;diff=6772</id>
		<title>RoarAudio</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=RoarAudio&amp;diff=6772"/>
		<updated>2009-01-26T20:32:00Z</updated>

		<summary type="html">&lt;p&gt;Che: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;RoarAudio&#039;&#039;&#039; ist ein Sound-Server für alle [[POSIX]] konformen Betriebssysteme (GNU/Linux, *BSD, Mac OS X und andere) unter aktiver Entwicklung. Er ist als Ersatz für den [[Enlightened Sound Daemon]] (ESD, EsounD) gedacht und bietet zusätzliche Funktionen für den Studio Betrieb.&lt;br /&gt;
&lt;br /&gt;
[[Bild:RoarAudio-Logo-0.0.3.png|thumb|right|RoarAudio Logo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein Sound-Server mischt Audio Daten, die von verschiedenen Applikationen auf einer Soundcard abgespielt werden sollen. RoarAudio erweitert dieses Konzept indem er auch andere so genannte Output Streams haben kann als Soundcards: unter anderem Dumps in Dateien, Pipes oder Streaming an einen (Web-)Streaming Server. Auch ist es möglich Daten nicht nur von Applikationen zu beziehen sondern die Input Streams auch Daten aus Dateien oder über das Netzwerk beziehen zu lassen. Ebenso ist es möglich Daten über Geräte wie Soundcards und ISDN Adaptern zu beziehen.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Unterschied zu herkömmlichen Sound-Servern ist, dass RoarAudio auch verschiedene komprimierte [[Codec]]s unterstützt wie [[Vorbis]], [[Speex]], [[CELT]] und andere.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RoarAudio&#039;&#039;&#039; ist dafür entworfen eine sehr niedrige Latenz aufzuweisen. Sie liegt zwischen &amp;lt; 1ms und 10ms. Auch besteht volle Netzwerk-Transparenz. Dass heißt das Applikationen nicht zwangsweise auf dem selben Rechner laufen müssen wie RoarAudio selbst. Die Applikationen (Clients) können sich auch via IP oder DECnet auf den Server miteinander verbinden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kompatibilität ==&lt;br /&gt;
&#039;&#039;&#039;RoarAudio&#039;&#039;&#039; bringt diverse Plugins sowie Kompatibilitäts-Bibliotheken mit. Zu den wichtigsten zählt die libroaresd, welche es jeder Applikation, die EsounD Unterstützung besitzt, ermöglicht RoarAudio zu nutzen. Da diese Bibliotheken Binär-kompatibel sind ist es nicht nötig die Applikation erneut aus dem Source-Code heraus zu kompilieren. Weitere Plugins sind unter anderem für MPlayer, XMMS und gstreamer (GNOME) verfügbar. An einem Ersatz für aRts (KDE) wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Lizensierung ==&lt;br /&gt;
Im Moment ist das Projekt unter der GPLv3 und LGPLv3. Auf Grund diverser Lizenz Probleme unterliegen alle Binär Versionen der GPLv3. Es besteht das Streben die Lizensierung auf eine weniger strikte Lizenz umzustellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Projekt Geschichte ==&lt;br /&gt;
Das Projekt hatte am Son den 31 August 2008 sein initialen Release.&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
&amp;lt;splist /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Homepage|roaraudio.keep-cool.org/}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Sound]]&lt;br /&gt;
{{Stub}}&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Benutzer:Che&amp;diff=6640</id>
		<title>Benutzer:Che</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Benutzer:Che&amp;diff=6640"/>
		<updated>2008-10-24T11:30:10Z</updated>

		<summary type="html">&lt;p&gt;Che: Erweiterung Liste Webseiten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Name : Hans Hermann Schafft&amp;lt;br&amp;gt;&lt;br /&gt;
Jahrgang : 1954&amp;lt;br&amp;gt;&lt;br /&gt;
Mitglied bei der [[UUGRN]]: ca. seit Sommer 2004&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
aktive Verbindung mit IT-Technik seit über 25 Jahren&amp;lt;br&amp;gt;&lt;br /&gt;
warum [[Linux]] / [[Unix]]?  &amp;lt;br&amp;gt;&lt;br /&gt;
da kann man sein System noch so bauen wie man es sich vorstellt und nicht wie andere Leute einen vorschreiben wollen.&lt;br /&gt;
Ich mag keine Programme die mich bevormunden indem sie andauernd das &amp;quot;korrigieren&amp;quot; was ich eingebe.&lt;br /&gt;
Muß mich damit aber auch beruflich arrangieren. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Webseiten :&amp;lt;br&amp;gt;&lt;br /&gt;
im eigenem Jail :&amp;lt;br&amp;gt;&lt;br /&gt;
[http://che.uugrn.org che.uugrn.org]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.wasserstrasse.org www.wasserstrasse.org] &#039;&#039;( Bilder aus meinem Heimatdorf )&#039;&#039;&amp;lt;br&amp;gt; &lt;br /&gt;
[http://www.kaulfroggy.de www.kaulfroggy.de]  &#039;&#039;( wird von meiner Tochter gefüllt )&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
auf externem Server :&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.hhschafft.de www.hhschafft.de]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kontakt :&amp;lt;br&amp;gt;&lt;br /&gt;
che&#039;&#039;(knödel)&#039;&#039;uugrn.org&amp;lt;br&amp;gt;&lt;br /&gt;
che&#039;&#039;(knödel)&#039;&#039;hhschafft.de&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;knödel&#039;&#039; oder &#039;&#039;klammeraffe&#039;&#039; :&amp;lt;br&amp;gt;&lt;br /&gt;
nenne ich das Ding wie in den alten Zeiten mit dem [[Betriebssystem]]en [[RSX11M]] und [[VMS]]&amp;lt;br&amp;gt;&lt;br /&gt;
mit @&amp;lt;dateiname&amp;gt; wird die Kommandoprozedur = Script gestartet&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Diskussion:RaumZeitLabor/Netzwerk&amp;diff=5666</id>
		<title>Diskussion:RaumZeitLabor/Netzwerk</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Diskussion:RaumZeitLabor/Netzwerk&amp;diff=5666"/>
		<updated>2007-09-11T17:49:09Z</updated>

		<summary type="html">&lt;p&gt;Che: Angebot Printserver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ich habe vor, einen Switch für die FIXME-Treffen als &amp;quot;Leihgabe&amp;quot; zur Verfügung zu stellen. (soll vor Ort verbleiben,  außer wenn wir ihm mal selber brauchen würden).&lt;br /&gt;
Typ Nortel Baystack 450-24T, 24 Ports a 10/100MB, als IP-Adresse will ich 192.168.0.250 nehmen, SNMP soll Read-Only  freigegeben werden , nur 1 VLAN. Weitere Konfigurations-Infos wenn fertig.&lt;br /&gt;
&lt;br /&gt;
Bei Änderungswünschen bitte hier eintragen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin liefere ich noch einen kleinen Stapel Patchkabel und eine Steckdosenleiste mit 9 Anschlüssen. Damit muß dann nicht jeder auch noch einen Haufen Anschlußmaterial mitbringen.&lt;br /&gt;
&lt;br /&gt;
Übergabetermin ist noch offen, sollte aber spätestens beim nächsten FIXME Treffen sein.&lt;br /&gt;
--[[Benutzer:Che|che]] 18:36, 8. Sep. 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Hallo Che,&lt;br /&gt;
: finde das eine &#039;&#039;&#039;Gute Idee&amp;amp;trade;&#039;&#039;&#039;, so ein Switch kann man immer mal brauchen und letztlich ist es egal, in welchem Keller oder Speicher man ihn aufbewahrt. Wir sollten das Thema &#039;&#039;&#039;Toolbox&#039;&#039;&#039; nochmal besprechen, irgendwas, was man entweder tragen oder rollen kann. So eine Kiste könnte darüber hinaus im Laufe der Zeit angereichert werden mit folgenden Dingen:&lt;br /&gt;
:* 50er Pack Holzwäscheklammern für Peg-DHCP ;)&lt;br /&gt;
:* Standardwerkzeug (Schraubendreher, etc)&lt;br /&gt;
:* den Switch und Patchkabel&lt;br /&gt;
:* Spezialkabel (Crosslink, Doppelverbinder, ...)&lt;br /&gt;
&amp;lt;!--:* WLAN-Verlängerungskabel --&amp;gt;&lt;br /&gt;
:* rückstandsfrei ablösbares Klebeband&lt;br /&gt;
:* ggf. kleiner (alter, gebrauchter) LASER-Drucker, Printserver&lt;br /&gt;
:* Wechselstrom-Equipment (Schuko-Verlängerungen, Verteiler)&lt;br /&gt;
:* Papier und Stifte (Drucker und für Schilder, Beschriftungen)&lt;br /&gt;
: --[[Benutzer:Rabe|rabe]] 19:07, 11. Sep. 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
:: hallo&lt;br /&gt;
:: einen Printserver mit Parallelport ( plus 1 Seriellport ), kein USB,  kann ich auch noch dazupacken&lt;br /&gt;
:: Typ Lantronix EPS1 , spricht IP, Appletalk, LAT und noch was&lt;br /&gt;
:: so einen setze ich zuhause auch ein&lt;br /&gt;
:: und falls jemand mal einen LWL-Anschluß braucht könnte ich wahrscheinlich auch noch aushelfen,&lt;br /&gt;
:: das aber leider nur mit 10MB Ethernet&lt;br /&gt;
::  --[[Benutzer:Che|che]] 19:49, 11. Sep. 2007 (CEST)&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Diskussion:RaumZeitLabor/Netzwerk&amp;diff=5662</id>
		<title>Diskussion:RaumZeitLabor/Netzwerk</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Diskussion:RaumZeitLabor/Netzwerk&amp;diff=5662"/>
		<updated>2007-09-08T16:36:26Z</updated>

		<summary type="html">&lt;p&gt;Che: Beistellung Netzwerksequipment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ich habe vor, einen Switch für die FIXME-Treffen als &amp;quot;Leihgabe&amp;quot; zur Verfügung zu stellen. ( soll vor Ort verbleiben  außer wenn wir ihm mal selber brauchen würden )&lt;br /&gt;
&lt;br /&gt;
Typ Nortel Baystack 450-24T , 24 Ports a 10/100MB, als IP-Adresse will ich 192.168.0.250 nehmen, SNMP soll Read-Only  freigegeben werden , nur 1 VLAN. Weitere Konfigurations-Infos wenn fertig.&lt;br /&gt;
&lt;br /&gt;
Bei Änderungswünschen bitte hier eintragen&lt;br /&gt;
&lt;br /&gt;
Weiterhin liefere ich noch einen kleinen Stapel Patchkabel und eine Steckdosenleiste mit 9 Anschlüssen. Damit muß dann nicht jeder auch noch einen Haufen Anschlußmaterial mitbringen.&lt;br /&gt;
&lt;br /&gt;
Übergabetermin ist noch offen, sollte aber spätestens beim nächsten FIXME Treffen sein.&lt;br /&gt;
--[[Benutzer:Che|che]] 18:36, 8. Sep. 2007 (CEST)&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=UUGRN:Jails/che&amp;diff=5658</id>
		<title>UUGRN:Jails/che</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=UUGRN:Jails/che&amp;diff=5658"/>
		<updated>2007-08-26T19:08:44Z</updated>

		<summary type="html">&lt;p&gt;Che: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Verantwortlich für dieses Jail ist: Hans-Hermann Schafft&lt;br /&gt;
&lt;br /&gt;
Das Jail wurde am 22.8.2007 in Betrieb genommen.&lt;br /&gt;
&lt;br /&gt;
== Accounts ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dienste ==&lt;br /&gt;
&lt;br /&gt;
== Planung ==&lt;br /&gt;
vorläufig 2 neue Webseiten&lt;br /&gt;
&lt;br /&gt;
alles andere ist noch offen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Navigationsleiste Systeme}}&lt;br /&gt;
[[Kategorie:Benutzerjail]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Diskussion:Ausbildungs-Zertifizierungen&amp;diff=5537</id>
		<title>Diskussion:Ausbildungs-Zertifizierungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Diskussion:Ausbildungs-Zertifizierungen&amp;diff=5537"/>
		<updated>2007-07-23T08:38:47Z</updated>

		<summary type="html">&lt;p&gt;Che: Die Seite wurde neu angelegt: Wenn auf der Seite ein Verweis auf diese Diskussionsseite steht sollte die auch mit entsprechendem Inhalt gefüllt sein, z.B. was genauere Angaben was dort reklamiert w...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wenn auf der Seite ein Verweis auf diese Diskussionsseite steht sollte die auch mit entsprechendem Inhalt gefüllt sein,&lt;br /&gt;
z.B. was genauere Angaben was dort reklamiert wird&lt;br /&gt;
--[[Benutzer:Che|che]] 10:38, 23. Jul. 2007 (CEST)&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Fluxbox&amp;diff=5159</id>
		<title>Fluxbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Fluxbox&amp;diff=5159"/>
		<updated>2007-04-22T19:13:09Z</updated>

		<summary type="html">&lt;p&gt;Che: /* Themes */ aktualisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
Achtung, einige Kapitel sind noch leer, werden noch gefüllt.&lt;br /&gt;
Sind drin für eine einheitliche Optik der Fenstermanager.&lt;br /&gt;
Also bitte nicht löschen&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Fluxbox ist ein [[Windowmanager|Fenstermanager]] , der aus dem älteren [[blackbox]] Version 0.61 abgeleitet wurde.&lt;br /&gt;
Gleiches gilt dabei auch für eine Teil des Zubehörs.&lt;br /&gt;
Die Konfigurationsmöglichkeiten sind aber vielfältiger&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Mehrere Desktopoberflächen sind möglich, default ist 4.&lt;br /&gt;
Vorhanden ist eine konfigurierbare Toolbar, bei der beispielsweise eingefügt werden können :  &lt;br /&gt;
Wechsel zum nächsten / vorhergehendem Desktop;&lt;br /&gt;
Wechsel zum nächsten / vorhergehendem Fenster;&lt;br /&gt;
die Uhrzeit des Rechners;&lt;br /&gt;
Die geöffneten Fenster werden in der Toolbar angezeigt und können von dort aus auch direkt angewählt werden.&lt;br /&gt;
&lt;br /&gt;
Beim Verschieben von Fenstern wird die Positionsangabe der Ecke Links oben auf dem Bildschirm angezeigt.&lt;br /&gt;
Gleiches gilt beim Verändern der Fenstergröße mit Angabe von Höhe und Breite.&lt;br /&gt;
&lt;br /&gt;
Besonderheit ist, daß mehrere Fenster zusammengefügt werden können, die sich einen gemeinsamen Rahmen teilen. &lt;br /&gt;
Die obere Kante des Rahmens ist dann in Tabs unterteilt zur Anwahl der Fenster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
fbdesk&lt;br /&gt;
Desktop Manager&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
sind möglich, die Positionierung wird in der Init-Datei festgelegt&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
fluxter&lt;br /&gt;
zeigt in einem kleinen Fenster ein Abbild der Desktopoberflächen mit Lage der offenen Fenster. Diese lassen sich damit einfach verschieben, auch zwischen den Desktops&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Konfigurierbar sind beispielsweise :&lt;br /&gt;
* Anzahl und Namen der Desktop-Oberflächen&lt;br /&gt;
* Toolbar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
Wer von [[Blackbox]] zu Fluxbox wechselt kann seine bisherigen Konfigurationsfiles fast 1:1 übernehmen.&lt;br /&gt;
&lt;br /&gt;
* Userspezifische Konfigurationen&lt;br /&gt;
** $HOME/.fluxbox/init : Initialisierungsdatei&lt;br /&gt;
** $HOME/.fluxbox/fbdesk.icons : Konfiguration für fbdesk&lt;br /&gt;
** die folgenden Dateien liegen defaultmaßig auch im Verzeichnis .fluxbox, können aber in der init-Datei individuell definiert werden &lt;br /&gt;
** menu : die Menue-Liste zur Auswahl der Programme&lt;br /&gt;
** keys : die Tastaturbelegung&lt;br /&gt;
** slitlist : Reihenfolge der Dockables&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
die Angabe der Themes-Datei steht in $HOME/.fluxbox/init&lt;br /&gt;
&lt;br /&gt;
in Themes werden über Parameterlisten konfiguriert &lt;br /&gt;
* Farben , z.B. für Fensterrahmen, Menu , Taskleiste&lt;br /&gt;
* Farbverläufe, wenn nicht einfarbig&lt;br /&gt;
* Fonts&lt;br /&gt;
* Rahmengrößen&lt;br /&gt;
in alten Versionen ( bis 0.9.14 , März 2006 ) gibt es das Kommando rootCommand zum Füllen des root-Fensters.&lt;br /&gt;
Ab Version 0.9.15 gibt es dafür die Parameter background , background.color , background.colorTo und background.pixmap .&lt;br /&gt;
Ältere Themes-Pakete müssen dazu angepaßt werden.&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://fluxbox.sourceforge.net/ Homepage]&lt;br /&gt;
* [http://themes.freshmeat.net/browse/962/ Sammlung Themes]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=TWM&amp;diff=5136</id>
		<title>TWM</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=TWM&amp;diff=5136"/>
		<updated>2007-04-15T18:34:03Z</updated>

		<summary type="html">&lt;p&gt;Che: Anmerkung  rein, nicht sichtbar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
Achtung, einige Kapitel sind noch leer, werden noch gefüllt.&lt;br /&gt;
Sind drin für eine einheitliche Optik der Fenstermanager.&lt;br /&gt;
Also bitte nicht löschen&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Toms Window Manager oder auch Tab Window Manager, kurz TWM genannt, ist einer der ältesten [[Windowmanager|Fenstermanager]].&lt;br /&gt;
&lt;br /&gt;
Er ist sehr klein gehalten, Toolbars und ähnliches gibt es nicht.&lt;br /&gt;
TWM ist Bestandteil der X-Server-Distribution, er wird automatisch mit dem X-Server installiert.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Gewöhnungsbedürftig ist die Veränderung der Fenstergröße und das fehlende Exit- oder Quit-Knöpfchen&lt;br /&gt;
im Fensterrahmen zum Schließen des Fensters.&lt;br /&gt;
&lt;br /&gt;
Als interessanter Gag kann für das Minimieren und wieder Öffnen der Fenster ein Zoom-Effekt eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
Der Hintergrund kann einfarbig über die Konfigurationsdatei eingestellt werden. Für andere Einstellungen müssen&lt;br /&gt;
die Tools von anderen [[Windowmanager|Fenstermanager]] genommen werden.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
keine, muß alles per Editor erstellt werden&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
Der TWM benutzt nur eine einzige Konfigurationsdatei, die in verschiedenen Verzeichnissen liegen kann.&lt;br /&gt;
Genommen wird die zuerst gefundene in der unten aufgelisteten Reihenfolge :&lt;br /&gt;
&lt;br /&gt;
im Home-Verzeichnis des Users : .twmrc&lt;br /&gt;
&lt;br /&gt;
in /usr/X11R6/lib/X11/twm/ : .twmrc&lt;br /&gt;
&lt;br /&gt;
als Muster wird mitgeliefert /usr/X11R6/lib/X11/twm/system.twmrc&lt;br /&gt;
&lt;br /&gt;
Die letztere Datei wird auch genommen, wenn alle anderen fehlen.&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
Das Menu wird durch die linke Maustaste aufgeklappt, Submenus können eingefügt werden.&lt;br /&gt;
Icons, Textfarben, Hintergrundfarben können konfiguriert werden für :&lt;br /&gt;
* das komplette Menu&lt;br /&gt;
* jedes Submenu individuell&lt;br /&gt;
* jeden Menupunkt einzeln&lt;br /&gt;
* mit fließenden Hintergrundfarben&lt;br /&gt;
&lt;br /&gt;
=== Tastaturbelegungen ===&lt;br /&gt;
&lt;br /&gt;
Tastaturbelegungen sind frei einstellbar.&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
gibt es nicht für den TWM&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
Farbgestaltung der Menuleiste &lt;br /&gt;
&lt;br /&gt;
[[Bild:Twm-farbmuster-01.gif|right|Beispiel 1 für Farbgestaltung des Menus]]&lt;br /&gt;
[[Bild:Twm-farbmuster-02.gif|right|Beispiel 2 für Farbgestaltung des Menus]]&lt;br /&gt;
&lt;br /&gt;
menu &amp;quot;Demo&amp;quot;&lt;br /&gt;
:{&lt;br /&gt;
:&amp;quot;-- viele Farben --&amp;quot; (&amp;quot;blue&amp;quot;:&amp;quot;pink&amp;quot;) f.title&lt;br /&gt;
:&amp;quot;Zeile1&amp;quot;	(&amp;quot;red&amp;quot;:&amp;quot;blue&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile2&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile3&amp;quot;	f.menu &amp;quot;Demo-Sub1&amp;quot;&lt;br /&gt;
:&amp;quot;Zeile4&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile5&amp;quot;	(&amp;quot;white&amp;quot;:&amp;quot;black&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile6&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile7&amp;quot;	f.menu &amp;quot;Demo-Sub2&amp;quot;&lt;br /&gt;
:&amp;quot;Zeile8&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile9&amp;quot;	(&amp;quot;yellow&amp;quot;:&amp;quot;green&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile10&amp;quot;	(&amp;quot;black&amp;quot;:&amp;quot;white&amp;quot;) f.nop&lt;br /&gt;
:}&lt;br /&gt;
&lt;br /&gt;
menu &amp;quot;Demo-Sub1&amp;quot;&lt;br /&gt;
:{&lt;br /&gt;
:&amp;quot;-- Beispiel 2 --&amp;quot;	(&amp;quot;white&amp;quot;:&amp;quot;red&amp;quot;) f.title&lt;br /&gt;
:&amp;quot;Zeile11&amp;quot;		(&amp;quot;blue&amp;quot;:&amp;quot;rgb:e/e/7&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile12&amp;quot;		(&amp;quot;blue&amp;quot;:&amp;quot;rgb:e/e/7&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile13&amp;quot;		(&amp;quot;blue&amp;quot;:&amp;quot;rgb:e/e/7&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile14&amp;quot;		(&amp;quot;blue&amp;quot;:&amp;quot;rgb:e/e/7&amp;quot;) f.nop&lt;br /&gt;
:}&lt;br /&gt;
&lt;br /&gt;
menu &amp;quot;Demo-Sub2&amp;quot;&lt;br /&gt;
:{&lt;br /&gt;
:&amp;quot;-- Beispiel 3 --&amp;quot;	(&amp;quot;white&amp;quot;:&amp;quot;rgb:6/6/9&amp;quot;) f.title&lt;br /&gt;
:&amp;quot;Zeile21&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile22&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile23&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile24&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile25&amp;quot;	(&amp;quot;white&amp;quot;:&amp;quot;rgb:9/9/F&amp;quot;) f.nop&lt;br /&gt;
:}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Openbox&amp;diff=5135</id>
		<title>Openbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Openbox&amp;diff=5135"/>
		<updated>2007-04-15T18:33:11Z</updated>

		<summary type="html">&lt;p&gt;Che: Anmerkung  rein, nicht sichtbar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
Achtung, einige Kapitel sind noch leer, werden noch gefüllt.&lt;br /&gt;
Sind drin für eine einheitliche Optik der Fenstermanager.&lt;br /&gt;
Also bitte nicht löschen&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Openbox ist ein [[Windowmanager|Fenstermanager]] ähnlich dem [[TWM]].&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften und Bedienung ==&lt;br /&gt;
&lt;br /&gt;
Toolbars und ähnliches hat er nicht, aber er kann mehrere Desktops bedienen.&lt;br /&gt;
Das Menu wird defaultmäßig durch die rechte Maustaste aufgeklappt, die Anwahl des Menupunktes erfolgt durch die linke Maustaste&lt;br /&gt;
Minimierte Fenster verschwinden ganz, sie werden über das Menu wieder hervor geholt.&lt;br /&gt;
Ebenso erfolgt auch die Anwahl eines anderen Desktops über das Menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
Zur Hilfe bei der Konfiguration gibt es das Programm [[obconf]], mit dem man eine Teil der rc.xml bearbeiten kann.&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
Hintergrundbilder und anderes werden durch zusätzliche Tools eingeblendet.&lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
keine&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Konfiguriert wird er über 2 Konfigurationsdateien im XML-Format:&lt;br /&gt;
;Die Dateien liegen normalerweise im Home-Pfad des Users im Unterverzeichnis .config/openbox&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
Zur Hilfe bei der Konfiguration gibt es das Programm [[obconf]], mit dem man eine Teil der rc.xml bearbeiten kann.&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
;rc.xml:hier steht die komplette Konfiguration des eigentlichen Fenstermanagers:&lt;br /&gt;
:* Tastaturbelegung&lt;br /&gt;
:* Mousekonfiguration&lt;br /&gt;
:* Anzahl, Name usw. der Desktops&lt;br /&gt;
:* Liste der Menu-Files&lt;br /&gt;
&lt;br /&gt;
;menu.xml:hier steht die Konfiguration des Hauptmenus &#039;&#039;( &amp;quot;root-menü )&#039;&#039; und der Submenus drin.&amp;lt;br&amp;gt;&lt;br /&gt;
:Speziell angepaßte Shell-Scripte können hier eingefügt werden, die dynamische Submenus mit beliebigen Funktioen erzeugen&lt;br /&gt;
:&#039;&#039;( Beispiel Prozeßliste mit Kill-Aufruf )&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Weitere Menu-Files können eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
[http://icculus.org/openbox/ Homepage Openbox]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://tr.openmonkey.com/pages/obconf/ Homepage Obconf]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Matchbox&amp;diff=5134</id>
		<title>Matchbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Matchbox&amp;diff=5134"/>
		<updated>2007-04-15T18:32:04Z</updated>

		<summary type="html">&lt;p&gt;Che: Anmerkung  rein, nicht sichtbar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
Achtung, einige Kapitel sind noch leer, werden noch gefüllt.&lt;br /&gt;
Sind drin für eine einheitliche Optik der Fenstermanager.&lt;br /&gt;
Also bitte nicht löschen&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Matchbox ist ein [[Windowmanager|Fenstermanager]] für Geräte mit kleinem Display, z.B. einem IPod oder embedded&lt;br /&gt;
Systeme. Seine Eigenschaften sind dementsprechend angepaßt.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Die Fenster sind immer maximiert und liegen sozusagen immer hintereinander. Dadurch ist immer nur eines zu sehen.&lt;br /&gt;
Die Anwahl der Fenster erfolgt unterschiedlich je nachdem welche zusätzlichen Komponenten installiert und&lt;br /&gt;
gestartet sind. In der Minimalversion wird links oben mit einem Button eine Auswahlliste geöffnet.&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
matchbox-panel&lt;br /&gt;
&lt;br /&gt;
damit wird unten eine Taskleiste eingeblendet. In der Default-Einstellung enthält sie rechts die Uhrzeit und links&lt;br /&gt;
einen Startknopf für ein Menu, das damit geöffnet wird. Weitere Funktionen wie Link auf xterm sind einstellbar.&lt;br /&gt;
Es können gleichzeitig mehrere Taskleisten gestartet werden. Die Unterscheidung erfolgt durch Angabe von --id &amp;lt;nummer&amp;gt; beim Start.&#039;&#039;( Default-Nr ist 1)&#039;&#039;. Weitere Startparameter sind möglich, z.B. die Farbe mit -c &amp;lt;farbe&amp;gt; oder die Ausrichtung am Bildschirmrand mit --orientation &amp;lt;south / east / north / west&amp;gt; &#039;&#039;Default ist unten = south&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
matchbox-desktop&lt;br /&gt;
&lt;br /&gt;
ein eigenes Fenster, in denen verschiedene Verzeichnisse dargestellt werden. Darin befinden sich die Links zum&lt;br /&gt;
Starten der Programme. In einem dieser Verzeichnisse sind die Links auf die zur Zeit offenen Fenster.&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
so einfach matchbox auch scheint, die Konfiguration ist komplex.&lt;br /&gt;
&lt;br /&gt;
Infos folgen hier noch&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
*Für Links in der Taskleiste :&lt;br /&gt;
** $HOME/.matchbox/mbdock.session&lt;br /&gt;
** für Taskleisten mit anderer ID als 1 wird ein.&amp;lt;id-nummer&amp;gt; an den Filenamen angehängt&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
sind möglich&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://projects.o-hand.com/matchbox/ Homepage Matchbox]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=ICEWM&amp;diff=5133</id>
		<title>ICEWM</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=ICEWM&amp;diff=5133"/>
		<updated>2007-04-15T18:30:55Z</updated>

		<summary type="html">&lt;p&gt;Che: Anmerkung  rein, nicht sichtbar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
Achtung, einige Kapitel sind noch leer, werden noch gefüllt.&lt;br /&gt;
Sind drin für eine einheitliche Optik der Fenstermanager.&lt;br /&gt;
Also bitte nicht löschen&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== allgemein ==&lt;br /&gt;
&lt;br /&gt;
IceWM ist ein handlicher [[Windowmanager|Fenstermanager]] mit einer Oberfläche ähnlich den großen Desktops .&lt;br /&gt;
Er läuft unter ca. 10 verschiedenen Systemen bzw. Hardwarearchitekturen.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Vorhanden sind eine Toolbar unten und eine Menu-Leiste, die durch eine Art &amp;quot;Start&amp;quot;-Knopf eingeblendet wird. Dadurch entsteht eine Oberfläche ähnlich Windows 98.&lt;br /&gt;
&lt;br /&gt;
Mehrere Desktopoberflächen sind möglich, default ist 4.&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
Das Hintergrundbild wird in der Datei preference festgelegt, die Anzeige erfolgt durch das Programm icewmbg&lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
keine&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
diese Funktion ist nicht vorhanden&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Konfigurierbar sind beispielsweise :&lt;br /&gt;
* Anzahl und Namen der Desktop-Oberflächen&lt;br /&gt;
* Toolbar ( Taskleiste ) 1- oder 2-zeilig&lt;br /&gt;
* in der Toolbar : &lt;br /&gt;
** Links auf die diversen Programme &lt;br /&gt;
** Anzeigen für Netzwerksbetrieb, CPU-Last, Uhr&lt;br /&gt;
* die Fensterrahmen ( Breite, Muster, Farben )&lt;br /&gt;
* Icons, Auswahl und Default-Verzeichnis&lt;br /&gt;
* Hintergrundfarbe&lt;br /&gt;
* Menuleiste&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
mit einem Tool namens icewmconf können die meisten Konfigurationspunkte über ein Menu bedient werden&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration erfolgt über verschiedene Textdateien, mindestens vorhanden sind :&lt;br /&gt;
{|&lt;br /&gt;
| width=80 | preferences&lt;br /&gt;
| alle allgemeinen Konfigurationsparameter als Kommentarzeile&lt;br /&gt;
|-&lt;br /&gt;
|programs &lt;br /&gt;
| oberer Teil der Menü-Leiste, enthält direkte Aufrufe von Programmen&lt;br /&gt;
|-&lt;br /&gt;
| menu&lt;br /&gt;
| unterer Teil der Menü-Leiste, enthält Aufrufe von Submenüs&lt;br /&gt;
|-&lt;br /&gt;
| toolbar&lt;br /&gt;
| für Aufrufe von Programmen aus Toolleiste unten    &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse, in denen die Default-Konfiguration liegen kann, sind unterschiedlich je nach System oder Tool :&lt;br /&gt;
* Default-Konfigurationen :&lt;br /&gt;
** /usr/local/share/icewm&lt;br /&gt;
** /usr/X11R6/lib/X11/icewm/&lt;br /&gt;
** /usr/local/lib/Xll/icewm/&lt;br /&gt;
* systemweit geänderte Konfigurationen&lt;br /&gt;
** /etc/X11/icewm/&lt;br /&gt;
** /etc/icewm&lt;br /&gt;
* Userspezifische Konfigurationen&lt;br /&gt;
** $HOME/.icewm&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
Submenus sind möglich und werden über eigene Dateien konfiguriert. Der Dateiname ist beliebig und muß nicht gleich dem Text im Hauptmenü sein.&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Themes und Pakete mit Icons für IceWM gibt es genügend freie im Internet,&lt;br /&gt;
sie können aber problemlos durch eigenen ersetzt oder modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
Der Fensterrahmen wird durch mehrere kleine Bilddateien zusammengesetzt, die Rahmenbreite ist aber noch konfigurierbar. &#039;&#039;( Vorsicht, Breite nicht auf 0 setzen, sind dann nicht mehr verstellbar )&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dateiformat für Icons und Fensterrahmen ist [[XPM]]&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.icewm.org/ Homepage IceWM]&lt;br /&gt;
* [http://www.sdboyd56.com/icewmconf/ Homepage icewmconf]&lt;br /&gt;
* [http://www.themes.org/ Sammlung Themes]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Fluxbox&amp;diff=5132</id>
		<title>Fluxbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Fluxbox&amp;diff=5132"/>
		<updated>2007-04-15T18:29:32Z</updated>

		<summary type="html">&lt;p&gt;Che: Anmerkung  rein, nicht sichtbar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
Achtung, einige Kapitel sind noch leer, werden noch gefüllt.&lt;br /&gt;
Sind drin für eine einheitliche Optik der Fenstermanager.&lt;br /&gt;
Also bitte nicht löschen&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Fluxbox ist ein [[Windowmanager|Fenstermanager]] , der aus dem älteren [[blackbox]] Version 0.61 abgeleitet wurde.&lt;br /&gt;
Gleiches gilt dabei auch für eine Teil des Zubehörs.&lt;br /&gt;
Die Konfigurationsmöglichkeiten sind aber vielfältiger&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Mehrere Desktopoberflächen sind möglich, default ist 4.&lt;br /&gt;
Vorhanden ist eine konfigurierbare Toolbar, bei der beispielsweise eingefügt werden können :  &lt;br /&gt;
Wechsel zum nächsten / vorhergehendem Desktop;&lt;br /&gt;
Wechsel zum nächsten / vorhergehendem Fenster;&lt;br /&gt;
die Uhrzeit des Rechners;&lt;br /&gt;
Die geöffneten Fenster werden in der Toolbar angezeigt und können von dort aus auch direkt angewählt werden.&lt;br /&gt;
&lt;br /&gt;
Beim Verschieben von Fenstern wird die Positionsangabe der Ecke Links oben auf dem Bildschirm angezeigt.&lt;br /&gt;
Gleiches gilt beim Verändern der Fenstergröße mit Angabe von Höhe und Breite.&lt;br /&gt;
&lt;br /&gt;
Besonderheit ist, daß mehrere Fenster zusammengefügt werden können, die sich einen gemeinsamen Rahmen teilen. &lt;br /&gt;
Die obere Kante des Rahmens ist dann in Tabs unterteilt zur Anwahl der Fenster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
fbdesk&lt;br /&gt;
Desktop Manager&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
sind möglich, die Positionierung wird in der Init-Datei festgelegt&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
fluxter&lt;br /&gt;
zeigt in einem kleinen Fenster ein Abbild der Desktopoberflächen mit Lage der offenen Fenster. Diese lassen sich damit einfach verschieben, auch zwischen den Desktops&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Konfigurierbar sind beispielsweise :&lt;br /&gt;
* Anzahl und Namen der Desktop-Oberflächen&lt;br /&gt;
* Toolbar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
Wer von [[Blackbox]] zu Fluxbox wechselt kann seine bisherigen Konfigurationsfiles fast 1:1 übernehmen.&lt;br /&gt;
&lt;br /&gt;
* Userspezifische Konfigurationen&lt;br /&gt;
** $HOME/.fluxbox/init : Initialisierungsdatei&lt;br /&gt;
** $HOME/.fluxbox/fbdesk.icons : Konfiguration für fbdesk&lt;br /&gt;
** die folgenden Dateien liegen defaultmaßig auch im Verzeichnis .fluxbox, können aber in der init-Datei individuell definiert werden &lt;br /&gt;
** menu : die Menue-Liste zur Auswahl der Programme&lt;br /&gt;
** keys : die Tastaturbelegung&lt;br /&gt;
** slitlist : Reihenfolge der Dockables&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
die Angabe der Themes-Datei steht in $HOME/.fluxbox/init&lt;br /&gt;
&lt;br /&gt;
in Themes werden über Parameterlisten konfiguriert &lt;br /&gt;
* Farben , z.B. für Fensterrahmen, Menu , Taskleiste&lt;br /&gt;
* Farbverläufe, wenn nicht einfarbig&lt;br /&gt;
* Fonts&lt;br /&gt;
* Rahmengrößen&lt;br /&gt;
hier kann auch ein Kommando zum Füllen des root-Fensters, z.B. mit Farbe oder Bild, aufgerufen werden&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://fluxbox.sourceforge.net/ Homepage]&lt;br /&gt;
* [http://themes.freshmeat.net/browse/962/ Sammlung Themes]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Fluxbox&amp;diff=5131</id>
		<title>Fluxbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Fluxbox&amp;diff=5131"/>
		<updated>2007-04-13T13:18:29Z</updated>

		<summary type="html">&lt;p&gt;Che: neu erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Fluxbox ist ein [[Windowmanager|Fenstermanager]] , der aus dem älteren [[blackbox]] Version 0.61 abgeleitet wurde.&lt;br /&gt;
Gleiches gilt dabei auch für eine Teil des Zubehörs.&lt;br /&gt;
Die Konfigurationsmöglichkeiten sind aber vielfältiger&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Mehrere Desktopoberflächen sind möglich, default ist 4.&lt;br /&gt;
Vorhanden ist eine konfigurierbare Toolbar, bei der beispielsweise eingefügt werden können :  &lt;br /&gt;
Wechsel zum nächsten / vorhergehendem Desktop;&lt;br /&gt;
Wechsel zum nächsten / vorhergehendem Fenster;&lt;br /&gt;
die Uhrzeit des Rechners;&lt;br /&gt;
Die geöffneten Fenster werden in der Toolbar angezeigt und können von dort aus auch direkt angewählt werden.&lt;br /&gt;
&lt;br /&gt;
Beim Verschieben von Fenstern wird die Positionsangabe der Ecke Links oben auf dem Bildschirm angezeigt.&lt;br /&gt;
Gleiches gilt beim Verändern der Fenstergröße mit Angabe von Höhe und Breite.&lt;br /&gt;
&lt;br /&gt;
Besonderheit ist, daß mehrere Fenster zusammengefügt werden können, die sich einen gemeinsamen Rahmen teilen. &lt;br /&gt;
Die obere Kante des Rahmens ist dann in Tabs unterteilt zur Anwahl der Fenster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
fbdesk&lt;br /&gt;
Desktop Manager&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
sind möglich, die Positionierung wird in der Init-Datei festgelegt&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
fluxter&lt;br /&gt;
zeigt in einem kleinen Fenster ein Abbild der Desktopoberflächen mit Lage der offenen Fenster. Diese lassen sich damit einfach verschieben, auch zwischen den Desktops&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Konfigurierbar sind beispielsweise :&lt;br /&gt;
* Anzahl und Namen der Desktop-Oberflächen&lt;br /&gt;
* Toolbar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
Wer von [[Blackbox]] zu Fluxbox wechselt kann seine bisherigen Konfigurationsfiles fast 1:1 übernehmen.&lt;br /&gt;
&lt;br /&gt;
* Userspezifische Konfigurationen&lt;br /&gt;
** $HOME/.fluxbox/init : Initialisierungsdatei&lt;br /&gt;
** $HOME/.fluxbox/fbdesk.icons : Konfiguration für fbdesk&lt;br /&gt;
** die folgenden Dateien liegen defaultmaßig auch im Verzeichnis .fluxbox, können aber in der init-Datei individuell definiert werden &lt;br /&gt;
** menu : die Menue-Liste zur Auswahl der Programme&lt;br /&gt;
** keys : die Tastaturbelegung&lt;br /&gt;
** slitlist : Reihenfolge der Dockables&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
die Angabe der Themes-Datei steht in $HOME/.fluxbox/init&lt;br /&gt;
&lt;br /&gt;
in Themes werden über Parameterlisten konfiguriert &lt;br /&gt;
* Farben , z.B. für Fensterrahmen, Menu , Taskleiste&lt;br /&gt;
* Farbverläufe, wenn nicht einfarbig&lt;br /&gt;
* Fonts&lt;br /&gt;
* Rahmengrößen&lt;br /&gt;
hier kann auch ein Kommando zum Füllen des root-Fensters, z.B. mit Farbe oder Bild, aufgerufen werden&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://fluxbox.sourceforge.net/ Homepage]&lt;br /&gt;
* [http://themes.freshmeat.net/browse/962/ Sammlung Themes]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Xbattbar&amp;diff=5127</id>
		<title>Xbattbar</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Xbattbar&amp;diff=5127"/>
		<updated>2007-04-10T22:29:45Z</updated>

		<summary type="html">&lt;p&gt;Che: interne Links rein&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;einfache Balkenanzeige für den Ladezustand des Akkus im Notebook.&lt;br /&gt;
&lt;br /&gt;
Der Balken ist am wahlweise rechten, linken, oberen oder unteren Bildrand plazierbar,  die Balkenbreite ist in Pixel einstellbar.&lt;br /&gt;
&lt;br /&gt;
Der Balken ist 2-farbig, für den Ladezustand und den Rest bis 100%, unterschiedlich für Betrieb mit und ohne Netzteil. Die Farben sind frei wählbar.&lt;br /&gt;
&lt;br /&gt;
Wenn die Maus über dem Balken steht erscheint in der Mitte des Bildschirms ein Textfeld mit prozentualer Anzeige des Ladezustandes.&lt;br /&gt;
&lt;br /&gt;
Die Informationen werden aus dem APM Modul des Systems ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die Homepage dieses Tools ist schon etwas älter (Feb. 2000), dort aufgelistete Betriebssysteme sind [[FreeBSD]] 3.x,4.x, [[NetBSD]] 1.3, [[Linux]] 2.2.&lt;br /&gt;
&lt;br /&gt;
funktionierende Binärpakete für NetBSD gibt es aber für Version 2.0 und für die i386 Hardware für 2.1 und 3.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
[http://iplab.aist-nara.ac.jp/member/suguru/xbattbar.html Homepage von xbattbar]&lt;br /&gt;
&lt;br /&gt;
[ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/sysutils/xbattbar/README.html NetBSD Package Collection]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Tool]]&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Ringkernspeicher&amp;diff=5125</id>
		<title>Ringkernspeicher</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Ringkernspeicher&amp;diff=5125"/>
		<updated>2007-04-10T22:23:17Z</updated>

		<summary type="html">&lt;p&gt;Che: Link zu Datenspeicher rein, kleine Erweiterung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ringkernspeicher waren jahrelang die [[Datenspeicher|Arbeitsspeicher]] der Computer.&lt;br /&gt;
&lt;br /&gt;
Sie bestanden aus einer Matrix von winzigen Eisenringen.&lt;br /&gt;
Jeder Ring war ein einzelnes Bit.&lt;br /&gt;
Zum Lesen und Schreiben der Daten wurden 3 Drähte durch jeden Ring geführt :&lt;br /&gt;
Diese Drähte wurden händisch von Frauen durch die Kerne gefädelt !&lt;br /&gt;
Hier konnten die Speicher noch bitweise repariert werden ( und wurden sie auch ! )&lt;br /&gt;
&lt;br /&gt;
Anfang der 1980er Jahre wurden sie durch Einsatz der [[Datenspeicher|Halbleiterspeicher]] ersetzt.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Ringkernspeicher war, das sie auch nach Stromausfall ihre Daten behalten konnten.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Hardware ]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Editor&amp;diff=5121</id>
		<title>Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Editor&amp;diff=5121"/>
		<updated>2007-04-10T22:04:02Z</updated>

		<summary type="html">&lt;p&gt;Che: Kategorie Tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Editor ist mit das wichtigste Programm auf einem Computer.&lt;br /&gt;
Er dient dazu, Textdateien beliebiger Form zu bearbeiten.&lt;br /&gt;
Ein Editor muß alle folgenden Funktionen können :&lt;br /&gt;
* Erstellen einer neuen Datei&lt;br /&gt;
* Öffnen einer vorhandenen Datei&lt;br /&gt;
* Anzeigen des Dateiinhaltes&lt;br /&gt;
* Ändern von beliebigen Daten in einer Datei&lt;br /&gt;
* Löschen von beliebigen Daten in einer Datei&lt;br /&gt;
* Schreiben der ( geänderten ) Daten aus einer in diese oder eine andere Datei&lt;br /&gt;
und das ganze interaktiv, das heißt durch einen Dialog&lt;br /&gt;
* mit Positionierung des Cursors auf die betreffende Stelle&lt;br /&gt;
oder&lt;br /&gt;
* durch Eingabe in eine spezielle Kommandozeile&lt;br /&gt;
und sie müssen alle diese Aufgaben können, nicht nur einen Teil davon.&lt;br /&gt;
Andererseits darf ein Editor eine Datei nicht löschen, da sind andere Tools des [[Betriebssystem]]s für zuständig.&lt;br /&gt;
Allerdings darf er eine leere Datei erstellen bzw. eine Datei leer machen und so speichern.&lt;br /&gt;
&lt;br /&gt;
Editoren gibt es viele auf der Welt, für jedes [[Betriebssystem]] ein paar spezielle,&lt;br /&gt;
in der Linux/Unix-Umgebung z.B.&lt;br /&gt;
&lt;br /&gt;
* [[vi]] der älteste und wohl auch bekannteste mit verschiedenen Abkömmlingen,&lt;br /&gt;
* [[emacs]] auch alt, mit graphischer Oberfläche&lt;br /&gt;
* wer ist der kleinste : [[pico]] , [[nano]]&lt;br /&gt;
* [[Leafpad]]&lt;br /&gt;
* [[NEdit]]&lt;br /&gt;
* aus der [[KDE]]-Welt : [[KWrite]] und [[KEdit]]&lt;br /&gt;
für die besonderen Fälle&lt;br /&gt;
* [[HTML-Editoren]] wie [[Bluefish]] und [[Quanta]]&lt;br /&gt;
* [[Hex-Editoren]] zum Editieren von Binär-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Tool]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Editor&amp;diff=5119</id>
		<title>Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Editor&amp;diff=5119"/>
		<updated>2007-04-10T21:51:27Z</updated>

		<summary type="html">&lt;p&gt;Che: kategorisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Editor ist mit das wichtigste Programm auf einem Computer.&lt;br /&gt;
Er dient dazu, Textdateien beliebiger Form zu bearbeiten.&lt;br /&gt;
Ein Editor muß alle folgenden Funktionen können :&lt;br /&gt;
* Erstellen einer neuen Datei&lt;br /&gt;
* Öffnen einer vorhandenen Datei&lt;br /&gt;
* Anzeigen des Dateiinhaltes&lt;br /&gt;
* Ändern von beliebigen Daten in einer Datei&lt;br /&gt;
* Löschen von beliebigen Daten in einer Datei&lt;br /&gt;
* Schreiben der ( geänderten ) Daten aus einer in diese oder eine andere Datei&lt;br /&gt;
und das ganze interaktiv, das heißt durch einen Dialog&lt;br /&gt;
* mit Positionierung des Cursors auf die betreffende Stelle&lt;br /&gt;
oder&lt;br /&gt;
* durch Eingabe in eine spezielle Kommandozeile&lt;br /&gt;
und sie müssen alle diese Aufgaben können, nicht nur einen Teil davon.&lt;br /&gt;
Andererseits darf ein Editor eine Datei nicht löschen, da sind andere Tools des [[Betriebssystem]]s für zuständig.&lt;br /&gt;
Allerdings darf er eine leere Datei erstellen bzw. eine Datei leer machen und so speichern.&lt;br /&gt;
&lt;br /&gt;
Editoren gibt es viele auf der Welt, für jedes [[Betriebssystem]] ein paar spezielle,&lt;br /&gt;
in der Linux/Unix-Umgebung z.B.&lt;br /&gt;
&lt;br /&gt;
* [[vi]] der älteste und wohl auch bekannteste mit verschiedenen Abkömmlingen,&lt;br /&gt;
* [[emacs]] auch alt, mit graphischer Oberfläche&lt;br /&gt;
* wer ist der kleinste : [[pico]] , [[nano]]&lt;br /&gt;
* [[Leafpad]]&lt;br /&gt;
* [[NEdit]]&lt;br /&gt;
* aus der [[KDE]]-Welt : [[KWrite]] und [[KEdit]]&lt;br /&gt;
für die besonderen Fälle&lt;br /&gt;
* [[HTML-Editoren]] wie [[Bluefish]] und [[Quanta]]&lt;br /&gt;
* [[Hex-Editoren]] zum Editieren von Binär-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Datei:Twm-farbmuster-02.gif&amp;diff=5118</id>
		<title>Datei:Twm-farbmuster-02.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Datei:Twm-farbmuster-02.gif&amp;diff=5118"/>
		<updated>2007-04-10T18:03:13Z</updated>

		<summary type="html">&lt;p&gt;Che: Kategorien rein&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beispiel (2), wie man die Menuleiste im twm farblich gestalten kann&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Screenshot]]&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Datei:Twm-farbmuster-01.gif&amp;diff=5117</id>
		<title>Datei:Twm-farbmuster-01.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Datei:Twm-farbmuster-01.gif&amp;diff=5117"/>
		<updated>2007-04-10T18:02:41Z</updated>

		<summary type="html">&lt;p&gt;Che: Kategorie rein&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beispiel (1), wie man die Menuleiste im twm farblich gestalten kann&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Screenshot]]&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=FreeBSD/Ports/portupgrade&amp;diff=5108</id>
		<title>FreeBSD/Ports/portupgrade</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=FreeBSD/Ports/portupgrade&amp;diff=5108"/>
		<updated>2007-04-09T20:13:18Z</updated>

		<summary type="html">&lt;p&gt;Che: cvsup -&amp;gt; CVSup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel wird die Toolsammlung aus [[portupgrade]] vorstellen und zeigen, welche Alltagsprobleme der FreeBSD Ports damit gelöst werden können.&lt;br /&gt;
&lt;br /&gt;
== Das Problem ==&lt;br /&gt;
Gerade wer seine Ports nicht auf einem festen RELEASE-Stand einfrieren will, sondern immer die aktuellste Software und die letzten Releases von Drittsoftware haben möchte, wird schnell bemerken,  dass die FreeBSD Ports aus dem [[HEAD-Branch]] (siehe: [[CVS]] und [[CVSup]]) ein moving target sind, das nur selten bis nie einen konsistenten Zustand aus Abhängigkeiten bestimmter Versionen hat.&lt;br /&gt;
&lt;br /&gt;
Insbesondere wenn zu einem späteren Zeitpunkt Software nachinstalliert werden soll, wenn sich in der Zwischenzeit zahlreichen Abhängigkeiten leicht verändert haben, z.B. neuere Versionsnummern verfügbar sind als die der bereits installierten Ports, kommt man um die portupgrade-Tools kaum herum.&lt;br /&gt;
&lt;br /&gt;
Portupgrade &amp;quot;erkennt&amp;quot; diese Probleme und führt on-the-fly Korrekturen bei den registrierten Abhängigkeiten durch, erkennt bei Installation oder Update einzelner Ports vorab die korrekte Reihenfolge der Abhängigkeiten und sorgt dafür, dass die Ports Infrastruktur nicht in zyklische Abhängigkeiten oder konkurrierende Versionsabhängigkeiten laufen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Tools ==&lt;br /&gt;
=== [[portupgrade]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[portinstall]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[portsdb]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[pkgdb]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[portsclean]] ===&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
[[Kategorie:FreeBSD]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=FreeBSD/Ports/update&amp;diff=5107</id>
		<title>FreeBSD/Ports/update</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=FreeBSD/Ports/update&amp;diff=5107"/>
		<updated>2007-04-09T20:12:14Z</updated>

		<summary type="html">&lt;p&gt;Che: cvsup -&amp;gt; CVSup, csv -&amp;gt; CVS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel soll kurz die Möglichkeiten und Beispielkonfigurationen für das Updates der Ports-Infrastruktur (nicht die Software selbst) zusammentragen und einen Überblick verschaffen, was man als best-practise einsetzen kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mechanismen ==&lt;br /&gt;
=== [[CVSup]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[portsnap]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[CVS]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[ctm]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
[[Kategorie:FreeBSD]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Real_Virtuality/Netzwerk&amp;diff=5106</id>
		<title>Real Virtuality/Netzwerk</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Real_Virtuality/Netzwerk&amp;diff=5106"/>
		<updated>2007-04-09T20:07:26Z</updated>

		<summary type="html">&lt;p&gt;Che: cvsup -&amp;gt; CVSup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wie zu jeder Veranstaltung von UUGRN steht jedem Teilnehmer WLAN oder mindestens ein [[100BaseT]] [[Ports (Netzwerk)|Netzwerkport]] mit DHCP zur Verfügung. &lt;br /&gt;
Statische IPs auf Anfrage vor Ort.&lt;br /&gt;
&lt;br /&gt;
== Koordinaten == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 | v4-Netz || 192.168.0.0/24&lt;br /&gt;
 |-&lt;br /&gt;
 | DHCP || 192.168.0.30 - 192.168.0.254&lt;br /&gt;
 |-&lt;br /&gt;
 | v4-Gateway || 192.168.0.1&lt;br /&gt;
 |-&lt;br /&gt;
 | Proxy (freiwillig) || 192.168.0.9:3128&lt;br /&gt;
 |-&lt;br /&gt;
 | DNS || 192.168.0.9 und 192.168.0.1&lt;br /&gt;
 |-&lt;br /&gt;
 | WLAN SSID || UUGRNPARTY&lt;br /&gt;
 |-&lt;br /&gt;
 | WEP-Schlüssel || Bitte Aushang beachten&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Internet ==&lt;br /&gt;
Wir werden wieder einen Internetzugang haben. Dieser soll &#039;&#039;&#039;nicht&#039;&#039;&#039; dazu dienen massiv Downloads zu betreiben.&lt;br /&gt;
&lt;br /&gt;
=== IPv6 ===&lt;br /&gt;
Es wird wieder eine IPv6-Connection geben. IPv6-fähige Geräte einfach auf &amp;quot;Auto-Konfiguration&amp;quot; stellen. &lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
Unter &#039;&#039;&#039;192.168.0.9&#039;&#039;&#039; bzw. &#039;&#039;&#039;ftp.party.uugrn.org&#039;&#039;&#039; werden wir einen FTP-Server bereitstellen. &lt;br /&gt;
Dieser wird mit relevanten Mirrors versorgt sein. Bitte Wünsche an [[Benutzer:Rabe|Raphael]].&lt;br /&gt;
&lt;br /&gt;
Der gleiche Server hält auch das &#039;&#039;&#039;CVS-Repository von FreeBSD&#039;&#039;&#039;&#039; (&#039;&#039;&#039;[[CVSup]]&#039;&#039;&#039;) vor, &lt;br /&gt;
ebenso wie relevante &#039;&#039;&#039;distfiles&#039;&#039;&#039; und ggf. &#039;&#039;&#039;packages&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Veranstaltung]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Spring_Party_06/Netzwerk&amp;diff=5105</id>
		<title>Spring Party 06/Netzwerk</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Spring_Party_06/Netzwerk&amp;diff=5105"/>
		<updated>2007-04-09T20:06:25Z</updated>

		<summary type="html">&lt;p&gt;Che: cvsup -&amp;gt; CVSup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wie jedes Jahr steht jedem Teilnemer mindestens ein [[100BaseT]] [[Ports (Netzwerk)|Netzwerkport]] zur Verfügung. &lt;br /&gt;
Andere Netzwerktypen wie [[10Base2]] (BNC) können unter Umständen ebenfalls bereitgestellt werden. &lt;br /&gt;
Dazu bitte [[Benutzer:Ph3-der-loewe|Ph3-der-loewe]] kontaktieren. &lt;br /&gt;
Auch wird es wieder [[WLAN]] geben. Die Zuweisung der [[IP]]s geschiet mittels [[DHCP]]. &lt;br /&gt;
Ist dies aus irgendeinem Grunde nicht moeglich (z.B. koennen einige kleine Geraete wie [[Printserver]] oder aehnliches kein [[DHCP]]) &lt;br /&gt;
so bitte vor Ort an [[Benutzer:Rabe|Rabe]] wenden.&lt;br /&gt;
&lt;br /&gt;
= Koordinaten = &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 | v4-Netz || 192.168.0.0/24&lt;br /&gt;
 |-&lt;br /&gt;
 | DHCP || 192.168.0.30 - 192.168.0.254&lt;br /&gt;
 |-&lt;br /&gt;
 | v4-Gateway || 192.168.0.1&lt;br /&gt;
 |-&lt;br /&gt;
 | Proxy (freiwillig) || 192.168.0.9:3128&lt;br /&gt;
 |-&lt;br /&gt;
 | DNS || 192.168.0.9 und 192.168.0.1&lt;br /&gt;
 |-&lt;br /&gt;
 | WLAN SSID || UUGRNPARTY&lt;br /&gt;
 |-&lt;br /&gt;
 | WEP-Schlüssel || Bitte Aushang beachten&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
= Internet =&lt;br /&gt;
Wir werden wieder einen Internetzugang haben. Dieser soll &#039;&#039;&#039;nicht&#039;&#039;&#039; dazu dienen massiv Downloads zu betreiben.&lt;br /&gt;
&lt;br /&gt;
== IPv6 ==&lt;br /&gt;
Es wird wieder eine IPv6-Connection geben. IPv6-fähige Geräte einfach auf &amp;quot;Auto-Konfiguration&amp;quot; stellen. &lt;br /&gt;
&lt;br /&gt;
= Server =&lt;br /&gt;
Unter &#039;&#039;&#039;192.168.0.9&#039;&#039; bzw. &#039;&#039;&#039;ftp.party.uugrn.org&#039;&#039;&#039; werden wir einen FTP-Server bereitstellen. &lt;br /&gt;
Dieser wird mit relevanten Mirrors versorgt sein. Bitte Wünsche an [[Benutzer:Rabe|Raphael]].&lt;br /&gt;
&lt;br /&gt;
Der gleiche Server hält auch das &#039;&#039;&#039;CVS-Repository von FreeBSD&#039;&#039;&#039;&#039; (&#039;&#039;&#039;[[CVSup]]&#039;&#039;&#039;) vor, &lt;br /&gt;
ebenso wie relevante &#039;&#039;&#039;distfiles&#039;&#039;&#039; und ggf. &#039;&#039;&#039;packages&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Musik kann via &#039;&#039;&#039;esound&#039;&#039;&#039; an den Server geschickt werden (Jeder nur ein Kreuz!)&lt;br /&gt;
&lt;br /&gt;
= !100BaseT =&lt;br /&gt;
* [[10Base2|10Base2 (BNC)]] ist nun als verfuegbar geklaert.&lt;br /&gt;
* 1000Base* koennen wir dieses mal leider nicht anbieten.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Veranstaltung]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Tipps_und_Tricks&amp;diff=5095</id>
		<title>Tipps und Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Tipps_und_Tricks&amp;diff=5095"/>
		<updated>2007-04-09T19:09:16Z</updated>

		<summary type="html">&lt;p&gt;Che: Link auf vermeidbare Fehler rein&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Unterhalb dieser Seite können Artikel verlinkt werden, die Problemlösungen beschreiben. &lt;br /&gt;
&lt;br /&gt;
Eine Strukturierung dieser Sammlung wird es im Laufe der Zeit geben.&lt;br /&gt;
&lt;br /&gt;
== [[Betriebssystem]] ==&lt;br /&gt;
=== [[:Kategorie:BSD|BSD]] ===&lt;br /&gt;
* [[BSD:Firefox mit Flash-Plugin]]&lt;br /&gt;
* [[FreeBSD Console]]&lt;br /&gt;
&lt;br /&gt;
=== [[:Kategorie:Linux|Linux]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[:Kategorie:Software|Software]] ==&lt;br /&gt;
&lt;br /&gt;
=== Drucker ===&lt;br /&gt;
* [[LPD mit gimp-print]]&lt;br /&gt;
&lt;br /&gt;
=== [[:Kategorie:Tool|Tools]] ===&lt;br /&gt;
[[Gzip]], [[tar]], [[bzip2]], [[wget]], [[xbattbar]],  ...&lt;br /&gt;
&lt;br /&gt;
=== [[:Kategorie:IRC|IRC]] ===&lt;br /&gt;
* [[Irssi installieren und einrichten]]&lt;br /&gt;
&lt;br /&gt;
=== [[:Kategorie:Anwendungsbeispiel|Anwendungsbeispiele]] ===&lt;br /&gt;
* [[tar]]&lt;br /&gt;
* [[Smarty_Template_Engine]]&lt;br /&gt;
&lt;br /&gt;
=== Multimedia ===&lt;br /&gt;
* [[Audio aus Video extrahieren mit MPlayer]]&lt;br /&gt;
&lt;br /&gt;
== [[:Kategorie:Hardware|Hardware]] ==&lt;br /&gt;
&lt;br /&gt;
== Vermeidbare Fehler ==&lt;br /&gt;
* [[Vermeidbare_Fehler|Hier]] ein paar Tipps, was man nicht machen sollte als Administrator&lt;br /&gt;
&lt;br /&gt;
== [[:Kategorie:Verein|UUGRN]] ==&lt;br /&gt;
* [[UUGRN:Backup|Backup]] und [[UUGRN:Backup#Data_Recovery|Datenrücksicherung]] (Admins)&lt;br /&gt;
* [[UUGRN:Webspace|Webspace]] benutzen (Mitglieder/User)&lt;br /&gt;
* [[UUGRN:Shell|Shell]] benutzen (Mitglieder/User)&lt;br /&gt;
&lt;br /&gt;
== [[:Kategorie:Wiki|Wiki]] ==&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Hilfe:Handbuch MediaWiki Handbuch]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Verein]]&lt;br /&gt;
[[Kategorie:Portal]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Matchbox&amp;diff=5091</id>
		<title>Matchbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Matchbox&amp;diff=5091"/>
		<updated>2007-04-09T18:39:07Z</updated>

		<summary type="html">&lt;p&gt;Che: /* Files */ mbdock.session eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Matchbox ist ein [[Windowmanager|Fenstermanager]] für Geräte mit kleinem Display, z.B. einem IPod oder embedded&lt;br /&gt;
Systeme. Seine Eigenschaften sind dementsprechend angepaßt.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Die Fenster sind immer maximiert und liegen sozusagen immer hintereinander. Dadurch ist immer nur eines zu sehen.&lt;br /&gt;
Die Anwahl der Fenster erfolgt unterschiedlich je nachdem welche zusätzlichen Komponenten installiert und&lt;br /&gt;
gestartet sind. In der Minimalversion wird links oben mit einem Button eine Auswahlliste geöffnet.&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
matchbox-panel&lt;br /&gt;
&lt;br /&gt;
damit wird unten eine Taskleiste eingeblendet. In der Default-Einstellung enthält sie rechts die Uhrzeit und links&lt;br /&gt;
einen Startknopf für ein Menu, das damit geöffnet wird. Weitere Funktionen wie Link auf xterm sind einstellbar.&lt;br /&gt;
Es können gleichzeitig mehrere Taskleisten gestartet werden. Die Unterscheidung erfolgt durch Angabe von --id &amp;lt;nummer&amp;gt; beim Start.&#039;&#039;( Default-Nr ist 1)&#039;&#039;. Weitere Startparameter sind möglich, z.B. die Farbe mit -c &amp;lt;farbe&amp;gt; oder die Ausrichtung am Bildschirmrand mit --orientation &amp;lt;south / east / north / west&amp;gt; &#039;&#039;Default ist unten = south&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
matchbox-desktop&lt;br /&gt;
&lt;br /&gt;
ein eigenes Fenster, in denen verschiedene Verzeichnisse dargestellt werden. Darin befinden sich die Links zum&lt;br /&gt;
Starten der Programme. In einem dieser Verzeichnisse sind die Links auf die zur Zeit offenen Fenster.&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
so einfach matchbox auch scheint, die Konfiguration ist komplex.&lt;br /&gt;
&lt;br /&gt;
Infos folgen hier noch&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
*Für Links in der Taskleiste :&lt;br /&gt;
** $HOME/.matchbox/mbdock.session&lt;br /&gt;
** für Taskleisten mit anderer ID als 1 wird ein.&amp;lt;id-nummer&amp;gt; an den Filenamen angehängt&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
sind möglich&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://projects.o-hand.com/matchbox/ Homepage Matchbox]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Matchbox&amp;diff=5088</id>
		<title>Matchbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Matchbox&amp;diff=5088"/>
		<updated>2007-04-09T18:31:35Z</updated>

		<summary type="html">&lt;p&gt;Che: /* Datei-, Icon- und andere -Manager */ Startparameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Matchbox ist ein [[Windowmanager|Fenstermanager]] für Geräte mit kleinem Display, z.B. einem IPod oder embedded&lt;br /&gt;
Systeme. Seine Eigenschaften sind dementsprechend angepaßt.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Die Fenster sind immer maximiert und liegen sozusagen immer hintereinander. Dadurch ist immer nur eines zu sehen.&lt;br /&gt;
Die Anwahl der Fenster erfolgt unterschiedlich je nachdem welche zusätzlichen Komponenten installiert und&lt;br /&gt;
gestartet sind. In der Minimalversion wird links oben mit einem Button eine Auswahlliste geöffnet.&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
matchbox-panel&lt;br /&gt;
&lt;br /&gt;
damit wird unten eine Taskleiste eingeblendet. In der Default-Einstellung enthält sie rechts die Uhrzeit und links&lt;br /&gt;
einen Startknopf für ein Menu, das damit geöffnet wird. Weitere Funktionen wie Link auf xterm sind einstellbar.&lt;br /&gt;
Es können gleichzeitig mehrere Taskleisten gestartet werden. Die Unterscheidung erfolgt durch Angabe von --id &amp;lt;nummer&amp;gt; beim Start.&#039;&#039;( Default-Nr ist 1)&#039;&#039;. Weitere Startparameter sind möglich, z.B. die Farbe mit -c &amp;lt;farbe&amp;gt; oder die Ausrichtung am Bildschirmrand mit --orientation &amp;lt;south / east / north / west&amp;gt; &#039;&#039;Default ist unten = south&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
matchbox-desktop&lt;br /&gt;
&lt;br /&gt;
ein eigenes Fenster, in denen verschiedene Verzeichnisse dargestellt werden. Darin befinden sich die Links zum&lt;br /&gt;
Starten der Programme. In einem dieser Verzeichnisse sind die Links auf die zur Zeit offenen Fenster.&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
so einfach matchbox auch scheint, die Konfiguration ist komplex.&lt;br /&gt;
&lt;br /&gt;
Infos folgen hier noch&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
sind möglich&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://projects.o-hand.com/matchbox/ Homepage Matchbox]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Matchbox&amp;diff=5038</id>
		<title>Matchbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Matchbox&amp;diff=5038"/>
		<updated>2007-04-03T23:42:58Z</updated>

		<summary type="html">&lt;p&gt;Che: Korrektur Stub&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Matchbox ist ein [[Windowmanager|Fenstermanager]] für Geräte mit kleinem Display, z.B. einem IPod oder embedded&lt;br /&gt;
Systeme. Seine Eigenschaften sind dementsprechend angepaßt.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Die Fenster sind immer maximiert und liegen sozusagen immer hintereinander. Dadurch ist immer nur eines zu sehen.&lt;br /&gt;
Die Anwahl der Fenster erfolgt unterschiedlich je nachdem welche zusätzlichen Komponenten installiert und&lt;br /&gt;
gestartet sind. In der Minimalversion wird links oben mit einem Button eine Auswahlliste geöffnet.&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
matchbox-panel&lt;br /&gt;
&lt;br /&gt;
damit wird unten eine Taskleiste eingeblendet. In der Default-Einstellung enthält sie rechts die Uhrzeit und links&lt;br /&gt;
einen Startknopf für ein Menu, das damit geöffnet wird. Weitere Funktionen wie Link auf xterm sind einstellbar.&lt;br /&gt;
&lt;br /&gt;
matchbox-desktop&lt;br /&gt;
&lt;br /&gt;
ein eigenes Fenster, in denen verschiedene Verzeichnisse dargestellt werden. Darin befinden sich die Links zum&lt;br /&gt;
Starten der Programme. In einem dieser Verzeichnisse sind die Links auf die zur Zeit offenen Fenster.&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
so einfach matchbox auch scheint, die Konfiguration ist komplex.&lt;br /&gt;
&lt;br /&gt;
Infos folgen hier noch&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
sind möglich&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://projects.o-hand.com/matchbox/ Homepage Matchbox]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Matchbox&amp;diff=5037</id>
		<title>Matchbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Matchbox&amp;diff=5037"/>
		<updated>2007-04-03T23:38:34Z</updated>

		<summary type="html">&lt;p&gt;Che: neu erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Matchbox ist ein [[Windowmanager|Fenstermanager]] für Geräte mit kleinem Display, z.B. einem IPod oder embedded&lt;br /&gt;
Systeme. Seine Eigenschaften sind dementsprechend angepaßt.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Die Fenster sind immer maximiert und liegen sozusagen immer hintereinander. Dadurch ist immer nur eines zu sehen.&lt;br /&gt;
Die Anwahl der Fenster erfolgt unterschiedlich je nachdem welche zusätzlichen Komponenten installiert und&lt;br /&gt;
gestartet sind. In der Minimalversion wird links oben mit einem Button eine Auswahlliste geöffnet.&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
matchbox-panel&lt;br /&gt;
&lt;br /&gt;
damit wird unten eine Taskleiste eingeblendet. In der Default-Einstellung enthält sie rechts die Uhrzeit und links&lt;br /&gt;
einen Startknopf für ein Menu, das damit geöffnet wird. Weitere Funktionen wie Link auf xterm sind einstellbar.&lt;br /&gt;
&lt;br /&gt;
matchbox-desktop&lt;br /&gt;
&lt;br /&gt;
ein eigenes Fenster, in denen verschiedene Verzeichnisse dargestellt werden. Darin befinden sich die Links zum&lt;br /&gt;
Starten der Programme. In einem dieser Verzeichnisse sind die Links auf die zur Zeit offenen Fenster.&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
so einfach matchbox auch scheint, die Konfiguration ist komplex.&lt;br /&gt;
&lt;br /&gt;
Infos folgen hier noch&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
sind möglich&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://projects.o-hand.com/matchbox/ Homepage Matchbox]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11]]&lt;br /&gt;
[[Kategorie:Stub]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Windowmanager&amp;diff=5036</id>
		<title>Windowmanager</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Windowmanager&amp;diff=5036"/>
		<updated>2007-04-03T23:35:13Z</updated>

		<summary type="html">&lt;p&gt;Che: Matchbox rein&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Windowmanager , Fenstermanager, WMs sind ein graphisches Hilfsmittel bei der Bedienung des [[X11]]-Servers bzw. dem Aufruf der Programme, die den X11-Server benötigen. Sie arbeiten über ein eigenes Fenster, in das die Aufrufe der anderen Programme integriert sind. &lt;br /&gt;
Taskleisten, Hintergrundbilder usw. sind nicht Bestandteil der WMs, sie werden über zusätzliche Programme eingefügt.&lt;br /&gt;
&lt;br /&gt;
Die Auswahl eines WMs ist groß, es gibt über 100 davon. Manche sind von anderen abgeleitet worden.&lt;br /&gt;
&lt;br /&gt;
Für die Optik eines WMs gibt es &amp;quot;[[Themes]]&amp;quot;, das sind Pakete mit Bildern, Konfigurationsdaten und anderen möglichen Komponenten, zusammengestellt und veröffentlicht von Benutzern der einzelnen WMs. Es kann sich aber auch jeder frei sein eigenes Theme zusammenstellen oder andere nach eigenen Wünschen verändern.&lt;br /&gt;
&lt;br /&gt;
bekannte Windowmanager sind z.B. :&lt;br /&gt;
* [[Afterstep]]&lt;br /&gt;
* [[Blackbox]]&lt;br /&gt;
* [[Enlightenment]]&lt;br /&gt;
* [[Fluxbox]]&lt;br /&gt;
* [[FVWM2]]&lt;br /&gt;
* [[ICEWM]]&lt;br /&gt;
* [[Matchbox]] , für Systeme mit kleinem Display&lt;br /&gt;
* [[Openbox]]&lt;br /&gt;
* [[Sawfish]]&lt;br /&gt;
* [[TWM]] , sehr schlank, ist im Paket des X-Servers mit drin&lt;br /&gt;
* [[Window Maker]]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Desktop-Umgebung]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.themes.org Themes] zum Aussuchen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11|!Windowmanager]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Windowmanager&amp;diff=4967</id>
		<title>Windowmanager</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Windowmanager&amp;diff=4967"/>
		<updated>2007-03-29T21:22:47Z</updated>

		<summary type="html">&lt;p&gt;Che: Link auf Fluxbox rein&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Windowmanager , Fenstermanager, WMs sind ein graphisches Hilfsmittel bei der Bedienung des [[X11]]-Servers bzw. dem Aufruf der Programme, die den X11-Server benötigen. Sie arbeiten über ein eigenes Fenster, in das die Aufrufe der anderen Programme integriert sind. &lt;br /&gt;
Taskleisten, Hintergrundbilder usw. sind nicht Bestandteil der WMs, sie werden über zusätzliche Programme eingefügt.&lt;br /&gt;
&lt;br /&gt;
Die Auswahl eines WMs ist groß, es gibt über 100 davon. Manche sind von anderen abgeleitet worden.&lt;br /&gt;
&lt;br /&gt;
Für die Optik eines WMs gibt es &amp;quot;[[Themes]]&amp;quot;, das sind Pakete mit Bildern, Konfigurationsdaten und anderen möglichen Komponenten, zusammengestellt und veröffentlicht von Benutzern der einzelnen WMs. Es kann sich aber auch jeder frei sein eigenes Theme zusammenstellen oder andere nach eigenen Wünschen verändern.&lt;br /&gt;
&lt;br /&gt;
bekannte Windowmanager sind z.B. :&lt;br /&gt;
* [[Afterstep]]&lt;br /&gt;
* [[Blackbox]]&lt;br /&gt;
* [[Enlightenment]]&lt;br /&gt;
* [[Fluxbox]]&lt;br /&gt;
* [[FVWM2]]&lt;br /&gt;
* [[ICEWM]]&lt;br /&gt;
* [[Openbox]]&lt;br /&gt;
* [[Sawfish]]&lt;br /&gt;
* [[TWM]], sehr schlank, ist im Paket des X-Servers mit drin&lt;br /&gt;
* [[Window Maker]]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Desktop-Umgebung]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.themes.org Themes] zum Aussuchen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11|!Windowmanager]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Openbox&amp;diff=4966</id>
		<title>Openbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Openbox&amp;diff=4966"/>
		<updated>2007-03-29T21:21:21Z</updated>

		<summary type="html">&lt;p&gt;Che: neue Struktur rein, Texte daran angepaßt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Openbox ist ein [[Windowmanager|Fenstermanager]] ähnlich dem [[TWM]].&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften und Bedienung ==&lt;br /&gt;
&lt;br /&gt;
Toolbars und ähnliches hat er nicht, aber er kann mehrere Desktops bedienen.&lt;br /&gt;
Das Menu wird defaultmäßig durch die rechte Maustaste aufgeklappt, die Anwahl des Menupunktes erfolgt durch die linke Maustaste&lt;br /&gt;
Minimierte Fenster verschwinden ganz, sie werden über das Menu wieder hervor geholt.&lt;br /&gt;
Ebenso erfolgt auch die Anwahl eines anderen Desktops über das Menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
Zur Hilfe bei der Konfiguration gibt es das Programm [[obconf]], mit dem man eine Teil der rc.xml bearbeiten kann.&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
Hintergrundbilder und anderes werden durch zusätzliche Tools eingeblendet.&lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
keine&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Konfiguriert wird er über 2 Konfigurationsdateien im XML-Format:&lt;br /&gt;
;Die Dateien liegen normalerweise im Home-Pfad des Users im Unterverzeichnis .config/openbox&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
Zur Hilfe bei der Konfiguration gibt es das Programm [[obconf]], mit dem man eine Teil der rc.xml bearbeiten kann.&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
;rc.xml:hier steht die komplette Konfiguration des eigentlichen Fenstermanagers:&lt;br /&gt;
:* Tastaturbelegung&lt;br /&gt;
:* Mousekonfiguration&lt;br /&gt;
:* Anzahl, Name usw. der Desktops&lt;br /&gt;
:* Liste der Menu-Files&lt;br /&gt;
&lt;br /&gt;
;menu.xml:hier steht die Konfiguration des Hauptmenus &#039;&#039;( &amp;quot;root-menü )&#039;&#039; und der Submenus drin.&amp;lt;br&amp;gt;&lt;br /&gt;
:Speziell angepaßte Shell-Scripte können hier eingefügt werden, die dynamische Submenus mit beliebigen Funktioen erzeugen&lt;br /&gt;
:&#039;&#039;( Beispiel Prozeßliste mit Kill-Aufruf )&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Weitere Menu-Files können eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
[http://icculus.org/openbox/ Homepage Openbox]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://tr.openmonkey.com/pages/obconf/ Homepage Obconf]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=ICEWM&amp;diff=4965</id>
		<title>ICEWM</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=ICEWM&amp;diff=4965"/>
		<updated>2007-03-29T21:14:42Z</updated>

		<summary type="html">&lt;p&gt;Che: neu strukturiert, Texte dazu angepaßt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== allgemein ==&lt;br /&gt;
&lt;br /&gt;
IceWM ist ein handlicher [[Windowmanager|Fenstermanager]] mit einer Oberfläche ähnlich den großen Desktops .&lt;br /&gt;
Er läuft unter ca. 10 verschiedenen Systemen bzw. Hardwarearchitekturen.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Vorhanden sind eine Toolbar unten und eine Menu-Leiste, die durch eine Art &amp;quot;Start&amp;quot;-Knopf eingeblendet wird. Dadurch entsteht eine Oberfläche ähnlich Windows 98.&lt;br /&gt;
&lt;br /&gt;
Mehrere Desktopoberflächen sind möglich, default ist 4.&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
Das Hintergrundbild wird in der Datei preference festgelegt, die Anzeige erfolgt durch das Programm icewmbg&lt;br /&gt;
&lt;br /&gt;
=== Datei-, Icon- und andere -Manager ===&lt;br /&gt;
&lt;br /&gt;
keine&lt;br /&gt;
&lt;br /&gt;
=== Dockables ===&lt;br /&gt;
&lt;br /&gt;
diese Funktion ist nicht vorhanden&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Konfigurierbar sind beispielsweise :&lt;br /&gt;
* Anzahl und Namen der Desktop-Oberflächen&lt;br /&gt;
* Toolbar ( Taskleiste ) 1- oder 2-zeilig&lt;br /&gt;
* in der Toolbar : &lt;br /&gt;
** Links auf die diversen Programme &lt;br /&gt;
** Anzeigen für Netzwerksbetrieb, CPU-Last, Uhr&lt;br /&gt;
* die Fensterrahmen ( Breite, Muster, Farben )&lt;br /&gt;
* Icons, Auswahl und Default-Verzeichnis&lt;br /&gt;
* Hintergrundfarbe&lt;br /&gt;
* Menuleiste&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
mit einem Tool namens icewmconf können die meisten Konfigurationspunkte über ein Menu bedient werden&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration erfolgt über verschiedene Textdateien, mindestens vorhanden sind :&lt;br /&gt;
{|&lt;br /&gt;
| width=80 | preferences&lt;br /&gt;
| alle allgemeinen Konfigurationsparameter als Kommentarzeile&lt;br /&gt;
|-&lt;br /&gt;
|programs &lt;br /&gt;
| oberer Teil der Menü-Leiste, enthält direkte Aufrufe von Programmen&lt;br /&gt;
|-&lt;br /&gt;
| menu&lt;br /&gt;
| unterer Teil der Menü-Leiste, enthält Aufrufe von Submenüs&lt;br /&gt;
|-&lt;br /&gt;
| toolbar&lt;br /&gt;
| für Aufrufe von Programmen aus Toolleiste unten    &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse, in denen die Default-Konfiguration liegen kann, sind unterschiedlich je nach System oder Tool :&lt;br /&gt;
* Default-Konfigurationen :&lt;br /&gt;
** /usr/local/share/icewm&lt;br /&gt;
** /usr/X11R6/lib/X11/icewm/&lt;br /&gt;
** /usr/local/lib/Xll/icewm/&lt;br /&gt;
* systemweit geänderte Konfigurationen&lt;br /&gt;
** /etc/X11/icewm/&lt;br /&gt;
** /etc/icewm&lt;br /&gt;
* Userspezifische Konfigurationen&lt;br /&gt;
** $HOME/.icewm&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
Submenus sind möglich und werden über eigene Dateien konfiguriert. Der Dateiname ist beliebig und muß nicht gleich dem Text im Hauptmenü sein.&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Themes und Pakete mit Icons für IceWM gibt es genügend freie im Internet,&lt;br /&gt;
sie können aber problemlos durch eigenen ersetzt oder modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
Der Fensterrahmen wird durch mehrere kleine Bilddateien zusammengesetzt, die Rahmenbreite ist aber noch konfigurierbar. &#039;&#039;( Vorsicht, Breite nicht auf 0 setzen, sind dann nicht mehr verstellbar )&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dateiformat für Icons und Fensterrahmen ist [[XPM]]&lt;br /&gt;
&lt;br /&gt;
=== sonstiges ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.icewm.org/ Homepage IceWM]&lt;br /&gt;
* [http://www.sdboyd56.com/icewmconf/ Homepage icewmconf]&lt;br /&gt;
* [http://www.themes.org/ Sammlung Themes]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=TWM&amp;diff=4964</id>
		<title>TWM</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=TWM&amp;diff=4964"/>
		<updated>2007-03-29T20:11:21Z</updated>

		<summary type="html">&lt;p&gt;Che: Struktur rein, etwas mehr Infotext, Beispielkonfiguration und Bilder für Farbgestaltung rein&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== allgemein ==&lt;br /&gt;
&lt;br /&gt;
Toms Window Manager oder auch Tab Window Manager, kurz TWM genannt, ist einer der ältesten [[Windowmanager|Fenstermanager]].&lt;br /&gt;
&lt;br /&gt;
Er ist sehr klein gehalten, Toolbars und ähnliches gibt es nicht.&lt;br /&gt;
TWM ist Bestandteil der X-Server-Distribution, er wird automatisch mit dem X-Server installiert.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Gewöhnungsbedürftig ist die Veränderung der Fenstergröße und das fehlende Exit- oder Quit-Knöpfchen&lt;br /&gt;
im Fensterrahmen zum Schließen des Fensters.&lt;br /&gt;
&lt;br /&gt;
Als interessanter Gag kann für das Minimieren und wieder Öffnen der Fenster ein Zoom-Effekt eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Zubehör ==&lt;br /&gt;
&lt;br /&gt;
=== Hintergrund ===&lt;br /&gt;
&lt;br /&gt;
Der Hintergrund kann einfarbig über die Konfigurationsdatei eingestellt werden. Für andere Einstellungen müssen&lt;br /&gt;
die Tools von anderen [[Windowmanager|Fenstermanager]] genommen werden.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationshilfen ===&lt;br /&gt;
&lt;br /&gt;
keine, muß alles per Editor erstellt werden&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
Der TWM benutzt nur eine einzige Konfigurationsdatei, die in verschiedenen Verzeichnissen liegen kann.&lt;br /&gt;
Genommen wird die zuerst gefundene in der unten aufgelisteten Reihenfolge :&lt;br /&gt;
&lt;br /&gt;
im Home-Verzeichnis des Users : .twmrc&lt;br /&gt;
&lt;br /&gt;
in /usr/X11R6/lib/X11/twm/ : .twmrc&lt;br /&gt;
&lt;br /&gt;
als Muster wird mitgeliefert /usr/X11R6/lib/X11/twm/system.twmrc&lt;br /&gt;
&lt;br /&gt;
Die letztere Datei wird auch genommen, wenn alle anderen fehlen.&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
Das Menu wird durch die linke Maustaste aufgeklappt, Submenus können eingefügt werden.&lt;br /&gt;
Icons, Textfarben, Hintergrundfarben können konfiguriert werden für :&lt;br /&gt;
* das komplette Menu&lt;br /&gt;
* jedes Submenu individuell&lt;br /&gt;
* jeden Menupunkt einzeln&lt;br /&gt;
* mit fließenden Hintergrundfarben&lt;br /&gt;
&lt;br /&gt;
=== Tastaturbelegungen ===&lt;br /&gt;
&lt;br /&gt;
Tastaturbelegungen sind frei einstellbar.&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
gibt es nicht für den TWM&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
Farbgestaltung der Menuleiste &lt;br /&gt;
&lt;br /&gt;
[[Bild:Twm-farbmuster-01.gif|right|Beispiel 1 für Farbgestaltung des Menus]]&lt;br /&gt;
[[Bild:Twm-farbmuster-02.gif|right|Beispiel 2 für Farbgestaltung des Menus]]&lt;br /&gt;
&lt;br /&gt;
menu &amp;quot;Demo&amp;quot;&lt;br /&gt;
:{&lt;br /&gt;
:&amp;quot;-- viele Farben --&amp;quot; (&amp;quot;blue&amp;quot;:&amp;quot;pink&amp;quot;) f.title&lt;br /&gt;
:&amp;quot;Zeile1&amp;quot;	(&amp;quot;red&amp;quot;:&amp;quot;blue&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile2&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile3&amp;quot;	f.menu &amp;quot;Demo-Sub1&amp;quot;&lt;br /&gt;
:&amp;quot;Zeile4&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile5&amp;quot;	(&amp;quot;white&amp;quot;:&amp;quot;black&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile6&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile7&amp;quot;	f.menu &amp;quot;Demo-Sub2&amp;quot;&lt;br /&gt;
:&amp;quot;Zeile8&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile9&amp;quot;	(&amp;quot;yellow&amp;quot;:&amp;quot;green&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile10&amp;quot;	(&amp;quot;black&amp;quot;:&amp;quot;white&amp;quot;) f.nop&lt;br /&gt;
:}&lt;br /&gt;
&lt;br /&gt;
menu &amp;quot;Demo-Sub1&amp;quot;&lt;br /&gt;
:{&lt;br /&gt;
:&amp;quot;-- Beispiel 2 --&amp;quot;	(&amp;quot;white&amp;quot;:&amp;quot;red&amp;quot;) f.title&lt;br /&gt;
:&amp;quot;Zeile11&amp;quot;		(&amp;quot;blue&amp;quot;:&amp;quot;rgb:e/e/7&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile12&amp;quot;		(&amp;quot;blue&amp;quot;:&amp;quot;rgb:e/e/7&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile13&amp;quot;		(&amp;quot;blue&amp;quot;:&amp;quot;rgb:e/e/7&amp;quot;) f.nop&lt;br /&gt;
:&amp;quot;Zeile14&amp;quot;		(&amp;quot;blue&amp;quot;:&amp;quot;rgb:e/e/7&amp;quot;) f.nop&lt;br /&gt;
:}&lt;br /&gt;
&lt;br /&gt;
menu &amp;quot;Demo-Sub2&amp;quot;&lt;br /&gt;
:{&lt;br /&gt;
:&amp;quot;-- Beispiel 3 --&amp;quot;	(&amp;quot;white&amp;quot;:&amp;quot;rgb:6/6/9&amp;quot;) f.title&lt;br /&gt;
:&amp;quot;Zeile21&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile22&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile23&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile24&amp;quot;	f.nop&lt;br /&gt;
:&amp;quot;Zeile25&amp;quot;	(&amp;quot;white&amp;quot;:&amp;quot;rgb:9/9/F&amp;quot;) f.nop&lt;br /&gt;
:}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X11]]&lt;/div&gt;</summary>
		<author><name>Che</name></author>
	</entry>
</feed>