is_playing_sound()

is_playing_sound(<número de 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.

Programa ejemplo:
PROGRAM ejemplo_is_playing_sound;

GLOBAL
    sonido;
    canal;

BEGIN
    write(0,0,0,0,"Pulse ESC para finalizar.");
    sonido = load_pcm("help\help.pcm",0);
    canal  = sound(sonido, 256, rand(100,400));
    REPEAT

        // Si finalizó la reproducción, vuelve a lanzar el sonido

        IF (NOT is_playing_sound(canal))

            canal = sound(sonido, 256, rand(100,400));
        END
        FRAME;
    UNTIL (key(_ESC));
END


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_pcm() o load_wav()).

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 100 y 400 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() - is_playing_song()