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
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
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
Matriz Identificada
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
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
Links utiles por si quieres saber mas como funciona el codigo
http://www.gammon.com.au/forum/?id=14175
https://www.arduino.cc/reference/en/libraries/midi...
Librerias necesarias.
https://github.com/nickgammon/Keypad_Matrix
https://github.com/FortySevenEffects/arduino_midi_...
Programas Necesarios
https://projectgus.github.io/hairless-midiserial/
http://www.tobias-erichsen.de/software/loopmidi.ht...
Codigo
Downloads
Configurando Los Programas
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