Spisu treści:

HX1-DM - upcycled Arduino DUE Powered DIY Drum Machine (wykonany za pomocą Dead Maschine MK2): 4 kroki
HX1-DM - upcycled Arduino DUE Powered DIY Drum Machine (wykonany za pomocą Dead Maschine MK2): 4 kroki

Wideo: HX1-DM - upcycled Arduino DUE Powered DIY Drum Machine (wykonany za pomocą Dead Maschine MK2): 4 kroki

Wideo: HX1-DM - upcycled Arduino DUE Powered DIY Drum Machine (wykonany za pomocą Dead Maschine MK2): 4 kroki
Wideo: Just another Arduino DUE powered DIY Drum Machine (made with a dead Maschine MK2) 2024, Listopad
Anonim
Image
Image
Naprawa
Naprawa

Spec

  • Hybrydowy kontroler / automat perkusyjny Midi: Arduino DUE powered!
  • 16 padów wykrywających prędkość o bardzo niskiej latencji 1>ms
  • 8 pokręteł, które użytkownik może przypisać do dowolnego polecenia Midi #CC
  • Wbudowany 16-kanałowy sekwencer (nie wymaga komputera!!)
  • Funkcjonalność MIDI in/out/thru (może być używany jako interfejs MIDI USB!)
  • Częściowa obsługa zegara MIDI i MTC (działa na sterowaniu MMC i DAW)

To zdecydowanie jeden z najbardziej skomplikowanych projektów, nad którymi pracowałem, mówiłem o 17 wyjściowych rejestrach przesuwnych, 6 wejściowych rejestrach przesuwnych, 2x 16-kanałowych multiplekserach pracujących na płytce drukowanej Nie mam pojęcia co i gdzie plus nigdy nie zepsułem z rejestrami przesuwnymi / multiplekserami przed……

Zaczęło się od impulsowego zakupu poza eBay, naprawdę chciałem mieć Native Instruments Maschine, ponieważ zawsze lubiłem pady perkusyjne na nich w porównaniu z tymi w studiu MPC, które posiadałem, więc kiedy zobaczyłem wadliwy na eBayu za 40 funtów, pomyślałem Spróbowałbym naprawić to z najgorszym scenariuszem: „jeśli nie mogę tego naprawić, mam Arduino DUE i kilka UNO leżących wokół, zawsze mogę zrobić jakiś hack”

Naprawdę lubię te pady perkusyjne!!!!

Kieszonkowe dzieci

1 x uszkodzony Native Instruments Maschine MK2

1 x Arduino Due.

17 x SN74HC595 – 8-bitowe wyjściowe rejestry przesuwne

6 x SN74HC165 - 8-bitowe wejściowe rejestry przesuwne

2 x 74HC4067 - 16-kanałowe multipleksery.

2 wyświetlacze OLED 3,2” 256x64.

jakiś płaski przewód (stary kabel dyskietek wystarczy)

Krok 1: Naprawa

Sprzedawca eBay był na tyle uprzejmy, że dał wyobrażenie o tym, czego się spodziewać w opisie, i usunął port USB. Płyta doznała przepięcia i nie włączyła się. Cue multimetr…. Płyta wydawała się mieć zwarcie.. „Naprawiałem wcześniej niezliczoną ilość płyt głównych ze zwarciami, więc jak trudne to może być!?!” Okazało się, że to przepięcie (i prawdopodobnie po części konstrukcja płyty) wyłączyło prawie KAŻDE komponent na płycie, w tym główny procesor. Ta tablica była w naprawdę złym stanie!

Kontynuowałem szturchanie i szturchanie moim multimetrem, przeprowadziłem trochę badań nad komponentami i odkryłem, co każdy z nich robi, a NI wykonało świetną robotę, czyniąc rzeczy całkiem oczywistymi dzięki różnym punktom testowym wokół płyty głównej?

Krok 2: Hack

Hack
Hack
Hack
Hack
Hack
Hack

Wiedząc, że będę musiał wymienić wszystko poza głównym procesorem (który nie będzie potrzebny), zwróciłem się do serwisu eBay. Na szczęście wszystko, co potrzebne, było tanie, więc zamawianie ich było zabawne. ?

17 x SN74HC595 – 8-bitowe wyjściowe rejestry przesuwne

17 wyjściowych rejestrów przesuwnych służy do sterowania wielokolorowymi diodami LED padu perkusyjnego i wszystkimi diodami LED przycisków (dokładnie 136!!) Są one naprawdę łatwe w użyciu i szybko znalazły bibliotekę za pomocą Arduino IDE, aby zaoszczędzić sobie tworzenia.. są ze sobą połączone.

6 x SN74HC165 – 8-bitowy wejściowy rejestr przesuwny

Te wejściowe rejestry przesuwne są świetne dla wielu wejść na 1 kanale. W sumie jest 48 przycisków.

2 x 74HC4067 - 16-kanałowe multipleksery

Zostało nam 16 padów i 8 pokręteł, które również są analogowe. Uznałem, że łatwiej jest z nich korzystać, ponieważ te na płycie były 8-kanałowe i miałem problemy ze znalezieniem miejsca podłączenia pinów danych.

2 wyświetlacze OLED 3,2” 256x64

Musi mieć jakieś ekrany!!! Nie mogłem znaleźć żadnych informacji na temat oryginalnych ekranów LCD, które pojawiły się w NI Maschine i nie mogłem się już martwić marnowaniem czasu na próby, więc zdecydowałem się zamówić kilka z Chin… Użyłem biblioteki UG8x8, aby je uruchomić. Nowe ekrany były nieco mniejsze od oryginału, więc po prostu wymazałem „złe fragmenty”.

1 x Arduino Due

Miałem to przez jakiś czas, czekając na projekt godny całej tej mocy! Wystąpił problem, który napotkałem. Wygląda na to, że niektóre wersje tych tablic mają problem z resetowaniem, co oznaczało, że musiałem czasami nacisnąć przycisk resetowania, aby uruchomić coś po przesłaniu szkicu. Można to łatwo naprawić za pomocą rezystora 10K (jest na ten temat post na forum Arduino).

Krok 3: Kodeks

Byłem naprawdę pod wrażeniem tego, jak duże jest wsparcie społeczności Arduino, znalezienie przykładów kodu i bibliotek dla różnych komponentów było naprawdę proste i proste.

Uruchomienie i uruchomienie midi USB było łatwe i zajęło kilka minut. Diody zajęły trochę czasu i musiałem stworzyć szkic, który stopniowo ustawiał każdy pin na WYSOKI w odstępach 1 sekundy i zrobił notatkę. Zrobiłem tablicę, która zawierała numery PIN, aby ułatwić, jeśli chodzi o kodowanie wszystkiego.

Zrobiłem 2 biblioteki do rozmów z multiplekserami, jedna obsługuje pady analogowe, a druga pokrętła. Znowu to było naprawdę proste. Załączam je, nie krępuj się korzystać z edycji itp.

Chciałem mieć sekwencer i możliwość nagrywania bez konieczności korzystania z komputera, znalazłem kilka informacji o tym, jak przekonwertować BPM na ms i znalazłem świetną bibliotekę zegarów Arduino DUE.

Korzystając z biblioteki timera udało mi się ustawić wejścia odczytu i rzeczy w interwałach:

Pads @ 1ms - stwierdziłem, że zapewnia to najlepszą równowagę między artefaktami odpowiedzi/odbicia.

Przyciski @ 40ms - Użyłem biblioteki kolejek, więc żadne naciśnięcia nie zostały pominięte.

Przetwarzanie odbywa się w głównej pętli, nie możesz zrobić zbyt wiele, gdy jesteś w przerwaniu, ponieważ spowoduje to zablokowanie Arduino.

Midi stuff @BPM (w ms) - dla sekwencjonowania, przy żądanym BPM, wywoływana jest funkcja, która aktualizuje które nuty ETC mają być odtwarzane i zwiększa licznik bitów.

Krok 4: Wniosek

Wniosek
Wniosek

Nie jestem pewien, co tu zrobiłem, ale jestem całkiem dumny, klocki reagują znakomicie, musiałem bawić się czasem, aby uzyskać odpowiednią równowagę z responsywnością i problemami z odbiciami. Sekwencjonowanie działa świetnie, a kiedy już znajdę obsługę DAW, mogę w pełni zintegrować to z moim przepływem pracy i mogę dodawać rzeczy w kontrolerze, o którym zawsze marzyłem! To był naprawdę fajny projekt do pracy i świetne ćwiczenie w radzeniu sobie z C, zrozumieniu inżynierii odwrotnej i tego, jak działają multipleksery, rejestry przesuwne i sekwencjonowanie MIDI. Kontynuuję ulepszanie głównego kodu i być może pewnego dnia wydam go jako projektant rytmu open source.

PORADY:

Odkryłem, jak zmienić nazwę USB DUE, edytując jeden z plików nagłówkowych w folderze Arduino/SAM.

MIDI-OX to świetne narzędzie do testowania funkcjonalności Midi

SPINKI DO MANKIETÓW:

www.usb.org/sites/default/files/midi10.pdf - Specyfikacja USB MIDIhttps://midi.teragonaudio.com/tech/miditech.htm https://guitargearfinder.com/guides/convert-ms -mi… Trochę informacji o tym, jak przekonwertować BPM na ms

travis-ci.com/SMFSW/Queue - Dla wejść przycisków, więc nie przegapimy żadnych naciśnięć!

github.com/olikraus/u8g2/wiki/u8x8referenc… - UG8 lib dla ekranów LED/LCD

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

www.pjrc.com/teensy/td_libs_Encoder.html - Encoder Lib dla dużego pokrętła

shiftregister.simsso.de/ - ShiftIn Register lib - Utworzony przez Henrika Heine, 24 lipca 2016

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

Zalecana: