Thema: Der Traum der Bit-genauen Wiedergabe per Computer
Der Traum der Bit-genauen Wiedergabe per Computer.
oder.
Grundwissen der digitalen Audiotechnik.
Abbildung 1: Signalweg: Analog - Digital - Analog.
Einleitung:
In so einigen Foren trifft man immer wieder auf Fragen, bei denen es darum geht, "welche Karte", "welchen Treiber" oder "welche Software" man benutzen sollte, damit "auf gar keinen Fall irgendwo in der Kette eine Abtastraten-Wandlung stattfindet".
Dabei wird aber vergessen, dass die Abtastraten-Wandlung eigentlich kein Problem darstellen sollte, wenn man sich die technischen Grundlagen einmal vor Augen führen würde. Für den Aufbau eines digitalen Audiostudios beispielsweise gilt grundsätzlich: Werden in der digitalen Audiotechnik zwei Geräte miteinander digital verbunden, findet im Hintergrund - meistens ohne persönliche Wahrnehmung - sozusagen eine "Übereinkunft" statt:
Ein Gerät gibt den Ton an und das andere folgt auf's Wort.
Dies liegt daran, dass in der Digitaltechnik ein Takt den Zeitpunkt vorgibt, ab dem der Prozessor ein Datenwort auslesen, bearbeitet weitergeben oder empfangen soll. Dieser Takt wird durch einen Generator (Taktgeber => Uhr) innerhalb eines digitalen Gerätes erzeugt, damit das Gerät seinen Dienst verrichten kann. Werden zwei Geräte zusammengeschaltet, befinden sich somit zwei "Uhren" im Verbund. Nun kennt sicherlich jeder das Phänomen, dass es nicht einfach ist, zwei Uhren völlig synchron ticken zu lassen. Selbst wenn sie sehr genau und stabil laufen sollten, so gibt es auch hier kleinste Abweichungen. Die für die Synchronität notwendige "Kommunikation" darüber, wer Master und wer Slave sein soll, ist also hier schon schwierig. Bei drei oder mehr "Uhren" wird es noch schwieriger. Hier muss dann bereits während des Aufbaus des Verbundes der Anwender eine Hierarchie vorgeben.
Was für die Konzeption eines digitalen Audiostudios gilt, gilt ebenso für einen PC, denn auch hier "ticken" mehrere "Uhren" in einem Gehäuse. Jede eingebaute Soundkarte, jeder Treiber und jede Haupt- oder Hintergrundanwendung, oder sogar das Betriebssystem selbst, gelten so gesehen als eigenständige "Uhr" bzw. eigenständiges "Gerät". Der Arbeit vieler fleissiger Programmierer ist es zu verdanken, dass wir uns über die angesprochene Problematik im Alltag jedoch nur wenige Gedanken machen müssen.
Kompliziert wird es aber, wenn der Anwender oder die Situation einem der beteiligten Geräte einen anderen Takt aufzwingen möchten. Dies verursacht dann mannigfaltige Fehler, wie z.B.: "Ich versuche das Unmögliche, egal, ob es knackst oder eiert...", bis hin zu: "Ich verweigere den Dienst komplett...".
Das Problem:
Eines der am häufigsten auftretenden Probleme mit unterschiedlichen Taktungen stellt die Addition von zwei Audioereignissen mit unterschiedlichen Samplingfrequenzen dar. In der Analogtechnik hingegen ist dies nicht der Fall: Man benötigt dort lediglich ein beliebiges Mischpult, wo sogar die Verknüpfung von zwei Kabeln zu einem Y-Kabel mit den zu erwartenden Impedanz-Einschränkungen problemlos möglich ist. Als ich die Tontechnik noch als Hobby (Schülerband) und nicht als Beruf (Rundfunk) betrieb und Mischpulte vergleichsweise teuer waren, wurden des öfteren einfach zwei Mikrofone für die Toms am Schlagzeug zusammen auf einen Kanal gelegt, aber ich schweife ab.
Abbildung 2: Addition zweier Spannungen.
Dieser simplen Addition von Spannungen entspricht in der Digitaltechnik zwar auch nur eine ebenso simple Addition von Zahlenwerten, doch der dafür zuständige Prozessor muss die zeitlich korrespondierenden Zahlenwerte auch zur gleichen Zeit erhalten. Wenn diese Zahlenwerte wegen unterschiedlicher Samplefrequenzen jetzt aber nicht zur gleichen Zeit anliegen, was dann?
Abbildung 3: Addition nicht synchroner Digitalwerte.
Der Versuch (Teil 1):
Ich gehe im Folgenden davon aus, dass die meisten Mitleser foobar2000 als Softwareplayer verwenden, weshalb ich mich bei meinen Beispielen darauf beziehen möchte. Mit anderen Playern müsste aber eine ähnliche Versuchsanordnung ebenfalls machbar sein, falls der Versuch nicht sowieso mittels der vorhandenen Vorstellungskraft nur im Kopf entsprechend Interessierter stattfindet... ;)
Davon abgesehen kann man den Versuch rein akustisch verfolgen, oder aber auch - bei entsprechenden Voraussetzungen - visuell anzeigen lassen. Dafür benötigt man entweder einen externen DA-Wandler, welcher einem die gerade benutzte Samplingfrequenz anzeigen kann, oder eine kleine Software, die die Samplerate der verwendeten Soundkarte anzeigt. Der akustische Vorführeffekt dürfte aber in der Regel ausreichen.
Also an's Werk! Man erstelle eine Playlist mit zwei Dateien unterschiedlicher Samplefrequenzen. Danach aktiviere man über Preferences | Playback | DSP Manager den Crossfader und stelle eine deutlich wahrnehmbare Fadezeit (z.B. 10 Sekunden) ein, starte die erste Datei, spule diese bis zu ca. 15 Sekunden vor Schluss vor und warte darauf, was dann geschieht. Eine Ahnung? Wir haben es hier nämlich mit drei Geräten zu tun: Player A (erste Datei), Player B (zweite Datei) und einem Mischpult (Crossfader).
Nun denn: Mein foobar2000 spielt Datei Eins bis zum Ende ab und startet dann Datei Zwei vom Anfang. Es findet also kein Mix der Übergänge statt. Foobar2000 verweigert somit das Mischen von Dateien, die nicht zusammenpassen. Ich kenne andere Software, welche hier gnadenlos die zweite Datei zu schnell oder zu langsam abspielen würde, damit immer zwei Datenwerte miteinander addiert werden können.
Abbildung 4: Differenz zweier Samplerates (hier 32 kHz und 48 kHz).
Würde ich jetzt trotzdem einen Mix haben wollen, könnte ich versuchen, für beide Dateien ein Oversampling auf eine Frequenz durchführen zu lassen, die in einem ganzzahligen Verhältnis zu den beiden Quelldateien steht.
Abbildung 5: Oversampling im Verhältnis 3 zu 2 (32 kHz zu 48 kHz gleich 96 kHz).
Durch ein Oversampling würden keine Originaldaten verändert. Es würden lediglich weitere Datenwerte hinzuzugerechnet, so, wie es die Kombination aus Deglitcher und Rekonstruktionsfilter eines Digital-Analog-Wandlers auch auf der analogen Ebene machen würde.
Abbildung 6: Grobe Darstellung eines DA-Wandlers.
Der Rekonstruktionsfilter müsste natürlich auf die Samplingfrequenz des Quellmaterials angepasst werden, was hier durch einen Umschalter visualisiert wurde.
Oversampling:
Beim Oversampling würden zunächst die zusätzlichen Samplewerte mit Null zwischen die vorhandenen Samplewerte gelegt und in einem zweiten Durchgang die eigentlichen Werte interpoliert.
Abbildung 7: Ausgangsmaterial fürs Oversampling (32 kHz).
Abbildung 8: Zwischenschieben von je zwei Null-Samples (96 kHz).
Abbildung 9: Interpolation der Null-Samples (96 Khz).
Wenn ich nun von Anfang an wüsste, dass ich es nur mit Dateien mit 32 und 48 kHz zu tun habe, wäre das schön. Ich würde mein System auf 96 kHz einstellen und hätte ein einfaches geradzahliges Verhältnis zueinander. Ich könnte auch noch problemlos Dateien mit 96 kHz abspielen und mischen, wenn ich es wollte. Meine Originaldaten gingen aber 1 zu 1 neben den Zusatzdaten an die Soundkarte und im Audioschaltreis könnte ich mit günstigeren Rekonstruktionsfiltern arbeiten, da die akustisch kritische Grenzfrequenz (ca. 70 kHz) weit oberhalb des Hörspektrums liegt.
All dies wird von einer Software erledigt, welche flexibel auf alle möglichen Vorgaben reagieren kann. Bei der Hardware ist eventuell solche Flexibilität nicht gegeben. Spätestens bei der Soundkarte kommt der nächste Flaschenhals. Die Hardware leitet nämlich nur das weiter, wofür sie ausgelegt ist.
Hier kommen die Treiber in's Spiel. Diese sorgen dafür, dass auch Dateiformate abgespielt werden können, welche durch die Hardware nicht direkt unterstützt werden. Zur Verdeutlichung: Wenn die Soundkarte keine 96 kHz, sondern höchstens 48 kHz wiedergeben kann, muss also das mit Oversampling hochgerechnete Signal wieder auf 48 kHz resamplet werden.
Abbildung 10: Resampling auf 48 kHz.
Dies geschieht dadurch, dass jedes zweite Datenwort aus dem Signal wieder herausgenommen wird. Für diese feste Sample-Rate-Conversion (SRC) sieht das Blockschaltbild folgendermassen aus:
Abbildung 11: SRC mit fester Zuordnung.
Etwas komplizierter schaut die Sache mit sich immer wieder ändernden Rate-Verhältnissen aus. Hier wird zunächst ein Oversampling auf ca. 3 GHz ausgeführt, gefolgt von einer digitalen Hold-Stufe, welche das Signal nicht nur zur Startflanke der folgenden Sample-Stufe zu jedem beliebigen Zeitpunkt verfügbar hält.
Abbildung 12: SRC mit variabler Zuordnung.
Der Versuch (Teil 2):
Ausgehend vom Versuch Teil 1 aktiviert man nun beim Preferences | Playback | DSP Manager auch noch den Resampler vor dem Crossfader. Dieser bringt jede Datei vor dem Abspielen auf einen vorab eingestellten Takt und ermöglicht daher dem Crossfader, seine Arbeit zu verrichten. Wenn nun - wie im ersten Teil des Versuch's - die erste Datei angespielt und vorgespult wird, bemerkt man diesmal auch, dass die Dateien ineinandergemischt werden.
Die Versuche entsprechen auf nachgestellte Art und Weise der eigentlichen Arbeit eines Soundkartentreibers, denn hier müssen ja die Audiosignale aller Anwendungen (Geräte) in der Soundkarte vereint werden. Dabei spielt es keine Rolle, ob ich einen ASIO- oder den produktspezifischen Treiber verwende. Lediglich dann, wenn man den Rechner so konfiguriert, dass foobar2000 die einzige Soundquelle darstellt, wird das Signal 1 zu 1 durchgereicht. Beim sogenannten Kernelstreaming können aber nur Dateien wiedergegeben werden, welche die Soundkarte auch hardwareseitig unterstützt.
Das S/PDIF:
Auch das Sony/Philips Digital Interface unterliegt wegen der Datenrate des verwendeten Anschlusses einer Hardwarebeschränkung. Am elektrischen Ausgang (Cinch, oder eher selten: Klinke) ist bei linearen 48 kHz bei einer Tiefe von 24 Bit Stereo Schluss. 2 Kanäle, multipliziert mit 24 Bit x 48 kHz entsprechen 2,3 MBit/s Netto. Dazu kommen noch 2 x 8 Bit Zusatzdaten pro Takteinheit. Dies ergibt 3,07 MBit/s Brutto.
Mehrkanal-Daten können nur in codierter Form wie z.B. Dolby-Digital o.ä. übertragen werden. Am optischen Ausgang (TOS-Link für TOSchiba-Link) sind dann immerhin linear 192 kHz bei 24 Bit Stereo möglich, was 9,2 MBit/s Netto entspricht. Genauso, wie Linear 8 Kanal 24 Bit bei 48 kHz.
Abbildung 13: TDM: Time Division Multiplex.
Fazit:
"Abtast-Raten-Wandlung", oder auch Sample-Rate-Conversion (SRC), ist eine extrem nützliche Funktion, bei der sich - und das habe ich bisher noch gar nicht angesprochen - die als problematisch angesehene "Datenverbiegung" im ungünstigsten Fall nur auf das LSB (1/32768) auswirkt, während sich eine "Datenverbiegung" bei der Lautstärkeänderung (Stichwort: Replay Gain) pro 6 dB auf das MSB auswirkt. Die den Klang am meisten beeinflussenden Komponenten im digitalen Verbund sind jedoch die Analogschaltkreise der Wandler, und hier vor allem die Filter (Antialiasing im AD und Rekonstruktion im DA). Diese müssen eine extreme Flankensteilheit aufweisen, damit es nicht zu Alias-Frequenzen kommt. Es bedarf - im Gegensatz zu digitalen Schaltkreisen - eines erheblichen finanziellen Aufwandes, um diese Flankensteilheit im Hardwarebereich klangneutral erreichen zu können.