Notas musicales MIDI, AVR Assembler

Notas Musicales tipo “MIDI” con Microncontrolador AVR de ATMEL     (Lenguaje ensamblador, “Assembler”).



NOTA: Para poder utilizar la información que se proporciona en este Post, se requieren conocimientos básicos de programación de Microcontroladores AVR en lenguaje ensamblador (Assembler).

En este post les comparto el código para poder reproducir notas musicales tipo “MIDI”, de manera fácil y rápida, utilizando cualquier microcontrolador AVR de Atmel (ATMega8, ATMega328, ATMega8515, ATTiny2313, ATTiny85, ATTiny45, ATTiny12, ATTiny13, etc....), a través de alguna de sus salidas digitales (link de descarga al final de este post).

El principio de funcionamiento es la utilización de retardos para generar una señal cuadrada de la frecuencia correspondiente a cada nota musical.


Este tipo de tonos se utilizan comúnmente con pequeños altavoces piezoeléctricos (como los que tienen las tarjetas musicales navideñas), y pueden ser útiles para agregar tonos que indiquen el estado de algún proceso, en cualquier proyecto que utilice Microcontroladores AVR programados en lenguaje ensamblador. La siguiente imagen muestra dos tipos de altavoz piezoeléctrico:


Las Notas disponibles en el código que se proporciona en este Post son las siguientes:

DO_3           = 261,626 Hz
RE_3            = 293,665 Hz
MI_3            = 329,628 Hz
FA_3            = 349,228 Hz
SOL_3            = 391,995 Hz
LA_3            = 440,000 Hz
SI_3            = 493,883 Hz
DO_4            = 523,251 Hz
RE_4            = 587,330 Hz
MI_4            = 659,255 Hz
FA_4            = 698,456 Hz
SOL_4            = 783,991 Hz
LA_4            = 880,000 Hz
SI_4            = 987,767 Hz
DO_5            = 1046,50 Hz

Los retardos para cada una de las notas anteriores ya se encuentran ajustados, y solo basta con utilizar el comando “RCALL” para reproducir la Nota que se desee.

Las frecuencias están calculadas para funcionar con una velocidad de operación de 4MHz del microcontrolador.

El tiempo de reproducción de todas las notas, es de 1/3 segundos (una tercera parte de un segundo). Por lo que si se desea reproducir un mismo tono, por ejemplo, por un lapso de un segundo, se debe ejecutar la misma nota 3 veces seguidas.
Ejemplo:

RCALL SOL_3
RCALL DO_3
RCALL FA_3      ; Nota FA x 3 = un segundo
RCALL FA_3
RCALL FA_3
RCALL SILENCIO_1    ;SILENCIO x 3 = un segundo
RCALL SILENCIO_1
RCALL SILENCIO_1
RCALL SOL_3
RCALL DO_3

El diagrama de conexión del circuito para reproducir las notas musicales, puede ser utilizando un simple altavoz piezoelectrico. La conexión debe ser como se muestra en la siguiente imagen: 


También pueden ser utilizadas unas bocinas de PC, para lo cual se debe agregar un capacitor en serie para evitar que pase el voltaje directo DC. A continuación se muestra el diagrama de conexión para utilizarse con bocinas de PC:



A continuación se muestra un video del circuito armado y funcionando, con el programa que se proporciona en este post, utilizando unas bocinas de PC:


Finalmente se muestra una imagen con el circuito utilizando un altavoz piezoeléctrico.


Espero esta información les sea de utilidad. A continuación encontrarás el link de descarga con el código de las Notas Musicales y el código del "programa ejemplo" que aparece en el video, ambos en lenguaje ensamblador (assembler):


Descargar código Notas MIDI.
Tamaño:  3KB
Tipo:  Rar







 ---------------------------------------------------------------------------------------------------------------
Palabras clave: Assembler code, código ensamblador, lenguaje ensamblador, subrutina, librería, avr lib, atmel, microcontrolador AVR, MCU,  ATMega 8, ATMega 328, ATMega 8515,  ATTiny 2313,  ATTiny 85, ATTiny 45, ATTiny 25, ATTiny 15, ATTiny 12, ATTiny 13, como reproducir MIDI, play MIDI, sounds, audio, notas musicales, música, music, melodías, songs, programar, how to?, programing, rcall, code source, código fuente, reproducir sonidos MIDI.

2 comentarios:

Tus aportes, sugerencias y comentarios para esta pagina son de mucha importancia para nosotros