MÚSICA, COMO SUENA MI MICRO:BIT
- Joan A. Marí
- 28 oct 2017
- 3 Min. de lectura

MicroPython en el BBC Micro:Bit incluye un potente módulo de música y sonidos. Es muy sencillo generar pitidos desde el dispositivo si conectamos un altavoz. Utiliza las pinzas de cocodrilo para conectar el pin 0 y el pin GND al positivo y negativo del altavoz. En este caso no importa la polaridad de la conexión al altavoz, aunque por cuestión de convención el pin GND siempre debería de estar conectado al negativo.
Nota. No pruebes esto con un zumbador, ya que este solo es capaz de reproducir un tono.
Vamos a hacer sonar algo de música:
import music
music.play(music.NYAN)
Date cuenta de que hemos importado el módulo de “music”. Dicho módulo contiene métodos para usar y realizar el control de sonido.
MicroPython tiene predefinidas unas cuantas melodías. Aquí está la lista completa.
· music.DADADADUM
· music.ENTERTAINER
· music.PRELUDE
· music.ODE
· music.NYAN
· music.RINGTONE
· music.FUNK
· music.BLUES
· music.BIRTHDAY
· music.WEDDING
· music.FUNERAL
· music.PUNCHLINE
· music.PYTHON
· music.BADDY
· music.CHASE
· music.BA_DING
· music.WAWAWAWAA
· music.JUMP_UP
· music.JUMP_DOWN
· music.POWER_UP
· music.POWER_DOWN
Coge el código del ejemplo anterior y cambia la melodía. ¿Cuál es tu favorita? ¿Cómo usarías esas melodías como señales o entradas?
Wolfgang Amedeus Microbit
Crear tu propia melodía es sencillo!
Cada nota tiene un nombre (como “C#” o “F”), una octava (diciendo a MicroPython como de aguda o grave debe de sonar la nota) y una duración (como de larga en el tiempo debe de ser). Las octavas se indican con un número 0 es la octava mas grave, 4 contiene la intermedia C y 8 es tan aguda que nunca la vas a utilizar al no ser que estés haciendo música para perros. La duración también se expresa con un número. Cuanto mayor sea el número de la duración, más durará. Los valores se relacionan entre ellos, por ejemplo, una duración de 4 será dos veces más larga que una duración de 2. Si se utiliza la nota “R” entonces MicroPython realizará un silencio de la duración especificada.
Cada nota se expresa en un string de caracteres como NOTA[octava]:[duración]. Por ejemplo “A1:4” se refiere a la nota A en la octava 1 con una duración de 4.
Crea una lista de notas para hacer una melodía (es equivalente a crear una animación con una lista de imágenes). Por ejemplo, a continuación dejamos el código de como realizar la melodía de “Frere Jaques”. (c7_melodia)
from microbit import*
import music
tune = ["C4:4", "D4:4", "E4:4", "C4:4", "C4:4", "D4:4", "E4:4", "C4:4", "E4:4", "F4:4", "G4:8", "E4:4", "F4:4", "G4:8"]
music.play(tune)
Nota. MicroPython te ayuda a simplificar las melodías. Recuerda los valores de la octava y la duración hasta que se cambia. Como resultado, el ejemplo anterior se podría escribir como se hace a continuación:
from microbit import*
import music
tune = ["C4:4", "D", "E", "C", "C", "D", "E", "C", "E", "F", "G:8", "E:4", "F", "G4:8"]
music.play(tune)
Fíjate en que los valores de la octava y los valores solo cambian cuando lo indicamos. Se ahorran letras y con ello conseguimos mayor simplicidad para leerlo.
Efectos de sonido
MicroPython también permite hacer tonos que no sean notas musicales. Por ejemplo, aquí mostramos como realizar el efecto de una sirena de policía (c8_sirena).
from microbit import*
import music
while True:
for freq in range(880, 1760, 16):
music.pitch(freq, 6)
for freq in range(1760, 880, -16):
music.pitch(freq, 6)
En este caso se ha utilizado el método “music.pitch”. Utiliza las frecuencias. Por ejemplo, la frecuencia 440 es la misma que la nota “A” utilizada para afinar a una orquesta sinfónica.
En el ejemplo anterior (c8), la función “range” se ha utilizado para generar rangos de valores numéricos. Esos números se utilizan para definir la frecuencia del tono. Los tres argumentos para la función “range” son el valor inicial, el final y el valor de paso (sensibilidad mínima). Sin embargo, en el primer uso de “range” le decimos que cree un rango entre 880 y 1760 de 16 en 16. En el segundo uso de “range” le decimos que cree un rango entre 1760 y 880 de -16 en -16. Así es como conseguimos un rango de frecuencias que sube y baja para imitar una sirena.
Debido a que la sirena no para automática incluimos el código en un bucle infitino.
Importante, hemos introducido otro tipo de loop dentro del “while”, el loop “for”. El significado sería: for (para) cada caso in (en) algún total, do (haz) una actividad con ello. Específicamente en el ejemplo significa, “(for) para cada frecuencia (in) en el rango especificado, (do) suena dicha frecuencia durante 6 milisegundos”. Date cuenta de que las acciones a realizar dentro de un bucle “for” están identadas (tabuladas), de esta manera Python sabe exactamente que código debe ejecutar en cada vuelta.
En el siguiente enlace se puede descargar el archivo en micropython del ejemplo:
https://drive.google.com/open?id=18frGHHOUnKdtRP9K3s4bnKX0W_IxoE-e
Fuente: https://microbit-micropython.readthedocs.io/en/latest/tutorials/music.html
Comments