Skip to content

03. Sonilandia

sevioptero edited this page Jan 15, 2021 · 2 revisions

3. Sonilandia

Bien, hemos hablado de todas esas magníficas posibilidades sonoras del Amstrad CPC 464, pero ¿qué tenemos que hacer para que el altavoz empiece a sonar? Lo primero, subir el mando de volumen al máximo y dejarlo así (si la familia no se opone). Ahora teclee la siguiente orden (y no olvide pulsar ENTER al final):

SOUND 1,478 

La nota que ha oído es DO media, con duración de un cincuentavo de segundo. La instrucción SOUND va seguida de varios parámetros, siete como máximo, con los que se controlan todas las características del sonido. Si está impaciente por saber para qué sirven, vea la figura 3.1.

De momento sólo hemos utilizado dos de ellos, los únicos imprescindibles. Su forma general es:

SOUND C,T 

Vamos a estudiarlo con detalle.

EL NÚMERO DE SELECCIÓN DE CANALES

El primer parámetro de SOUND, representado por C, especifica qué canal (o canales) debe sonar y en qué condiciones. Por ahora no vamos a ocuparnos de esas condiciones; nos limitaremos a averiguar cómo seleccionar canales. En el ejemplo anterior C tenía el valor 1, lo que significa que seleccionábamos el canal A. En el capítulo 2 hemos dicho que hay tres canales y sin embargo el margen de valores de C se extiende de 1 a 255. Por el momento sólo nos interesan los primeros números, con los que, según se indica en la tabla 3.1, se seleccionan los tres canales individualmente. Así, la instrucción SOUND 2 selecciona el canal B. Pero no teclee sólo SOUND 2 porque, como recordará, esta instrucción requiere al menos dos parámetros. Más adelante veremos qué efecto tienen los otros valores posibles de C.

Tabla 3.1 Números de selección de canales: acceso a los tres canales de sonido.

EL NÚMERO DE TONO

El segundo parámetro, T, controla el tono del sonido. En el ejemplo anterior pusimos el número 478, que corresponde a la nota DO media. ¿Cómo podemos saber qué número hay que utilizar para obtener una nota determinada? Muy sencillo: como el lector sabe, cada nota tiene una frecuencia, y a cada frecuencia corresponde un número de tono; en el apéndice E se da una relación de las notas, las frecuencias y los números de tono correspondientes. El parámetro T tiene que estar comprendido entre 0 y 4095. El valor que se utilice en cada caso puede corresponder a una nota determinada (por ejemplo, el número 379 produce la nota MI), pero también puede ser un valor intermedio entre notas, cualquiera dentro del margen mencionado. Tenga en cuenta que el número que ponga como segundo parámetro de SOUND tiene que ser el número de tono, no la frecuencia. Como puede ver, cada frecuencia tiene un número de tono asociado.

Cambie el valor de T para observar cómo varía el tono. Teclee, por ejemplo, las siguientes órdenes:

SOUND 1,956
SOUND 1,478
SOUND 1,60

Todas ellas producen la nota DO, pero de diferentes escalas. Quizá haya observado algo que puede parecerle extraño: cuanto menor es el número de tono, más aguda es la nota. Este hecho es característico del Amstrad; no lo olvide si quiere evitar confusiones.

¿Qué ocurre si como número de tono ponemos el 0? No habremos especificado ninguna frecuencia, lo que nos servirá para crear efectos de «ruido blanco».

EL NÚMERO DE DURACIÓN

Pasemos al siguiente parámetro, D, que especifica la duración del sonido, es decir, durante cuánto tiempo va a estar sonando la nota. Teclee la siguiente orden:

SOUND 1,568,100 

Fig. 3.1 Los parámetros de SOUND.

Acaba de oír la nota LA por el canal A durante un segundo. El tercer parámetro especifica la duración en unidades de centésimas de segundo; o sea, D=100 especifica un segundo. Toda duración mayor que 0 será obedecida como tal. Sin embargo, el número de duración nos va a servir para otras cosas.

En primer lugar, cuando D es cero, le estamos diciendo al Amstrad que la duración va a ser controlada por la envolvente de volumen asociada al canal. No está claro, ¿verdad? Lo explicaremos cuando lleguemos a la instrucción ENV.

El otro tipo «raro» de número de duración es un número negativo. También hace referencia a la envolvente de volumen; concretamente, indica al ordenador que debe repetir esa envolvente el número de veces especificado. Por ejemplo, el número de duración -3 hará que la envolvente suene 3 veces.

Experimente con diversos valores de D para hacerse una idea del efecto de la duración de las notas. En la tabla 3.2 se da un resumen de la información relativa al número de duración.

