IFF / 8SVX: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
(Created page with "Interchange File Format (IFF) is a format developed by electronic arts in the 80's. It is the predominant format on the Amiga computer. It is a chunked format, which can be used ...")
 
No edit summary
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
Interchange File Format (IFF) is a format developed by electronic arts in the 80's. It is the predominant format on the Amiga computer. It is a chunked format, which can be used to store any type of data, but it is predominantly used to store images, animations and audio.
+
Interchange File Format (IFF) is a format developed by Electronic Arts in the 1980's. It was the predominant format on the Commodore Amiga, and is a chunked format, which can be used to store any type of data. However it is predominantly used to store images, animations and audio.
  +
   
 
The first 12 bytes of an IFF file are used to distinguish between an Amiga
 
The first 12 bytes of an IFF file are used to distinguish between an Amiga
Line 7: Line 8:
 
in M68000 form, high order byte first.)
 
in M68000 form, high order byte first.)
   
------------------------------------------
 
   
 
FutureSound audio file, 15000 samples at 10.000KHz, file is 15048 bytes long.
 
FutureSound audio file, 15000 samples at 10.000KHz, file is 15048 bytes long.
  +
   
 
0000: 464F524D 00003AC0 38535658 56484452 FORM..:.8SVXVHDR
 
0000: 464F524D 00003AC0 38535658 56484452 FORM..:.8SVXVHDR
  +
F O R M 15040 8 S V X V H D R
+
F O R M 15040 8 S V X V H D R
  +
 
0010: 00000014 00003A98 00000000 00000000 ......:.........
 
0010: 00000014 00003A98 00000000 00000000 ......:.........
  +
20 15000 0 0
+
20 15000 0 0
  +
 
0020: 27100100 00010000 424F4459 00003A98 '.......BODY..:.
 
0020: 27100100 00010000 424F4459 00003A98 '.......BODY..:.
  +
10000 1 0 1.0 B O D Y 15000
+
10000 1 0 1.0 B O D Y 15000
  +
   
 
0000000..03 = "FORM", identifies this as an IFF format file.
 
0000000..03 = "FORM", identifies this as an IFF format file.
  +
 
FORM+00..03 (ULONG) = number of bytes that follow. (Unsigned long int.)
 
FORM+00..03 (ULONG) = number of bytes that follow. (Unsigned long int.)
  +
 
FORM+03..07 = "8SVX", identifies this as an 8-bit sampled voice.
 
FORM+03..07 = "8SVX", identifies this as an 8-bit sampled voice.
  +
   
 
????+00..03 = "VHDR", Voice8Header, describes the parameters for the BODY.
 
????+00..03 = "VHDR", Voice8Header, describes the parameters for the BODY.
  +
 
VHDR+00..03 (ULONG) = number of bytes to follow.
 
VHDR+00..03 (ULONG) = number of bytes to follow.
  +
 
VHDR+04..07 (ULONG) = samples in the high octave 1-shot part.
 
VHDR+04..07 (ULONG) = samples in the high octave 1-shot part.
  +
 
VHDR+08..0B (ULONG) = samples in the high octave repeat part.
 
VHDR+08..0B (ULONG) = samples in the high octave repeat part.
  +
 
VHDR+0C..0F (ULONG) = samples per cycle in high octave (if repeating), else 0.
 
VHDR+0C..0F (ULONG) = samples per cycle in high octave (if repeating), else 0.
  +
 
VHDR+10..11 (UWORD) = samples per second. (Unsigned 16-bit quantity.)
 
VHDR+10..11 (UWORD) = samples per second. (Unsigned 16-bit quantity.)
  +
 
VHDR+12 (UBYTE) = number of octaves of waveforms in sample.
 
VHDR+12 (UBYTE) = number of octaves of waveforms in sample.
  +
 
VHDR+13 (UBYTE) = data compression (0=none, 1=Fibonacci-delta encoding).
 
VHDR+13 (UBYTE) = data compression (0=none, 1=Fibonacci-delta encoding).
  +
 
VHDR+14..17 (FIXED) = volume. (The number 65536 means 1.0 or full volume.)
 
VHDR+14..17 (FIXED) = volume. (The number 65536 means 1.0 or full volume.)
  +
   
 
????+00..03 = "BODY", identifies the start of the audio data.
 
????+00..03 = "BODY", identifies the start of the audio data.
  +
 
BODY+00..03 (ULONG) = number of bytes to follow.
 
BODY+00..03 (ULONG) = number of bytes to follow.
  +
 
BODY+04..NNNNN = Data, signed bytes, from -128 to +127.
 
BODY+04..NNNNN = Data, signed bytes, from -128 to +127.
  +
   
 
0030: 04030201 02030303 04050605 05060605
 
0030: 04030201 02030303 04050605 05060605
  +
 
0040: 06080806 07060505 04020202 01FF0000
 
