From ugle.unit.no!sunic!hagbard!eru!bloom-beacon!mintaka!think.com!sdd.hp.com!elroy.jpl.nasa.gov!ucla-cs!oahu.cs.ucla.edu!greiner Wed Apr 24 20:26:14 MET DST 1991
Article: 351 of alt.hackers
Path: ugle.unit.no!sunic!hagbard!eru!bloom-beacon!mintaka!think.com!sdd.hp.com!elroy.jpl.nasa.gov!ucla-cs!oahu.cs.ucla.edu!greiner
From: greiner@oahu.cs.ucla.edu (John Greiner)
Newsgroups: alt.hackers
Subject: Re: Sound Blaster .VOC File Format
Message-ID: <1991Apr22.073421.1634@cs.ucla.edu>
Date: 22 Apr 91 07:34:21 GMT
Sender: usenet@cs.ucla.edu (Mr. News Himself)
Organization: UCLA Computer Science Department
Lines: 68
Approved: jef@well.sf.ca.us
Nntp-Posting-Host: oahu.cs.ucla.edu

In article <1991Mar7.002906.4258@dsd.es.com> usenet@dsd.es.com writes:
>Not too big of a deal, but using voc-hdr along with debug, I mapped
>out the file format for Sound Blaster .VOC files...
>-----------------------------------------------------------------

I just got the developer's kit for the SoundBlaster so I can fill
in some holes in the CMF File Format.   - John

-----------------------------------------------------------------

Creative Voice File (VOC) Format:

    HEADER (bytes 00-19)
    Series of DATA BLOCKS (bytes 1A+) [Must end w/ Terminator Block]

-----------------------------------------------------------------

HEADER:
=======
     byte #     Description
     ------     ------------------------------------------
     00-12      Creative Voice File
     13-15      1A 1A 00  (eof to abort printing of file)
     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)

      *Sound Info Format:       **Silence Info Format:
       ---------------------      ----------------------------
       00   Sample Rate           00-01  Length of silence - 1
       01   Compression Type      02     Sample Rate
       02+  Voice Data


  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]

-----------------------------------------------------------------
-John


