Música y sonido con micro:bit
- Una pequeña melodía
- Grabadora de sonidos
- Fray Santiago
- Controles de volumen, tempo y tono
- El sintetizador de micro:bit
Una pequeña melodía
Secuencias
By pressing down a little key, it plays a little melody.
Kraftwerk, "Pocket Calculator", 1981
El menú Música de MakeCode contiene muchos bloques para producir sonidos y melodías. La forma más rápida de generar una pequeña melodía es introducir en el código el bloque play melody. En el ejemplo siguiente, al pulsar el botón A sonará una melodía pregrabada elegida de una lista desplegable.
La melodía suena en el fondo, in background, por lo que el resto del código que haya sido introducido en micro:bit seguirá ejecutándose mientras suene la música.
La opción hasta que termine detiene la ejecución del código hasta que finalice la melodía.
La opción looping in background hace sonar la música continuamente mientras se ejecuta el resto del código programado en micro:bit.
También es posible programar pequeñas melodías usando el bloque play melody at tempo. En el monento de programar, el bloque despliega un secuenciador gráfico de ocho notas y una octava, en el que las notas están codificadas por colores. Además, el bloque permite elegir el tempo de reproducción en bpm o pulsos por minuto. Vamos a usar el bloque play melody at tempo para codificar un arpegio que suene a 240 bpm al pulsar el botón B:
Adicionalmente, el bloque play melody at tempo dispone de varias secuencias programadas, a las que se accede pulsando sobre el botón Galería.
Melodías y efectos de sonido
El bloque play contiene varias melodías pregrabadas, que pueden seleccionarse mediante una lista desplegable.
Con la versión 2 de micro:bit podemos añadir efectos de sonido por medio del bloque play. De nuevo, al pulsar sobre el bloque se desplegará una lista de los efectos disponibles.
El programa de la figura usa play para hacer que suene el efecto misterioso cuando micro:bit sea agitado.
Grabadora de sonidos
La versión 2 de micro:bit tiene la capacidad de grabar sonidos gracias a su micrófono integrado. El sonido grabado puede reproducirse con el altavoz de la placa aunque, debido a su pequeño tamaño, la calidad es algo pobre. A pesar de ello, experimentar con la grabación del sonido siempre producirá resultados interesantes.
El sonido grabado se guarda en la memoria RAM de la placa, por lo que se borrará cuando se desconecte la alimentación.
Cuando se accede al entorno de MakeCode no aparece ningún menú de bloques relacionados con la grabación o con la reproducción del sonido. Resulta por lo tanto necesario cargarlo como una extensión del lenguaje de bloques de micro:bit. Para ello hay que pulsar sobre el menú Extensiones de la caja de herramientas de MakeCode y seleccionar audio-recording. Tras unos instantes, aparecerá en la caja de herramientas un nuevo menú llamado Record.
Con la nueva extensión ya cargada, podemos pasar a codificar un sencillo grabador y reproductor de sonido.
El programa debe grabar un sonido cuando se pulse el botón A y debe reproducirlo al pulsar el botón B. Durante la grabación mostraremos en pantalla el icono universal record (algo parecido a un círculo) y durante la reproducción mostraremos el icono universal play (un triángulo apuntando hacia la derecha). Cuando el programa termine de grabar o de reproducir, debe mostrar el icono pause (dos barras verticales). El programa puede ser algo parecido a esto:
Una vez introducido el código, el simulador de MakeCode nos ofrecerá la posibilidad de probar el funcionamiento del programa sin necesidad de descargarlo previamente en la placa. Para ello usará el micrófono y el altavoz de nuestro ordenador.
La duración del mensaje grabado es de unos 6 segundos.
Adicionalmente, podemos usar el evento al iniciar para ajustar al máximo la calidad y la sensibilidad del micro.
Set sample rate to 22000 for everything indica que tanto la grabación como la reproducción del sonido se realizarán tomando 22000 muestras o lecturas de la onda sonora por segundo.
Fray Santiago
Por medio del bloque play tone, del menú Música, micro:bit puede reproducir melodías algo más complejas. Hay que recordar que para poder reproducir la melodía es necesario disponer de una tarjeta de la versión 2, ya que la primera versión de micro:bit no dispone de altavoz integrado.
A modo de ejemplo vamos a codificar la melodía Fray Santiago, cuya partitura se muestra a continuación:
De acuerdo con la partitura, las notas musicales que hay que reproducir son:
Do-Re-Mi-Do (2 compases)
Mi-Fa-Sol (2 compases)
Sol-La-Sol-Fa-Mi-Do (2 compases)
Re-Sol-Do (2 compases)
El bloque play tone da la posibilidad de ajustar la duración de las notas en pulsos. Algunas de las notas de Fray Santiago son negras, por lo que durarán un pulso. Otras son corcheas y deben durar la mitad de una negra, es decir, medio pulso. Las blancas tendrán una duración de dos pulsos.
Usaremos un evento si agitado para que la música se inicie al sacudir la tarjeta. Como cada compás se repite dos veces, deben usarse varios bucles repetir 2 veces para ahorrar líneas de código. Aplicando todo lo expuesto, el programa tendrá el siguiente aspecto:
Cuando el programa esté completo, el simulador de micro:bit dará la opción de agitar la placa con el puntero del ratón para reproducir la melodía desde el ordenador, sin necesidad de descargarla en la placa física.
Por otro lado, la imagen del simulador muestra la posibilidad de conectar la tarjeta a un altavoz externo por medio de unas pinzas de cocodrilo y del jack de 3,5 mm del altavoz. Esta es la solución para reproducir sonidos cuando no se dispone de una tarjeta de la versión 2.
Controles de volumen, tempo y tono
Ajustando el volumen y el tempo
La potencia del altavoz de micro:bit no es muy alta, pero puede regularse con el bloque específico establecer volumen a. Por medio de este bloque el nivel sonoro puede ajustarse entre valores de 0 y 255. El ajuste del volumen puede realizarse en cualquier momento de la ejecución del programa. En el caso de la melodía de Fray Santiago, podemos fijar el volumen dentro del evento al iniciar. Además, aprovecharemos este evento para mostrar permanentemente en pantalla una corchea.
De nuevo, tras modificar el programa de Fray Santiago, el simulador de micro:bit nos mostrará cómo conectar la tarjeta a un altavoz externo.Al conectar la placa a un altavoz, puede ser deseable desconectar el altavoz interno. Esta función la realiza el bloque llamado configurar altavoz interno, que puede adoptar los estados activado y desactivado.
La melodía se reproduce por defecto a un tempo de 120 pulsos por minuto. El bloque ajustar tempo a (bpm) admite tempos de entre 40 y 500 pulsos por minuto. Para reproducir Fray Santiago a una velocidad menor que 120 bpm, daremos al tempo un valor de 90 bpm dentro del evento al iniciar.
Sonidos estocásticos
El bloque tono de timbre (Hz) produce un sonido continuo cuya frecuencia en hertz (Hz) puede ser ajustada. El tono generado por micro:bit no tiene una duración determinada, así que sonará hasta que sea apagado mediante el bloque para todos los sonidos.
Usando estos dos bloques podemos programar un generador de notas aleatorias. Para producir números aleatorios se utiliza el bloque escoger al azar de, disponible en el menú Matemática.
De acuerdo con el código presentado, cada vez que se pulse el botón A, la placa generará al azar entre 16 y 32 sonidos, cuyas frecuencias variarán entre 262 Hz y 440 Hz, y que durarán entre 125 ms y 250 ms.
El sintetizador de micro:bit
Los bloques de Música de MakeCode hacen posible que micro:bit sintetice sonidos simples pero muy llamativos. El bloque básico usado para la síntesis es play, que puede ejecutarse mientras sigue la ejecución del programa o hasta que termine el sonido o en bucle.
Pulsando repetidamente sobre el signo +, aparecerán otras opciones para el control del sonido.
Como se ve en la imagen, es posible ajustar la duración del sonido, sus frecuencias inicial y final y el volumen inicial y final.
Los efectos disponibles son trémolo, vibrato y gorjeo. La interpolación afecta a la forma en la que se genera el sonido, produciendo un cambio en su timbre.
Al pulsar sobre el icono de la onda, se despliega un cuadro de diálogo en el que se pueden realizar los ajustes de forma gráfica, siendo además posible seleccionar distintas formas de onda: sinusoidal, cuadrada, triangular, diente de sierra y ruido.
El botón Play reproduce el sonido sintetizado, mientras que Generate Similar Sound produce variaciones. La Galería contiene varias muestras de sonidos, la mayoría percusivos, que admiten ser modificados.