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