stop_sound()

stop_sound(<número de canal>)

Descripción:

Para el sonido que esté sonando por el canal pasado como parámetro.

El <número de canal> requerido es el valor que retorna la función sound() cuando se inicia la reproducción de un efecto de sonido.

Existen un total de 16 canales de sonido, pudiendo sonar hasta 16 sonidos simultáneamente.

Programa ejemplo:
PROGRAM ejemplo_stop_sound;

PRIVATE
    id_sonido;
    canal;
    sonando=FALSE;

BEGIN
    load_fpg("help\help.fpg");
    put_screen(0, 1);
    write(0, 160, 0, 1, "Pulse [ESPACIO] para iniciar la reproducción.");
    write(0, 160, 10, 1, "Pulse [ENTER] para detener el canal de sonido.");
    id_sonido = load_pcm("help\help.pcm", 1);
    LOOP
        IF (scan_code==_space AND NOT sonando)
            canal = sound(id_sonido, 128, 256);
            sonando=TRUE;
        END
        IF (scan_code==_enter)

            stop_sound(canal); // Se para el sonido

            sonando=FALSE;
        END
        FRAME;
    END
END


En el ejemplo se pone un gráfico de fondo y los mensajes necesarios, a la vez que se carga el efecto de sonido contenido en el archivo help.pcm con la función load_pcm(), que devuelve el identificador del sonido que se guarda en la variable id_sonido. Se puede ver que en este ejemplo se pasa a esta función un 1 como segundo parámetro; esto es para indicar que el efecto de sonido cargado debe repetirse indefinidamente cada vez que sea iniciado (esto se hace para resaltar el efecto de la función stop_sound().

En cada paso del bucle se comprueba si se pulsa la barra espaciadora, en cuyo caso se iniciará la reproducción del efecto de sonido con sound(), que devolverá el número de canal que se guardará en la variable canal.

Si se pulsa la tecla ENTER el sonido será parado con la función stop_sound().


Para parar gradualmente un sonido, bajando su volumen poco a poco, se deben realizar varias llamadas a la función change_sound() para ir decrementando ligeramente el volumen del canal hasta que éste llegue a 0; entonces se puede llamar a la función stop_sound() para detener definitivamente el efecto de sonido.


Ver: sound() - change_sound() - load_pcm/wav() - unload_pcm/wav()