Convertir un teclado de órgano viejo a MIDI

2

Tengo un teclado muy antiguo, un CASIO MA-100 que quiero convertir a un teclado MIDI:

Siendounprogramadoryunentusiastadelaelectrónicadigital,sécómohacerlo,peropodríausaralgodeayudaparaahorrartiempo.

SupongoqueelmayorproblemaeselegirunµC.AlgoconunainterfazUSB*seríagenial,algoquetambiénpuedeseralimentadoporUSB,inclusomejor.LuegoestáelproblemadehablarMIDIoMIDIatravésdeUSB.Noséquétandifícilesserían,peroprobablementepodríahacerloconuncódigoyaescritoallítambién.(Amenosqueseanmuysimplesynonecesitenmuchaspruebas).

Miréporalgunossitiosdeproyectoselectrónicosestamañana,tratandodeencontraralgúnfirmwaredecódigoMIDIoUSBatravésdeUSBdecódigoabierto,peronopude.

EncontréalgunosproyectosdeArduino,perountablerodeprototipospareceunpocoexcesivoparaunproyectotansimple.

Lamatrizdeclaveses10x8(10seleccionesen*8datosdesalida),lógicabooleanasimple,sindatosdevelocidad.(Aunquedoslíneasdeselecciónsonfácilmenteprescindibles).

Asíquesupongoquemiopciónmássimpleseríaun~1MHzµCcon8entradas,8pinesdesalidayunbúferenserie(+pinesdeE/S)paraMIDI.Lomejorseríaunproyectollamado"firmware de dispositivo MIDI USB para microcontroladores Make SeriesXX".

¿Alguna idea?

*: una interfaz USB fácil , es decir, no PIC18. (Editar: Este fue un simple prejuicio que surge del estado de la organización y la documentación del marco PIC USB hace unos años. Supongo que es hora de romperlo).

    
pregunta aib

4 respuestas

1

Suena como que un PIC 18F2550 es lo correcto, o tal vez un 18F4550 si se necesitan líneas de E / S adicionales. No sé por qué dices que un PIC 18 no es fácil. Dices que eres programador, así que no veo de qué tienes miedo. Tal vez nadie haya hecho una interfaz USB MIDI lista para que agregues el código de escaneo del teclado, pero ciertamente hay varios ejemplos del controlador USB básico que hay. Microchip tiene algún código, y yo también. Mi firmware 18F USB está disponible en la página de descargas y encaja en nuestro entorno de desarrollo PIC .

Nunca he hecho un dispositivo MIDI, pero de alguna manera recuerdo vagamente que hay un estándar de clase USB para eso. Si es así, entonces es muy fácil, ya que no tiene que escribir un controlador de host y funcionará con cualquier sistema operativo que implemente esa clase de USB. Todo lo que tiene que hacer es mirar la definición de clase, completar los datos de enumeración correctos en el archivo de inclusión para ese propósito, luego enviar / recibir datos a través de los puntos finales apropiados de acuerdo con el estándar.

Cualquier otro microcontrolador requerirá algo similar. Nuevamente, aparte de encontrar un firmware MIDI USB gratuito (lo que dices que no puedes encontrar), debes hacer prácticamente lo que dije anteriormente, independientemente del sabor que utilices en el microcontrolador. USB es USB, por lo que todos los dispositivos periféricos USB en microcontroladores hacen casi lo mismo con solo unos pocos detalles diferentes.

    
respondido por el Olin Lathrop
4

Si lo que buscas es fácil, te recomendaría seriamente el Arduino UNO y un programador de ICSP. El chip Atmel 8U2 que alimenta el USB se puede volver a flashear con un firmware que emula un dispositivo MIDI (disponible aquí ).

El número de líneas IO se puede expandir utilizando cualquier número de métodos, incluidos registros de desplazamiento simples o soluciones SPI como el chip IO de 16 puertos Microchip 23S17 o decodificadores de 4 a 16 (ideal para la matriz de "escaneo" líneas).

    
respondido por el Majenko
2

Hay un proyecto llamado V-USB-MIDI , basado en Atmel AVR ATMega16 y firmware USB solo para software de Objective Development .

Este último lo he intentado yo mismo en unos pocos proyectos simples (usando chips ATMega, por ejemplo, Metaboard de ObDev y algunos dispositivos personalizados). Es bastante sencillo usar V-USB si emula HID USB, como ratones y teclados.

El primero, sin embargo, no lo he intentado personalmente todavía. Tengo un teclado sintetizado roto por ahí, así que sería genial si publicaras los resultados, independientemente de tu elección final. :)

    
respondido por el Holy Shift
1

Si su idea de una "interfaz USB fácil" excluye los PIC 18F, entonces un chip USB "listo" (algo así como un FT232RL) parece ser la única solución. Agrega un microcontrolador de tu gusto y comienza a programar. 1 MHz es maní para todos los microcontroladores modernos, y USB proporciona 5V para ejecutar su uC (a menos que desee un chip 3V3, en ese caso agregue un MCP1702 o similar).

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas