elianda hat geschrieben:Deine Theorie bei Trackerfiles gilt nur, wenn man die Rohsamples und die Ausgabesamples mit derselben Frequenz vorliegen hat bzw. abspielt. Sobald man jedoch wie oft üblich z.B: 8 kHz oder 11 kHz Rohsamples hat, man aber mit 44.1 kHz abspielt geht die einfache Rechnung mit (c1+c2+c3+c4)/4 nicht mehr auf, da man resamplen muss. Das gilt auch sofort, sobald man das Instrumentensample nicht mit der Default Note C-1 abspielt.
Dass das stark vereinfacht von mir war, ist mir klar.
Hinsichtlich einer Soundeffekte-"Engine" ging ich allerdings davon aus, dass das Resampling (Du meinst damit, die Konvertierung eines z.B. 8 kHz-Samples auf eine Frequenz von z.B. 11 kHz?) beim Laden des Soundeffekts durchgeführt wird. Zumindest würde ich es so machen - wenn ausreichend RAM vorhanden ist - , da die Ausgabefrequenz zu diesem Zeitpunkt (Ausführung des Programms) bekannt ist. Dann müsste ich im Rahmen der Echtzeit-Soundausgabe meine alle auf die Ausgabefrequenz konvertierten Samples doch tatsächlich nur addieren - und dann wieder dividieren. Den durch die Division entstehenden Qualitätsverlust (und nur diesen!) müßte ich also durch die Verwendung eines besseren DACs verhindern können...
Dass das Ganze für einen Mod-Player oder besseres nicht mehr unverändert gilt, ist mir schon klar. Da ich dort ständig andere Tonhöhen habe und ggf. noch Tonhöhen-relevante Effekte wie Vibrato etc., muss ich meine Samples auch ständig in Echtzeit resamplen.
Aber auch in diesem Fall gilt m.E., dass ich den durch Division entstehenden Qualitätsverlust (und nur diesen) - der allein schon deswegen entsteht, weil ich die resampleten Stimmen und/oder Soundeffekte auf einen (oder, bei stereo, zwei) Ausgabekanäle reduzieren muss - verhindern kann, wenn der DAC mehr als 8-bit hat. Nur um diesen Qualtitätsverlust ging es mir.
elianda hat geschrieben:
Durch die dazu notwendige Interpolation (welcher Art auch immer) spielt die Bitgenauigkeit des Zieldatenstroms eine Rolle.
Weißt Du dazu mehr? Ich würde dann gerne einen Thread unter Programmierung aufmachen, wenn ich meine Fragen dazu ein wenig katalogisiert habe.
Was versteht man unter Bitgenauigkeit des Zieldatenstroms?
(Mein Mod-"Player" - der enorme Unzulänglichkeiten hat und den Namen Player eigentlich nicht verdient - vermixt 4 Stimmen, indem er pro Stimme das Instrumentensample auf die im Mod-Song angegebene Tonhöhe unter Berücksichtigung der Ausgabefrequenz konvertiert (einfaches Resampling) und dann eben - wie oben beschrieben - die vier Stimmen auf den Ausgabekanal reduziert. Das Resampling ist dabei eine einfache Streckung/Stauchung des Rohsamples auf die Frequenz, die ich als Zielfrequenz eben aus der Tonhöhe unter Berücksichtigung der Ausgabefrequenz errechnet hatte. Klappt auf meinem 386sx16 gerade noch mit 16 KHZ, 8-bit, mono.
Eine Interpolation findet bei mir nicht statt. Wenn ich jetzt die Soundausgabe meines PLayers mit z.B. Inertia-Player 1.22 vergleiche, habe ich subjektiv das Gefühl, die Ausgabe von Inertia-Player ist mind. doppelt so gut. (Anm.: mein Mod-Player unterstützt noch kein Finetuning und auch nicht alle Effekte; der Qualitätsunterschied ist in diesem Fall unendlich!). Ich hoffe derzeit, dass mir eine lineare Interpolation zur Verbesserung der Soundqualität helfen könnte....)
wobo