Auslesen der Samplerate eines Audio-Streams

Antworten
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Auslesen der Samplerate eines Audio-Streams

Beitrag von Daihedz »

Grüsseuch Forenten

Ich möchte bei einem laufenden Linux streaming client (Amarok? Aqualung? MPD? ...) die Samplerate des gestreamten Audiomaterials realtime auslesen können. Hat jemand Erfahrungen damit?

Ziel wäre es, einen adaptiven Convolver aufzubauen, welcher ohne die Notwendigkeit einer SR-Conversion stets automatisch jene Filter der entsprechenden Frequenz einstellt, welche zum gestreamten Material passen.

Grüsse
Simon
Bild
play-mate
Aktiver Hörer
Beiträge: 448
Registriert: 26.02.2010, 08:18
Wohnort: Berlin

Beitrag von play-mate »

Hallo Simon,

Dein Vorhaben, einen adaptiven Samplerateumwandler lässt sich nicht so einfach machen, zumal das Daten in einem Computer, nicht in einem kontinuirlichem "Stream" bearbeitet werden.
Im AES3 Format (S/PDIF od. AES/EBU) liegt die Clockinformation in einem kontinuierlichen Signal, und ein automatisches Umstellen der Samplingrate ist in diesem Format möglich. Dies kennt man auch von unterschiedlichen DACs, nicht wahr ?
Dies lässt sich jedoch nicht ohne weiteres in einem Computer realisieren.
Ich denke, es wäre (prinzipiell) möglich jede Datei mit der Samplingrate zu Taggen, und dann, über eine aufwendige Software, die Playersoftware dazu zu bringen, unterschiedliche Pfade für die Filter zu generieren.
Dazu muss du die Quellcode der Playersoftware erweitern oder neu schreiben.
Das ist Arbeit für Softwareingeneure.

Viele Grüße

Leif
Bild
Fujak
Moderator
Beiträge: 5753
Registriert: 05.05.2009, 21:00
Wohnort: Bayern
Kontaktdaten:

Beitrag von Fujak »

Hallo Simon,

Das hat doch Uli mit seinem AcourateVSTConvolver bereits realisiert. Funktioniert der nicht mit Linux?

Grüße
Fujak
Bild
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Beitrag von Daihedz »

Fujak hat geschrieben: Das hat doch Uli mit seinem AcourateVSTConvolver bereits realisiert. Funktioniert der nicht mit Linux?
Gute Frage - Uli?

Selbst wenn Uli's dll unter Linux funktionieren sollte - ich brauche eigentlich bloss Infos über die aktuelle SR eines Players, weiter nichts: Ich habe mit meinem bayft-skript eine zwischenzeitlich recht robuste Möglichkeit, sehr hardwarenahe (ALSA<->Brutefir) und einfach mittels

$ bayft parameter

u.a. die Samplerate mit den zugehörigen Filtern innerhalb eines Mehrkanalsetups umzuschalten. So schaltet z.B. $ bayft 96000 das ganze Setup im laufenden Betrieb nach einer Pause von ca. 2' auf 96kHz um, ohne die Notwendigkeit eines Resamplings. Das (und noch einiges mehr) ist alles schon implementiert, funktional, handy und frei verfügbar.

Um das Konzept nun noch auf einen adaptiven Mediaplayer ausweiten zu können, braucht es bloss noch die Möglichkeit, an den Wert der aktuellen Samplerate heranzukommen. Hardwaremässig bei SPDIF und besseren Karten (z.B. RME) ist dies kein Problem, da diese Werte unter /proc/asound/cardn/... auslesbar sind. Aber ich bräuchte noch das Wissen, wie dies softwaremässig bei playern gelingen kann.

Deshalb nochmals meine Frage: Hat jemand eine Idee oder das Wissen, ob es Player gibt, bei welchen die SR eines laufendenden Audiostreams auslesbar oder in einer stets aktualisierten Datei verfügbar ist?

Nachhakende Grüsse
Simon
Bild
Udor
Aktiver Hörer
Beiträge: 389
Registriert: 02.09.2010, 00:17

Beitrag von Udor »

Fujak hat geschrieben:Hallo Simon,

Das hat doch Uli mit seinem AcourateVSTConvolver bereits realisiert.

Grüße
Fujak
Hallo Fujak,

Allerdings "nur" 2 Kanäle also Stereo. Es sei denn Uli hat da noch mal nachgebessert.
Das ist ja die Crux, Jriver, Brutefir etc. können Mehrkanal aber keine Filterumschaltung, Ulis Convolver kann Filterumschaltung aber nur in Stereo...

Könnten die zwei sich nicht mal zusammen tuen ?

