int is_playing_sound( int id_canal )
Retorna:
0 // Si el canal está parado. 1 // Si está sonando un sonido por el canal.
Descripción:
Esta función permite saber si uno de los canales de sonido esta reproduciendo sonido, o si está disponible.
Se requiere como parámetro el número de canal, este valor se obtiene como retorno de la función sound() al iniciarse la reproducción de un efecto de sonido.
MAIN_PROGRAM_CDIV PRIVATE int sonido, canal; BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m320x200); write(0,0,0,0,"Pulse ESC para finalizar."); sonido = load_sound("../help.wav",0); canal = sound(sonido, 128, rand(50,200)); do{ // Si finalizó la reproducción, vuelve a lanzar el sonido if (!is_playing_sound(canal)) canal = sound(sonido, 127, rand(50,200)); FRAME; }while(!key(_esc)); END_PROGRAM
Este ejemplo utiliza una función para tocar un sonido continuamente, de forma controlada por el programa, en lugar de automáticamente (lo que se suele hacer indicando en la carga del sonido que éste es cíclico, en las funciones load_sound() o load_wav() o load_voc().
Se inicia la reproducción de nuevo siempre que el canal del sonido haya quedado libre, es decir, cada vez que acabe de reproducirse el efecto.
El programa aprovecha esta circunstancia (controlar manualmente la repetición) para emitir el sonido a una frecuencia diferente en cada ocasión, lo que no podría hacerse con una repetición automática. Esta frecuencia se obtiene como un valor al azar entre 50 y 200 con la función rand().
Nota: Un mismo sonido puede reproducirse por diferentes canales cada vez, por ello es necesario guardar el número de canal cada vez que se inicia la reproducción.
Ver: sound() - change_sound()