Skip to content

Reproduce y toca canciones en Arduino fácilmente

Conviértete en un Experto de Arduino

Te invito a mi Curso de Arduino desde cero, el cual incluye:

+15 proyectos prácticos
Lecciones teóricas de los componentes
Creación de código para Arduino
13 horas de video
El Curso más completo en Español

Acerca del proyecto

En esta publicación, aprenderemos a crear un proyecto en Arduino, con el que podremos reproducir cualquier canción en Arduino, ya sea la Marcha Imperial, La Leyenda de Zelda, Star Wars, o cualquier otra canción que te imagines.

¿Sabes qué es lo mejor de este proyecto? Que es tan fácil y rápido de implementar, que una vez que sepas el procedimiento, y tengas montado el proyecto, podrás tocar cualquier canción en tu Arduino en menos de 2 minutos.

Componentes para crear un proyecto que reproduzca canciones en Arduino

La lista de componentes es muy sencilla. Te los enlisto a continuación:

Lista de Componentes
1 x Protoboard
1 x Arduino Uno
1 x Buzzer ó Bocina
1 x Push Button
Jumpers

Diagrama de conexión para crear un proyecto que reproduzca cualquier canción con Arduino

El diagrama de conexión del proyecto es muy básico, sólo hay que conectar la bocina en su polo negativo al pin GND del Arduino, y su polo positivo al pin # 8.

De igual forma, conectaremos la pata izquierda del Push Button al pin # 9 de Arduino, y la otra pata al pin GND del Arduino. Aquí te lo muestro de forma detallada.

Diagrama de conexión para crear un reproductor de música con Arduino

¿Cómo buscar la canción que quieras reproducir en tu Arduino?

Este proyecto requiere el uso de una página web, que nos permitirá, trabajar con las bondades de un archivo musical con su extensión .mid ó .midi.

Básicamente, la idea, es generar las llamadas al método tone() que forman parte del Arduino, de una forma automatizada, utilizando como entrada un archivo midi.

Para llevar a cabo la búsqueda de tu canción, puedes ingresar a tu buscador favorito, y realizar la búsqueda de la canción, utilizando la palabra midi. Por ejemplo, si queremos buscar una canción de la leyenda de Zelda, buscaremos:

Arduino canciones

Exploraremos los resultados, y vamos a bajar la canción que necesitemos, en mi caso, descargaré la siguiente:

Canciones Tone Arduino

¿Cómo convierto una canción a código de Arduino?

Esta es la parte más emocionante, ya que será donde convertiremos la canción midi, en tonos de Arduino. Para esta tarea, utilizaremos una página, que nos permitirá llevar a cabo esta tarea, de una forma automatizada.

El Sitio de ExtraMaster, nos permite convertir nuestra canción de una forma sencilla.

Simplemente, ingresaremos la canción que hemos descargado, en la herramienta, y daremos click en Submit.

Convertir midi a Arduino

Esto nos llevará a la siguiente ventana, donde podremos seleccionar la pista de Audio que queramos extraer.

Te explico, un archivo midi, se compone de diferentes pistas, cada una de ellas, representa un instrumento musical. Regularmente, una de las pistas, es la que lleva la melodía de la canción.

Por default, la herramienta nos preselecciona, la pista  más compleja, que regularmente, es la melodía de la canción. Vamos a dejar la pista preseleccionada.

Convertir canción a Arduino

Más abajo, podremos cambiar las opciones, tanto para la velocidad del código resultante, así como para especificar, cuán grandes queremos los cambios entre las notas musicales. En mi caso, dejaré la configuración por default, pero puedes jugar con ellos, hasta que obtengas los resultados deseados.

Marcha Imperial en Arduino

Por último, en la parte final de la página, tenemos la opción para seleccionar el dispositivo, y biblioteca utilizada por el mismo.

En nuestro caso, como ocuparemos la función tone, vamos a asegurarnos de seleccionar dicha opción, y demos click en “convert Midi to Arduino”

Canciones en Arduino

Esto nos genera un código fuente de Arduino. Volveremos a él, en la siguiente sección.

Código fuente para hacer funcionar el reproductor de música con Arduino

En el IDE de Arduino, crearemos un nuevo archivo, y vamos a especificar los pines a los que se encuentran conectados, nuestra bocina, y nuestro Push Button.

De igual forma, vamos a configurar dichos pines, para que el del Push Button, utilice la resistencia interna, gracias a INPUT_PULLUP, y el pin de la bocina, utilice el modo OUTPUT.

Dentro del método loop, vamos a comprobar si se ha presionado el Push button, y en dado caso de que así sea, invocaremos una función llamada “PlayMusic”, la cual aún definiremos.

Después de la comprobación de la señal del Push Button, llamaremos a la función “noTone”, con el fin de detener cualquier tipo de sonido de la bocina.

El código entonces, queda de la siguiente manera.

int tonePin = 8;
int MUSIC_BUTTON = 9;
void setup() {
  pinMode(MUSIC_BUTTON, INPUT_PULLUP);
  pinMode(tonePin, OUTPUT);
}
void loop() {
  if(digitalRead(MUSIC_BUTTON) == LOW)
  {
    PlayMusic();
  }
  noTone(tonePin);
} 

El siguiente paso, es agregar la serie de tonos que nos ha generado la herramienta. Para ello, vamos a copiar, únicamente la función llamada “midi”, y vamos a pegarla, hasta el final del archivo del sketch. Posteriormente, renombraremos la función, de “midi”, a “PlayMusic”, de la siguiente forma.

Arduino Midi

Ya casi estamos listos. Si validamos el código, seguramente te va a salir este error.

Reproducir canciones en Arduino

Este mensaje sale, porque hemos declarado la variable como “PIEZO”, y el código generado, está utilizando el nombre de variable “tonePin”.

La solución, es renombrar la variable, y realizar los cambios, de todas las referencias, de TONE, a “tonePin”.

Arduino Tone Canciones

Con este cambio, tendremos una compilación satisfactoria, y ya podremos subir el sketch a la placa, para probar los resultados. El código del Sketch, queda así (He quitado las llamadas a tone, para no hacer tan largo el sketch):

int tonePin = 8;
int MUSIC_BUTTON = 9;
void setup() {
  pinMode(MUSIC_BUTTON, INPUT_PULLUP);
  pinMode(tonePin, OUTPUT);
}
void loop() {
  if(digitalRead(MUSIC_BUTTON) == LOW)
  {
    PlayMusic();
  }
  noTone(tonePin);
}
void PlayMusic() {
   //aquí va tu código
} 

Video para reproducir cualquier canción en Arduino

Si quieres ver la guía paso a paso, de la creación de este proyecto, puedes verlo a continuación: