Inhoudsopgave:

HX1-DM - de Upcycled Arduino DUE Powered DIY Drum Machine (gemaakt met een Dead Maschine MK2) - Ajarnpa
HX1-DM - de Upcycled Arduino DUE Powered DIY Drum Machine (gemaakt met een Dead Maschine MK2) - Ajarnpa

Video: HX1-DM - de Upcycled Arduino DUE Powered DIY Drum Machine (gemaakt met een Dead Maschine MK2) - Ajarnpa

Video: HX1-DM - de Upcycled Arduino DUE Powered DIY Drum Machine (gemaakt met een Dead Maschine MK2) - Ajarnpa
Video: Miele Triflex HX1 im Test - Drei Akku-Sauger in einem Gerät! 2024, November
Anonim
Image
Image
De reparatie
De reparatie

De Spec

  • Hybride Midi-controller / drummachine: Arduino DUE powered!
  • 16 Velocity sensing pads met zeer lage latentie 1>ms
  • 8-knoppen gebruiker toewijsbaar aan elk Midi #CC-commando
  • 16-kanaals ingebouwde sequencer (geen computer nodig!!)
  • MIDI in/out/thru functionaliteit (te gebruiken als USB midi interface!)
  • Gedeeltelijke MIDI-klok & MTC-ondersteuning (werken aan MMC- en DAW-besturing)

Dit is absoluut een van de meest gecompliceerde projecten waar ik aan heb gewerkt, ik had het over 17 output-schuifregisters, 6 input-schuifregisters, 2x 16-kanaals multiplexers die op een printplaat werken. Ik heb geen idee wat wat is en waar plus ik heb nooit geknoeid met schuifregisters / multiplexers voor……

Het begon als een impulsaankoop van eBay, ik wilde echt een Native Instruments Maschine omdat ik de drumpads erop altijd leuk vond in vergelijking met die in de MPC-studio die ik bezat, dus toen ik een defecte op eBay zag voor £ 40, dacht ik Ik zou proberen het te repareren met in het ergste geval 'als ik het niet kan repareren, heb ik een Arduino DUE en een paar UNO's die rondslingeren, ik kan altijd wat hacken'

Ik vind die drumpads toch echt leuk!!!!

Benodigdheden

1 x defecte Native Instruments Maschine MK2

1 x Arduino Due.

17 x SN74HC595's - 8-bit output schuifregisters

6 x SN74HC165's - 8-bit invoerschuifregisters

2 x 74HC4067 - 16 kanaals multiplexers.

2 x 3,2” 256x64 OLED-schermen.

wat platte draad (oude floppy-kabel is voldoende)

Stap 1: De reparatie

De eBay-verkoper was zo vriendelijk om in de beschrijving een idee te geven van wat hij kon verwachten en had de USB-poort verwijderd. Het bord had een overspanning gehad en is niet opgestart. Cue de multimeter…. Het bord bleek een kortsluiting te hebben.. 'Ik heb al talloze moederborden met kortsluitingen gerepareerd. Dus hoe moeilijk kan het zijn!?!' Het bleek dat deze overspanning (en waarschijnlijk gedeeltelijk het bordontwerp), bijna ELKE component op het bord, inclusief de hoofd-CPU. Dit bord was echt slecht!

Ik bleef porren en porren met mijn multimeter, deed een beetje onderzoek naar de componenten en ontdekte wat elk doet, plus NI heeft geweldig werk geleverd door dingen vrij duidelijk te maken met de verschillende testpunten rond het moederbord ??.

Stap 2: De hack

De Hack
De Hack
De Hack
De Hack
De Hack
De Hack

Wetende dat ik alles moet vervangen, behalve de hoofd-CPU (wat niet nodig is), wendde ik me tot eBay. Gelukkig was alles wat nodig was goedkoop, dus het was leuk om er een heleboel van te bestellen. ?

17 x SN74HC595's - 8-bit output schuifregisters

De 17 output-schuifregisters worden gebruikt om de veelkleurige LED's van de drumpad en alle knop-LED's (136 om precies te zijn!).. ze zijn aan elkaar geketend.

6 x SN74HC165's - 8-bit invoerschuifregister

Deze input shift registers zijn geweldig voor meerdere inputs op 1 kanaal. Er zijn in totaal 48 knoppen.

2 x 74HC4067 - 16 kanaals multiplexers

We hebben nog 16 pads en 8 knoppen, deze zijn ook analoog. Ik vond het gemakkelijker om deze te gebruiken, omdat die op het bord 8-kanaals waren en ik problemen had met het vinden van waar de data-pinnen moesten worden aangesloten.. cue spaghetti junction….

