MIDI *load_midi(const char *filename);
   Carga un fichero MIDI (maneja ambos formatos 0 y 1), devolviendo un
   puntero a la estructura MIDI, o NULL si hubo problemas.
Relacionado con:
destroy_midi,
play_midi.
void destroy_midi(MIDI *midi);
   Destruye una estructura MIDI cuando ya no la necesite. Es seguro llamar
   esto incluso cuando el fichero MIDI está siendo reproducido, porque lo
   comprueba y detiene en caso de que esté activo.
Relacionado con:
load_midi.
void lock_midi(MIDI *midi);
   Bajo DOS, bloquea toda la memoria usada por un fichero MIDI. Normalmente
   no necesita llamar a esta función porque load_midi() lo hace por usted.
Relacionado con:
load_midi.
int play_midi(MIDI *midi, int loop);
   Reproduce el fichero MIDI especificado, deteniendo cualquier música
   anterior. Si la variable loop está activada, los datos serán repetidos
   hasta que los sustituya con otra cosa, de otro modo se parará la música al
   final del fichero. Pasando un puntero NULL parará cualquier música que
   esté siendo reproducida. Devuelve distinto de cero si hubo problemas (esto
   puede ocurrir si un controlador wavetable cacheable no consigue cargar los
   samples requeridos, o al menos ocurrirá en el futuro cuando alguien
   escriba algunos controladores wavetable cacheables :-)
Relacionado con:
install_sound,
load_midi,
play_looped_midi,
stop_midi,
midi_pause,
midi_seek,
midi_pos,
midi_msg_callback.
int play_looped_midi(MIDI *midi, int loop_start, int loop_end);
   Reproduce un fichero MIDI con una posición de bucle definida por el
   usuario. Cuando el reproductor llega al final del bucle o al final del
   fichero (loop_end puede ser -1 para repetir en EOF), volverá al principio
   del comienzo del bucle. Ambas posiciones son especificadas en el mismo
   formato de golpes de ritmo que la variable midi_pos.
Relacionado con:
play_midi,
midi_loop_start.
void stop_midi();
   Para la música que esté siendo reproducida. Esto es lo mismo que llamar
   play_midi(NULL, FALSE).
Relacionado con:
play_midi,
midi_pause.
void midi_pause();
   Pone el reproductor MIDI en pausa.
Relacionado con:
play_midi,
stop_midi,
midi_resume,
midi_seek.
void midi_resume();
   Continua la reproducción de un MIDI pausado.
Relacionado con:
midi_pause.
int midi_seek(int target);
   Avanza hasta la posición especificada (midi_pos) en el fichero MIDI
   usado. Si el objetivo está antes en el fichero que el midi_pos actual,
   avanza desde el principio; de otro modo busca desde la posición actual.
   Devuelve cero si no lo ha conseguido, no-cero si llega al final del
   fichero (1 significa que paró la reproducción, 2 significa que volvió a
   reproducir desde el principio). Si la función se para porque llegó a EOF,
   midi_pos contendrá el valor negativo de la longitud del fichero MIDI.
Relacionado con:
play_midi,
midi_pos.
void midi_out(unsigned char *data, int length);
   Introduce un bloque de comandos MIDI en el reproductor en tiempo real,
   permitiéndole activar notas, tocar campanas, etc, sobre el fichero MIDI
   que esté siendo reproducido.
Relacionado con:
install_sound,
load_midi_patches,
midi_recorder.
int load_midi_patches();
   Fuerza al controlador MIDI a cargar un conjunto de patches completo para
   ser usados. Normalmente no deberá llamar esto, porque Allegro
   automáticamente carga todos los datos requeridos por el fichero MIDI
   seleccionado, pero debe llamar esto antes de mandar mensajes de cambio de
   programa vía comando midi_out(). Devuelve distinto de cero si ocurrió un
   fallo.
Relacionado con:
install_sound,
midi_out.
extern volatile long midi_pos;
   Contiene la posición actual (número de beat) del fichero MIDI, o un
   número negativo si no se está reproduciendo ninguna música. Util para
   sincronizar animaciones con la música, y para comprobar si un fichero MIDI
   se ha acabado de reproducir.
Relacionado con:
play_midi,
midi_msg_callback.
extern long midi_loop_start;
extern long midi_loop_end;
   Los puntos de comienzo y final del bucle, ajustados por la función
   play_looped_midi(). Estos pueden ser alterados mientras suena la música,
   pero debería estar seguro de ponerlos a valores sensatos (comienzo <
   final). Si está cambiando ambos al mismo tiempo, asegúrese de alterarlos
   en el mismo orden en caso de que una interrupción midi ocurra entre sus
   dos cambios. Si los valores están a -1, representan el comienzo y final
   del fichero respectivamente.
Relacionado con:
play_looped_midi.
extern void (*midi_msg_callback)(int msg, int byte1, int byte2);
extern void (*midi_meta_callback)(int type,
        const unsigned char *data, int length);
extern void (*midi_sysex_callback)(const unsigned char *data,
        int length);
   Funciones de enganche que permiten interceptar eventos MIDI del
   reproductor. Si se activan a cualquier cosa menos NULL, estas rutinas
   serán llamadas por cada mensaje MIDI, meta-evento, y bloque de datos
   exclusivo del sistema respectivamente. Estas funciones serán ejecutadas en
   un contexto de control de interrupción, por lo que todo el código y datos
   que usen debería estar bloqueado (locked), y no deben llamar funciones del
   sistema operativo. En general, simplemente use estas rutinas para activar
   algunas variables y responder a ellas más tarde en su código principal.
Relacionado con:
play_midi.
int load_ibk(char *filename, int drums);
   Lee una definición de un fichero patch .IBK usado por el controlador
   Adlib. Si los tambores están activados, lo cargará como un patch de
   percusión, de otro modo reemplazará el conjunto de instrumentos MIDI
   General. Puede llamar esto antes o después de iniciar el código de
   sonido, o simplemente puede activar las variables ibk_file e
   ibk_drum_file en el fichero de configuración para cargar los datos
   automáticamente. ¡Fíjese que esta función no tiene ningún efecto en
   otros controladores que no sean Adlib!
Relacionado con:
install_sound.
Volver al Indice