Mau1wurf1977 hat geschrieben:Speicherplatz war zu DOS Zeiten sehr knapp und somit haben die wenigsten Spiele 22KHz. Ich denke die hatten eher 11KHz oder sowas. Und "kurze" Zeit später gabs eh schon die SB16.
Sehe ich genauso. Die meisten Spiele hatten 8bit/11kHz, oder noch weniger (s.u.). Oder dann die SB16, wobei ich die dann schon gar nicht mehr mitbekommen habe.
Mau1wurf1977 hat geschrieben:Ich frage mich ob die damals schon Audio komprimieren konnten. Also auf einem 386er z.b. oder ob das alles mehr oder weniger unkomprimiert war...
Eine Komprimierung gab es damals schon. Allerdings in absolut bescheidener Qualität (verlustbehaftet) und tendenziell eher in Verwendung für 286/8088, als für 386. Wegen der besseren Qualität hat man auf 386er wohl lieber gleich unkomprimierte 8bit-Samples rausgehauen.
Bei 8bit mono Samples wandelt der Analog-Digital-Converter (ADC) die Schwingungen ja in ein Wertespektrum von 0..255 um. Die Abtastrate beeinflusst dann direkt den Speicherbedarf (wie jeder weiss). Schon die ersten SB konnten Frequenzen von 4 – 22.05 khz wiedergeben, so dass sich bei einer Sample-Dauer von einer Sekunde ein Speicherbedarf von 4.000 – 22.050 byte ergibt. Das ist viel für damals, und eine Sekunde ist nicht lang.
Im Wertespektrum von 0..255 steht der Wert 128 für Stille. Die erste Möglichkeit zur Komprimierung bestand dann in der Herausfilterung von Stillemomenten, was bei Sprachsamples durchaus vorkommt. Herausfiltern und Berücksichtigung der Stille beim Abspielen mussten softwareseitig erfolgen. [1]
Die zweite Möglichkeit zur Komprimierung war das sogenannte Adaptive Delta Pulse Code Modulation (ADPCM). Über ADPCM konnten die 8bit Samples nochmal auf 4bit bzw. sogar 2bit reduziert werden, wodurch sich auch der Speicherbedarf halbiert bzw. geviertelt hat.
Wenn man sich ein 8bit Sample anschaut, dann hat man selten den Fall, dass radikale Sprünge von z.B. 0 auf 255 folgen. Meistens liegen die einzelnen Sample-Werte relativ nah beinander. Wie der Name Delta sagt, hat man bei der Komprimierung nach ADPCM in den 4bit bzw. 2 bit dann nur diese Abstände von einem Samplebyte zum nächsten gespeichert.
Die Qualität der Ausgabe ist dann idR erheblich besser als wenn man die Samples direkt auf z.B. 4bit reduziert hätte. Denn bei 4bit – Samples steht ja nur eine Auflösung von 0..15 zur Verfügung, d.h. bei der Wiedergabe könnte der DAC dann das Sample nur in 16 verschiedenen Schwingungen wiedergeben. Bei einer Komprimierung mittels 4bit- oder auch 2bit ADPCM wird das Sample dagegen nach wie vor in 256 Abstufungen (0..255) wiedergegeben, nur der Sampleverlauf ist etwas „holpriger“.
Wie immer, so auch hier, hat Creative aus bescheidener Technologie ein Staatsgeheimnis gemacht. Ich weiss bis heute nicht, wie die Komprimierung konkret umgesetzt wurde. Denkbar wäre - das habe ich mal gelesen -, dass die Delta-Werte als Potenzen von 2 zu verstehen gewesen wären. Dann gäbe es bei 2bit-ADPCM Additionsmöglichkeiten von 1 (2^0), 2 (2^1), 4 (2^2), 8 (2^3). Entsprechend dumpf klänge eine Explosion, die recht schnell von Stille (128) auf volle Dröhnung (255) ansteigt.
Vielleicht hat Creative die Deltawerte auch einfach tabelliert. Zumindest bei 4bit macht ein Umsetzung als Zweierpotenzen schon keinen Sinn mehr. 2^15 0 32768 liegt schon weit außerhalb des Ausgabespektrums von 0..255. Wahrscheinlich hat Creative die Werte wirklich fix tabelliert...
Die Komprimierung musste übrigens auch wieder durch die Software erfolgen. Die SB hat lediglich das Dekomprimieren beim Abspielen der ADPCM-Samples übernommen.
Laut SB-Verpackung konnte die SB neben 2bit und 4bit – Komprimierung auch eine 2.6bit Komprimierung. Keine Ahnung, was das ist. Vielleicht hat Creative hierbei 3 Deltawerte in ein Byte gepackt, z.B. mit den Auflösungen 3bit/3bit/2bit.
Komprimierte Samples konnten übrigens nur mit halber Frequenz wiedergegeben werden, nämlich nur mit 4-11 khz. [2]
Das ganze hatte ich dann tatsächlich auch in dem ein oder anderen 286er-Spiel vorgefunden. Auch hatte ich bei DOTT (Day of Tentacle) immer die Vermutung, dass die Sprachausgabe mittels ADPCM komprimiert ist. Denn wenn man ein Sample allein über die Frequenz reduziert, z.B. von 8 khz auf 4 khz dann klingt es in meinen Ohren sehr dumpf. Wenn ich dagegen ein 8 khz Sample anhöre, was mittels SB-ADPCM komprimiert ist, dann klingt es für mich nicht ganz so dumpf, aber wesentlich blecherner als das Ausgangssample gleicher Samplefrequenz. Und ich fand immer, die SB-Sprachausgabe von DOTT klang blecherner als ich bei der von mir vermuteten (!) Ausgabefrequenz erwartet hatte.
Edit:
[1] Korrektur:
Lediglich die Steuerung der Stille musste software-seitig übernommen werden. Das "Abspielen" der Stillephase hat die SB selber hinbekommen.
[2] Korrektur:
Die Ausgabefrequenz bei 4bit SB-ADPCM betrug 4-12 khz, bei 2.6bit 4-13khz und bei 2bit 4-11 khz. Bei diesen Frequenzen ist es auch bei späteren Versionen geblieben.