AVR

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
m (Dan Tobias moved page Avr to AVR: I think it's supposed to be all caps?)
Line 1: Line 1:
AVR Audio Visual Research sample file format. Public domain.
+
{{FormatInfo
 +
|formattype=electronic
 +
|subcat=Audio and Music
 +
|extensions={{ext|avr}}
 +
}}
 +
'''AVR;;; Audio Visual Research sample file format. Public domain.
  
 
The .AVR sample file format sees use on the Atari ST(e) and older Apple
 
The .AVR sample file format sees use on the Atari ST(e) and older Apple

Revision as of 01:40, 26 October 2018

File Format
Name AVR
Ontology
Extension(s) .avr

AVR;;; Audio Visual Research sample file format. Public domain.

The .AVR sample file format sees use on the Atari ST(e) and older Apple Macintosh computers. Commonly used for 8 bit audio, sometimes 16.

Some Atari music software supporting AVR: Quartet, Zero-X, Breakthru, EPSS, Sound Lab.

/* All fields are big endian. */
struct AVR_HEADER {

    char magic_number[4];         /* "2BIT" */

    char title[8];                /* Title, padded with 0s. No 0 terminator is
                                     needed at the end, all 8 characters can
                                     be used for text. */

    signed short int stereo;      /* -1 = stereo, 0 = mono. Stereo data is
                                     interleaved like a .wav file, LRLRLR.. */

    signed short int bits;        /* Bits per sample. Usually 8 or 16. 16 bit
                                     sample data is big endian. */

    signed short int signed;      /* -1 = signed, 0 = unsigned. The convention
                                     is to use unsigned for 8 bit recordings.
                                     Some programs may rely on this. */

    signed short int loop;        /* -1 = loop enabled, 0 = loop disabled. */

    signed short int midi_note;   /* Can be one of these three:
                                     -1: No MIDI note assigned (most common).
                                     0xffnn: MIDI note number nn assigned.
                                     0xllhh: MIDI note ll for the low key,
                                             and MIDI note hh for the high
                                             key. This mode isn't well-
                                             documented, presumably it
                                             specifies a range of keys to map
                                             the sample across. In this case
                                             it is unclear how the root note
                                             is determined. */

    unsigned long int samp_rate;  /* Sample rate in Hz. IMPORTANT: the upper
                                     byte of this must be masked off.
                                     The upper byte contains undocumented data
                                     unrelated to sample rate, very frequently
                                     non-zero.
                                     samp_rate = samp_rate & 0x00ffffff;
                                     Some programs will only look at the low
                                     two bytes of this field, limiting the
                                     maximum sample rate to 65535 Hz. */

    unsigned long int length;     /* Recording length in sample periods. */

    unsigned long int loop_start; /* Loop start point in sample periods.
                                     If the loop is switched off, this can be
                                     set to 0 (but doesn't have to be).
                                     This should be <= loop_end, but don't
                                     rely on this when reading a file. */

    unsigned long int loop_end;   /* Loop end point in sample periods. This
                                     points to the first sample which is never
                                     played (the previous sample is the last
                                     one played before looping back to
                                     loop_start). If there is no data to the
                                     right of the loop_end point, this will
                                     have the same value as length.
                                     If the loop is switched off, this can be
                                     set to 0 (but doesn't have to be).
                                     This should be <= length, but don't rely
                                     on this when reading a file. */

    signed short int key_split;   /* Undocumented, usually 0. */

    signed short int compression; /* Undocumented, usually 0. */

    signed short int reserved;    /* Undocumented, usually 0. */

    char title_extra[20]          /* Usually 0. Some programs use this space
                                     as additional characters for title[],
                                     only when title[7] is non-zero.
                                     When writing a file, it is best to set
                                     these to zero.
                                     Some programs may use this for other
                                     purposes. */

    char comment[64];             /* Text comment. Padded with 0s.
                                     It is unclear whether this needs to be
                                     terminated with a 0. Assume un-terminated
                                     when reading, and write terminated. */

}; /* Total length of header: 128 bytes fixed-size. Sample data begins
      immediately after header. */
Definitions:

signed short int:  16 bits big-endian two's complement, -32768 to +32767.

unsigned long int: 32 bits big-endian, 0 to +4294967296.

char:              A single byte.

0:                 A zero value or byte (not an ASCII '0').

0xnn               A hexadecimal value nn.

Sample:            One or two bytes making up a single numerical value for
                   one data point on one channel.

Sample period:     A group of samples, one sample for each channel.

Recording:         The whole sample data. The entire file, sans header.

Signed:            Sample data represented by signed two's complement
                   integers.

Unsigned:          Sample data represented by unsigned integers, no-signal
                   idle level (0 volts) stored as 128 (8 bit) or
                   32768 (16 bit). Values above this represent positive
                   voltages. To convert from signed to unsigned or vice-
                   versa, invert the most significant bit.
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox