MIDI-SoundFont
view release on metacpan or search on metacpan
doc/headers.c view on Meta::CPAN
* the Atari .avr files appear to be 8000 Hz, mono, 8-bit linear unsigned data with an unknown header of 128 words
* apparently there was a change in format sometime in the 90's.
*
* The actual avr files I've found on the net are either garbled, or
* something is wrong with this definition (taken from CMJ and www.wotsit.org's avr.txt).
* SGI dmconvert assumes big-endian here -- this is an Atari format, so it's probably safe to assume big-endian.
*/
static int read_avr_header(const char *filename, int fd)
{
int dsize, dsigned, i;
chans = mus_char_to_bshort((unsigned char *)(hdrbuf + 12));
if (chans == 0) chans = 1; else if (chans == -1) chans = 2; else return(mus_error(MUS_HEADER_READ_FAILED, "%s chans: %d", filename, chans));
data_location = 128;
data_size = mus_char_to_bint((unsigned char *)(hdrbuf + 26));
srate = mus_char_to_ubshort((unsigned char *)(hdrbuf + 24));
dsize = mus_char_to_bshort((unsigned char *)(hdrbuf + 14));
dsigned = mus_char_to_bshort((unsigned char *)(hdrbuf + 16));
if (dsize == 16)
{
if (dsigned == 0)
data_format = MUS_UBSHORT;
else data_format = MUS_BSHORT;
}
else
{
if (dsize == 8)
{
if (dsigned == 0)
data_format = MUS_UBYTE;
else data_format = MUS_BYTE;
}
else return(mus_error(MUS_HEADER_READ_FAILED, "%s: unknown data format", filename));
}
if (seek_and_read(fd, (unsigned char *)hdrbuf, 64, 64) <= 0)
return(mus_error(MUS_HEADER_READ_FAILED, "%s avr header: ran off end of file", filename));
comment_start = 64;
i = 0;
while ((i < 64) && (hdrbuf[i] != 0)) i++;
( run in 0.502 second using v1.01-cache-2.11-cpan-71847e10f99 )