Tabla de contenido:

HX1-DM: la máquina de tambor de bricolaje con Arduino DUE reciclada (hecha con una Dead Maschine MK2): 4 pasos
HX1-DM: la máquina de tambor de bricolaje con Arduino DUE reciclada (hecha con una Dead Maschine MK2): 4 pasos

Video: HX1-DM: la máquina de tambor de bricolaje con Arduino DUE reciclada (hecha con una Dead Maschine MK2): 4 pasos

Video: HX1-DM: la máquina de tambor de bricolaje con Arduino DUE reciclada (hecha con una Dead Maschine MK2): 4 pasos
Video: Farruko - Visionary (Official Video) 2024, Noviembre
Anonim
Image
Image
La reparación
La reparación

El Spec

  • Controlador híbrido Midi / caja de ritmos: ¡alimentado por Arduino DUE!
  • 16 pads de detección de velocidad con latencia muy baja 1> ms
  • 8 perillas asignables por el usuario a cualquier comando Midi #CC
  • Secuenciador incorporado de 16 canales (¡no se necesita computadora!)
  • Funcionalidad MIDI in / out / thru (¡se puede utilizar como interfaz USB midi!)
  • Soporte parcial de reloj MIDI y MTC (trabajando en control MMC y DAW)

Este es definitivamente uno de los proyectos más complicados en los que he trabajado, hablamos de 17 registros de desplazamiento de salida, 6 registros de desplazamiento de entrada, 2x multiplexores de 16 canales trabajando en una placa de circuito. No tengo idea de qué es qué y dónde, además, nunca me he equivocado. con registros de desplazamiento / multiplexores antes de ……

Comenzó como una compra impulsiva en eBay, realmente quería una Native Instruments Maschine porque siempre me gustaron las almohadillas de batería en comparación con las del estudio MPC que tenía, así que cuando vi una defectuosa en eBay por £ 40 libras, pensé Daría una oportunidad para arreglarlo con el peor de los casos siendo 'si no puedo arreglarlo, tengo un Arduino DUE y algunos UNO están por ahí, siempre podría hacer algún truco'

¡Me gustan mucho esos pads de batería de todos modos!

Suministros

1 x Native Instruments Maschine MK2 defectuoso

1 x Arduino Due.

17 x SN74HC595's: registros de desplazamiento de salida de 8 bits

6 x SN74HC165's: registros de desplazamiento de entrada de 8 bits

2 x 74HC4067 - multiplexores de 16 canales.

2 pantallas OLED de 3,2”256x64.

un poco de cable plano (el cable de disquete viejo servirá)

Paso 1: la reparación

El vendedor de eBay tuvo la amabilidad de dar una idea de qué esperar en la descripción y había quitado el puerto USB. La placa había sufrido una sobretensión y no se encendió. Cue el multímetro…. La placa parecía tener un corto … 'He reparado innumerables placas base con cortocircuitos antes. componente de la placa, incluida la CPU principal. ¡Este tablero estaba en muy mal estado!

Continué pinchando y pinchando con mi multímetro, investigué un poco sobre los componentes y descubrí lo que hace cada uno y NI hizo un gran trabajo al hacer las cosas bastante obvias con los diversos puntos de prueba alrededor de la placa base.

Paso 2: El truco

El Hack
El Hack
El Hack
El Hack
El Hack
El Hack

Sabiendo que tendré que reemplazar todo excepto la CPU principal (que no será necesaria), recurrí a eBay. Afortunadamente, todo lo que se necesitaba era barato, por lo que pedir un montón de ellos fue divertido. ?

17 x SN74HC595's: registros de desplazamiento de salida de 8 bits

Los 17 registros de desplazamiento de salida se utilizan para controlar los LED multicolores de la almohadilla de batería y todos los LED de los botones (¡136 para ser exactos!) Estos son realmente fáciles de usar y rápidamente encontré una biblioteca usando el IDE de Arduino para ahorrarme a mí mismo haciendo uno.. están encadenados entre sí.

6 x SN74HC165's: registro de desplazamiento de entrada de 8 bits

Estos registros de desplazamiento de entrada son excelentes para múltiples entradas en 1 canal. Hay 48 botones en total.

2 x 74HC4067 - multiplexores de 16 canales

Tenemos 16 pads y 8 perillas restantes, que también son analógicas. Me resultó más fácil usarlos, ya que los que estaban en la placa eran de 8 canales y tuve problemas para encontrar dónde conectar los pines de datos.

2 pantallas OLED de 3,2”256x64

¡¡¡Debe tener algunas pantallas !!! No pude encontrar ninguna información sobre las pantallas LCD originales que venían en NI Maschine y no podía molestarme en perder más tiempo intentándolo, así que decidí pedir algunas de China … Usé la biblioteca UG8x8 para que funcionen. Las nuevas pantallas eran un poco más pequeñas que las originales, por lo que simplemente borré las 'partes malas'.

1 x Arduino Due

¡Tuve esto por ahí durante algún tiempo esperando un proyecto lo suficientemente digno para todo ese poder! Hubo un problema que encontré. Parece que algunas revisiones de estos tableros tienen un problema de reinicio que significaba que tenía que presionar el botón de reinicio a veces para que la cosa se ejecutara después de cargar un boceto. Esto se solucionó fácilmente con una resistencia de 10K (hay una publicación en el foro de Arduino sobre esto).

Paso 3: el código

Me impresionó mucho la cantidad de soporte que hay en la comunidad Arduino, encontrar ejemplos de código y bibliotecas para los diversos componentes fue realmente simple y directo.

Poner en funcionamiento el midi USB fue fácil y tomó unos minutos. Los LED tomaron algo de tiempo y tuve que crear un boceto que estableciera incrementalmente cada pin en ALTO en intervalos de 1 segundo y tomé una nota. Hice una matriz que contenía los números de PIN para facilitar la codificación de todo.

Hice 2 bibliotecas para hablar con los multiplexores, una maneja los pads analógicos y la otra las perillas. Nuevamente, esto fue realmente simple. Los he adjuntado, siéntase libre de usar editar, etc.

Quería tener un secuenciador y la capacidad de grabar sin la necesidad de una computadora, encontré información sobre cómo convertir BPM a ms y encontré una gran biblioteca de temporizadores Arduino DUE.

Usando la biblioteca de temporizadores, pude configurar entradas de lectura y cosas en intervalos:

Pads @ 1ms: encontré que esto brinda el mejor equilibrio entre los artefactos de respuesta / eliminación de rebote.

Botones a 40 ms: utilicé una biblioteca de colas para que no se perdieran las pulsaciones.

El procesamiento se realiza en el bucle principal, no puede hacer demasiado cuando está en una interrupción, ya que esto bloqueará el Arduino.

Midi stuff @BPM (en ms): para la secuenciación, al BPM deseado se llama una función que actualiza qué notas ETC se van a reproducir y aumenta el contador de tiempo.

Paso 4: Conclusión

Conclusión
Conclusión

No estoy seguro de lo que hice aquí, pero estoy bastante orgulloso, las almohadillas responden excelentemente, tuve que manipular el tiempo para lograr el equilibrio correcto con problemas de capacidad de respuesta y de rebote. La secuenciación funciona muy bien y una vez que descubro el soporte DAW puedo integrar completamente esto en mi flujo de trabajo y puedo agregar cosas en un controlador que siempre quise. Este fue un proyecto muy divertido para trabajar y un gran ejercicio para familiarizarse con C, comprender la ingeniería inversa y cómo funcionan los multiplexores, los registros de desplazamiento y la secuenciación MIDI. Continúo mejorando el código principal y podría lanzarlo algún día como diseñador de ritmo de código abierto.

CONSEJOS:

Encontré cómo cambiar el nombre USB del DUE editando uno de los archivos de encabezado en la carpeta Arduino / SAM.

MIDI-OX es una gran herramienta para probar la funcionalidad Midi

ENLACES:

www.usb.org/sites/default/files/midi10.pdf - USB MIDI Spechttps://midi.teragonaudio.com/tech/miditech.htm https://guitargearfinder.com/guides/convert-ms -mi… Alguna información sobre cómo convertir BPM a ms

travis-ci.com/SMFSW/Queue - ¡Para entradas de botones para que no perdamos ninguna pulsación!

github.com/olikraus/u8g2/wiki/u8x8referenc… - UG8 lib para pantallas LED / LCD

github.com/ivanseidel/DueTimer/releases - Arduino DUE Timing lib

www.pjrc.com/teensy/td_libs_Encoder.html - Codificador Lib para la perilla grande

shiftregister.simsso.de/ - ShiftIn Register lib - Creado por Henrik Heine, 24 de julio de 2016

forum.arduino.cc/index.php?topic=57636.0 - Cosas de código de tiempo MIDI

Recomendado: