Forum: Mikrocontroller und Digitale Elektronik I²S 6 Kanal vom PC


von Alex S. (thor368)


Lesenswert?

Tach allerseits!
Ich spiele seit längerem mit dem Gedanken meine Audio DSP (FreeDSP.cc) 
um ein paar Eingänge zu erweitern. Der Grundgedanke dahinter ist den 
kompletten Analogpfad zu umgehen und dirket digitalen Ton aus dem PC zu 
holen. Grundsätzlich sind mehrere Schnittstellen zum PC denkbar. Ziel 
ist aber immer I²S an der DSP.

Idee #1
USB Audio ist doch ein alter Schuh. Da gibt es doch bestimmt fertige USB 
zu I²S Konverter für Mehrkanalton. Denkste. :( Die Teile sind alle 
Stereo. Es gibt keine USB Klasse für Mehrkanalton. Alles was in die 
Richtung geht ist propritärer Schrott und bisher hat das keiner als Open 
Source geschweige denn mit I²S Port gebaut. Falls ich mich irre bitte 
korrigieren!!

Idee #2
S/PDIF oder TOSLINK vom PC. Einige SigmaDSPs haben einen digital Audio 
port. So wie es aussieht können die aber nur PCM. Also Stereo.

Idee #3
Wie oben aber mit decoder vorweg. STA310 ist da eine Adresse. Aber das 
ist ein riesen chip. Falls da jemand ein Projekt kennt, das damit was 
gemacht hat, sodass man nicht alles selbst erforschen muss, wäre ich 
sofort Ohr^^

Idee #4
HDMI führt einen Standard für unkomprimierten Mehrkanalton. Das macht 
vieles einfacher. Kein live encoden von unkomprimiertem content am PC 
und keine Lizenzen. Allerdings ist HDMI eine Spur komplexer als S/PDIF.

Idee #5
Man hackt einen der S/PDIF oder HDMI decoder, die man von der Stange 
kaufen kann. Theoretisch muss man nur einen finden, der diskrete DACs 
hat und das I²S vorher abgreifen. Ziemlich wage da einen passenden zu 
treffen. Einfach mal einen Schwung auf Amazon kaufen, reinschauen und 
die unpassenden zurückschicken? :))

Schreibt bitte eure Gedanken und weitere Ideen. Ich habe das Gefühl, 
dass ich noch nicht die ideale Lösung gefunden habe.

Thor

von Linuxfan (Gast)


Lesenswert?

Wie du schon geschrieben hast, ist I2S immer stereo. Es gibt keinen 
einfachen Weg für dein Problem.
Alle Ansätze die du geschrieben hast bringen nix, ausser HDMI. Aber für 
HDMI brauchst du eine Lizenz, sonst hast du kein HDCP. Ohne HDCP kannst 
du die meisten Sachen vergessen.
Das Wichtigste hast du aber gar nicht geschrieben :
Welche Art von Dateien willst du abspielen ?
Du kannst ja auch den DSD Weg gehen und alle Probleme lösen sich von 
selbst (DSD unterstütz Mehrkanalton).
Welchen DSP Chip nutzt du denn ?

von Günter R. (muntablues)


Lesenswert?

Ich hab vor einem guten Jahr den ersten Prototyp mit bis zu 8 Kanälen 
mit einem XMOS Chip aufgebaut. Das ganze klappt sehr gut und die 
Firmware "Vorlagen" sind sehr gut gemacht. Man ist da mit sehr wenig 
Aufwand sehr flexibel und kann relativ einfach 4x Out, 4x In usw. 
realisieren. Mein Prototyp war eine DJ Soundkarte mit 3x Stereo Out...

Ich hatte mal geplant eine Art Bausatz zu machen um diesen dann genau 
für solche Leute wie dich zu verkaufen, weil der Markt hier sehr 
überschaubar ist und die DIY Audio Leute immer sowas brauchen. 
Schlussendlich hatte ich dann aber leider zu wenig Zeit und die ganzen 
Themen wie Windows Treiber, USB Lizenz, Fertigung, usw. haben mich dann 
ein wenig eingebremst... Ich hätte zwar alles beisammen um das Projekt 
zu starten, aber ich müsste mich einfach ein paar Wochen frei stellen um 
es wirklich durch zu ziehen.

Falls du dieses Projekt nur für dich machen willst, würde ich dir ein 
Referenz Design von XMOS ans Herz legen, damit habe ich auch angefangen 
und man kann die relativ einfach für seine Vorstellungen "umbauen". Du 
hast dann also den USB -> I2S Teil per Referenz Design und den Analogen 
Teil machst selber...

So denn,

von Thomas (Gast)


Lesenswert?

>Idee #1
>USB Audio ist doch ein alter Schuh. Da gibt es doch bestimmt fertige USB
>zu I²S Konverter für Mehrkanalton. Denkste. :( Die Teile sind alle
>Stereo. Es gibt keine USB Klasse für Mehrkanalton. Alles was in die
>Richtung geht ist propritärer Schrott und bisher hat das keiner als Open
>Source geschweige denn mit I²S Port gebaut. Falls ich mich irre bitte
>korrigieren!!

Falsch:
Mehrkanal Ton über USB geht sehr wohl habe ich vor über 10 Jahren für
eine bekannte deutsche Firma gemacht. Funktioniert ab W98SE(inoffiziell)
und XP problemlos unter W2000 nicht.
Da niemand bereit ist Geld für digitales  6 Kanal 16Bit Audio zu 
bezahlen
wurden digitale Schnittstellen nicht weiterverfolgt. USB 1.1 kann nur
max 6 Kanal in 16 Bit USB2 Audio gab es damals noch nicht.

Das Problem ist ein ganz anderes:
I2S ist immer Stereo. Was du willst ist 5.1. via SPDIF. Dafür sind wenn 
man das digital macht Lizenzgebühren notwendig.

zu open Source:
Nun solche Projekte sind eher im Pro Audio Bereich zu finden. Die 
Branche hats nicht so mit open Source.

Falls du Interesse hast das zu entwickeln nur zu.
Du kannst von mir die Deskriptoren für 6 Kanal Audio über USB haben.
Du must dann nur einen passenden USB Chip nehmen und 3 SPDIF Transmiter
dranflanschen. Alles ganz einfach. Win kann schon lange Mehrkanal Audio.

Thomas

von Clemens L. (c_l)


Lesenswert?

Alex S. schrieb:
> USB Audio ist doch ein alter Schuh. Da gibt es doch bestimmt fertige USB
> zu I²S Konverter für Mehrkanalton. Denkste. :( Die Teile sind alle
> Stereo. Es gibt keine USB Klasse für Mehrkanalton.

Beide USB-Audio-Klassen unterstützen Mehrkanalton.

Du darfst nur nicht von so einer kleinen Klitsche wie Microsoft 
erwarten, dass die genügend Ressourcen haben, um einen Treiber dafür zu 
schreiben.

Mehr oder weniger fertige Chips gibt es von XMOS und C-Media (letztere 
nur für Großkunden).

> S/PDIF oder TOSLINK vom PC.

Per Design nur Stereo. Mehrkanal funktioniert nur mit einem Encoder 
(z.B. Dolby Digital oder DTS), der die Daten auf die selbe Bandbreite 
wie ein unkomprimiertes Stereo-Signal eindampft.

> HDMI führt einen Standard für unkomprimierten Mehrkanalton. Das macht
> vieles einfacher. Kein live encoden von unkomprimiertem content am PC
> und keine Lizenzen. Allerdings ist HDMI eine Spur komplexer als S/PDIF.

Für "HDMI to I2S" findet Google z.B. dies: 
http://www.audio-gd.com/Pro/diy/I2Skits/I2SEN.htm

von Alex S. (thor368)


Angehängte Dateien:

Lesenswert?

Wow. Das ist ne Menge mehr Feedback als ich erwartet habe. Fangen wir 
oben an.

Das I²S nur zwei Kanäle pro Datenleitung macht ist mir klar. Ich dachte 
es wäre selbstredent, dass ich genügend Datenleitungen am I²S für mein 
Vorhaben zur Verfügung stelle.

HDCP ist mir furzegal. Ich habe keinen gecrypteten content. Die einzige 
Audio/Videoquelle, die ich besitzt/benötige, ist mein PC und wie gesagt 
habe ich da drauf keinen HDCP geschützten content. Nicht mal ein Blueray 
Laufwerk^^. Problematisch wird die andere Richtung. Eine DVD hat eine 
DTS oder AC3 Spur. Für Mehrkanalton per S/PDIF alles tuti. Aber ein 
Spiel erzeugt keinen codierten Audiostream. Das geht bei S/PDIF nur per 
PCM. Mein Realtek onboard chip hat ein verstecktes feature mit dem man 
live in Dolby oder DTS codieren kann. Allerdings erfordert das gepatchte 
Treiber, da mein low end chip dieses feature eigentlich garnicht 
aktiviert haben darf. Ist also ein bisschen krampfig für den Zweck den 
es erfüllen soll.

Aus dem selben Grund kommt auch ASIO nicht in Frage. Das ganze soll kein 
Tonstudio mit spezieller Software, die damit umgehen kann, sein sondern 
ein Heimkino. Kompatibilität ist das Motto.

Daher ist mir irgendwann der selbe Gedanke wie Linuxfan gekommen. HDMI 
Audio bzw. DSD. Einzig die etwas fummelige Natur von HDMI ist halt 
abschreckend. Das fängt ja schon mit dem Stecker an. S/PDIF kommt mit 
schön klotzigen Chinch Steckern daher. HDMI ist da schon unangenehmer. 
Naja, auf der anderen Seite hat sogar schon Reichelt HDMI SMD Stecker im 
Sortiment. Wird vielleicht mal Zeit, dass man sich an sowas ranwagt;)

Die DSP Serie in Diskussion ist die SigmaDSP von Analog. Denkbar ist da 
jedes chip. Konkret verwende ich grade den ADAU1701. Siehe FreeDSP.cc 
oder mein angehängtes Bild.

Hui, auf die XMOS hatte ich auch schon ein Auge geworfen. Was für riesen 
chips. Ich hatte mich dann nicht weiter damit beschäftigt, da mir nicht 
ganz einleuchten wollte warum ich einen Mehrkernprozessor benötige um 8 
Kanäle Audio von USB nach I²S zu bringen. Vielleicht hat ja mal jemand 
sowas mit einem STM32 gemacht? Mich würde aber auch interessieren wie du 
das ganze aufgezogen hast. Welches board hast verwendet? Selbst gebaut 
oder ein dev kit? Was kostet das und wo hast du es dir besorgt?

Dein Projekt, muntablues, klingt auf jeden Fall wert es weiter zu 
verfolgen. Mit Lizenzen und Fertigung würde ich mich nicht weiter rum 
schlagen: Stell einfach mal in einem open source Rahmen vor was du 
bisher geschafft hast. Wer sich wirklich dafür interessiert wird sich 
vom ätzen einer Platine nicht abhalten lassen :)

OK, USB kann Mehrkanalton. Habe es grade noch mal in den Spezifikationen 
nachgelesen. Wenn man ein bisschen sucht finden man auch USB Soundkarten 
variierender Qualität, die das benutzen. Aber kein Vergleich, zu der 
Flut an Stereo USB Soundkrächtzen. Hinzu kommt, dass ich einfach keinen 
Beispielcode für die STM32F4 discoverys finde, die Mehrkanalton 
verwenden. Außerdem sind alle USB DACs von TI, Analog oder ST maximal 
Stereo. Gibt es da vielleicht doch Stolperstricke?

Das S/PDIF, das ist was ich will bezweifle ich ;) Außerdem ist es nicht 
richtig, dass S/PDIF oder TOSLINK nur 2 Kanal PCM können. ADAT ist hier 
das Stichwort. Sollen die Realtek chips angeblich auch können aber ich 
habe da noch niemenden gefunden der das mal ausprobiert hätte.

Diese HDMI-zu-I²S Adapter sind eindeutig zu mager bestückt. Im Kontext 
der anderen Produkte, die dort angeboten werden, vermute ich einen 
semipassiven Adapter. Dort wird nur das HDMI KABEL für I²S verwendet. 
Was dieser Audio-gd shop nun tatsächlich anbietet ist etwas schwierig zu 
interpretieren. Dort steht nirgends etwas in Richtung Mehrkanalton. 
Zugegeben dort steht auch nirgends stereo. Überhaupt steht da sehr wenig 
nützliche Information und nur die Hälfte ist verständliches Chenglisch. 
Alles "ultra high qualitiiii!!"

Thor

: Bearbeitet durch User
von Lattice User (Gast)


Lesenswert?

Alex S. schrieb:
>
> Das I²S nur zwei Kanäle pro Datenleitung macht ist mir klar. Ich dachte
> es wäre selbstredent, dass ich genügend Datenleitungen am I²S für mein
> Vorhaben zur Verfügung stelle.
>

Der DSP auf dem Board kann auch TDM statt I2S auf den gleichen 3 Pins.
TDM: Clock, Data, Sync
I2S: Clock, Data, L/R

bei TDM muss allerdings im Gegensatzt zu I2S Sender und Empfänger 
konfiguriert werden.

von Alex S. (thor368)


Lesenswert?

Ja, das habe ich vergessen zu schreiben. TDM ginge auch. Aber das ist 
noch seltener als I²S. Wäre natürlich das I-Tüpfelchen aber man kommt 
auch ohne aus :)

Thor

von Günter R. (muntablues)


Angehängte Dateien:

Lesenswert?

Du willst Sachen wissen :-)

Wie gesagt, mein Prototyp ist fertig aufgebaut und besteht aus zwei 
Boards. Einmal der Master (Usb mit XMOS und Quarz und was sonst noch 
alles nötig ist) und dann das Analog Board (DACs und Kopfhörer Amp).

Ich könnte die Boards (Layout, ..) natürlich online stellen, aber das 
Problem ist, dass ein "normaler" Bastler die BGAs nie im Leben selber 
bestücken kann, somit muss man das fast für die Verbrauchen machen. 
Daraus folgt, dass ich ein Board anbieten wollte, welches die nötigen 
Anschlüsse für I2S nach außen geführt hat und jeder kann so sein 
"custom" Analog Board dazu basteln.

Mein Ausgangspunkt für die Entwicklung war erst das Audio Referenz 
Design (gibts aber mittlerweile nicht mehr) und für den letztendlichen 
Prototyp hab ich das "USB Audio DJ Kit" her genommen. Das hat zwar 4x In 
und 4x Out aber das ist ja nur eine Software Sache um das zu ändern...

Übrigens hab ich mit dem STM32 auch herum probiert, aber der wird mehr 
als 4 Kanäle nie unterstützen weil die HW schon max 2 I2S hat, also hab 
ich es gelassen. Stereo hab ich so halb zum Laufen gebracht, aber leif 
nie so sauber und stabil wie die XMOS Lösung!

Naja ich häng mal ein paar Bilder an, dann siehst du mal wie meine 
"Lösung" aussieht...

von Markus -. (mrmccrash)


Lesenswert?

Wenn du unkomprimiertes Mehrkanal Audio über USB bekommen willst, kommst 
du zwangsläufig auch in der Pro-Audio Ecke vorbei - und dort gibt es 
noch ADAT Interfaces, die dann 4xI2S mit 48Khz bzw. 2x I2S bei 96Khz 
bereitstellen (also 8 bzw 4 Kanäle) - für noch mehr Kanäle landet man 
dann bei MADI, AES50 etc.

Für ADAT gab es mal Wavefront AL1401/1402 zum Senden und Empfangen, 
allerdings scheint die Firma alle Produkte eingestellt zu haben - 
zumindest sind sämtliche Teile als EOL zu 2013 gekennzeichnet...

Früher (jetzt auch noch, aber nicht mehr so oft) hätte ich noch FireWire 
(IEEE1394) vorgeschlagen, worüber man quasi "beliebig" viel Audio 
durchprügeln konnte, aber selbst Apple (die das als erste hatten) hat 
sich davon getrennt, ein solches Projekt wäre also auch nur bedingt 
Zukunftssicher.

Als Option käme mir jetzt noch ein FPGA als Signalkonverter in den Sinn 
- dann könntest du mehrere Interfaces ausprobieren.

Jemand anderes hatte schon eine solche Idee:
https://sites.google.com/site/koonaudioprojects/usb-to-multi-channel-usb2-0

MfG

von Alex S. (thor368)


Lesenswert?

Das ist ein wirklich hübsches Plateng geworden! Kandidat für den 
Kunstwerke Thread ;)

Auf ein BGA chip bin ich auch nicht unbedingt wild und schon gar nicht 
auf ein sechskerniges Monstrum. Das Teil hat mehr Dampf als meine DSP :)

Was mich brennend interessiert ist wie du die USB Anbindung mit dem 
STM32 gemacht hast. Die offiziellen Treiberpakete von ST sehen maximal 
stereo vor. Außerdem interessiert es mich wie du die Anbindung seitens 
Windows gelöst hast. Hat Windows da schon Standardtreiber für 
integriert?

Die Anzahl der I²S Kanäle an einem STM32 ist wirklich kein Problem. Nur 
die kleinsten der Serie haben zwei I²S Kanäle. Schon die einstiegs F4 
haben 5 und die etwas größeren zusätzlich zwei TDM fähige Audio 
interfaces. Da findet sich sicher was^^

Thor

von Günter R. (muntablues)


Lesenswert?

Ich hab vor einigen Jahren das STM32 Beispiel (Usb Audio oder so) her 
genommen und dann mit einem F107 für Stereo das ganze probiert. Das hat 
aber nie 100% funktioniert und gleichzeitig hab ich mit dem Referenz 
Board von XMOS herum gespielt und dann war für mich die Sache klar, dass 
ich auf XMOS setze!

Kurz gesagt, Mehrkanal und STM32 hatte ich nie wirklich am Laufen, da 
kann ich dir nicht weiter helfen... Dass die neuen F4 mehr I2S haben, 
war mir auch neu :-)

Noch so am Rande: Was stört dich wenn der XMOS so viele Kerne hat und 
diese auch verwendet?! Kann dir doch eigentlich egal sein, 
aussagekräftig sind was dabei raus kommt. Von den 6 Kernen werden auch 
ein (oder zwei) nur für USB verwendet und der Rest macht dann die Arbeit 
fürs I2S, oder Midi, oder ...

Naja für mich war das die beste Lösung damals, wie es bei dir ist, kann 
ich dir nicht sagen, das musst du selber raus finden ;-)

von Lattice User (Gast)


Lesenswert?

Die AT91SAM7Snnn können TDM, aber nur USB Fullspeed. Dies sollte 
allerdings für 8 Channels mit 16bit reichen wnn man den PingPong Buffer 
schnell genug bedienen kann.

Für passende USB Audio Decsriptoren siehe das Angebot von Thomas
Beitrag "Re: I²S 6 Kanal vom PC"

von Thomas (Gast)


Lesenswert?

>Die AT91SAM7Snnn können TDM, aber nur USB Fullspeed. Dies sollte
>allerdings für 8 Channels mit 16bit reichen wnn man den PingPong Buffer

