
D-LUSION DIGITAL MUSIC FORMAT  Sample Pack Type 1  - rev. 0.26 (6/9/94)


Sample Pack Typ 1, 8 Bit Samples "Delta Huffman" loseless:

Die Absolutewerte der nderungsrate der Samplewerte wird nach dem Huffman-
verfahren gepacked.

Der Packdatenstrom des Samples begint mit dem Huffman Baum:

[7 Bit Knotenwert  1 Bit Linker Ast  1 Bit Rechter Ast ] [ . ....] [..

Ist das Flag fr den "Linker Ast" bzw. "Rechter Ast" gesetzt hngt ein Linker
bzw. Rechter Unterast am Knoten. Keine Unterste => Knoten ist ein Blatt.
Die linken ste am Baum werden immer zu erst aufgebauet. Wenn ein Blatt
erreicht ist, am nchst hheren Knoten den rechten Ast aufbauen und dann
wieder die linken ste, bis ein Blatt erreicht usw.

Sobald der Baum "voll" ist, man ist wieder an der Wurzel angekommen, folgen
die Deltawerte des Samples:

[ 1 Bit Vorzeichen  X Bits Huffmancode ] [ . ....] [...

Die signed 8 Bit Sampledaten erhlt man nach folgendem Algo:

signed char value;
signed char delta;
signed char sample_data[sample_length];
char sign;

value = 0;
position = 0;

while (position < sample_length) {

  sign = (Vorzeichen Bit);

  Huffmancode auswerten bis zum erreichen des Blattes.
   (Bit == 0 im Baum links abbiegen, Bit == 1 im Baum rechts abbiegen)

  delta = (Wert des Blattes im Huffmanbaum);
  if (sign == 1) delta = delta ^ 0xff;   /* if signed -> 1's complement */

  value = value + delta;
  sample_data[position] = value;
  position++;
}


[D-Lusion], Code-X

