Convertir Un Teclado Muerto a Un Teclado MIDI

by Rodr1goFR in Circuits > Arduino

2448 Views, 2 Favorites, 0 Comments

Convertir Un Teclado Muerto a Un Teclado MIDI

Arduino MEGA Keyboard MIDI Using Serial USB
WhatsApp Image 2020-11-22 at 21.08.45.jpeg

Hace un tiempo cuando era pequeño tenia un teclado funcional que me encantaba tocarlo, aunque solo sabia poquitas notas me encantaba tocarlo, un dia le conecte el eliminador equivocado pero no me habia dado cuenta cuando lo conecte todo estaba funcionando muy bien pero cuando lo apague y lo deje ahi conectado es cuando empezo a oler a quemado:(

Cuando paso eso si me aguite:c

Pero bueno en ese tiempo no sabia nada de electronica asi que solo llore, tiempo despues ya que me empeze a interesar por la electronica me acorde de ese piano asi que lo abri y empeze a analizar la tarjeta logica que venia adentro pase mucho tiempo intentando arreglarlo, identifique la falla en el circuito integrado principal y un transistor de potencia, buscando por google me doy cuenta que el circuito integrado que es marca Yamaha es algo dificil de conseguir ademas de que es viejito y bueno eso no me aseguraba que quedara funcionando otra vez

Asi que decidi tomar las partes principales del teclado dañado (Carcasa y la matriz de las teclas) y hacer uno nuevo ya que queria rescatar ese

En este Instructables les contare como lo hize y algunos de los problemas que me encontre en el camino

Asi que partiremos suponiendo que tienes solamente la matriz del teclado ya desmontada

Supplies

-Matriz de Teclado (La cantidad de teclas no importa)

En mi caso es de 49 teclas

-Arduino Mega

(Para utilizar un Arduino Uno se necesitaria un shift register por que los pines no alcanzan lo cual tambien llevaria a cambiar el codigo)

-Hairless MIDI

-Loop MIDI

-Synthesia (O cualquier otro VST que acepte como entrada MIDI)

Identifica La Matriz De Tu Teclado

20201122_215517.jpg

Bueno en mi caso este teclado tiene un cable de 15 pines

¿Que hize yo para identificar la matriz de este teclado?

Lo que yo hice fue

1.-Colocar el multimetro en continuidad con un caiman en una orilla del cable que viene del teclado(Cable 1) y otro caiman en la otra orilla (Cable 15)

De la parte de atras de mi teclado veo que tiene 49 diodos zener lo que significa que cada tecla tiene un diodo zener asignado y por lo tanto al momento de probar continuidad con el multimetro solo funcionara en un sentido

en mi caso puse la punta roja en el cable 15 y la punta negra en el cable 1

En tu caso puede cambiar es cosa de probar

2.-Presionar todas las teclas y ver cual da continuidad

3.-Anotarlo

4.-Cambiar uno de los dos caimanes, yo cambie el del cable 1 al cable 2 por que el cable 15 tiene una rayita lo cual me hace entender que es comun

Repetir el proceso hasta conseguir la relacion entre los cables o hasta ver una secuencia

En mi caso documente hasta la decima prueba, en la novena todavia me daba continuidad con alguna tecla,

en la decima prueba ya no daba con ninguna esto me indica que es una matriz 9x6 o 6x9

Anotaciones

Notes_201122_222045_2 (2).jpg
Notes_201122_222045_3 (2).jpg

Matriz Identificada

Notes_201122_222045_1 (2).jpg

Despues de identificar todos los cables llegue a la conclusion

Cable 15-10 - Roja (Columnas)

Cable 9-1 - Negra (Filas)

Siendo la punta que coloque en el cable

Identifica El Diagrama Interno De La Matriz Del Teclado

Button-matrix.png

En la foto vemos un diagrama de una matriz de switches de 3x4, he determinado que asi es como esta internamente mi teclado por que yo ponia la punta roja del multimetro en la parte de la columna (Cable 15)

y la punta negra en la parte de la fila lo que hacia que el diodo se polarizara directamente y conduciera

Es por eso que si colocaba las puntas al revés no tenia continuidad en ninguna tecla

En mi caso es de 9x6

9 Filas

6 Columnas

La resistencia de la parte de hasta arriba es la configuracion pull up y se aplica a la parte de las columnas

Bendito Arduino tiene una funcion para establecer un pin como PULL UP por lo cual no hay que preocuparse por esa parte

Circuito

Utilizando un Arduino Mega y los pines digitales

Pin 22-Cable 15

Pin 23-Cable 14

Pin 24-Cable 13

Pin 25-Cable 12

Pin 26-Cable 11

Pin 27-Cable 10

Pin 28-Cable 9

Pin 29-Cable 8

Pin 30-Cable 7

Pin 31-Cable 6

Pin 32-Cable 5

Pin 33-Cable 4

Pin 34-Cable 3

Pin 35-Cable 2

Pin 36-Cable 1

Cable 15-10 son Columnas

Cable 9-1 son Filas

Codigo

Configurando Los Programas

Captura de pantalla 2020-11-23 001507.png
Captura de pantalla 2020-11-23 001417.png
Captura de pantalla 2020-11-23 001558.png

Una vez teniendo todo instalado y el programa cargado al arduino mega para saber si funciona vamos a configurar los programas instalados

1.- Loop MIDI

Descargamos el programa lo extraemos, lo abrimos una vez dentro colocamos un nombre en la parte de abajo y damos en mas

Esto nos generara un puerto MIDI

2.-Hairless MIDI

Una vez descargado, instalado y abierto

-Seleccionamos el puerto del arduino deberia de aparecer como COMx

-Activamos la opcion de debug MIDI messages (Para saber que numero de tecla estamos tocando)

-Para probar que si funciona seleccionamos en MIDI IN Microsoft Wavetable Synth

Una vez comprobado que funciona entonces se puede cambiar el MIDI IN y MIDI OUT al puerto creado en loopMIDI para usarlo en el programa que desees

-Despues vamos a la parte de

File - Preferences

Y cambiamos el baud rate a 9600

-Activamos el SERIAL - MIDI BRIDGE

Probamos

Si por casualidad tu teclado tiene la misma configuracion de matriz que la mia entonces tu teclado debe estar funcionando correctamente

Como Cambiar Las Notas

En caso de que la configuracion de matriz sea diferente pero si da las notas entonces puede ser que la configuracion no sea la misma en ese caso tendrias que cambiar en el codigo de arduino la tecla que corresponde

Primero identifica que tecla da que numero de nota para despues cambiarla en el codigo de arduino

Ejemplo presionas la primera tecla de derecha a izquierda y da la nota 43

Entonces buscas en el codigo de arduino el numero 43 en la primera parte y lo cambias por la nota que corresponde dependiendo del siguiente codigo MIDI

https://usermanuals.finalemusic.com/Finale2012Win/Content/Finale/MIDI_Note_to_Pitch_Table.htm

Yo utilize desde la primera octava hasta la quinta octava