Skip to content

05. El sonido de la musica

sevioptero edited this page Jan 15, 2021 · 1 revision

5. El sonido de la música

La conversión de la música a una forma que el Amstrad pueda comprender es una tarea relativamente sencilla. En el capítulo 3 decíamos que el número de tono de la instrucción SOUND podía producir una nota reconocible (véase el apéndice E). En este capítulo vamos a utilizar los valores de T que hacen que el generador de sonido emita tonos musicales.

ESCALAS CROMÁTICAS

Un buen punto de partida para entender la relación entre los números de tono del Amstrad y las notas musicales es considerar el problema de construir una octava cromática a partir de una nota, la serie de 12 semitonos que forman una octava. Esto no es tan sencillo. Los intervalos entre semitonos en la tabla de números de tono (Apéndice E) no son uniformes; tampoco son uniformes los intervalos de frecuencia. Así pues, tenemos que calcular la frecuencia correcta de cada nota y convertirla en el número de tono asociado.

Los cálculos se realizan mediante una ecuación. El apéndice 7 del manual del usuario da una fórmula, pero es incorrecta. La fórmula correcta es la siguiente:

frecuencia=440*(2 (octava+((n-10)/12)))

donde «octava» es el número de octava de las ocho disponibles (0-7, véase el apéndice E) y «n» es el número de orden de la nota (DO=1, DO#=2, ...).

Una vez calculada la frecuencia, el número de tono se obtiene mediante la fórmula

T=ROUND(125000/frecuencia)

El programa que necesitamos es, por lo tanto, el 5.1

Programa 5.1

10 FOR num=1 TO 12
20 READ a(y)
30 frec=440*(2^(0+((a(y)-10)/12)))
40 tono=ROUND(125000/frec)
50 SOUND 1,tono,35,15
60 NEXT
70 DATA 1,2,3,4,5,6,7,8,9,10,11,12

La línea 70 contiene los 12 números que representan los semitonos de una octava, empezando por 1 (DO). La línea 30 convierte esos números en frecuencias, y la línea 40 conviene las frecuencias en números de tono.

ESCALAS

Partiendo de esta base, no es difícil crear una escala, digamos la DO mayor. En el capítulo 4 hemos explicado la regla para generar escalas mayores; la sucesión de notas es tono, tono, semitono, tono, tono, tono, semitono.

Todo lo que tenemos que hacer es modificar la línea de datos:

70 DATA 1,3,5,6,8,10,12,13

y cambiar la línea 10:

10 FOR num=1 TO 8

Ejecute el programa y oirá la escala de DO mayor, desde DO media hasta la DO de la octava siguiente. Los datos de la línea 70 se comprenden fácilmente. El número 1 representa DO; los restantes, los sucesivos tonos o semitonos de la escala. Para pasar de una nota al semitono siguiente hay que incrementar el número en una unidad; para pasar al tono siguiente, en dos unidades.

MELODÍAS

Ahora ya estamos en condiciones de convertir melodías conocidas en programas para el Amstrad. Teclee y ejecute el programa 5.2. La música debería serle conocida; si quiere averiguar de qué melodía se trata tendrá que teclear el programa, porque yo no voy a decírselo.

Programa 5.2

10 tempo=2.5
20 RESTORE 90
30 FOR x=1 TO 37
40 READ tono,duracion
50 frec=440*(2^(0+((tono-10)/12)))
60 numtono=ROUND(125000/frec)
70 SOUND 1,numtono,duracion*tempo,15
80 NEXT
90 DATA 27,10,29,10,25,10,22,20,24,10,20,20
100 DATA 15,10,17,10,13,10,10,20,12,10,8,20
110 DATA 3,10,5,10,1,10,-2,20,0,10,-2,10,-3,10,-4,40
120 DATA 3,10,4,10,5,10,13,20,5,10,13,20,5,10,13,40
130 DATA 13,10,15,10,17,10,13,10,15,10,17,20,12,10,15,20,13,40

¿La reconoce? Quizá se esté preguntando cómo funciona este programa. El tempo se puede modificar jugando con la línea 10; cuanto menor sea el número, más rápida será la ejecución, y viceversa. La línea 70 contiene la instrucción que genera el sonido. Observe que el tercer parámetro de SOUND es una combinación de «duración» y «tempo». La duración se lee de las líneas de datos, en las que se han incluido dos datos para cada nota: el primero es el número de tono y el segundo el de duración. El significado de los números de duración no nos preocupa por el momento; lo estudiaremos en el capítulo 10. Ahora sólo vamos a ocuparnos de los números de tono.

El núcleo del programa, líneas 50 a 70, es igual al del programa 5.1. La melodía ha sido programada poniendo en las líneas de datos los números de las notas y convirtiéndolos en números de tono. Los números de las notas son los que figuran en el apéndice E, suponiendo que se cuenten las notas a partir de DO media y que a esa octava se le dé el valor 0 (véase la línea 50 del programa). En cuanto adquiera cierta soltura con este método, verá qué fácil le resulta convertir melodías en programas para el Amstrad.

Para practicar, elija una melodía sencilla, que conste de notas simples (es decir, sin acordes), y convierta las notas en números para las líneas de DATA. No tenga en cuenta, por ahora, la duración de las notas, para la cual puede poner un valor típico en la línea 70. Al no haber programado la duración, la melodía sonará un poco rara, pero habrá conseguido el objetivo que pretendemos, que es practicar la conversión de partituras a programas.

Ahora vamos a abandonar la música momentáneamente, pues vamos a estudiar las dos instrucciones de sonido restantes: ENV y ENT.