Hi Leute,
habe ein experimentelles Projekt in Planung. Zum Umsetzung eines
Features möchte ich - wie von USB-Festplatten bekannt, eine
1:1-Verbindung zwischen PC (flacher USB Stecker männlich) zu Gerät
(Host-Mini-USB bzw. Host-USB (kleiner männlicher/großer rechteckiger,
konische Kanten Stecker) herstellen.
Mir ist klar, dass ich zur Ansprache des Geräts seites des PC's einen
USB-Treiber benötige, welchen ich selbst schreiben muss. Mir ist auch
klar, dass ich gleiches für mein Gerät tun muss, welches ich mit Linux
betreiben werde.
Unklar ist mir allerdings noch, ob es die Bauteile für Host-USB irgendwo
für Standard-PC's z.B. wie VIA EPIA M700 zu kaufen gibt, wo diese dann
angeschlossen werden (interner USB pin-connector?) etc. und ob die VIA
EPIA M700 Chipsatz einen Controller besitzt der eine solche
Konfiguration überhaupt erlaubt.
Ziel ist es, per USB 2.0 Audio-Daten vom PC auf das Gerät zu übertragen.
Möglichst Latenzfrei. Es entsteht dann in externer DAC. (Digital/Analog
Converter für Audiodaten)
Nebenfragen: Wie sieht das ganze rechtlich aus? Darf man
Consumer-Hardware "neu zusammensetzten", eigene Software schreiben und
als neues Consumer-Device vertreiben? Gibt es ein Lizenzrecht für die
Verwendung von USB als Host eines Devices etc.?
LG,
Aron
Hallo,
meiner Meinung nach ist das Konzept falsch: Der PC ist USB-Host, soweit
herrscht noch Einigkeit. Dann ist aber dein Gerät USB-Client - du
beschreibst ja selbst den entsprechenden Stecker richtig. Um das zu
implementieren, nützt dir ein wie auch immer geartetes USB-Host-Modul
nichts, denn du brauchst ja einen Client wie Tastatur, Maus, Festplatte
oder auch Audiosystem. Das letztere ist genormt und könnte dir als
Vorlage für die Treiberprogrammierung dienen, vielleicht könnte man auch
gleich einen Windows-Standard-Treiber verwenden.
Gruss Reinhard
Es gibt 2 Methoden das zu erreichen.
1. Client als Massenspeicher. Beim Host kein Treiber nötig
2. Emulation einer Netzwerkkarte und Dateifreigabe. Viel Aufwand, hat
Intel beim US15W so gemacht. Die Treiber dazu sind eher wacklig.
Hardwareseitig: Mir fällt jetzt kein käuflicher USB-Client-Controller
ein. Du müßtest den in ein CPLD/FPGA reinprogrammieren und an den PCI
hängen. Auch nicht unbedingt einfach.
Re,
gute Ideen! Client als Massenspeicher wäre prinzipiell ja gar keine
schlechte Idee. Ich könnte dann den Treiber auf dem PC so entwerfen,
dass er sich in die Audio Queue hängt, die Daten abfängt, sie
Schrittweise auf den emulierten Massenspeicher des DAC in einer Datei
ablegt und so "gebuffert" die Daten überträgt.
Für den DAC entwickel ich dann ein Programm, welches synchronisiert in
einem Intervall-Loop die Daten gebuffert abfängt und an in die eigene
Audio-Queue als Playback-Daten einfügt.
Die Digitalen Audiodaten würden so über die High-Quality Audio-Karte des
DAC umgewandelt werden.
Fragt sich dann jedoch: Woher bekomm ich so etwas wie einen PCI USB
Stick? :-D
Danke euch!!
LG,
Aron
Nein, der Client muss natürlich kein Massenspeicher sein. Es reicht ein
USB-Audio-Device. So etwas ist ebenfalls eine Standardgeräteklasse, die
von den meisten Betriebssystemen mit den mitgelieferten Treibern
unterstützt wird.
Könnte es sein, daß Du in Deiner Beschreibung irgendwie "Host-USB" etwas
irreführend verwendest?
ah, super :)
Fallen euch sonst noch Ideen ein, wie ich den Digitalen Audio Output
evtl. einfach als Coaxial / Optical out an meinen DAC bekommen könnte?
Prinzipiell ist der DAC ja das gerät was allein digitale Input-Daten
braucht. USB ist da für mich halt bloss die bisher einzig sichtbare
"Notlösung" die Audiodaten latenzfrei zum DAC zu bringen.
Vl. gäb es ja auch noch andere gute Wege? Evtl. über DVI oder
DisplayPort, oder HDMI.. aber alle diese Schnittstellen sind nur wenn
man Glück hat bei PC's mit den Audio-Chips verbunden, oder?
LG,
Aron
Äh, was genau möchtest Du eigentlich erreichen?
Möchtest Du nur Audiosignale mit einem PC erzeugen, den dafür
verwendeten DAC aber abgesetzt vom PC betreiben?
Oder möchtest Du in Deinem "Gerät" doch noch irgendwelche anderen Dinge
tun?
Rufus t. Firefly schrieb:> Äh, was genau möchtest Du eigentlich erreichen?
genau, gib uns ein Blockschaltbild.
Mir scheint das alles recht konfus, und vermutlich gibt's das schon als
USB Audio Interface (neudeutsch für Soundkarte) für weniger als 200€.
Ihr habt recht, meine Beschreibung zerstreut sich logisch ein wenig.
Mittlerweile wird mir auch immer klarer, was eigl. das Optimum für das
Projekt wäre:
Grundsätzlich plane ich, ein VIA EPIA M700 mit einer sehr guten PCI
Sound Karte zu bestücken. Durch eine Modifizierung meines LFS-Systems
(Linux From Scratch), u.A. ALSA-Plugins etc. erreiche ich, die digitalen
und analogen Input-Daten der Soundkarte (1x Coax / 1x Optical In, 2x
analog In) durch ALSA zu schleifen, zu processen und an Headphone,
Digital Out (Coax), 2x Analog out wieder raus zu geben.
Möglich ist es also bereits, alle möglichen Quellen von Audiodaten (sei
es Coax/Optical input oder stereo analog Input) durch das Gerät zu
jagen. (1:1 Durch zu schleifen und durch gute Hardware, ein sehr gutes
Wandlungsergebnis zu erhalten)
Jetzt würde ich gern noch erreichen, dass ich auch den PC / Mac als
Signalquelle für mein Gerät verwenden kann. Dazu muss ich die
Ausgangsaudiodaten des PC's digital an mein Gerät (den DAC) übertragen -
und das möglichst latenzfrei.
Ein PC / Mac hat nun verschiedene Schnittstellen zur Verfügung, womit
ich die physikalische Signalübertragung anstellen könnte.
Nutze ich USB, müsste ich bestenfalls in meinem Gerät eine Art Chipsatz
für Client USB (Generic Audio Device) einbauen, um den PC mit meinem
Gerät per USB-Kabel zu verbinden. Wäre es ein Generic Audio
Device-Chipsatz bräuchte ich für den PC nicht mal groß Treiber
schreiben, da jedes moderne Betriebsystem Generic USB Audio Device's
unterstützt.
Was ich eigentlich benötige, wäre lediglich ein Chipsatz, den ich in ein
VIA EPIA (PC Architektur) einbauen kann (wie auch immer verbunden. Sei
es PCI, internal USB etc. pp.), welches nach außen hin ein Generic USB
Audio Device darstellt, sodass ich den PC mit meinem Gerät per
Standard-USB-Kabel verbinden kann - und bestenfalls nach innen hin, also
zum VIA EPIA Chipsatz das gleiche tut. Dann müsste ich auf keiner Seite
einen Treiber schreiben.
Zur Übermittlung des Audio-Signals auf PC-Seite wird einfach das Generic
USB Audio device als primäres Abspiel-Device gewählt. Seitens meines
Geräts greife ich einfach die eingehenden Daten per ALSA ab.
Vermute aber, sowas ich so einfach nicht umsetzbar. Wäre jedoch echt
happy, wenn es eine Lösung gäbe, die in diese Richtung ginge.
Habe bereits einen Chipsatz gefunden, der ähnliches täte. Der ist
allerdings für ARM und ich hab keine Ahnung ob ich den an nen EPIA
patchen kann. Da würde dann die Treiber-Entwicklungs-Party außerdem
losgehen:
http://www.keil.com/mcb2140/
LG und Danke für eure Hilfe,
Aron
Btw: Ja, das ganze gibt es als guten extenen USB-DAC auf dem Markt. Ich
plane jedoch größeres.
Der digitale Audiosignalstrom soll im Gerät manipuliert werden. Ich habe
einige exzellent funktionierende Algorithmen, welche das Klangerlebnis
ungemein erhöhen. Jetzt möchte ich einen Prototypen als Hardware-Device
bauen, um die Umsetzbarkeit eines solchen Projekts zu prüfen.
Raus käme dann ein hervorragendes selbstbau-Produkt zur exzellenten
D/A-Wandlung von Audiodaten inkl. Kopfhörerverstärker und präzise
konfigurierbarer Klangverbesserung Optimierung Anpassung des
Audiosignals an die für den wiedergebenden Lautsprecher optimale
Signatur.
Ich habe das ganze als Beta-Software auf meinem Rechner / mit externem
DAC laufen und erhalte unglaubliche Klangverbesserungen. Ich würde
sagen, jede Art von Musik hört sich durchweg 20-30% "besser" an. Je nach
Konfiguration der Algorithmen-Variablen.
LG,
Aron
Aron Homberg schrieb:> Der digitale Audiosignalstrom soll im Gerät manipuliert werden. Ich habe> einige exzellent funktionierende Algorithmen, welche das Klangerlebnis> ungemein erhöhen.
Aha, und was machen die Algorithmen?
Frequenzgangausgleich der Lautsprecher?
Exciting?
Röhrensimulation?
Transientenoptimierung?
Oder was ganz neues?
Messtechnisch belegbares?
Edit: es gibt einen "VST-Player", da lädt man VST-Plugins zur
Audio-Bearbeitung in eine Hardware Kiste, und hat somit sein virtuelles
Plugin als Hardware mit analog IO.
Also bau doch aus deinen "exzellent funktionierenden Algorithmen" VST
Plugins (Steinberg stellt SKD) und lad sie da rein. Wenn die Algorithmen
gut sind, kannst du die VST Plugins sicher auch verkaufen.
Was sich hier als Schnittstelle anbietet, ist Firewire. Macs haben
praktisch alle Firewire-Schnittstellen, viele PCs auch, und es lässt
sich notfalls einfach nachrüsten.
Im Gegensatz zu USB ist Firewire eine Schnittstelle mit
gleichberechtigten Teilnehmern, d.h. es können ohne weiteren Aufwand
z.B. zwei PCs darüber miteinander verbunden werden.
Seit Windows XP wird Firewire standardmäßig als schnelle
Netzwerkverbindung genutzt.
Und Firewire wird im professionellen Umfeld auch für Audio-Anwendungen
genutzt, mal völlig willkürlich das Angebot eines Händlers dazu:
http://www.thomann.de/de/firewire_audio_interfaces.html