# Música y sonido con 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ú <span style="color: rgb(224, 62, 45);">**Música**</span> 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 <span style="color: rgb(224, 62, 45);">**play melody**</span>. En el ejemplo siguiente, al pulsar el **botón A** sonará una **melodía pregrabada** elegida de una lista desplegable.

[![Play melody.png](https://libros.catedu.es/uploads/images/gallery/2023-08/scaled-1680-/play-melody.png)](https://libros.catedu.es/uploads/images/gallery/2023-08/play-melody.png)

La melodía suena en el fondo, <span style="color: rgb(224, 62, 45);">**in background**</span>, 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 **<span style="color: rgb(224, 62, 45);">hasta que termine</span>** detiene la ejecución del código hasta que finalice la melodía.

La opción**<span style="color: rgb(224, 62, 45);"> looping in background</span>** 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 **<span style="color: rgb(224, 62, 45);">play melody at tempo</span>**. 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 **<span style="color: rgb(224, 62, 45);">play melody at tempo</span>** para codificar un arpegio que suene a 240 bpm al pulsar el **botón B**:

[![Secuenciador.png](https://libros.catedu.es/uploads/images/gallery/2023-08/scaled-1680-/secuenciador.png)](https://libros.catedu.es/uploads/images/gallery/2023-08/secuenciador.png)

Adicionalmente, el bloque **<span style="color: rgb(224, 62, 45);">play melody at tempo</span>** dispone de varias secuencias programadas, a las que se accede pulsando sobre el botón **<span style="color: rgb(224, 62, 45);">Galería</span>**.

##### [![Galería de melodías.png](https://libros.catedu.es/uploads/images/gallery/2023-08/scaled-1680-/galeria-de-melodias.png)](https://libros.catedu.es/uploads/images/gallery/2023-08/galeria-de-melodias.png)Melodías y efectos de sonido

El bloque **<span style="color: rgb(224, 62, 45);">play</span>** contiene varias melodías pregrabadas, que pueden seleccionarse mediante una lista desplegable.

[![Play 2.png](https://libros.catedu.es/uploads/images/gallery/2023-08/scaled-1680-/play-2.png)](https://libros.catedu.es/uploads/images/gallery/2023-08/play-2.png)

Con la versión 2 de micro:bit podemos añadir efectos de sonido por medio del bloque **<span style="color: rgb(224, 62, 45);">play</span>**. De nuevo, al pulsar sobre el bloque se desplegará una lista de los efectos disponibles.

El programa de la figura usa <span style="color: rgb(224, 62, 45);">**play**</span> para hacer que suene el efecto **<span style="color: rgb(224, 62, 45);">misterioso</span>** cuando micro:bit sea agitado.

[![Play sounds.png](https://libros.catedu.es/uploads/images/gallery/2023-08/scaled-1680-/play-sounds.png)](https://libros.catedu.es/uploads/images/gallery/2023-08/play-sounds.png)

# 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.

<p class="callout warning">El sonido grabado se guarda en la memoria RAM de la placa, por lo que se borrará cuando se desconecte la alimentación.</p>

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ú <span style="color: rgb(126, 140, 141);">**Extensiones**</span> de la caja de herramientas de MakeCode y seleccionar **audio-recording**. Tras unos instantes, aparecerá en la caja de herramientas un nuevo menú llamado <span style="color: rgb(35, 111, 161);">**Record**</span>.

[![Menú record.png](https://libros.catedu.es/uploads/images/gallery/2023-07/scaled-1680-/menu-record.png)](https://libros.catedu.es/uploads/images/gallery/2023-07/menu-record.png)

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:

[![Código grabadora.png](https://libros.catedu.es/uploads/images/gallery/2023-07/scaled-1680-/codigo-grabadora.png)](https://libros.catedu.es/uploads/images/gallery/2023-07/codigo-grabadora.png)

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.

<p class="callout info">La duración del mensaje grabado es de unos 6 segundos.</p>

Adicionalmente, podemos usar el evento **<span style="color: rgb(53, 152, 219);">al iniciar</span>** para ajustar al máximo la calidad y la sensibilidad del micro.

[![Al iniciar grabadora.png](https://libros.catedu.es/uploads/images/gallery/2023-07/scaled-1680-/al-iniciar-grabadora.png)](https://libros.catedu.es/uploads/images/gallery/2023-07/al-iniciar-grabadora.png)

<span style="color: rgb(35, 111, 161);">**Set sample rate to 22000 for everything**</span> 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 <span style="color: rgb(224, 62, 45);">**play tone**</span>, del menú **<span style="color: rgb(224, 62, 45);">Música</span>**, 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:

[![Partitura Fray.png](https://libros.catedu.es/uploads/images/gallery/2023-07/scaled-1680-/partitura-fray.png)](https://libros.catedu.es/uploads/images/gallery/2023-07/partitura-fray.png)

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 <span style="color: rgb(224, 62, 45);">**play tone**</span> 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 <span style="color: rgb(224, 45, 184);">**si agitado**</span> para que la música se inicie al sacudir la tarjeta. Como cada compás se repite dos veces, deben usarse varios bucles <span style="color: rgb(45, 194, 107);">**repetir 2 veces**</span> para ahorrar líneas de código. Aplicando todo lo expuesto, el programa tendrá el siguiente aspecto:

[![Fray Santiago.jpg](https://libros.catedu.es/uploads/images/gallery/2023-07/scaled-1680-/fray-santiago.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-07/fray-santiago.jpg)

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.

![Jack.png](https://libros.catedu.es/uploads/images/gallery/2023-07/scaled-1680-/jack.png)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 <span style="color: rgb(224, 62, 45);">**establecer volumen a**</span>. 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 <span style="color: rgb(53, 152, 219);">**al iniciar**</span>. Además, aprovecharemos este evento para mostrar permanentemente en pantalla una corchea.

[![Control de volumen.png](https://libros.catedu.es/uploads/images/gallery/2023-08/scaled-1680-/control-de-volumen.png)](https://libros.catedu.es/uploads/images/gallery/2023-08/control-de-volumen.png)

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**.[![Corchea en pantalla.png](https://libros.catedu.es/uploads/images/gallery/2023-08/scaled-1680-/corchea-en-pantalla.png)](https://libros.catedu.es/uploads/images/gallery/2023-08/corchea-en-pantalla.png)Al conectar la placa a un altavoz, puede ser deseable **desconectar el altavoz interno**. Esta función la realiza el bloque llamado <span style="color: rgb(224, 62, 45);">**configurar altavoz interno**</span>, que puede adoptar los estados **<span style="color: rgb(224, 62, 45);">activado</span>** y **<span style="color: rgb(224, 62, 45);">desactivado</span>**.

[![Desactivar altavoz.png](https://libros.catedu.es/uploads/images/gallery/2023-08/scaled-1680-/desactivar-altavoz.png)](https://libros.catedu.es/uploads/images/gallery/2023-08/desactivar-altavoz.png)

La melodía se reproduce por defecto a un **tempo** de 120 pulsos por minuto. El bloque**<span style="color: rgb(224, 62, 45);"> ajustar tempo a (bpm)</span>** 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 <span style="color: rgb(53, 152, 219);">**al iniciar**</span>.

##### [![Ajustar tempo.png](https://libros.catedu.es/uploads/images/gallery/2023-08/scaled-1680-/ajustar-tempo.png)](https://libros.catedu.es/uploads/images/gallery/2023-08/ajustar-tempo.png)Sonidos estocásticos

El bloque<span style="color: rgb(224, 62, 45);"> **tono de timbre (Hz)**</span> 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 <span style="color: rgb(224, 62, 45);">**para todos los sonidos**</span>.

Usando estos dos bloques podemos programar un **generador de notas aleatorias**. Para producir números aleatorios se utiliza el bloque **<span style="color: rgb(132, 63, 161);">escoger al azar de</span>**, disponible en el menú **<span style="color: rgb(132, 63, 161);">Matemática</span>**.

[![Aleatoria.png](https://libros.catedu.es/uploads/images/gallery/2023-08/scaled-1680-/aleatoria.png)](https://libros.catedu.es/uploads/images/gallery/2023-08/aleatoria.png)

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 <span style="color: rgb(224, 62, 45);">**Música**</span> de MakeCode hacen posible que micro:bit sintetice sonidos simples pero muy llamativos. El bloque básico usado para la síntesis es <span style="color: rgb(224, 62, 45);">**play**</span>, que puede ejecutarse mientras sigue la ejecución del programa o hasta que termine el sonido o en bucle.

[![Play.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/play.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-09/play.jpg)

Pulsando repetidamente sobre el signo <span style="color: rgb(224, 62, 45);">**+**</span>, aparecerán otras opciones para el control del sonido.

![Play01.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/play01.jpg)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 **<span style="color: rgb(224, 62, 45);">efectos</span>** disponibles son trémolo, vibrato y gorjeo. La **<span style="color: rgb(224, 62, 45);">interpolación</span>** 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.

[![Play02.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/play02.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-09/play02.jpg)El botón **Play** reproduce el sonido sintetizado, mientras que <span style="color: rgb(35, 111, 161);">**Generate Similar Sound** </span>produce variaciones. La **<span style="color: rgb(224, 62, 45);">Galería</span>** contiene varias muestras de sonidos, la mayoría percusivos, que admiten ser modificados.

[![Play03.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/play03.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-09/play03.jpg)