TEMA 2.9
EFECTOS DE SONIDO Y MÚSICA

En la época que apareció QBasic no era muy común que los ordenadores tuvieran un sistema de sonido como los que hoy conocemos, pero sí podemos emitir algunos sonidos a través del altavoz interno que tienen todos los PCs.

La instrucción más sencilla que tenemos para emitir sonidos es esta...

BEEP

omo su propio nombre nos sugiere, lo que hace es hacer sonar por el altavoz interno un pitido similar al que se oye cuando encendemos el ordenador.
Si estamos ejecutando QBasic desde Windows y tenemos una tarjeta de sonido, entonces la instrucción BEEP lo que hace es generar el sonido predeterminado de Windows a través de los altavoces multimedia de nuestro equipo.

Es importante entender que durante el tiempo que dura el sonido, sea el pitido o el wav de Windows, la ejecución del programa queda detenida.

Otra instrucción un poco más avanzada para reproducir sonidos es la siguiente...

SOUND frecuencia, duración

La frecuencia la tenemos que expresar en hertzios. Se admiten valores entre 37 y 32767. Un valor bajo indica un sonido grave, y uno alto un sonido agudo. Valores aceptables están entre 300 y 3000 hertzios. Por debajo se oyen mal, y por encima pueden resultar molestos.

La duración viene indicada en 1/18 segundos. Esto quiere decir que si ponemos como duración 18 el sonido durará un segundo, si ponemos 36 durará 2 segundos, si ponemos 9 durará medio segundo y así con todos los valores. Es importante no poner valores muy altos (No mas de dos o tres segundos) ya que el sonido no parará hasta que no acabe el tiempo indicado, incluso aunque el programa termine o lo detengamos pulsando CONTROL+PAUSA.

La instrucción SOUND nos va a servir para dar pitidos. En algunos casos nos puede interesar dar pitidos de mas de un tono con varias instrucciones SOUND o incluso usar bucles para conseguir cosas como esta...

'JMGB - Hecho en Ronda - 1996
FOR v = 1 TO 5
	FOR h = 1 TO 5
		SOUND (h * 100) + (v * 200) + 100, 2
		SOUND (v * 200) + 600, 2
		SOUND (h * 200) + 400, 2
	NEXT
NEXT

Si nos atrevemos con la música, por ejemplo para los videojuegos, QBasic nos provee de un mecanismo para componer melodías, parecido al de los timbres de los teléfonos móviles...

PLAY "cadenacomandos"

Su funcionamiento es similar al de la orden DRAW que vimos en el tema de gráficos. Se le pasa una cadena de comandos entre comillas formada por una serie de letras y números que indican a QBasic la música que tiene que tocar.

En la ayuda de QBasic se detallan los comandos que hay disponibles para esta instrucción. Si tienes unos conocimientos mínimos de música serás capaz de componer algún tipo de sintonías para que suenen en tus programas.

Estos son instrucciones PLAY (Cada una ocupa una línea entera seguida, aunque aquí pueda aparecer cortada).

PLAY "MBT180o2P2P8L8GGGL2E-P24P8L8FFFL2D"
PLAY "MBo3L8ED+ED+Eo2Bo3DCL2o2A"
PLAY "MNT250L8O2DL4F+L8F+F+EF+L4G.F+L8F+L4EL8EEDEL4F+. DL8DL4F+L8F+F+EF+L4G. BL8BL4AL8AL4GL8EL2Dmn"

En nuestros programas no conviene abusar de la música y de los sonidos. Hay que tener en cuenta que en los sistemas de sonido modernos el usuario tiene la posibilidad de ajustar el volumen de los altavoces o incluso de apagarlos, pero al usar el altavoz interno del PC el usuario no tiene más remedio que escuchar todos los sonidos que produzca nuestro programa.

Normalmente se usan pitidos cortos para reaccionar ante ciertas acciones. Si nuestro programa hace un uso mas intensivo de pitidos y música sería conveniente dotarlo de un mecanismo de forma que el usuario pueda desactivarlos, por ejemplo usando variables globales y condiciones antes de intentar hacer algún sonido...

INPUT "¿Quieres oír los sonidos? - (S/N):"; sonido$
'
'...resto del programa...
'
IF sonido$ = "S" THEN SOUND 100,5

En todo caso el uso de los sonidos tendría que ser solo en momentos puntuales. Al pasar a otros entornos de programación más avanzados ya tendremos la posibilidad de aprovechar todas las posibilidades de la tarjeta de sonido.













CuRSo De iNTRoDuCCióN a La PRoGRaMaCióN CoN QBaSiC
© 2004 Juan M. González