Conectando tres keytars a la NES [cerrado]

0

Supongamos que tengo tres keytars, como este modelo . Quiero conectarlos a la NES (Nintendo Entertainment System) de alguna manera. El NES tiene un puerto de controlador que puedo usar que está cableado como este . Entonces, básicamente, un puerto serie con tres pines de entrada y un pin de salida. (Muchos dispositivos usan solo un pin de entrada).

Hay dos formas de conectar el keytar a un dispositivo: un cable MIDI o USB. Tenga en cuenta que quiero conectar tres keytars, no solo uno, por lo que hacer un cable que conecte MIDI al puerto del controlador NES no será suficiente por sí solo.

Aquí pensé en una solución, pero no puedo evitar pensar que es una exageración: los keytars se conectan a un concentrador USB, que se conecta a un Arduino USB Host Shield. Los pines de salida de Arduino se conectan al puerto del controlador NES. No he programado un Arduino antes, así que estoy haciendo una pequeña suposición acerca de su idoneidad para este problema. Estoy un poco intimidado por la posibilidad de tener que escribir un controlador USB para el keytar si no existe ninguno (y supongo que no existe), aunque probablemente el flujo de datos principal aún sea un mensaje MIDI estándar. (EDITAR: dado que el USB del keytar es MIDI compatible con la clase, es posible que ya exista un controlador Arduino o que sea lo suficientemente fácil de escribir ...)

Hay otra consideración menor: hay un problema que tiene la NES al leer el puerto del controlador. El sistema tiene un error notorio que, en ciertas circunstancias (que definitivamente se aplicará aquí), a veces hace que el puerto del controlador se lea dos veces durante una instrucción de lectura. Esto hace que se pierda un bit de entrada, ya que el dispositivo cree que hubo dos lecturas (y, por lo tanto, envió dos bits), pero el programa NES solo recibió una. Si bien creo que sería posible compensar esto en el extremo NES, creo que preferiría compensarlo en el extremo del dispositivo, ya que creo que sería mucho más fácil de manejar. Creo que el dispositivo puede compensar requiriendo que transcurra un cierto número de relojes antes de que envíe el siguiente bit. Esto suena como una tarea en la que Arduino sería bueno.

Antes de que alguien lo mencione: soy consciente de que ya existe un producto llamado MidiNES que hace algo similar. He determinado que MidiNES no satisface mis necesidades; por un lado, no se puede usar con software programable (ya que usa la ranura del cartucho), y por otro, no quiero depender de una herramienta que podría no reemplazarse fácilmente si deja de funcionar y su fabricante se ha apagado de negocio.

Entonces, esa es mi situación. ¿Cómo abordarías este problema?

    
pregunta Kef Schecter

1 respuesta

1

El controlador NES contiene un registro de desplazamiento CD4021. Esto actúa como un convertidor de paralelo a serie, con las entradas paralelas conectadas a los botones. Podría usar un CD4021, pero conecte las entradas paralelas a los bits de salida del Arduino. Esto liberará a Arduino de la parte cronometrada de alta velocidad del problema.

Si no puede modificar los keytars, entonces está limitado a una interfaz MIDI (serie asíncrona) o USB. Como usted sugiera, necesitará un protector de host USB o un escudo MIDI. MIDI suena un poco más simple para trabajar, dado que es básicamente un flujo de datos en serie.

No puedo comentar sobre el error que mencionas (no soy un experto en NES a ese nivel).

Creo que su enfoque está en la línea correcta. Tal vez comience por conseguir que el lado keytar-a-Arduino funcione primero. Pruebe también un registro de cambios CD4021 y algunos botones, es decir, cree su propio controlador NES desde cero.

    
respondido por el John Honniball

Lea otras preguntas en las etiquetas