int midi_seek( int posición )
Retorna:
(0) Si no lo ha conseguido. (1) Si se paró la reproducción. (2) Si se volvió a reproducir desde el principio.
Descripción:
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ó al final, midi_pos contendrá el valor negativo de la longitud del fichero MIDI.
Tan sólo puede reproducirse un módulo a la vez, si se inicia la reproducción de un módulo cuando otro esté sonando, se detendrá el anterior. No obstante se pueden reproducir simultáneamente a un MIDI, múltiples efectos de sonido (ver sound()).
MAIN_PROGRAM_CDIV PRIVATE int id_midi; BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m320x200); id_midi = load_midi("../help.mid", 0); // Carga un sonido del disco duro write(0, 160, 10, 1, "[ESPACIO] salta a la posición 10"); write(0, 0, 30, 0, "Posición MIDI:"); write_int(0, 120, 30, 0, (int *)&midi_pos); midi_looped(id_midi, 5, 25); LOOP { if (scan_code == _space) midi_seek(10); FRAME; } END_PROGRAM
Este ejemplo carga el módulo contenido en el archivo help.mid con la función load_midi().
Entonces se inicia la reproducción del archivo con la función midi_looped() entrando en un bucle de la posición de inicio 5 a la 25. Una vez se pulse la BARRA ESPACIADORA saltará a la posición 10 del MIDI.
Nota: Para finalizar la reproducción de un módulo musical se debe emplear la función stop_midi().
Ver: midi() - midi_looped() - load_midi() - stop_midi() - sound() - midi_pos