int sound( int id_sonido, uchar volumen )
int sound( int id_sonido, uchar volumen, frecuencia )
int sound( int id_sonido, uchar volumen, frecuencia, panoramización )


Retorna:

 El número de canal (mayor o igual a 0) por el que se reproduce el sonido.
 -1 //Si no puede reproduce el sonido

Descripción:

Hace sonar el efecto cuyo identificador de sonido se especifica como primer parámetro. Primero, el sonido se debe haber cargado de un archivo WAV con las funciones load_sound() / load_wav() / load_voc() que son las que devuelven el identificador de sonido correspondiente a dicho efecto.

Volumen: Especifica el volumen al que se desea reproducir el sonido, siendo 0 el volumen mínimo y 255 el volumen máximo.

Frecuencia: Especificará la velocidad a la que se desea reproducir el sonido, siendo 127 la frecuencia por defecto al que reproducirá el sonido original; a valores menores el sonido se reproducirá más grave, mientras que a valores mayores de frecuencia, más agudo.

Panoramización: Especificará el balance o panoramización van de 0 (min/izquierda) a 255 (máx/derecha). El valor por defecto será 127 el centro del sonido.


MAIN_PROGRAM_CDIV
PRIVATE
   int
    volumen,
    frecuencia,
    id_sonido,
    canal;

BEGIN_PROGRAM

 set_gfx(GFX_AUTODETECT_WINDOWED);

 set_mode(m320x200); 

 frecuencia = 128;     // Valor medio (0..255)
 volumen = 128;        // Valor medio (0..255)

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

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

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

 LOOP{
        if (scan_code == _space)
            // Hace que suene
            canal = sound(id_sonido, volumen, frecuencia);

        if (key(_up)    && (volumen < 256)) volumen++;
        if (key(_down)  && (volumen > 0)) volumen--;
        if (key(_right) && (frecuencia < 256)) frecuencia++;
        if (key(_left)  && (frecuencia > 0)) frecuencia--;
        FRAME;
 }

END_PROGRAM

En el ejemplo se pone una pantalla de fondo y un texto explicativo, y se carga un sonido con la función load_sound() / load_wav / load_vod(); é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.


Ver: load_wav() - change_sound() - stop_sound()