sound()

sound(<código del sonido>, <volumen>, <frecuencia>)

Retorna:

El número de canal por el que se reproduce el sonido.

Descripción:

Hace sonar el efecto cuyo código de sonido se especifica como primer parámetro. Primero, el sonido se debe haber cargado de un archivo PCM o WAV con las funciones load_pcm() o load_wav() que son las que devuelven el código de sonido correspondiente a dicho efecto.

Como segundo parámetro se debe especificar el volumen al que se desea reproducir el sonido, siendo 0 el volumen mínimo y 256 el volumen máximo.

Como tercer parámetro se especificará la frecuencia (velocidad) a la que se desea reproducir el sonido, siendo 256 la frecuencia estándar que reproducirá el sonido original; a valores menores el sonido se reproducirá más grave, mientras qu a valores mayores de frecuencia, más agudo.

La función devuelve el número de canal que puede ser utilizado por las funciones stop_sound() para detener el sonido y change_sound() para modificar su volumen o su frecuencia.

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

Programa ejemplo:
PROGRAM ejemplo_sound;

PRIVATE
    volumen=128;        // Valor medio (0..256)
    frecuencia=256;     // Valor medio (0..512)
    id_sonido, canal;

BEGIN
    load_fpg("help\help.fpg");
    put_screen(0, 1);
    write(0, 0, 0, 0, "Volumen: Arriba(+) / Abajo(-)");
    write_int(0, 0, 10, 0, offset volumen);
    write(0, 0, 20, 0, "Frecuencia: Derecha(+) / Izquierda(-)");
    write_int(0, 0, 30, 0, offset frecuencia);
    write(0, 160, 180, 1, "Pulse [ESPACIO] para emitir el el sonido.");
    write(0, 160, 190, 1, "Utilice los cursores para cambiar los valores.");

    id_sonido = load_pcm("help\help.pcm", 0);

    LOOP
        IF (scan_code==_space)

            // Hace que suene
            canal = sound(id_sonido, volumen, frecuencia);

        END
        IF (key(_up) AND volumen<256) volumen++; END
        IF (key(_down) AND volumen>0) volumen--; END
        IF (key(_right) AND frecuencia<512) frecuencia++; END
        IF (key(_left) AND frecuencia>0) frecuencia--; END
        FRAME;
    END
END


En el ejemplo se pone una pantalla de fondo y un texto explicativo, y se carga un sonido con la función load_pcm(); ésta devuelve el identificador del sonido, que se guarda en la variable id_sonido.

En el bucle principal, a cada pulsación de la barra espaciadora, se emitirá el sonido con la función sound() con los parámetros definidos en las variables volumen y frecuencia.

Con las teclas de los cursores se podrán manipular estos valores para comprender así mejor su funcionamiento.

El número de canal devuelto por sound(), que se guarda en la variable canal, se podría haber utilizado para modificar el sonido con change_sound() o pararlo con stop_sound().


Ver: load_pcm/wav() - change_sound() - stop_sound()