Overview | Package | Class | Tree | Deprecated | Index | Help
| Copyright 2012-04-26 Werner Randelshofer
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.monte.media.eightsvx
Class EightSVXDecoder

    java.lang.Object
      org.monte.media.eightsvx.EightSVXDecoder

All Implemented Interfaces:
  IFFVisitor

    public class EightSVXDecoder

extends java.lang.Object
implements IFFVisitor

Creates a collection of EightSVXAudioClip objects by reading an IFF 8SVX file.

8SVX Type Definitions

     #define ID_8SVX MakeID('8', 'S', 'V', 'X')
     #define ID_VHDR MakeID('V', 'H', 'D', 'R')

     typedef LONG Fixed;     // A Fixed-point value, 16 bits to the left of
     // the point and 16 to the right. A Fixed is a number
     // of 2^16ths, i.e., 65536ths.
     #define Unity 0x10000L  // Unity = Fixed 1.0 = maximum volume

     // sCompression: Choice of compression algorithm applied to the samples.
     #define sCmpNone   0  // not compressed
     #define sCmpFibDelta 1  // Fibonacci-delta encoding.
     // Can be more kinds in the future.

     typedef struct {
     ULONG oneShotHiSamples,   // # samples in the high octave 1-shot part
     repeatHiSamples,   // # samples in the high octave repeat part
     samplesPerHiCycle; // # samples/cycle in high octave, else 0
     UWORD samplesPerSec;     // data sampling rate
     UBYTE ctOctave,          // # octaves of waveform
     sCompression;      // data compression technique used
     Fixed volume;            // playback volume form 0 to Unity (full
     // volume). Map this value into the output
     // hardware's dynamic range.
     } Voice8Header;

     #define ID_NAME MakeID('N', 'A', 'M', 'E')
     // NAME chunk contains a CHAR[], the voice's name.

     #define ID_Copyright MakeID('(', 'c', ')', ' ')
     // "(c) " chunk contains a CHAR[], the FORM's copyright notice.

     #define ID_AUTH MakeID('A', 'U', 'T', 'H')
     // AUTH chunk contains a CHAR[], the author's name.

     #define ID_ANNO MakeID('A', 'N', 'N', 'O')
     // ANNO chunk contains a CHAR[], author's text annotations.

     #define ID_ATAK MakeID('A', 'T', 'A', 'K')
     #define ID_RLSE MakeID('R', 'L', 'S', 'E')

     typedef struct {
     UWORD duration; // segment duration in milliseconds, > 0
     Fixed dest;     // destination volume factor
     } EGPoint;

     // ATAK and RLSE chunks contain an EGPoint[], piecewise-linear envelope.
     // The envelope defines a function of time returning Fixed values. It's
     // used to scale the nominal volume specified in the Voice8Header.

     #define RIGHT    4L
     #define LEFT     2L
     #define STEREO   6L

     #define ID_CHAN MakeID('C', 'H', 'A', 'N')
     typedef sampletype LONG;

     #define ID_PAN MakeID('P', 'A', 'N', ' ')
     typedef sposition Fixed; // 0 <= sposition <= Unity
     // Unity refers to the maximum possible volume.

     #define ID_BODY MakeID('B', 'O', 'D', 'Y')
     typedef character BYTE; // 8 bit signed number, -128 thru 127.
     // BODY chunk contains a BYTE[], array of audio data samples

8SVX Regular Expression

     8SVX       ::= "FORM" #{ "8SVX" VHDR [NAME] [Copyright] [AUTH] ANNO* [ATAK] [RLSE] [CHAN] [PAN] BODY }

     VHDR       ::= "VHDR" #{ Voice8Header }
     NAME       ::= "NAME" #{ CHAR* } [0]
     Copyright  ::= "(c) " #{ CHAR* } [0]
     AUTH       ::= "AUTH" #{ CHAR* } [0]
     ANNO       ::= "ANNO" #{ CHAR* } [0]

     ATAK       ::= "ATAK" #{ EGPoint* }
     RLSE       ::= "RLSE" #{ EGPoint* }
     CHAN       ::= "CHAN" #{ sampletype }
     PAN        ::= "PAN " #{ sposition }
     BODY       ::= "BODY" #{ BYTE* } [0]

The token "#" represents a ckSize LONG count of the following {braced} data bytes. E.g., a VHDR's "#" should equal sizeof(Voicd8Header). Literal items are shown in "quotes", [square bracket items] are optional, and "*" means 0 ore more replications. A sometimes-needed pad byte is shown als "[0]".

Version:
  1.0 1999-10-19
Author:
  Werner Randelshofer, Hausmatt 10, CH-6405 Immensee, Switzerland

Field Summary
`static int` | `ANNO_ID`
`static int` | `AUTH_ID`
`static int` | `BODY_ID`
`static int` | `CHAN_ID`
`static int` | `COPYRIGHT_ID`
`static int` | `EIGHT_SVX_ID`
`static int` | `NAME_ID`
`static int` | `VHDR_ID`

Constructor Summary
`EightSVXDecoder()`
`EightSVXDecoder(java.io.InputStream in)` Creates a new Audio Source from the specified InputStream.

