Introducción

Sndlib es una colección de archivos de audio y de manipuladores de hardware de audio escritos en C y que corren actualmente en SGI (cualquier librería de audio), Sun, OSS, o ALSA (Linux y otros), Mac OSX, HPUX, y sistemas Windows. Proveé acceso relativamente dirécto a muchos de los encabezados de arhcivos de audios y de tipos de datos, y a mucha de las características de hardware relacionado con el audio.

Los siguientes archivos hacen a sndlib:

El esquema de nomenclatura es más o menos como sigue: las constantes comienzan con "MUS_", las constantes de hardware de audio con "MUS_AUDIO_", las funciones que involucran archivos de audio referenciados a travez de su nombre comienzan con "mus_sound_", las funciones que involucran acceso de encabezado con "mus_header_", las funciones que involucran acceso de hardware de audio con "mus_audio_", las funciones MIDI con "mus_midi_", y varias otras con "mus_" (número de translaciones, etc.). Las conversiones usan la palabra "to" como en "mus_samples_to_bytes".

Para construir sndlib (sndlib.so si es posible, y sndlib.a):

  ./configure
  make

Para instalarlo, 'make install' -- Lo he testeado en Linux, SGI, and Sun. Debería funcionar en cualquiera.

Encabezados

Los archivos de audio tienen descriptores incorporados conocidos como encabezados (headers en inglés). Las siguientes funciones devuelven la información del encabezado. En cada caso el argumento de la función es el nombre completo del archivo de audio.

  off_t mus_sound_samples (const char *arg)        /* muestras de audio de acuerdo al encabezado (puede ser incorrecto) */
  off_t mus_sound_frames (const char *arg)         /* muestras por canal */
  float mus_sound_duration (const char *arg)
  int mus_sound_datum_size (const char *arg)       /* bytes por muestra */
  off_t mus_sound_data_location (const char *arg)  /* ubicación de la primera muestra (bytes) */
  int mus_sound_chans (const char *arg)            /* número de canales (las muestras están intercaladas) */
  int mus_sound_srate (const char *arg)            /* frecuencia de muestreo */
  int mus_sound_header_type (const char *arg)      /* tipo de encabezado (aiff, wav, etc) */
  int mus_sound_data_format (const char *arg)      /* formato de los datos (alaw etc) */
  int mus_sound_original_format (const char *arg)  /* especificador de formato de datos sin modificar */
  char *mus_sound_comment (const char *arg)        /* comentario si es que existe */
  off_t mus_sound_comment_start (const char *arg)  /* comienzo del comentario (bytes) si existe */
  off_t mus_sound_comment_end (const char *arg)    /* fin del comentario (bytes) */
  off_t mus_sound_length (const char *arg)         /* longitud real del archivo (para chequeo de errores) */
  int mus_sound_write_date (const char *arg)       /* bare (sin interpretar) escritura de datos de archivo */
  int mus_sound_type_specifier (const char *arg)   /* identificador original del tipo de encabezado */
  int mus_sound_bits_per_sample(const char *arg)   /* bits per sample */
  int mus_bytes_per_sample(int format)             /* bytes per sample */
  int *mus_sound_loop_info(const char *arg)        /* 8 loop vals (mode,start,end) then base-detune and base-note  (empty list if no loop info found) */
  int mus_sound_initialize(void)                   /* initialize everything */