dann geht aber auch der TUSB3200. Den habe ich damals genommen
16 bit 3 x Stereo OUT, 1 x Stereo IN. Das hat bei mir schon 2001
funktioniert.

Thomas

von Guest (Gast)


Lesenswert?

Hallo zusammen,

ich habe/hatte das selbe Problem (Heimkino via FreeDSP). Dafür habe ich 
mir den USBStreamer zugelegt:
http://www.minidsp.com/products/usb-audio-interface/usbstreamer

Da ich im Moment über die analogen Eingänge nur Rauschen und Knacken 
bekomme, bin ich noch nicht dazu gekommen den FreeDSP mit dem 
USBStreamer zu verbinden. Sollte allerdings möglich sein.

Ist aber nicht OpenSource.

Viele Grüße

von freeDSP (Gast)


Lesenswert?

Markus -. schrieb:
> Für ADAT gab es mal Wavefront AL1401/1402 zum Senden und Empfangen,
> allerdings scheint die Firma alle Produkte eingestellt zu haben -
> zumindest sind sämtliche Teile als EOL zu 2013 gekennzeichnet...

Die Chips wurden von Coolaudio übernommen:
http://www.coolaudio.com/

lieferbar sind sie in geringen Stückzahlen unter
http://cabintechglobal.com/

Wenn du irgendwie einen ADAT-Ausgang an deinen PC bekommst, ist das die 
optimale Lösung :-) Die Chips AL1401/1402 haben je 4x 2 I²S-Leitungen, 
also kannst du wahlweise 8 Eingänge bzw. 8 digitale Ausgänge an deinen 
freeDSP ergänzen.

Ein Problem ist natürlich der Kostenfaktor - ~12€ je AL1401/1402 + 
ADAT-Schnittstelle am PC.

Wir (freeDSP) haben ein ADAT-Shield für den freeDSP in Planung, wenn es 
fertig ist gibt es die Layoutdaten dann auf unserer Webseite :-) Die 
Chips sind ja aber sehr einfach zu löten.

Falls du den SPDIF-Weg gehst, muss du sehr aufpassen, was die synchrone 
Übertragung angeht. In größeren DSPs (ADAU1452) hat man ASRC 
(asynchronous sample rate converter), um den asynchronen 
SPDIF-Datenstrom an den internen Takt anzugleichen, der ADAU1701 hat 
diese noch nicht. Im schlimmsten Fall hat man dann Störungen in der 
Datenübertragung. (evtl. gibt es SPDIF-I²S-Chips mit internem ASRC)

Viele Grüße

Ludwig

von Alex S. (thor368)


Lesenswert?

Den USBStreamer hatte ich auch schon mal gesehen. Auf den ersten Blick
passte er perfekt. Preislich auch noch im Rahmen. Allerdings sieht es so
aus als hätte der Treiber keinen support für standard Windows Audio. Und
wie gesagt ASIO ist keine option für mich.

Hallo Ludwig! Schön zu sehen, dass du ebenfalls hier mitliest. ADAT ist 
sicherlich eine Lösung. Zu bedenken ist allerdings, dass kaum einer ADAT 
interfaces hat. Ich denke der Weg den man gehen sollte ist HDMI. Es gibt 
durchaus TMDS chips, die in der Lage sind Audio vom Datenstrom zu 
trennen und per I²S auszugeben. Außerdem könnte man den STA310 als 
TOSLINK/SPDIF Decoder einsetzten. Ich habe nur leider keine Erfahrug mit 
dem STA310. Vielleicht findet sich jemand?

Übrigends ein großes Lob und meinen größten Respekt für das FreeDSP 
Projekt. Ich habe vor einen halben Jahr ein Exemplar aufgebaut, dass 
seither seinen Dienst im Heimkino unserer WG leistet. Mein Mitbewohner 
arbeitet momentan an einer kompatiblen SMD Variante. Wir verwenden dafür 
KiCAD. Ihr solltet überlegen euer layout auch von eagle zu migrieren.

Thor

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.