VOC (Audiocodec)

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Creative Voice File (VOC)
Dateiendung: .voc
MIME-Type: audio/x-voc
Magische Zahl: Creative Voice File
Entwickelt von: Creative Labs



Creative Voice, Dateinamenserweiterung .VOC (in DOS-üblicher 8.3-Schreibweise) bzw. .voc, ist ein Audioformat für digitale Audiodaten für die in den 1990er-Jahren entwickelten Sound-Blaster-Soundkarten von Creative Labs.

Das Format war anfangs auf 8-Bit-Audio beschränkt und wurde mit dem Sound Blaster 16 auf 16-Bit-Audio erweitert (Containerformat). Die Audiodaten sind in Little Endian meist mit PCM oder mit ADPCM kodiert.

Original-Format (8-Bit)

[Bearbeiten | Quelltext bearbeiten]

Das Dateiformat[1][2][3] besteht aus einem 26-Byte großen Header und einer Reihe darauffolgender Datenblöcke, die die Audioinformation enthalten. Die Byte-Reihenfolge ist Little Endian.

VOC-Header
Offset (hex) Länge (in Byte) Inhalt
0x00 19 ASCII-Zeichenfolge Creative Voice File
0x13 1 EOF: 1A (hexadezimal)
0x14 2 Offset für ersten Datenblock: 1A 00 (hexadezimal)
0x16 2 Version (Major, Minor), hexadezimal;
Beispielsweise: 0x010a, Version 1.10[1]
0x18 2 Validierung: Versionsnummer + 0x1234, hexadezimal;
Beispielsweise: 0x1129

Auf den Header folgen Datenblöcke. Jeder Datenblock beginnt mit einem Typ-Byte, das den Inhalt der Daten beschreibt, gefolgt von 3 Bytes für die Größe der Daten (als Integerzahl). Bei zwei der 9 definierten Typen fehlt die anschließende Größe der Daten, sodass der Block schließlich nur aus einem einzigen Byte besteht – diese sind 0x00, der Terminator, und 0x07, das Wiederholungsende.

Ist eine Größe angegeben, so folgt den ersten 4 Bytes ein Block des Inhalts, der sich aus dem angegebenen Typ ergibt, mit der angegebenen Größe.

VOC-Datenblock
Typ (hex) Typ-Beschreibung Größe
(3-Byte-Integer)
Info
engl. deu.
0x00 Terminator Trennzeichen
0x01 Sound data Audiodaten 2+Größe der Daten
Audioinhalt
Offset Beschreibung Bedeutung
0x00 Abtastrate 256-(1000000/Sample rate)
0x01 Codec siehe Tabelle
wird ignoriert, wenn davor ein Block des Typs 0x08 (Extra info) einen Codec definiert (ab Version 1.20, neues 16-Bit-Format)
ab 0x02 Audiodaten im angegebenen Format (Codec)
0x02 Sound continue weitere Audiodaten Größe der Daten weitere Audiodaten im selben Format wie der vorherige Block
0x03 Silence Stille 3
Stille
Offset Beschreibung Bedeutung
0x00-01 Länge der Stille in der Einheit der Abtastrate Integer-1
0x02 Abtastrate wie bei Audioinhalt
0x04 Marker 2 Markernummer (2 Bytes)
Der jeweils letzte Marker bleibt beim Abspielen in einem Zwischenspeicher und kann wieder angesprungen werden.
0x05 ASCII string ASCII-Zeichenkette Länge der Zeichenkette Null-terminierte Zeichenkette
0x06 Repeat Wiederholen 2 Anzahl an Wiederholungen (2-Byte-Integer)
0x0000 bis 0xFFFE für 1–65.535 Wiederholungen, 0xFFFF für unendlich
0x07 End repeat Ende der Wiederholung

Die Datei endet optional mit dem Terminator-Block (Datenblock des Typs 0x00).

16-Bit-Formaterweiterung

[Bearbeiten | Quelltext bearbeiten]

Um das bestehende Format auf 16-Bit zu erweitern wurde für den Datenblock ein neues Typ-Byte eingeführt: 0x09. Die Version im Header muss dabei 1.20 (Hexadezimal 0x0114) oder neuer sein.

Erweiterer VOC-Datenblock
Typ (hex) Typ-Beschreibung Größe
(3-Byte-Integer)
Info
engl. deu.
0x08 Extra info Zusätzliche Information 4
Audioinhalt
Offset Beschreibung Bedeutung
0x00-01 Frequenz-Divisor 256000000/(nb_channels * (65536 - frequency_divisor))
0x02 Codec Ersetzt Codec-Informationen in allen auf diesen Block folgenden Audiodaten(blöcken)
0x03 Kanäle nb_channels = Anzahl -1, Beispiel: 2 Kanäle → 0x01
0x09 Sound data (new format) Audiodaten im neuen Format 12 + Größe der Daten
Audioinhalt
Offset Beschreibung Bedeutung
0x00-03 Abtastrate
0x04 Bits pro Sample
0x05 Kanäle
0x06-07 Codec siehe Tabelle
0x08-11 reserviert
ab 0x12 Audiodaten im angegebenen Format (Codec)
Audioinhalt
Codec-ID
(hex)
Kodierung, Kompression, Codec Block-Typ
0x00 8 Bits unsigned PCM Original (0x01, 0x02) und Neu (0x09)
0x01 4–8 Bits Creative ADPCM
0x02 3–8 Bits Creative ADPCM (2,6 Bits)
0x03 2–8 Bits Creative ADPCM
0x04 16 Bits signed PCM ab Version 1.20; Original (0x01, 0x02) und Neu (0x09)
0x06 A-law
0x07 μ-law
0x0200 4–16 Bits Creative ADPCM nur neues erweitertes Format (ab Version 1.20; 0x09 und 0x02)

Creative-Voice-Dateien fanden in diversen DOS-Spielen Verwendung, wenn diese für die Audioausgabe Sound-Blaster-Karten verwenden konnten, beispielsweise Eye of the Beholder.[4][5]

Die Verbreitung des Dateiformats verschwand zusehends mit dem Aufkommen von RIFF WAVE, welches in Windows von Microsoft bereits vom Betriebssystem unterstützt wurde. Für das Creative-Voice-Dateiformat mussten hingegen zusätzliche Abspielprogramme installiert werden, die bei den Treibern für die Sound-Blaster-Karten mitgeliefert wurden. Mit dem Aufkommen von AC’97 setzte sich WAVE, Dateiendung .WAV, schließlich durch.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. a b Greg: Greg figures out most of the .VOC Format. In: Programming Textfiles: Format Specifications. Abgerufen am 1. Juni 2018 (englisch).
  2. John: John chimes in with further analysis of the .VOC Format. In: Programming Textfiles: Format Specifications. Abgerufen am 1. Juni 2018 (englisch).
  3. Chris Bagwell: Audio File Formats FAQ. Chris Bagwell, 14. November 1998, S. Kapitel 11: File Formats, abgerufen am 1. Juni 2018 (englisch, Dokumentation (FAQ) des SoX-Audioeditor).
  4. lol.voc. (Wiki) In: Eye of the Beholder Wiki. Abgerufen am 1. Juni 2018 (englisch).
  5. movAX13h/DrRiptideDissected. (GitHub) In: Dr. Riptide Dissected. Abgerufen am 1. Juni 2018 (englisch).