Formato MOD

Los ficheros MOD se asemejan a los ficheros MIDI en la medida que representan sonidos musicales. Este formato se originó en plataformas Amiga, pero debido a su flexibilidad y al gran número de ficheros MOD disponibles, su uso se extendió a otras plataformas (PC, Mac, Sparc Station, etc.). Hoy en día es casi de interés meramente histórico porque estuvo bastante extendido. Contienen dos tipos de información: Existen dos versiones del fichero, la inicial, en desuso, y la extendida. Las muestras digitalizadas en un fichero MOD son de 8 bits en el formato inicial y de 16 en el extendido. Carecen de cabecera y presentan codificación lineal. Puede haber hasta un total de 31 sonidos diferentes, cada uno con longitud de hasta 128kbytes. La primera versión de ficheros MOD sólo permitían hasta 15 sonidos. No existe una tasa de muestreo estandarizada para estos ficheros. La información sobre secuenciación de los sonidos consta de cuatro secciones, que indican:

Los ficheros MOD permiten que se reproduzcan un máximo de cuatro sonidos simultáneamente, una de las limitaciones que han precipitado el abandono de su uso.

Cabecera

A continuación se incluye su formato de cabecera: struct { char songname[20]; Sample samples[32]; char songlength; char mark; char songpos[128]; char extmark[4]; }mod_hdr; struct { char smpName[22]; short smpLength; char fineTune; char volume; short repeatpoint; short repeatlen; } Sample; Los campos que describen la cabecera son:

songname Nombre de la canción. Deje estar justificado a la izquierda y los caracteres no usados deben ser nulos.
samples Array de 32 estructuras que determinan los parámetros de los sonidos muestreados que contiene el fichero.
songlength Longitud de la canción. El rango está comprendido entre 1 y 128.
mark Byte de valor 127
songpos Es una lista de identificadores de secuencia. La canción se compone de una concatenación de pequeñas secuencias. Puede haber hasta 64 secuencias distintas, por lo que su valor se comprende entre 0 y 63.
extmark Contiene la cadena "M.K." e identifica el fichero MOD extendido (que soporta 32 sonidos)

El significado de los campos de la estructura que describe un sonido muestreado es el siguiente:

smpName Cadena ASCII que da nombre al sonido. Está justificada a la izquierda y rellenados por nulos aquellos caracteres no utilizados.
smpLength Indica el número de palabras que contiene el sonido muestreado. Las palabras en el formato extendido son de 16 bits.
finetune Indica el tono de la muestra. Los cuatro bits superiores deben ser nulos, los cuatro inferiores con un valor en complemento a dos.
volume Volumen del sonido. El rango comprende de 0 a 64.
repeatpoint Indica la muestra a partir de la cual debe repetirse el sonido.
repeatlen Longitud de la sección del sonido que se repetirá.

Tabla de secuencias

Después de la cabecera hay una tabla de secuencias. Cada secuencia ocupa 1024 bytes. El número de secuencias está indicado por el mayor valor contenido en la lista songpos. Una secuencia es una lista elementos.

Cada elemento lo forman cuatro notas, una por cada uno de los cuatro canales que se pueden reproducir simultáneamente. Una nota está formada por cuatro bytes según esta organización:

4 bits 12 bits 4 bits 12 bits
4 bits superiores del sonido muestreado Nota 4 bits inferiores del sonido muestreado Efecto

Sonidos muestreados

Después de las secuencias se encuentran los sonidos muestreados. La longitud e cada uno se puede determinar por la información de la tabla de muestras contenida en la cabecera. Las muestras son de 16 bits en el formato de fichero extendido y de 8 bits en el formato inicial.