Gruß Udo
Bild
play-mate
Aktiver Hörer
Beiträge: 448
Registriert: 26.02.2010, 08:18
Wohnort: Berlin

Beitrag von play-mate »

Ja, freilich hat Uli das Umschalten mit S/PDIF realisiert.
Das ist ja auch möglich, weil S/PDIF ein Signalstream ist, wo die Clock-info drin ist....

-aber nochmals: ein Computer arbeitet nicht nach einem S/PDIF Stream.
Schaltet man 2 Computer zusammen mit S/PDIF als Verbindung, so könnte der zu emfangende S/PDIF Reciever die Samplingrate umstellen.
Dies ist auch der Grund warum der VST-Convolver das Umstellen kann.

Gruss Leif
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4668
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Also,

1. das VST-Plugin erhält die Information bzgl. der Abtastrate vom jeweiligen Player über die bei VST definierte Schnittstelle.

2. das Plugin wird nicht unter Linux laufen, da es einige Bilbiotheken verwendet, die m.W.n. nicht linuxfähig sind.

3. wenn Simon nun irgendwelche Player unter Linux verwendet, dann sind das die jeweiligen Master. Die abhängig vom gerade gespielten Track die Abtastrate setzen. Und evt. auch umsampeln, je nach Fähigkeit und Voreinstellung des Players. Demzufolge müsste man also die aktuelle Abtastrate als Information vom Player erhalten. Ein weiteres Kriterium ist, dass die Soundkarte währenddessen nicht auf einen externen Eingang synchronisiert. Das würde zumindest schiefgehen, wenn dann die externe Clock (spdif, ADAT, Wordclock) z.B. auf 44.1 kHz läuft, aber der Track selbst 96 kHz aufweist.
Bei einigen Soundkarten kann über ALSA auch die aktuelle Abtastrate abgefragt werden.

4. Manche Soundkarten verhalten sich auch etwas sonderbar bei Umschaltung der Abtastrate. Dazu gehört m.E. auch RME. Ich meine, dass z.B. Foobar mit der Ausgabe an mein Firefce stoppt, wenn in der Playlist gemischte Trcks vorkommen und über ASIO ausgegeben wird.

5. Das Thema ist insgesamt nicht einfach. Ich selbst bin mit meinem VST-Plugin nicht besonders zufrieden. Es gibt daneben noch AcourateConvolver, also quasi ein Windows-Brutefir. Das klappt soweit, ist aber bezgl. der Umsschaltung der Abtastrate nicht fertig. Abspielen von einem Player geht damit auch, wenn man a la RME intern routet (Ausgang zu Eingang). Derzeit bin ich mit einem virtuellen kernel streaming-Treiber beschäftigt. Das hat auch seine Tücken. Zwei ASIO-Treiber gleichzeitig geht ebenfalls nicht.
Das nur als Randbemerkung, Simon sucht ja seine Löung in diesem Thread.

Grüsse
Uli
Bild
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

LAND IN SICHT!!!

Beitrag von Daihedz »

VLC in der Version ab 2.0.0 (im Februar 2012 released) lässt per Telnet mit dem Befehl
> info
die Werte des aktiven Codecs auslesen, und damit auch u.a die Samplerate des gerade wiedergegebenen Materials. Dies zur guten Nachricht.

Die schlechte Nachricht ist die, dass es die V.2.x.x für Linux (noch) nicht gibt. V.1.x.x kennt den Befehl
> info
nicht.

Es ist also hoffentlich lediglich eine Frage der Zeit, bis dass mittels der Kombination von VLC (V.2.x.x) und bayft ein volladaptiver Streamer auf Linux-Brutefir-Basis aufgesetzt werden kann. Wartemwersmalapp.

Frage nun an Euch Forenten: Was hält ihr von der Qualität von VLC - gibt es noch bessere Alternativen zu VLC (unter Linux), welche es zu beforschen sich lohnt?

Pfadfindergrüsse
Simon
Bild
Shefffield
Aktiver Hörer
Beiträge: 135
Registriert: 17.03.2010, 17:16
Wohnort: Markt Indersdorf

Beitrag von Shefffield »

Daihedz hat geschrieben:Frage nun an Euch Forenten: Was hält ihr von der Qualität von VLC - gibt es noch bessere Alternativen zu VLC (unter Linux), welche es zu beforschen sich lohnt?
Hallo, Simon!

Mir wird XBMC ziemlich heiß empfohlen - insbesondere, wenn Mehrkanalaudio auf dem Plan steht. Beeindruckend finde ich insbesondere die Möglichkeit, das Bild gegenüber dem Ton um bis zu 10 s zu verzögern.
http://www.xbmc.org

Bis bald,
Axel
Bild
Antworten