www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Audio im LAN


Autor: Bayer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich baue demnächst und werde natürlich auch Netzwerk verlegen.
Das brachte mich auf die Idee, eine kleine Hardware und Software zu
entwickeln (AVR bspw.), um Audio Streams von meinem PC zu aktiven Boxen 
zu transportieren. Ich möchte den ENC2860 nutzen, von dem hier schon 
einiges berichtet wurde.
Habt ihr damit Erfahrung? Wie krieg ich die Musik vom PC ins Netzwerk?
Danke für eure Antworten!

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vom PC ins Netzwerk ist kein Problem, dafür gibts Programme. Der VLC 
Media Player kann das Beispielsweise.
Ich denke, was du bauen willst, ist eher ein kleines Gerät, das die 
Audiostreams übers Netzwerk dann wieder empfangen und an Lautsprechern 
ausgeben kann oder?

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das willst Du wahrscheinlich nicht hören, aber ... wäre da nicht ein 
Mini-ITX-Board die günstigere, einfacherere und schnellere Möglichkeit?

So Aktivboxen mit eingebautem PC mit WLAN hätten schon was ...

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gibts doch son Platinchen mit ARM, Linux, Ethernet und USB drauf, 
kostet um die 180 Steine, glaub ich (-> Conrad). Das verbauen, dann ne 
USB-Soundkarte dazu, fädisch.

Hierson Dingen: http://www.dilnetpc.com/dnp0069.htm

Autor: Latenz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An die Latenz denken.

Autor: Andreas Watterott (andreasw) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für 180 Euro kann man sich aber auch etwas fertiges kaufen. Ich schätze 
viel teurer werden die BARIX Sachen nicht sein:
http://www.sphinxcomputer.de/barix/audio-over-ip/m...

Vielleicht gibt es auch eine LAN-Alternative zum Devolo dLAN Audio 
extender?

Zum selber Basteln gibt es hier eine Projektübersicht: 
WebRadio Clients
Dann muss man nur noch das Latenzproblem lösen...

