Sommario:

HX1-DM - la drum machine fai-da-te alimentata con Arduino DUE riciclata (realizzata con una Dead Maschine MK2): 4 passaggi
HX1-DM - la drum machine fai-da-te alimentata con Arduino DUE riciclata (realizzata con una Dead Maschine MK2): 4 passaggi

Video: HX1-DM - la drum machine fai-da-te alimentata con Arduino DUE riciclata (realizzata con una Dead Maschine MK2): 4 passaggi

Video: HX1-DM - la drum machine fai-da-te alimentata con Arduino DUE riciclata (realizzata con una Dead Maschine MK2): 4 passaggi
Video: Yamaha FX-1 FM based organ 2024, Dicembre
Anonim
Image
Image
La riparazione
La riparazione

La specifica

  • Controller Midi ibrido / drum machine: Arduino DUE powered!
  • 16 pad di rilevamento della velocità con latenza molto bassa 1>ms
  • 8 manopole assegnabili dall'utente a qualsiasi comando Midi #CC
  • Sequencer integrato a 16 canali (nessun computer necessario!!)
  • Funzionalità MIDI in/out/thru (può essere utilizzata come interfaccia MIDI USB!)
  • Orologio MIDI parziale e supporto MTC (funzionando su MMC e controllo DAW)

Questo è sicuramente uno dei progetti più complicati su cui ho lavorato, parlavamo di 17 registri a scorrimento in uscita, 6 registri a scorrimento in ingresso, multiplexer 2x 16 canali che lavorano su un circuito stampato Non ho idea di cosa sia cosa e dove in più non ho mai incasinato con registri a scorrimento / multiplexer prima……

È iniziato come un acquisto d'impulso su eBay, volevo davvero una Native Instruments Maschine perché mi sono sempre piaciuti i drum pad rispetto a quelli dello studio MPC che possedevo, quindi quando ne ho visto uno difettoso su eBay per £ 40 sterline ho pensato Proverei a risolverlo con lo scenario peggiore che è "se non riesco a risolverlo ho un Arduino DUE e alcuni UNO in giro, potrei sempre fare qualche hack"

Mi piacciono molto quei drum pad comunque!!!!

Forniture

1 x Native Instruments Maschine MK2. difettosa

1 x Arduino dovuto.

17 x SN74HC595 - Registri a scorrimento di uscita a 8 bit

6 x SN74HC165 - Registri a scorrimento di ingresso a 8 bit

2 x 74HC4067 - Multiplexer a 16 canali.

2 display OLED da 3,2 256x64.

un po' di filo piatto (va bene il vecchio cavo floppy)

Passaggio 1: la riparazione

Il venditore eBay è stato così gentile da dare un'idea di cosa aspettarsi nella descrizione e aveva rimosso la porta USB. La scheda ha subito una sovratensione e non si è accesa. Cue il multimetro…. La scheda sembrava avere un cortocircuito.. "Ho riparato innumerevoli schede madri con cortocircuiti prima Quindi quanto può essere difficile!?!" Si è scoperto che questa sovratensione (e probabilmente in parte il design della scheda), aveva eliminato quasi OGNI componente sulla scheda inclusa la CPU principale. Questa tavola era messa davvero male!

Ho continuato a pungolare e colpire con il mio multimetro, ho fatto un po' di ricerche sui componenti e ho capito cosa fa ciascuno di essi, inoltre NI ha fatto un ottimo lavoro nel rendere le cose abbastanza ovvie con i vari punti di prova intorno alla scheda madre ??.

Passaggio 2: l'hack

L'hack
L'hack
L'hack
L'hack
L'hack
L'hack

Sapendo che dovrò sostituire tutto tranne la CPU principale (che non sarà necessaria) mi sono rivolto a eBay. Per fortuna tutto il necessario era economico, quindi ordinarne un carico è stato divertente. ?

17 x SN74HC595 - Registri a scorrimento di uscita a 8 bit

I 17 registri a scorrimento in uscita vengono utilizzati per controllare i LED multicolori del pad della batteria e tutti i LED dei pulsanti (136 per l'esattezza!!).. sono incatenati insieme.

6 x SN74HC165 - registro a scorrimento di ingresso a 8 bit

Questi registri a scorrimento di ingresso sono ottimi per più ingressi su 1 canale. Ci sono 48 pulsanti in totale.

2 x 74HC4067 - Multiplexer a 16 canali

Abbiamo 16 pad e 8 manopole rimaste, anche queste sono analogiche. Ho trovato più facile usarli perché quelli sulla scheda erano a 8 canali e ho avuto problemi a trovare dove collegare i pin dei dati.. cue spaghetti junction….

2 display OLED da 3,2 pollici 256x64

Deve avere degli schermi!!! Non sono riuscito a trovare alcuna informazione sugli schermi LCD originali forniti con NI Maschine e non potevo preoccuparmi di perdere altro tempo a provare, quindi ho deciso di ordinarne alcuni dalla Cina … Ho usato la libreria UG8x8 per farli funzionare. I nuovi schermi erano leggermente più piccoli dell'originale, quindi ho semplicemente cancellato i "pezzi cattivi".

1 x Arduino dovuto

Ho avuto questo in giro per un po' di tempo in attesa di un progetto abbastanza degno di tutto quel potere!! C'è stato un problema che ho riscontrato, sembra che alcune revisioni di queste schede abbiano un problema di ripristino che significava che a volte dovevo premere il pulsante di ripristino per far funzionare la cosa dopo aver caricato uno schizzo. Questo è stato facilmente risolto con un resistore da 10K (c'è un post sul forum Arduino su questo).

Passaggio 3: il codice

Sono rimasto davvero colpito da quanto supporto ci sia nella comunità Arduino, trovare esempi di codice e librerie per i vari componenti è stato davvero semplice e diretto.

Mettere in funzione il midi USB è stato facile e ha richiesto alcuni minuti. I LED hanno impiegato del tempo e ho dovuto creare uno schizzo che impostasse in modo incrementale ogni pin HIGH a intervalli di 1 secondo e prendevo nota. Ho creato un array che conteneva i numeri PIN per semplificare la codifica di tutto.

Ho creato 2 librerie per parlare con i multiplexer, una gestisce i pad analogici e l'altra le manopole. Anche in questo caso è stato davvero semplice. Li ho allegati sentiti libero di usare modifica ecc.

Volevo avere un sequencer e la possibilità di registrare senza bisogno di un computer, ho trovato alcune informazioni su come convertire BPM in ms e ho trovato un'ottima libreria di timer Arduino DUE.

Usando la libreria timer sono stato in grado di impostare input di lettura e cose a intervalli:

Pads @ 1ms - Ho trovato questo per dare il miglior equilibrio tra artefatti di risposta / de-bounce.

Pulsanti a 40 ms: ho utilizzato una libreria di code in modo da non perdere alcuna pressione.

L'elaborazione viene eseguita nel ciclo principale, non puoi fare troppo quando sei in un'interruzione poiché ciò bloccherà Arduino.

Midi stuff @BPM (in ms) - per il sequencing, al BPM desiderato viene chiamata una funzione che aggiorna quali note ETC devono essere suonate e aumenta il contatore delle battute.

Fase 4: Conclusione

Conclusione
Conclusione

Non sono sicuro di cosa ho fatto qui, ma sono piuttosto orgoglioso, i pad rispondono in modo eccellente, ho dovuto armeggiare con i tempi per ottenere il giusto equilibrio con i problemi di reattività e antirimbalzo. Il sequenziamento funziona alla grande e una volta capito il supporto DAW posso integrare completamente questa cosa nel mio flusso di lavoro e sono in grado di aggiungere cose in un controller che ho sempre desiderato!. È stato un progetto davvero divertente su cui lavorare e un ottimo esercizio nell'affrontare il C, comprendere il reverse-engineering e come funzionano i multiplexer, i registri a scorrimento e il sequenziamento MIDI. Sto continuando a migliorare il codice principale e potrei rilasciarlo un giorno come designer di ritmi open source.

SUGGERIMENTI:

Ho scoperto come cambiare il nome USB del DUE modificando uno dei file di intestazione nella cartella Arduino/SAM.

MIDI-OX è un ottimo strumento per testare la funzionalità Midi

LINK:

www.usb.org/sites/default/files/midi10.pdf - Specifiche MIDI USBhttps://midi.teragonaudio.com/tech/miditech.htm https://guitargearfinder.com/guides/convert-ms -mi… Alcune informazioni su come convertire BPM in ms

travis-ci.com/SMFSW/Queue - Per gli input dei pulsanti in modo da non perdere nessuna pressione!

github.com/olikraus/u8g2/wiki/u8x8referenc… - Libreria UG8 per schermi LED/LCD

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

www.pjrc.com/teensy/td_libs_Encoder.html - Encoder Lib per la grande manopola

shiftregister.simsso.de/ - ShiftIn Register lib - Creato da Henrik Heine, 24 luglio 2016

forum.arduino.cc/index.php?topic=57636.0 - Cose MIDI Time Code

Consigliato: