-
Notifications
You must be signed in to change notification settings - Fork 0
VOC
VOC-Format
Creative Voice File Format, auch CT-Voice-Format; Musikdatei-Format für den Soundblaster von Creative Labs.
Eine VOC-Datei teilt sich in zwei grundlegende Blöcke, nämlich in den Vorspann(Header) und in die Daten. Der Header ist ein Datenblock, der die Datei als CT-Format-Datei definiert, und zwar durch den Text 'Creative Voice File' und die Hex-Zahl '1A'. Danach folgen die Offset-Adresse der Sample-Daten, sowie die Versionsnummer des CT-Formates gefolgt von einer Prüfsumme der Versionsnummer mit '1234'(hexadezimal). Dem Header schließen sich die Datenblöcke an. Sie beginnen alle mit einem Block-Identifikator(Blocktyp 0,1,... oder7) und einer Längenangabe des Blocks (Blocktyp 0 enthält als einziger keine Längenbytes). Der Rest des Blocks enthält dann die eigentlichen Daten.
References: http://www.inversereality.org/tutorials/sound%20programming/examples/soundblaster16example3.html
Creative Voice (VOC) file format -------------------------------- ~From: galt@dsd.es.com (byte numbers are hex!) HEADER (bytes 00-19) Series of DATA BLOCKS (bytes 1A+) [Must end w/ Terminator Block] - --------------------------------------------------------------- HEADER: ======= byte # Description ------ ------------------------------------------ 00-12 "Creative Voice File" 13 1A (eof to abort printing of file) 14-15 Offset of first datablock in .voc file (std 1A 00 in Intel Notation) 16-17 Version number (minor,major) (VOC-HDR puts 0A 01) 18-19 2's Comp of Ver. # + 1234h (VOC-HDR puts 29 11) - --------------------------------------------------------------- DATA BLOCK: =========== Data Block: TYPE(1-byte), SIZE(3-bytes), INFO(0+ bytes) NOTE: Terminator Block is an exception -- it has only the TYPE byte. TYPE Description Size (3-byte int) Info ---- ----------- ----------------- ----------------------- 00 Terminator (NONE) (NONE) 01 Sound data 2+length of data * 02 Sound continue length of data Voice Data 03 Silence 3 ** 04 Marker 2 Marker# (2 bytes) 05 ASCII length of string null terminated string 06 Repeat 2 Count# (2 bytes) 07 End repeat 0 (NONE) 08 Extended 4 *** *Sound Info Format: **Silence Info Format: --------------------- ---------------------------- 00 Sample Rate 00-01 Length of silence - 1 01 Compression Type 02 Sample Rate 02+ Voice Data ***Extended Info Format: --------------------- 00-01 Time Constant: Mono: 65536 - (256000000/sample_rate) Stereo: 65536 - (25600000/(2*sample_rate)) 02 Pack 03 Mode: 0 = mono 1 = stereo Marker# -- Driver keeps the most recent marker in a status byte Count# -- Number of repetitions + 1 Count# may be 1 to FFFE for 0 - FFFD repetitions or FFFF for endless repetitions Sample Rate -- SR byte = 256-(1000000/sample_rate) Length of silence -- in units of sampling cycle Compression Type -- of voice data 8-bits = 0 4-bits = 1 2.6-bits = 2 2-bits = 3 Multi DAC = 3+(# of channels) [interesting-- this isn't in the developer's manual]