Autor: Martin P....... (billx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt auch so nen würfel vom apple

Autor: Heckenpenner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir macht eine NSLU2 unter Debian mit USB-Soundkarte die Musik.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin Pfeiffer wrote:
> gibt auch so nen würfel vom apple

Airport Express, hat auch WLAN und Digitalausgang. Aber die Latenz ist 
beträchtlich, also nur für Musik geeignet.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab sowas mal gemacht - auf M16C und ENC Basis. Funktioniert
zusammen mit einem virtuellen Audio Device Treiber unter Windows.
Unter Windows lassen sich mehrere Instanzen des Treibers installieren,
sodass man bspw. Winamp mehrmals starten kann und verschiedene Kanäle
parallel streamen kann. Funktioniert dank des Pattern Match Filters
im ENC total problemlos. An jedem Aktiv-Boxen Paar steht eine kleine 
Ethernet Box.
Latenz ist (für meine Bedürfnisse) kein Problem - 2,5s Buffer scheinen 
mir ok
Hardware kostet mich ca. 50€. Hauptkosten: Platinen, Stecker, M16C, 
SRAM, ENC, SP/DIF und Analog DA Wandler

@Bayer: Ich kann dich also nur ermutigen - es geht.

Autor: Christian C. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Alex wrote:
> Ich hab sowas mal gemacht - auf M16C und ENC Basis. Funktioniert
> zusammen mit einem virtuellen Audio Device Treiber unter Windows.
> Unter Windows lassen sich mehrere Instanzen des Treibers installieren,
> sodass man bspw. Winamp mehrmals starten kann und verschiedene Kanäle

Meinst Du evtl. "Virtual Audio Cable"? Oder hast Du selbst einen Treiber 
geschrieben?

> parallel streamen kann. Funktioniert dank des Pattern Match Filters
> im ENC total problemlos. An jedem Aktiv-Boxen Paar steht eine kleine
> Ethernet Box.
> Latenz ist (für meine Bedürfnisse) kein Problem - 2,5s Buffer scheinen
> mir ok
> Hardware kostet mich ca. 50€. Hauptkosten: Platinen, Stecker, M16C,
> SRAM, ENC, SP/DIF und Analog DA Wandler
>
> @Bayer: Ich kann dich also nur ermutigen - es geht.

Würdest Du Dein Projekt auch öffentlich vorstellen?

Ich selbst habe mir mal eine einfache MP3 Streaming-Lösung über UDP 
gebaut.
Auf der PC Seite habe ich ein WinAMP-Plugin geschrieben, das die rohen 
Audio-Daten an einen kleinen ebenfalls selbst geschriebenen Dienst 
weiterreicht (per TCP) und dort dann in Echtzeit in MP3 (per LAME.DLL) 
kodiert und dann per UDP ins Netz schickt.

Empfangen wurde der UDP-MP3 Stream dann von diesem Player hier: 
http://www.kreapc.de/mp3_about.php.html
Den hatte ich noch rumfliegen.

Inspiriert wurde ich durch die MP3-Streaming Hardware aus der c't 
mittels des XPorts.

Sollen es denn rohe Audio-Daten sein oder soll es komprimiert sein?

Ich finde, schwierig und richtig interessant wird erst eine 
Multi-Room-Lösung. Da wird es dann aber schon recht kompliziert, um 
synchrones Abspielen in allen Räumen zu gewährleisten.

Gruss,
Christian

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Oder hast Du selbst einen Treiber geschrieben?
ich kenne zwar Virtual Audio Cable, das ist aber nicht das gleiche.
Ich hab selbst einen Treiber geschrieben.

>richtig interessant wird erst eine Multi-Room-Lösung
Wie gesagt, mehrere Streams parallel - in jedem Raum beliebig wählbar,
das ist aus meiner Sicht "Multi Room"

>Sollen es denn rohe Audio-Daten sein oder soll es komprimiert sein?
PCM - kein Problem über normalse Netzwerk. Ein Vorteil der Windows 
Audio-Treiber Architektur. Wenn ich ein PCM Device im Sound System 
anmelde, bekomme ich im Treiber PCM angeliefert, egal, ob oben MP3 oder 
sonstwas reingesteckt wird. Das Signal muss dann nur noch "gestreamt" 
werden.

>synchrones Abspielen in allen Räumen
ich hab ne DA-Wandlung mit PLL Lösung gemacht und einen Algorithmus 
ausgeknobelt, der beim Zuschalten eines Lautsprechers die gesamte Gruppe 
synchronisiert. Beim Zuschalten ist also in der Gruppe ca. 2s Ruhe - und 
dann geht es synchron weiter. In 8 Stunden kontinierlichem Abspielen 
habe ich kein hörbares Echo feststellen können.

>Würdest Du Dein Projekt auch öffentlich vorstellen?
Hmm.. generell ja - allerdings würde ich mich in den Allerwertesten 
beißen, wenn jemand Geld damit macht. Ich weiß bisher nicht, wie ich das 
unterbinden könnte, deshalb hab ichs bisher nicht gemacht. Meine Lösung 
ist (soweit ich weiß) die einzige, die tatsächlich sample-synchron im 
Rahmen der PLL Genauigkeit streamen kann. Man könnte also auch 
Verzögerungen im Raster von n*5,1ms implementieren.

Autor: Florian___ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt einige OpenSource Lizenzen die eine kommerzielle Nutzung 
ausschließen

Autor: Christian C. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex wrote:
>
>>synchrones Abspielen in allen Räumen
> ich hab ne DA-Wandlung mit PLL Lösung gemacht und einen Algorithmus
> ausgeknobelt, der beim Zuschalten eines Lautsprechers die gesamte Gruppe
> synchronisiert. Beim Zuschalten ist also in der Gruppe ca. 2s Ruhe - und
> dann geht es synchron weiter. In 8 Stunden kontinierlichem Abspielen
> habe ich kein hörbares Echo feststellen können.

Sehr cool! Könntest Du denn ganz grob erklären, was Du mit "DA-Wandlung 
mit PLL-Lösung" meinst? Eine Art Software-PLL oder wie muss ich mir das 
vorstellen?

>>Würdest Du Dein Projekt auch öffentlich vorstellen?
> Hmm.. generell ja - allerdings würde ich mich in den Allerwertesten
> beißen, wenn jemand Geld damit macht. Ich weiß bisher nicht, wie ich das
> unterbinden könnte, deshalb hab ichs bisher nicht gemacht. Meine Lösung
> ist (soweit ich weiß) die einzige, die tatsächlich sample-synchron im
> Rahmen der PLL Genauigkeit streamen kann. Man könnte also auch
> Verzögerungen im Raster von n*5,1ms implementieren.

Okay, ich kann das verstehen. Es wäre aber trotzdem sehr schade, wenn es 
auf Dauer in Deiner Schreibtischschublade verschwindet. Generell 
entnehme ich aber Deiner Haltung eher, dass Du lieber Geld damit machen 
möchtest, als einfach nur die Freude daran zu haben, dass Du es 
konstruiert hast, oder? :-)

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Generell entnehme ich aber Deiner Haltung eher, dass Du lieber Geld damit >machen 
möchtest
nein! privat, Hobby, Spass. Wie gesagt, wenn ich wüßte, wie ich machen 
kann, dass auch andere nix verdienen, würde ich veröffentlichen! 
_Vorschläge???_

>DA-Wandlung mit PLL-Lösung"
Habe mir einen hochpräzisen PLL Baustein (PLL1706 oder so) besorgt, der
den Grundtakt für den DA Wandler macht. Somit gibt es eine genaue 
Zeitbasis. Die ist in jedem Streaming Client verbaut. Dadurch arbeitet 
"jeder für sich" genau und über ein SW-Protokoll werden alle zueinander 
synchronisiert.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Es gibt einige OpenSource Lizenzen
Wie geht das konkret? Schreibe ich einen Header in jede C Datei
Wie kann ich das bei der Hardware machen?

Autor: Bayer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das was Alex gemacht hat, scheint so ziemlich genau das
zu sein, was ich brauche.

@Alex:
Gibts dazu auch eine Fernbedienung oder ähnlich?
Kann man das nachbauen?

Autor: Christian C. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex wrote:
>>Es gibt einige OpenSource Lizenzen
> Wie geht das konkret? Schreibe ich einen Header in jede C Datei
> Wie kann ich das bei der Hardware machen?

Bei den Quelltexten auf jeden Fall. Das Urheberrecht bleibt ja bei Dir 
je nach Lizenz. Du könntest z.B. eine Creative Commons Lizenz nehmen, 
die kommerzielle Nutzung ausschliesst.

Zur Hardware: Ein Copyright-Vermerk und der Hinweis, dass eine 
kommerzielle Nutzung nicht ohne Deine Zustimmung stattfinden darf, 
müsste doch genügen, oder? Evtl. hier auch eine Creative Commons Lizenz?

Aber ich bin da sicherlich kein Experte.
Was meinen denn die anderen dazu?

Schau Dir doch mal private Projekte im Netz an, die eine private Nutzung 
erlauben, aber eine kommerzielle Nutzung verbieten. Was für Lizenzen 
benutzen die denn?

Du kannst ja auch sowas wie Dual-Licensing machen. Einmal für die 
Community eine OpenSource-Lizenz und für die kommerzielle Nutzung Deine 
eigene Lizenz.

Gruss,
Christian

Autor: Christian C. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex wrote:

>>DA-Wandlung mit PLL-Lösung"
> Habe mir einen hochpräzisen PLL Baustein (PLL1706 oder so) besorgt, der
> den Grundtakt für den DA Wandler macht. Somit gibt es eine genaue
> Zeitbasis. Die ist in jedem Streaming Client verbaut. Dadurch arbeitet
> "jeder für sich" genau und über ein SW-Protokoll werden alle zueinander
> synchronisiert.

Übermittelst Du mit den Audio-Samples noch eine Art Clock-Information, 
auf die Du die Clients dann immer wieder synchronisierst?

