Tema 9 - Introducción al sonido con un CPC
Esta introducción va a ser solo eso, una introducción, por tres motivos:
- Mis conocimientos de música son casi casi nulos.
- Se trata de un tema extenso, porque las capacidades sonoras de los CPC eran superiores a las de muchos equipos de su época, y las facilidades para crear sonidos avanzados desde Basic eran muchas.
- Existe un libro adecuado para quien quiera profundizar: "Música y Sonidos con Amstrad", de Jeremy Vine, que está traducido al español.
Aun así, veremos lo básico sobre cómo tocar notas simples y cómo hacer algún efecto sencillo de sonido.
- 9.1 Emitiendo sonidos: SOUND
- 9.2 La envolvente de volumen
- 9.3 La envolvente de tono
- 9.4 Ruido blanco
9.1 Emitiendo sonidos: SOUND
La orden SOUND es la básica para emitir sonidos. En ella tenemos que indicar al menos dos datos: el canal que queremos usar (tenemos 3 canales, lo que permite tocar varias notas a la vez) y el tono de la nota:
SOUND 1, 478
Eso toca a través del canal 1 una nota DO en una escala intermedia (el CPC permite notas dentro de una gama de 8 octavas, numeradas desde -3 hasta 4; este es el DO de la octava 0).
El resto de tonos de las notas de esta octava intermedia son:
DO = 478
RE = 426
MI = 379
FA = 358
SOL = 319
LA = 284
SI = 253
Así, si queremos tocar una melodía sencilla como RE-MI-FA-RE- RE-MI-FA-RE- FA-SOL-LA lo podríamos hacer con
10 'Usaremos variables, por legibilidad
20 DO0 = 478: RE0 = 426: MI0 = 379: FA0 = 358
30 SOL0 = 319: LA0 = 284: SI0 = 253
40 ' Y esta es la melodia
50 SOUND 1, RE0
60 SOUND 1, MI0
70 SOUND 1, FA0
80 SOUND 1, RE0
90 SOUND 1, RE0
100 SOUND 1, MI0
110 SOUND 1, FA0
120 SOUND 1, RE0
130 SOUND 1, FA0
140 SOUND 1, SOL0
150 SOUND 1, LA0
El segundo canal de sonido es el 2 y el tercero es el 4. Así, podemos hacer que una nota suene a la vez por los canales 1 y 3 indicando como canal 1+4=5, o que suene por los tres canales a la vez con 1+2+4=7.
SOUND 7, 478
Un tercer parámetro que podríamos emplear es la duración de la nota, que se mide en centésimas de segundo. Si no indicamos otra cosa, durará 20 centésimas de segundo. Si queremos que suene un segundo entero, lo haríamos con
SOUND 7, 478, 100
Un cuarto parámetro es el volumen, desde 0 (silencio) a 7 (máximo). Por ejemplo, una nota de volumen medio podría ser
SOUND 7, 478, 100, 4
Hay más parámetros, pero los iremos viendo un poco más adelante, cuando hablemos de las envolventes y del ruido.
9.2 La envolvente de volumen
Los CPC permiten hacer variaciones sobre un sonido mientras que éste se emite. Por ejemplo, podemos variar el volumen. Para indicar que el volumen debe variar mientras se reproduce el sonido, deberemos crear una "envolvente de volumen". Para eso se usa la orden ENV. En el uso más sencillo de esta orden, debemos indicar tres parámetros: la cantidad de "escalones" que queremos que tenga esa variación de volumen, cuánto queremos que suba o baje el volumen en cada escalón, y la duración (en tiempo) de cada escalón.
Vamos a empezar por un ejemplo, en el que el volumen aumente poco a poco. Por ejemplo, en 5 etapas, en cada una de las cuales el sonido aumente tres unidades (para llegar desde 0 -silencio- hasta 15 -volumen máximo-), y que duren 20 centésimas de segundo:
ENV 1,5,3,20
SOUND 1,478,0,0,1
La orden SOUND que usa esta envolvente tiene un quinto parámetros el número de envolvente (1 en nuestro caso). El tercer parámetro de SOUND, la duración, lo dejamos a valor 0, para que sea la envolvente la que marque cuanto debe durar el sonido. El cuarto parámetro, el volumen, lo dejamos en cero, porque queremos que la nota empiece desde el silencio.
El resultado es un sonido que dura un segundo (5x20 centésimas), empieza desde el silencio (0) y alcanza el volumen máximo (5x3=15).
Podemos conseguir el mismo efecto de forma más suave así: hacemos 15 subidas de una unidad, cada una de las cuales dure 7 centésimas de segundo: el resultado duraría un segundo y cinco centésimas (15x7 centésimas), empezaría desde el silencio (0) y alcanzaría el volumen máximo (15x1=15) de manera más gradual.
ENV 1,15,1,7
Podemos añadir más secciones a la orden ENV, hasta completar un máximo de 5. Por ejemplo, podemos hacer que el sonido suba más suavemente, luego se mantenga, y luego baje, usando 3 secciones:
ENV 2, 12,1,5, 1,0,20, 6,-2,20
SOUND 1,478,0,0,2
En este caso, hemos creado la envolvente número 2. La primera sección dura 60 centésimas de segundo (12 etapas de 5 centésimas) y sube su volumen 1 a 1 desde 0 hasta 12. La siguiente sección tiene una única etapa de 20 centésimas, en la que no varía el volumen. La tercera y última etapa dura 1,20 segundos (6 etapas de 20 centésimas), en las que su volumen baja de -2 en -2 hasta volver a cero.
Podemos crear hasta 15 envolventes de volumen.
9.3 La envolvente de tono
La idea de una envolvente de tono es casi la misma que la de la envolvente de volumen, pero, como es de esperar, lo que cambia no es el volumen de la nota musical, sino su tono, haciendo que resulte más grave o más aguda en ciertos instantes. Al igual que para ENV, en el uso más sencillo de esta orden, debemos indicar tres parámetros: la cantidad de "escalones" que queremos que tenga esa variación de volumen, cuánto queremos que suba o baje el tono en cada escalón, y la duración (en tiempo) de cada escalón.
ENT 1 ,80 ,-4 ,1
SOUND 1,478,50,15 ,0 ,1
El sonido anterior, que podría recordar lejanamente al rayo láser de una película de ciencia-ficción, comienza con una frecuencia de 478 (DO), y esta frecuencia se reduce en 80 pasos, bajando 4 unidades en cada paso, y estos pasos tienen una duración de una centésima de segundo.
Se puede ver que ahora usamos el sexto parámetro (la envolvente de tono), pero no el quinto (la envolvente de volumen). En un caso real, podríamos combinar ambas a la vez, para lograr efectos más avanzados.
9.4 Ruido blanco
Podemos añadir un séptimo parámetro a la orden SOUND: un 1, para indicar que emita ruido a la vez (un "ruido sintético", que se conoce como "ruido blanco"). Por ejemplo, podemos imitar las interferencias de una radio o televisión con:
10 FOR repeticion=1 TO 6
20 frecuencia=INT(RND*20)
30 SOUND 1,frecuencia,50,15 ,0,0,1
40 NEXT