Method Summary
`void` | `addAudioClip(java.applet.AudioClip clip)`
`protected void` | `decodeANNO(EightSVXAudioClip sample, IFFChunk[] chunks)`
`protected void` | `decodeAUTH(EightSVXAudioClip sample, IFFChunk chunk)`
`protected void` | `decodeBODY(EightSVXAudioClip sample, IFFChunk chunk)`
`protected void` | `decodeCHAN(EightSVXAudioClip sample, IFFChunk chunk)`
`protected void` | `decodeCOPYRIGHT(EightSVXAudioClip sample, IFFChunk chunk)`
`protected void` | `decodeNAME(EightSVXAudioClip sample, IFFChunk chunk)`
`protected void` | `decodeVHDR(EightSVXAudioClip sample, IFFChunk chunk)` The Voice 8 Header (VHDR) property chunk holds the playback parameters for the sampled waveform.
`void` | `enterGroup(IFFChunk group)` Visits the start of an IFF GroupChunkExpression.
`java.util.Vector` | `getSamples()`
`void` | `leaveGroup(IFFChunk group)`
`void` | `registerChunks(IFFParser iff)`
`void` | `visitChunk(IFFChunk group, IFFChunk chunk)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### EIGHT_SVX_ID

    public static final int EIGHT_SVX_ID

### VHDR_ID

    public static final int VHDR_ID

### NAME_ID

    public static final int NAME_ID

### COPYRIGHT_ID

    public static final int COPYRIGHT_ID

### ANNO_ID

    public static final int ANNO_ID

### AUTH_ID

    public static final int AUTH_ID

### CHAN_ID

    public static final int CHAN_ID

### BODY_ID

    public static final int BODY_ID

Constructor Detail

### EightSVXDecoder

    public EightSVXDecoder(java.io.InputStream in)
                    throws java.io.IOException

  Creates a new Audio Source from the specified InputStream. Pre condition InputStream must contain IFF 8SVX data. Post condition - Obligation -

  Parameters:
    `in` - The input stream.
  Throws:
    `java.io.IOException`

### EightSVXDecoder

    public EightSVXDecoder()

Method Detail

### getSamples

    public java.util.Vector getSamples()

### registerChunks

    public void registerChunks(IFFParser iff)

### enterGroup

    public void enterGroup(IFFChunk group)

  Visits the start of an IFF GroupChunkExpression. Altough this method is declared as public it may only be called from an IFFParser that has been invoked by this class. Pre condition Vector must not be null. This method espects only FORM groups of type 8SVX. Post condition - Obligation -

  Specified by:
    `enterGroup` in interface `IFFVisitor`
  Parameters:
    `group` - Group Chunk to be visited.
  Throws:
    `ParseException` - When an error has been encountered.

### leaveGroup

    public void leaveGroup(IFFChunk group)

  Specified by:
    `leaveGroup` in interface `IFFVisitor`

### visitChunk

    public void visitChunk(IFFChunk group,
                           IFFChunk chunk)
                    throws ParseException

  Specified by:
    `visitChunk` in interface `IFFVisitor`
  Throws:
    `ParseException`

### addAudioClip

    public void addAudioClip(java.applet.AudioClip clip)

### decodeVHDR

    protected void decodeVHDR(EightSVXAudioClip sample,
                              IFFChunk chunk)
                       throws ParseException

  The Voice 8 Header (VHDR) property chunk holds the playback parameters for the sampled waveform.

       typedef LONG Fixed;     // A Fixed-point value, 16 bits to the left of
       // the point and 16 to the right. A Fixed is a number
       // of 2^16ths, i.e., 65536ths.
       #define Unity 0x10000L  // Unity = Fixed 1.0 = maximum volume

       // sCompression: Choice of compression algorithm applied to the samples.
       #define sCmpNone   0  // not compressed
       #define sCmpFibDelta 1  // Fibonacci-delta encoding.
       // Can be more kinds in the future.

       typedef struct {
       ULONG oneShotHiSamples,   // # samples in the high octave 1-shot part
       repeatHiSamples,   // # samples in the high octave repeat part
       samplesPerHiCycle; // # samples/cycle in high octave, else 0
       UWORD samplesPerSec;     // data sampling rate
       UBYTE ctOctave,          // # octaves of waveform
       sCompression;      // data compression technique used
       Fixed volume;            // playback volume form 0 to Unity (full
       // volume). Map this value into the output
       // hardware's dynamic range.
       } Voice8Header;

  Throws:
    `ParseException`

### decodeCHAN

    protected void decodeCHAN(EightSVXAudioClip sample,
                              IFFChunk chunk)
                       throws ParseException

  Throws:
    `ParseException`

### decodeNAME

    protected void decodeNAME(EightSVXAudioClip sample,
                              IFFChunk chunk)
                       throws ParseException

  Throws:
    `ParseException`

### decodeCOPYRIGHT

    protected void decodeCOPYRIGHT(EightSVXAudioClip sample,
                                   IFFChunk chunk)
                            throws ParseException

  Throws:
    `ParseException`

### decodeAUTH

    protected void decodeAUTH(EightSVXAudioClip sample,
                              IFFChunk chunk)
                       throws ParseException

  Throws:
    `ParseException`

### decodeANNO

    protected void decodeANNO(EightSVXAudioClip sample,
                              IFFChunk[] chunks)
                       throws ParseException

  Throws:
    `ParseException`

### decodeBODY

    protected void decodeBODY(EightSVXAudioClip sample,
                              IFFChunk chunk)
                       throws ParseException

  Throws:
    `ParseException`

Overview | Package | Class | Tree | Deprecated | Index | Help
| Copyright 2012-04-26 Werner Randelshofer
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD