void stop_sound( int id_sonido )


Descripción:

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

El identificador de sonido requerido es el valor que retorna la función load_sound() / load_wav() / load_voc() cuando se carga un efecto de sonido.


MAIN_PROGRAM_CDIV
PRIVATE
   int
    id_sonido,
    canal,
    sonando;

BEGIN_PROGRAM

 set_gfx(GFX_AUTODETECT_FULLSCREEN);

 set_mode(m320x200);

 sonando = 0;

 load_fpg("../help.fpg");

 put_screen(1, 1);

 write(0, 160, 0, 1, "Pulse [ESPACIO] para reproducción.");
 write(0, 160, 10, 1, "Pulse [ENTER] para detener el sonido.");

 id_sonido = load_wav("../help.wav", 1);

 LOOP{
        if((scan_code == _space) && !sonando){
            canal = sound(id_sonido, 127, 127);
            sonando = 1;
        }
        if(scan_code == _enter){
            stop_sound(id_sonido); // Se para el sonido
            sonando = 0;
        }
        FRAME;
 }

END_PROGRAM

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.wav con la función load_wav(), 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_sound/wav/voc() - unload_sound/wav/voc()