change_channel(<canal>, <volumen>, <balance>)
Descripción:
Se trata de una función complementaria a change_sound(), que modifica las propiedades de uno de los canales de sonido que reproducen los efectos digitales (ver sound()) o módulos musicales (ver song()).
Se debe indicar el número de <canal> que quiere ajustarse, (normalmente el número de canal devuelto por la función sound()), y los siguientes dos valores:
<volumen> - Se trata del volumen propio del canal, entre 0 y 512, independiente del volumen del propio sonido y del volumen general.
Cuando los volumenes de los diferentes canales son demasiado altos se producen efectos de distorsión, por ello se recomienda modificar el volumen de los efectos de sonido mediante la función change_sound() que, además, permite ajustar la frecuencia de los mismos.
<balance> - Es el "panning" o diferencia de volumen entre el atavoz izquierdo y derecho, debe ser un valor entre 0 y 255.
Nota: Los niveles generales de volumen se pueden ajustar mediante la estructura global setup (sonido digital, cd-audio y volumen general).
PROGRAM ejemplo_change_channel; PRIVATE balance=128; // Valor medio (0..256) id_sonido; canal; BEGIN load_fpg("help\help.fpg"); put_screen(0, 1); id_sonido = load_pcm("help\help.pcm", 1); canal = sound(id_sonido, 256, 256); write(0, 160, 0, 1, "Presione derecha o izquierda para cambiar el balance."); write_int(0, 160, 10, 1, offset balance); LOOP // Cambia el balance del canal change_channel(canal, 50, balance); IF (key(_right) AND balance<255) balance++; END IF (key(_left) AND balance>0) balance--; END FRAME; END END
En el ejemplo se carga y se emite un sonido (contenido en el archivo help.pcm). Dentro del bucle principal del programa se puede cambiar el balance del canal por el que está sonando dicho sonido con la función change_channel(), utilizando las teclas de los cursores.
Nota: Ver también la tabla global predefinida channel, que indica cuales de los canales de sonido están siendo utilizados.