Skip to content

09. Musica maestro

sevioptero edited this page Jan 15, 2021 · 1 revision

9. Música, maestro

Mucho hemos avanzado desde el principio del libro. Ha llegado la hora de convertir al lector en un pianista. Uno de los objetivos de esta obra es ayudarle a crear música, pero hasta ahora todo lo que le he dejado hacer es poner los datos de las notas en líneas DATA. Este es un procedimiento lento y difícil cuando se quieren ejecutar piezas relativamente largas.

Lo que necesitamos es una forma de convertir el teclado del Amstrad en un teclado musical. No es un teclado ideal, pero al menos es un conjunto ordenado de teclas a las que podemos hacer que correspondan determinadas notas. ¿Cómo podemos convertir un teclado de ordenador en un instrumento musical? Si piensa que para ello hace falta un gran programa, está equivocado. Con ocho líneas tenemos suficiente.

UN SINTETIZADOR

Teclado de piano en el Amstrad

Observe las teclas de su Amstrad. No tiene mucho en común con las de un piano, ¿verdad? Sólo se parecen en que pueden ser pulsadas independientemente unas de otras. Nos basaremos en este hecho. En el piano las teclas están dispuestas en una larga fila que cubre varias octavas, de tono menor a mayor. El teclado del ordenador, en cambio, consta de varias filas, vamos a intentar asignar a una de ellas una octava y después veremos dónde poner las restantes. Tomemos la primera fila de teclas literales (QWERTY...); éstas serán nuestras teclas «blancas». Las negras serán las de la fila superior, las teclas numéricas. Vamos con el programa. Vaya tecleando las líneas a medida que se las vaya explicando, pero no ejecute el programa mientras no esté completo. La primera línea es la 30:

30 w$=INKEY$:IF w$="" THEN 30

Como puede observar, esta instrucción se repite hasta que se pulsa una tecla cualquiera, momento en el que el programa pasa a la línea siguiente. Ahora tenemos que decirle a la máquina qué teclas vamos a utilizar. Esto es lo que hacemos en la línea 10, en la que la cadena s$ contiene las teclas correspondientes a todas las notas de la octava, incluidos los semitonos. Como puede ver en la definición de s$, las letras están en minúsculas; así pues, cuando ejecute este programa, cerciórese de que no están bloqueadas las mayúsculas en CAPS LOCK.

10 s$="q2w3er5t6y7ui9oOp"

La instrucción que produce el sonido está en la línea 70:

70 SOUND 1,tono,15,15

La variable «tono» todavía no está definida. Para obtener los valores correctos necesitamos las fórmulas del capítulo 5:

50 frecuencia=440*(2 (1+((nota-10)/12)))
60 tono=ROUND(125000/frecuencia)

Recuerde que el valor de la variable «nota» de la línea 50 determina qué nota se debe ejecutar (DO=1, RE=3, ...). Puesto que hemos decidido que la primera sea la tecla «q», ésta dará la nota DO. ¿Por qué? Veamos la línea 40:

40 nota=INSTR(s$,w$)

Aquí la función INSTR determina si la tecla pulsada, w$, coincide con alguno de los caracteres de s$. Si es así, asigna a «nota» el valor numérico de la nota. Por ejemplo, si la tecla pulsada es «q», «nota» toma el valor 1, que corresponde a la nota DO.

Lo que necesitamos ahora es incluir este programa en un bucle que se repita indefinidamente. Para ello recurrimos a la instrucción WHILE ... WEND, líneas 20 y 80:

20 WHILE x=0
80 WEND

El programa ya está completo. Cuando lo ejecute tendrá a su disposición un teclado musical que empieza por la nota DO (letra «q») y se extiende hacia la derecha cubriendo más de una octava. Si quiere limitarlo a una octava, suprima de la definición de s$ los cuatro últimos caracteres.

En la figura 9.1 se muestra la correspondencia entre el teclado del Amstrad y el del piano. Recuerde que en el apéndice E se dan las tablas completas de frecuencia, números de tono y números de las notas. Cambiar la octava es muy fácil. En la ecuación de la línea hemos puesto 1 como número de octava. Si ponemos 0, el efecto es bajar el tono de todas las notas a la octava inmediatamente inferior.

Fig. 9.1 Relación entre el teclado del Amstrad y el del piano.

Y ahora, manos al teclado. Por si usted es realmente lego en música, en la figura 9.2 he incluido una serie de notas que puede ejecutar; para mayor facilidad, he puesto las letras del teclado, no los nombres de las notas. No doy ninguna indicación sobre el ritmo, pero eso lo aportará usted en cuanto reconozca la melodía.

MÁS OCTAVAS

Ampliación del teclado Como dijimos antes, el margen cubierto por el teclado se puede ampliar a otras octavas. Esto se puede hacer de varias formas; la que yo prefiero consiste en utilizar las dos últimas filas del teclado para que sean continuación de las dos primeras.

Fig. 9.2 Melodía misteriosa.

Para realizar la ampliación, añada las siguientes líneas al programa:

15 octava$="zsxdcvgbhnjm,l.:/"
65 IF nota=0 THEN GOSUB 90
90 nota=INSTR(octava$,w$)
100 frecuencia=440*(2 (0+((nota-10)/12)))
110 tono=ROUND(125000/frecuencia)
120 RETURN

Su teclado cubre ahora dos octavas. Así, para ejecutar la escala de DO mayor en dos octavas pulse las siguientes teclas: zxcvbnm,wertyui.

Los dos grupos de letras se extienden hasta un poco más allá del límite de la octava correspondiente, de modo que algunos semitonos se pueden ejecutar con dos teclas distintas.

El sintetizador que hemos construido es un buen instrumento para jugar y experimentar. Este programa es una introducción al uso de sintetizadores; espero que le sirva como base para ampliarlo e incluir otros efectos sonoros. Para ello se requiere manejar las envolventes, además de un poco de imaginación. ¡Buena suerte!