0040: 06080806 07060505 04020202 01FF0000
  +
 
0050: 00000000 FF00FFFF FFFEFDFD FDFEFFFF
 
0050: 00000000 FF00FFFF FFFEFDFD FDFEFFFF
  +
 
0060: FDFDFF00 00FFFFFF 00000000 00FFFF00
 
0060: FDFDFF00 00FFFFFF 00000000 00FFFF00
  +
 
0070: 00000000 00FF0000 00FFFEFF 00000000
 
0070: 00000000 00FF0000 00FFFEFF 00000000
  +
 
0080: 00010000 000101FF FF0000FE FEFFFFFE
 
0080: 00010000 000101FF FF0000FE FEFFFFFE
  +
 
0090: FDFDFEFD FDFFFFFC FDFEFDFD FEFFFEFE
 
0090: FDFDFEFD FDFFFFFC FDFEFDFD FEFFFEFE
  +
 
00A0: FFFEFEFE FEFEFEFF FFFFFEFF 00FFFF01
 
00A0: FFFEFEFE FEFEFEFF FFFFFEFF 00FFFF01
  +
   
 
This small section of the audio sample shows the number ranging from -5 (0xFD)
 
This small section of the audio sample shows the number ranging from -5 (0xFD)
Line 50: Line 80:
 
"(c) " may be present, and may be in any order. You will have to check the
 
"(c) " may be present, and may be in any order. You will have to check the
 
byte count in each chunk to determine how many bytes to skip.
 
byte count in each chunk to determine how many bytes to skip.
  +
  +
  +
  +
Back to [[Sample File Formats (Audio)]]

Latest revision as of 20:46, 25 March 2016

Interchange File Format (IFF) is a format developed by Electronic Arts in the 1980's. It was the predominant format on the Commodore Amiga, and is a chunked format, which can be used to store any type of data. However it is predominantly used to store images, animations and audio.


The first 12 bytes of an IFF file are used to distinguish between an Amiga picture (FORM-ILBM), an Amiga sound sample (FORM-8SVX), or other file conforming to the IFF specification. The middle 4 bytes is the count of bytes that follow the "FORM" and byte count longwords. (Numbers are stored in M68000 form, high order byte first.)


FutureSound audio file, 15000 samples at 10.000KHz, file is 15048 bytes long.


0000: 464F524D 00003AC0 38535658 56484452 FORM..:.8SVXVHDR

F O R M 15040 8 S V X V H D R

0010: 00000014 00003A98 00000000 00000000 ......:.........

20 15000 0 0

0020: 27100100 00010000 424F4459 00003A98 '.......BODY..:.

10000 1 0 1.0 B O D Y 15000


0000000..03 = "FORM", identifies this as an IFF format file.

FORM+00..03 (ULONG) = number of bytes that follow. (Unsigned long int.)

FORM+03..07 = "8SVX", identifies this as an 8-bit sampled voice.


????+00..03 = "VHDR", Voice8Header, describes the parameters for the BODY.

VHDR+00..03 (ULONG) = number of bytes to follow.

VHDR+04..07 (ULONG) = samples in the high octave 1-shot part.

VHDR+08..0B (ULONG) = samples in the high octave repeat part.

VHDR+0C..0F (ULONG) = samples per cycle in high octave (if repeating), else 0.

VHDR+10..11 (UWORD) = samples per second. (Unsigned 16-bit quantity.)

VHDR+12 (UBYTE) = number of octaves of waveforms in sample.

VHDR+13 (UBYTE) = data compression (0=none, 1=Fibonacci-delta encoding).

VHDR+14..17 (FIXED) = volume. (The number 65536 means 1.0 or full volume.)


????+00..03 = "BODY", identifies the start of the audio data.

BODY+00..03 (ULONG) = number of bytes to follow.

BODY+04..NNNNN = Data, signed bytes, from -128 to +127.


0030: 04030201 02030303 04050605 05060605

0040: 06080806 07060505 04020202 01FF0000

0050: 00000000 FF00FFFF FFFEFDFD FDFEFFFF

0060: FDFDFF00 00FFFFFF 00000000 00FFFF00

0070: 00000000 00FF0000 00FFFEFF 00000000

0080: 00010000 000101FF FF0000FE FEFFFFFE

0090: FDFDFEFD FDFFFFFC FDFEFDFD FEFFFEFE

00A0: FFFEFEFE FEFEFEFF FFFFFEFF 00FFFF01


This small section of the audio sample shows the number ranging from -5 (0xFD) to +8 (0x08). Warning: Do not assume that the BODY starts 48 bytes into the file. In addition to "VHDR", chunks labeled "NAME", "AUTH", "ANNO", or "(c) " may be present, and may be in any order. You will have to check the byte count in each chunk to determine how many bytes to skip.


Back to Sample File Formats (Audio)