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!
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?
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 ...
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
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/m51-g52.html
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...
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.
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.
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
>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.
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? :-)
>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.
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?
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
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?
>Ü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.
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
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.
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.
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...
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
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.