VOC (Audiocodec)
Van Wikipedia, de gratis encyclopedie
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.
Aufbau[Bearbeiten | Quelltext bearbeiten]
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.
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.
Typ (hex) | Typ-Beschreibung | Größe (3-Byte-Integer) | Info | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
engl. | deu. | |||||||||||||||
0x00 | Terminator | Trennzeichen | – | – | ||||||||||||
0x01 | Sound data | Audiodaten | 2+Größe der Daten |
| ||||||||||||
0x02 | Sound continue | weitere Audiodaten | Größe der Daten | weitere Audiodaten im selben Format wie der vorherige Block | ||||||||||||
0x03 | Silence | Stille | 3 |
| ||||||||||||
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.
Typ (hex) | Typ-Beschreibung | Größe (3-Byte-Integer) | Info | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
engl. | deu. | ||||||||||||||||||||||||
0x08 | Extra info | Zusätzliche Information | 4 |
| |||||||||||||||||||||
0x09 | Sound data (new format) | Audiodaten im neuen Format | 12 + Größe der Daten |
|
Codecs[Bearbeiten | Quelltext bearbeiten]
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 ) |
Verwendung[Bearbeiten | Quelltext bearbeiten]
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]
- ↑ a b Greg: Greg figures out most of the .VOC Format. In: Programming Textfiles: Format Specifications. Abgerufen am 1. Juni 2018 (englisch).
- ↑ John: John chimes in with further analysis of the .VOC Format. In: Programming Textfiles: Format Specifications. Abgerufen am 1. Juni 2018 (englisch).
- ↑ 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).
- ↑ lol.voc. (Wiki) In: Eye of the Beholder Wiki. Abgerufen am 1. Juni 2018 (englisch).
- ↑ movAX13h/DrRiptideDissected. (GitHub) In: Dr. Riptide Dissected. Abgerufen am 1. Juni 2018 (englisch).