Valor Efecto
Implícito: 20 --
Margen: -32768 a +32767 --
> 0 Duración del sonido en centésimas de segundo
= 0 Duración controlada por la envolvente de volumen (ENV)
< 0 Número de veces que se repite el sonido descrito por la envolvente de volumen

Tabla 3.2 Efectos del valor del número de duración, D.

Si no se especifica número de duración, como ocurría en el primer ejemplo de este capítulo, el ordenador toma el valor implícito, que es el 20, lo que da notas de un quinto de segundo.

EL NÚMERO DE VOLUMEN

Veamos con el cuarto parámetro, V, que especifica el volumen. Teclee el programa 3.1 y ejecútelo.

Programa 3.1

10 FOR volumen=0 TO 7
20 SOUND 1,478,25,volumen
30 NEXT

El volumen va aumentando con cada pasada por el bucle; cuando el número llega a 7, el sonido es de la máxima intensidad posible. El margen de valores es, pues, de 0 a 7. El número 0 especifica intensidad nula.

Si se ha especificado envolvente de volumen (D=0), el margen del número de volumen va de 0 a 15; en este caso el número no especifica ningún volumen, sino que hace referencia a la envolvente de volumen que se debe utilizar.

Estos cuatro parámetros son los fundamentales de la instrucción SOUND; sólo con ellos ya es posible programar buena música. En el capítulo 5 veremos cómo hacerlo. No obstante, todavía hay otros tres parámetros más. Los dos que vienen ahora tienen que ver con las instrucciones de envolvente de volumen (ENV) y de tono (ENT), que explicaremos en los capítulos 6 y 7, respectivamente. Por ahora nos limitaremos a decir cómo encajan en la instrucción SOUND.

ENVOLVENTES DEFINIDAS POR EL USUARIO: ENV y ENT

El quinto parámetro EV, se incluye en la instrucción SOUND cuando se ha especificado una envolvente de volumen, la cual, como el lector ya sabe, describe la variación del volumen de una nota con el tiempo.

El valor de EV debe estar en el margen de 0 a 15. El valor o especifica que no se debe utilizar ninguna envolvente. Los valores positivos especifican el número de envolvente que se ha de utilizar. Por ejemplo, si EV=4, el sonido estará controlado por la envolvente número 4.

El sexto parámetro, ET, funciona igual que EV, pero referido a las envolventes de tono. El margen de valores va también de 0 a 15.

Cuando se utilizan estas opciones se empieza a aprovechar los refinamientos de este sorprendente sistema de sonido; de hecho, son la base de muchos efectos sonoros que crearemos más adelante.

Finalmente...

EL NÚMERO DE RUIDO

Ya hemos dicho antes que con el ordenador Amstrad podemos crear efectos de «ruido blanco». El último parámetro, R, es el «número de todo del ruido». Especifica si se ha de producir ruido y, si es así, de qué frecuencia. Cuando se omite este parámetro, o cuando su valor es cero, no se genera ruido. El margen utilizable es de 0 a 31. Para observar el efecto de este parámetro, teclee y ejecute el programa 3.2.

Programa 3.2

10 ENV 15,43,-68,3
20 FOR volumen=0 TO 7
30 SOUND 1,478,25,volumen,15,0,0
40 NEXT

Si así lo ha hecho, habrá oído unos ruidos cortos e intermitentes. Observe que hemos utilizado todos los parámetros de SOUND. Al parámetro EV le hemos dado el valor 15 porque queríamos usar la envolvente número 15, definida en la línea 10. No trate de descifrar la instrucción ENV; ya la explicaremos cuando llegue el momento. El sexto parámetro, ET, es cero por que todavía no hemos definido ninguna envolvente de tono. El último parámetro es cero, por lo que no se produce ruido. Pero podemos modificar lo; cambie la línea 30 para que sea

30 SOUND 1,478,25,volumen,15,0,10

donde, como puede observar, no hemos hecho más que cambiar el séptimo parámetro. ¿Nota el efecto? Si quiere apreciar la diferencia entre un tono puro y un ruido teclee las dos órdenes siguientes:

SOUND 1,478,100,15
SOUND 1,478,100,10,0,0,10

Con esto hemos terminado la descripción de los parámetros de la instrucción SOUND. Usted queda así equipado con las herramientas necesarias para empezar a jugar con esta instrucción. Puede parecer un poco complicada al principio; para dominarla, teclee unas cuantas instrucciones y vaya cambiando los valores de los parámetros para observar los efectos. Para facilitarle esta labor hemos incluido el programa 3.3. Ejecútelo cuantas veces desee; cuando esté seguro de que ha comprendido a la perfección el funcionamiento de esta instrucción, pase al siguiente apartado.

Programa 3.3.

10 CLS
20 PRINT"Elija numero de tono (0-4095)"
30 INPUT t
40 PRINT"Elija numero de duracion (1-32767)"
50 INPUT d
60 PRINT"Elija volumen (0-7)"
70 INPUT v
80 PRINT"Elija ruido (0-31)"
90 INPUT r
100 SOUND 1,t,d,v,0,0,r
110 PRINT"Pulse una tecla para continuar"
120 x$=INKEY$:IF X$="" THEN 120 ELSE 10

CÓCTEL DE CANALES

Al empezar este capítulo describimos el primer parámetro de SOUND: el número de selección de canales. Como dijimos entonces, este número sirve para más cosas que la mera selección de uno de los tres canales. Antes de nada, veamos la tabla 3.3, que es una versión más completa de la tabla 3.1. La disposición de los canales indica a la máquina qué canal debe sonar, si debe hacerlo al unísono con otro canal, si el sonido del canal se retiene o si se lo borra de la cola de sonidos.

Los valores que se muestran en la tabla 3.3 envían al generador de sonido las órdenes pertinentes. Sumando varios de estos valores podemos combinar diversos efectos. Por ejemplo, si queremos enviar sonido a los canales A y B escribimos lo siguiente:

SOUND 3,478,50,7

porque 1 (canal A) + 2 (canal B) = 3.

Para poder apreciar el efecto de la selección de varios canales, teclee y ejecute el siguiente programa.

Programa 3.4

10 KEY 128,"SOUND 1,478,50,7"+CHR$(13)
20 KEY 138,"SOUND 3,478,50,7"+CHR$(13)
30 KEY 138,"SOUND 5,478,50,7"+CHR$(13)
40 KEY 138,"SOUND 7,478,50,7"+CHR$(13)

Hemos utilizado la instrucción KEY para definir cuatro teclas. Cuando ejecute el programa no observará ningún efecto inmediato. Sin embargo, en cuanto vea aparecer el mensaje «Ready», las teclas habrán quedado definidas; para ejecutar las instrucciones de sonido que puede ver en el programa 3.4 tiene que pulsar CTRL al mismo tiempo que alguna de las teclas recién definidas del teclado numérico. Pruébelas en el siguiente orden:

Tabla 3.3 Números de selección de canales (2): disposición de los canales.

  • CTRL+0
  • CTRL+.
  • CTRL+ENTER
  • CTRL+3

Si escucha atentamente apreciará las diferencias entre los cuatro sonidos. De forma análoga, combinando otros valores de los números de selección de canales se pueden conseguir otros efectos. Por ejemplo, para enviar sonido al canal A en sincronismo con el B y retenerlo, el parámetro será 81 ya que

1 (canal A)+16 (sincronizar con el B)+64 (mantener)=81

Estas posibilidades de elección son importantes, pues permiten al programador sincronizar canales y borrar colas cuando le convenga.

SQ Y RELEASE

Quedan por estudiar dos instrucciones del sonido. La primera, SQ, es una función que da el número de plazas libres que quedan en la cola del sonido del canal especificado. Esto es útil también para determinar si un determinado canal está aún activo. Veamos el ejemplo del programa 3.5.

Programa 3.5

10 PRINT"Esta sonando el canal A"
20 SOUND 1,261,250,7
30 PRINT"FIN"

Si ejecuta este programa tal como está, verá aparecer la palabra FIN inmediatamente, antes de que deje de sonar el canal A. Para determinar si el canal está activo, introducimos SQ. Añada al programa la siguiente línea:

25 WHILE SQ(1)>127:WEND

Al ejecutar la nueva versión del programa, el mensaje final no aparece mientras no haya concluido el sonido. Esto ocurre porque SQ(1) da un valor mayor que 127 mientras esté sonando el canal A. La línea 25 se repite mientras (WHILE) se cumpla la condición. El número que se pone entre paréntesis a continuación de SQ hace referencia al canal de interés.

La instrucción RELEASE libera el sonido de un canal si este sonido está retenido. Los parámetros de esta instrucción están en el margen de 0 a 7. Por ejemplo, RELEASE 1 libera el sonido que esté retenido en el canal A, si lo hay.

Con esto termina nuestro repaso de las instrucciones de sonido del Amstrad. La mejor forma de entender y llegar a dominar estas instrucciones es experimentar con la instrucción SOUND. Esto es de por sí una buena diversión, y puede proporcionar resultados inesperados. Volveremos a encontrarnos la instrucción SOUND en el capítulo 5.

Clone this wiki locally