Hintergrund der Frage: Muss es denn unbedingt eine PLL sein, oder nutzt 
Du nur die Tatsache, dass diese PLL hier sehr genau läuft und kaum 
driftet. Könnte es nicht sonst auch ein sehr genauer Oszillator sein?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Übermittelst Du mit den Audio-Samples noch eine Art Clock-Information
Nein, wenn ein Gerät beginnt, den Stream zu empfangen, dann liest es
zunächst nur den aktuellen Framecount aus und sendet einen Sync Frame, 
in dem steht, dass "100 Frames später" alle neu anfangen sollen. Die die 
den Sync Frame empfangen haben dann genug Zeit, die aktuelle Übertragung 
zu unterbrechen, die Puffer Queue zu leeren usw.

>oder nutzt Du nur die Tatsache, dass diese PLL hier sehr genau läuft und kaum
>driftet
wegen der geringen Drift, ja.

Das Streaming selbst läuft dann in Echtzeit (I2S Datenstrom ist direkt 
an DMA gekoppelt. Die DMA kann direkt auf der Puffer-Queue arbeiten und 
hat somit immer Futter. Die PLL zusammen mit dem DMA Mechanismus scheint 
eine gute Kombination zu sein, was das synchrone abspielen angeht.

Sollte mal ein Frame verloren gehen (kommt nahezu nicht vor in meinem 
LAN), wird ein Dummy eingefügt, um die Synchronizität nicht zu 
zerstören.

Autor: Peter... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hört sich sehr interessant an.
Veröffentlichen???

Autor: Klaus Huber (klaushuber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Der Fast (der9gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo abo abo :-) sehr geil

Wobei ich es noch net ganz gerafft habe..

Es soll ein Audio stream im Netzwerk zu Boxen in mehreren Räumen 
gestreamt werden. Mit PC als "Sender" und der Empfänger soll eine 
selbstgebaute Blackbox werden, aus der die Audiodaten auf die Boxen 
kommen?

mfg

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo.

Und das was Alex gemacht hat ist, mehrere Streams ins Netzwerk und in 
der "Blackbox" kannst du den gewünschten Stream auswählen. So habe ich 
es verstanden.

Autor: Der Fast (der9gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha, also der Output is die 'Netzwerkkarte mit "normalen" Protokoll UDP?

verstehe langsam die Schwierigkeiten..werde hier mal mit lesen.

danke

Autor: Alex (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

anbei mal zwei Fotos von dem Ding. Hinter der Frontblende sitzt leider
nur eine LED - blinken, Dauerlicht...
Ich will demnächst noch ein kleines Display einbinden - falls jemand ein 
preiswertes Display weiß... (2-3 Zeilen, vorzugsweise SPI)

An der Rückseite ist Line-Out, SP/DIF, Power und Ethernet zu sehen.

An jedem Boxenpaar steht so ein Ding, habe derzeit 4 Stück in Betrieb.
Gehäuse ist von Conrad.

Autor: Alex (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier das zweite. Als Frontplatte kann man quasi einbauen, was man will, 
muss nur durchsichtig sein wegen LED und Fernbedienung (RC5). Hab
mal aus Spass was zurechtgeschnitzt...

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

sorry für den dreifach Post - will mich wirklich nicht wichtig machen 
oder so, wollte aber doch noch auf die letzten Fragen antworten...

>Aha, also der Output is die 'Netzwerkkarte mit "normalen" Protokoll UDP?
Ja, in UDP ist natürlich noch ein (eigenes) Streaming Protokoll 
eingebaut.
Flow Control, Sync Frames falls sich einer zuschaltet, Feedback des 
Fernbedienungssignals an den PC (Fast forward, rewind, next, Pause, 
Play, etc...).


>Und das was Alex gemacht hat ist, mehrere Streams ins Netzwerk und in
>der "Blackbox" kannst du den gewünschten Stream auswählen. So habe ich
>es verstanden.
ja, ja, richtig

Autor: Joee (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tolles Projekt, jetzt meine Frage:

1. Warum werden die Streams nicht übers Stromnetz übertragen 
(Powerline-LAN), dann spar ich mir die Netztwerleitung und kann es 
überall im Haus oder Garten nutzen.

Autor: Christian C. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alex,

veröffentlichst Du zu Deinem Projekt noch etwas oder planst Du einen 
kommerziellen Weg?

Gruß
Christian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.