2 x 3,2” 256x64 OLED-schermen

Het moet wat schermen hebben!!! Ik kon geen informatie vinden over de originele LCD-schermen die in de NI Maschine zaten en ik kon de moeite niet nemen om nog meer tijd te verspillen aan het proberen, dus besloot ik wat uit China te bestellen … Ik gebruikte de UG8x8-bibliotheek om deze werkend te krijgen. De nieuwe schermen waren iets kleiner dan het origineel, dus ik heb de 'slechte stukjes' gewoon weggelaten.

1 x Arduino Due

Ik had deze al een tijdje liggen wachten op een project dat waardig genoeg was voor al die kracht!! Er was een probleem dat ik tegenkwam. Het lijkt erop dat sommige revisies van deze boards een reset-probleem hebben, wat betekende dat ik soms op de reset-knop moest drukken om het ding te laten werken na het uploaden van een schets. Dit was eenvoudig op te lossen met een 10K-weerstand (er is een bericht op het Arduino-forum hierover).

Stap 3: De code

Ik was echt onder de indruk van hoeveel ondersteuning er is in de Arduino-gemeenschap, het vinden van codevoorbeelden en bibliotheken voor de verschillende componenten was heel eenvoudig en ongecompliceerd.

De USB midi aan de praat krijgen was eenvoudig en duurde een paar minuten. De LED's duurden even en ik moest een schets maken die elke pin in stappen van 1 seconde in stappen HOOG zette en een aantekening maakte. Ik maakte een array met de pincodes om het gemakkelijker te maken om alles te coderen.

Ik heb 2 bibliotheken gemaakt om met de multiplexers te praten, de ene behandelt de analoge pads en de andere de knoppen. Dit was weer heel simpel. Ik heb ze bijgevoegd, voel je vrij om edit etc te gebruiken.

Ik wilde een sequencer hebben en de mogelijkheid om op te nemen zonder dat ik een computer nodig had, ik vond wat informatie over het converteren van BPM naar ms en vond een geweldige Arduino DUE-timerbibliotheek.

Met behulp van de timerbibliotheek kon ik leesinvoer en dingen met tussenpozen instellen:

Pads @ 1ms - Ik vond dit om de beste balans te geven tussen respons / de-bounce-artefacten.

Knoppen @ 40ms - Ik heb een wachtrijbibliotheek gebruikt, zodat er geen drukken werden gemist.

De verwerking gebeurt in de hoofdlus, je kunt niet te veel doen als je in een interrupt zit, omdat dit de Arduino zal vergrendelen.

Midi stuff @BPM (in ms) - voor de sequencing wordt bij de gewenste BPM een functie aangeroepen die bijwerkt welke noten ETC moeten worden gespeeld en de beatteller verhoogt.

Stap 4: Conclusie

Conclusie
Conclusie

Ik weet niet zeker wat ik hier heb gemaakt, maar ik ben best trots, de pads reageren uitstekend, ik moest spelen met de timing om de juiste balans te krijgen met reactievermogen en debounce-problemen. De sequencing werkt geweldig en als ik eenmaal de DAW-ondersteuning heb gevonden, kan ik dit ding volledig in mijn workflow integreren en dingen toevoegen aan een controller die ik altijd al heb gewild! Dit was echt een leuk project om aan te werken en een geweldige oefening om grip te krijgen op C, reverse-engineering te begrijpen en te begrijpen hoe multiplexers, schuifregisters en MIDI-sequencing werken. Ik ga door met het verbeteren van de hoofdcode en zou het ooit kunnen uitbrengen als een open source ritmeontwerper.

TIPS:

Ik heb gevonden hoe ik de USB-naam van de DUE kan wijzigen door een van de headerbestanden in de Arduino/SAM-map te bewerken.

MIDI-OX is een geweldig hulpmiddel voor het testen van Midi-functionaliteit

LINKS:

www.usb.org/sites/default/files/midi10.pdf - USB MIDI-specificatie https://midi.teragonaudio.com/tech/miditech.htm https://guitargearfinder.com/guides/convert-ms -mi… Enige informatie over het converteren van BPM naar ms

travis-ci.com/SMFSW/Queue - Voor knopinvoer, zodat we geen enkele druk missen!

github.com/olikraus/u8g2/wiki/u8x8referenc… - UG8 lib voor LED/LCD-schermen

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

www.pjrc.com/teensy/td_libs_Encoder.html - Encoder Lib voor de grote knop

shiftregister.simsso.de/ - ShiftIn Register lib - Gemaakt door Henrik Heine, 24 juli 2016

forum.arduino.cc/index.php?topic=57636.0 - MIDI-tijdcode-dingen

Aanbevolen: