Spisu treści:

Sekwencer sekcji rytmicznej Arduino MIDI: 8 kroków (ze zdjęciami)
Sekwencer sekcji rytmicznej Arduino MIDI: 8 kroków (ze zdjęciami)

Wideo: Sekwencer sekcji rytmicznej Arduino MIDI: 8 kroków (ze zdjęciami)

Wideo: Sekwencer sekcji rytmicznej Arduino MIDI: 8 kroków (ze zdjęciami)
Wideo: Arduino 64 Step Sequencer с минимальным аппаратным обеспечением, адаптированный из Drum Sequencer 2024, Listopad
Anonim
Sekwencer sekcji rytmicznej Arduino MIDI
Sekwencer sekcji rytmicznej Arduino MIDI
Sekwencer sekcji rytmicznej Arduino MIDI
Sekwencer sekcji rytmicznej Arduino MIDI
Sekwencer sekcji rytmicznej Arduino MIDI
Sekwencer sekcji rytmicznej Arduino MIDI

Posiadanie dobrego automatu perkusyjnego z oprogramowaniem jest dziś łatwe i tanie, ale używanie myszy zabija dla mnie zabawę. Dlatego zdałem sobie sprawę, co początkowo było pomyślane jako czysty 64-stopniowy sprzętowy sekwencer perkusyjny MIDI, zdolny do wyzwalania do 12 różnych elementów perkusyjnych (części), ale potem ewoluował w sekwencer sekcji rytmicznej…

… No to jedziemy!

Krok 1: Jak to działa

Ten sprzęt nie może samodzielnie generować dźwięków, a jedynie sekwencjonuje zewnętrzny sprzęt przez MIDI. Oznacza to, że będziesz potrzebować generatora brzmień swoich dźwięków perkusyjnych (samplera lub syntezatora perkusyjnego lub komputera z ulubionym oprogramowaniem perkusyjnym lub cokolwiek wolisz), który może być wyzwalany przez komunikaty nutowe MIDI.

Składa się głównie z matrycy 4 x 4 przycisków (z diodami LED), po jednym dla każdego kroku paska. Cała sekwencja 64 kroków składa się z 16 kroków pomnożonych przez 4 takty. Każdy krok to 1/16 nuty.

Istnieją dwa tryby działania: tryb na żywo i tryb edycji.

W trybie edycji możesz właściwie edytować swoją sekwencję krok po kroku, definiując, który bęben będzie grał w każdym kroku.

Zewnętrzny instrument sprzętowy („bęben”) jest wyzwalany przez wysłanie komunikatu MIDI „note on” dla różnych „numerów nut MIDI” na kanale o numerze „10”. Domyślnie te numery nut to

drum #1 (tj. kick) -> nuta MIDI numer „60”

bęben #2 (tj. werbel) -> nuta MIDI numer „62”

bęben #3 (tj. klaskanie) -> nuta MIDI numer „64”

bęben #4 (np. Hihat) -> nuta MIDI numer „65”

bęben #5 -> nuta MIDI numer „67”

bęben #6 -> nuta MIDI numer „69”

bęben #7 -> nuta MIDI numer "71"

bęben #8 -> nuta MIDI numer „72”

perkusja #9 -> nuta MIDI numer "74"

bęben #10 -> nuta MIDI numer „76”

bęben #11 -> nuta MIDI numer „77”

bęben #12 -> MIDI numer nuty „79”

Jeśli wolisz, możesz zmienić te wartości (i kanał MIDI) w szkicu.

W trybie na żywo, naciskając przyciski kroków, możesz grać na żywo na perkusji powiązanej z każdym krokiem, wysyłając komunikaty MIDI przez port szeregowy. Możesz nagrywać na żywo naciśnięcia przycisków i/lub przychodzące komunikaty MIDI.

Zarówno w trybie na żywo, jak i w trybie edycji możesz wyciszyć (lub wyłączyć wyciszenie) bębna, "roll play" aktualnie aktywny bęben i "swing" swoją sekwencję.

Sekcja rytmiczna?

Większość sekwencerów perkusyjnych to wyłącznie wyzwalacze partii perkusyjnych MIDI, ze stałym numerem nuty MIDI dla każdego dźwięku perkusyjnego. W tym przypadku mamy „sekwencer sekcji rytmicznej” więcej niż czysty „sekwencer perkusyjny”, ponieważ można nawet sekwencjonować syntezatory.

Przeczytaj PRZEWODNIK SZYBKIEGO STARTU, aby uzyskać więcej informacji i pełną listę funkcji.

Krok 2: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy

Ten projekt jest realizowany wokół płytki Arduino DUE. Starałem się, aby sprzęt był jak najprostszy, tj. unikając stosowania sterowników LED. Arduino DUE prawdopodobnie nie jest najodpowiedniejszą płytą do obsługi wielu diod LED bez sterownika LED ze względu na ograniczenia prądu wyjściowego (od 5 mA do 15 mA, w zależności od pinu), ale jest to najszybsze Arduino, a synchronizacja jest najważniejsza w kontaktach z sekwencerami. Należy więc pamiętać, że TA konfiguracja sprzętowa prawdopodobnie przesuwa Arduino DUE do granic możliwości i może go uszkodzić na dłuższą metę.

Biorąc to pod uwagę, sprzęt to głównie 16 przycisków, 16 diod LED (po jednej na każdy krok) sekwencer z 5 dodatkowymi przyciskami funkcji i 3 potencjometrami. Dodałem też czerwoną diodę LED po dodaniu funkcji nagrywania na żywo.

Oto zestawienie materiałów:

- 1x Arduino POWODU

- 16x chwilowych, nie zatrzaskujących się przycisków ze zintegrowanymi diodami LED (jeśli wolisz, możesz użyć zewnętrznych diod LED, ale pamiętaj o diodach LED o niskim poborze mocy!!)

- 1x czerwona dioda LED (mała moc!)

- 5x chwilowych, nie zatrzaskujących się przycisków

- 3x 10K jednoobrotowe, liniowe, potencjometry

- 3x żeńskie gniazdo mono 6,5 mm do montażu na panelu

- 1x etui plastikowe (ja użyłem etui 190x140x70 mm)

- 2x 5-pinowe złącze DIN żeńskie do montażu na panelu (MIDI)

- 1x dwustronna płyta perforowana 70x90 mm

- 2x 40-pinowa męska listwa z pojedynczym rzędem pinów (2,54 mm), lepiej, jeśli jest pozłacana

- 1x transoptor H11L1

- 1x dioda 1N4148

- Rezystory 23x 1000 omów

- Rezystory 3x 220 omów

- 2x tranzystory pnp BC547

…drut lutowniczy, trochę kabli, stacja lutownicza, wiertarka… i czas wolny:)

Proszę zauważyć, że przyciski na zdjęciach zostały zastąpione innym rodzajem (jeszcze tańszych…) przycisków ze względu na skandaliczne odbijanie…

Czas potrzebny na wykonanie projektu: 8 - 10 godzin

OSTRZEŻENIE: ZAWSZE noś okulary i rękawice ochronne podczas wiercenia! Płatki gorącego materiału mogą trafić na Twoje oczy lub wejść w kontakt ze skórą i spowodować oparzenia lub nawet poważniejsze obrażenia Ciebie lub osób wokół Ciebie

Krok 3: Okablowanie

Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie

Przyciski Step są bezpośrednio podłączone do pinów Arduino od 22 (krok 1) do 37 (krok 16). Uziemienie przycisków jest połączone szeregowo i połączone z masą Arduino DUE. Nie ma potrzeby stosowania rezystorów podciągających lub podciągających, ponieważ zintegrowane rezystory podciągające Arduino są włączane programowo (patrz szkic).

To samo dotyczy dodatkowych 5 przycisków (piny 2, 3, 4, 5 i 6 Arduino), używanych do funkcji innych niż kroki. Umieściłem też żeńskie złącze jack 6,5 mm równolegle z przyciskiem „start”, aby móc zdalnie odtwarzać i zatrzymywać moje sekwencje.

Diody LED są połączone z masą (daisy chain) i pinami Arduino DUE od 38 (krok #1) do 53 (krok #16) szeregowo z rezystorem 1K ohm każdy, aby ograniczyć pobór prądu i zachować mikrokontroler.

Potencjometry są połączone jak pokazano na załączonym obrazku. Zauważ, że napięcie odniesienia wynosi 3,3 V, a nie 5 V. Używane wejścia to A0, A1 i A2.

Zaimplementowałem również dwa wyjścia wyzwalające dla sygnałów arpeggio, takie jak te wymagane do arpegiacji starych syntezatorów z lat 80-tych, takich jak Korg Polysix i Roland Juno 6/60. Są one podłączone do pinów A3 i A4, ale możesz użyć pinów cyfrowych, jeśli wolisz być sygnałami cyfrowymi. W przypadku, gdy zamierzasz zsekwencjonować syntezator kompatybilny z sygnałami V-Trig (wyzwalacz napięciowy), wystarczy rezystor szeregowy 1 kΩ w celu zmniejszenia poboru prądu; w przypadku syntezatora S-Trig (wyzwalacz przełącznika) potrzebny będzie prosty obwód przełącznika pnp (patrz załączony schemat).

Schematy obwodów MIDI IN i OUT na załączonych zdjęciach. Zauważ, że w przeciwieństwie do większości arduino, Rx1 i Tx1 są domyślnie używane na płytach DUE zamiast Rx0 i Tx0. To jest świetne, ponieważ możesz przesłać swój szkic bez konieczności odłączania Rx za każdym razem. Zauważ również, że użyłem transoptora H11L1, ponieważ nie byłem w stanie działać tak, jak powinien, zwykły 6N138 w limicie Arduino DUE 3,3 V.

Krok 4: Oprogramowanie

Szkic został napisany w środowisku Arduino IDE i należy go wgrać na płytkę Arduino DUE. Nie będę wdawał się w szczegóły jak wgrać szkic do swojego arduino DUE. Jeśli to twoje pierwsze doświadczenie z Arduino DUE, przeczytaj to. Jeśli jest to twoje pierwsze doświadczenie z arduino IDE, przeczytaj to również.

Zaktualizowany firmware można pobrać TUTAJ (link do github).

Szkic opiera się na doskonałej bibliotece MIDI FortySevenEffects. Będziesz musiał zainstalować bibliotekę w swoim arduino IDE.

Nuty MIDI out przypisane do każdego bębna są zdefiniowane przez zmienną drumNote[STEPS_NUM] w szkicu. Możesz je zmienić do woli.

Numer kanału wyjścia MIDI dla perkusji jest domyślnie ustawiony na „10”.

Nie jestem koderem w prawdziwym życiu i na pewno są lepsze sposoby kodowania tego, czego potrzebujemy tutaj. Jeśli jesteś programistą z jakąkolwiek sugestią, zapraszamy! Proszę o przysłanie wszelkich zmian, które mogą zwiększyć wydajność/skuteczność kodu, a ja dołączę je do głównego szkicu (oczywiście powołując się na Kontrybutora!).

Krok 5: Przewodnik szybkiego startu

BĘBNY: KOLEJNOŚĆ KROK PO KROKU

Jak tylko włączysz swój sekwencer (lub go zresetujesz), zostanie załadowana pusta sekwencja. Sekwencer uruchamia się w trybie edycji, z przytrzymanym/zablokowanym pierwszym taktem i wybranym pierwszym bębnem (tj. kickiem). Oznacza to, że naciskając dowolny przycisk kroku, natychmiast przypiszesz „kopnięcie” do tych kroków. Głośność, na jaką bęben zostanie wyzwolony, jest ustawiana przez położenie potencjometru „głośność” podczas przypisywania bębna do kroku. Ponowne naciśnięcie wcześniej przypisanego przycisku kroku spowoduje anulowanie przypisania bieżącego bębna do tego kroku.

Jeśli naciśniesz przycisk „start”, zobaczysz diody LED biegnące od lewej do prawej, od góry do dołu, odtwarzając „kopnięcie” za każdym razem, gdy krok zostanie przekroczony.

Przytrzymując wciśnięty przycisk „shift” zobaczysz, że dioda LED pierwszego kroku w pierwszym rzędzie jest włączona (co oznacza, że wybrany jest pierwszy bęben) i dioda LED pierwszego kroku w czwartym rzędzie (co oznacza, że jesteś zablokowany na pierwszym takcie). Możesz teraz zmienić bęben, który chcesz sekwencjonować, naciskając kolejny przycisk kroku, trzymając wciśnięty przycisk „shift”. Po wybraniu nowego bębna zwolnij „shift”. Wszystkie diody LED zgasną (ponieważ nie przypisałeś nowego bębna do żadnego kroku) i możesz rozpocząć przypisywanie nowego bębna do kroków. Powtórz dla wszystkich potrzebnych bębnów (do 12).

Teraz, gdy stworzyłeś ładny wzór, trzymaj wciśnięty „shift” i wyłącz podświetlony krok w dolnym rzędzie (powinien to być pierwszy krok w czwartym rzędzie, jeśli przyjąłeś ten sam układ, którego użyłem): po prostu „ odblokowane” sekwencję, która będzie teraz przebiegać przez wszystkie 4 takty. Dolne surowe diody LED zaczną „poruszać się”, wskazując, który pasek jest aktualnie odtwarzany (progresja paska). Zauważysz, że tylko w pierwszym takcie zostanie odtworzona sekwencja, a wszystkie pozostałe 3 takty nie generują dźwięków. Dzieje się tak, ponieważ przypisałeś bębny tylko do pierwszego taktu, a pozostałe pozostały puste. Możesz wypełnić je ręcznie (wybierz nowy pasek, naciskając jeden z ostatnich 4 przycisków kroków, trzymając wciśnięty klawisz „shift”, wybierz jeden z bębnów, wypełnij kroki itp. itp.) Lub skopiować i wkleić utworzoną sekwencję taktów do wszystkich taktów, wchodząc w tryb edycji (ponowne zablokowanie do pierwszego taktu) i naciskając przycisk „nagraj” (który teraz przyjmuje funkcję „wklej”) trzymając wciśnięty przycisk „shift”. Łatwiej zrobić niż powiedzieć.

BĘBNY: TRYB GRY NA ŻYWO

Po uruchomieniu sekwencer jest w trybie edycji. Aby wyjść z trybu edycji, należy przytrzymać wciśnięty klawisz „shift” i nacisnąć przycisk aktualnie przytrzymany/zablokowany na pasku (włączony przycisk kroku w czwartym rzędzie). Spowoduje to wyłączenie diody LED wcześniej zablokowanego paska i odblokowanie sekwencji. Jesteś teraz w trybie gry na żywo.

W trybie odtwarzania na żywo naciśnięcie dowolnego przycisku kroku spowoduje wyzwolenie bębna powiązanego z tym przyciskiem.

Jeśli chcesz nagrać swoją sekwencję na żywo, rozpocznij sekwencję, naciskając przycisk „odtwarzaj”, a następnie naciśnij przycisk „nagraj” (tylko w trybie odtwarzania na żywo). Zaświeci się czerwona dioda LED. Twoja gra na matrycy panelu sterowania sekwencera perkusyjnego lub każdy przychodzący komunikat nutowy MIDI (tj. z zewnętrznej klawiatury MIDI) zostanie nagrany.

Inne funkcje

Naciskając przycisk „roll”, na każdym kroku będzie odtwarzany aktualnie aktywny bęben (w rolce). Działa to zarówno w trybie „krok po kroku”, jak i „na żywo”.

Naciskając dowolny przycisk kroku, trzymając wciśnięty przycisk „wycisz”, bęben powiązany z tym krokiem zostanie wyciszony (lub wyłączony). Działa to zarówno w trybie „krok po kroku”, jak i „na żywo”.

Możesz wyczyścić określoną sekwencję perkusyjną, naciskając odpowiedni przycisk kroku, trzymając wciśnięty przycisk „REC”.

Możesz wyczyścić całą sekwencję (miękki reset) przytrzymując wciśnięty przycisk "start" przez ponad 3 sekundy.

Możesz „rozbujać” swoją sekwencję, obracając potencjometr „rozbujania”.

Możesz wyłączyć/włączyć echo MIDI, naciskając przycisk „mute” przy wciśniętym przycisku „shift”. Gdy echo MIDI jest włączone (domyślnie), wszelkie informacje obecne w gnieździe MIDI INPUT zostaną wysłane do gniazda MIDI OUTPUT (echa będą odtwarzane tylko nuty MIDI włączone, wyłączone, pitch bend, aftertouch i zmiany sterowania).

Zarówno wejście, jak i wyjście zegara MIDI są domyślnie zaimplementowane i włączone. W przypadku braku sygnału zegara, tempo jest ustawiane za pomocą dedykowanego potencjometru. W przypadku otrzymania sygnału wejściowego zegara MIDI, tempo jest z niego obliczane, a potencjometr tempa nie odpowiada. Zegar MIDI jest zawsze wysyłany do wyjścia MIDI.

Krok 6: Sekcja rytmiczna

Pierwotnym pomysłem był „czysty” 64-stopniowy sekwencer perkusyjny MIDI do sekwencjonowania do 12 niezależnych partii perkusyjnych. Po kilku testach zauważyłem, że fajnie byłoby również kontrolować linię basu i przypisałem funkcję zmiennej wysokości tonu na krok tylko do najnowszego bębna. Następnie ponownie zmodyfikowałem kod, aby móc zmieniać wysokość dźwięku w każdym bębnie i kontrolować do 12 syntezatorów. W wersji później dodałem polifonię (polifonia na syntezator jest domyślnie ograniczona do 3).

Podsumowując:

- w trybie LIVE, jeśli włączone jest nagrywanie LIVE i sekwencja jest uruchomiona, można polifonicznie nagrywać przychodzące komunikaty MIDI. Informacje o wysokości i głośności zostaną zapisane. Informacje o Pitch Bend i Aftertoutch są tracone. Komunikaty zmiany sterowania MIDI zostaną zapisane. Pamiętaj, że masz tylko jedno gniazdo CC na kanał na krok.

- Jeśli sekwencja jest zatrzymana, możesz nagrać do 3 wartości tonacji (akord) do określonego kroku określonego taktu, przytrzymując wciśnięty przycisk kroku docelowego i naciskając (w tym samym czasie lub jeden po drugim) żądane klawisze na klawiatura podłączona do portu MIDI IN.

Zauważ, że:

- nuta wyzwolona na jednym kroku jest "zabijana" w następnym kroku. Aby zwiększyć długość nuty, działaj na parametrze „release” VCA twojego syntezatora.

- w przeciwieństwie do perkusji, nuty nie mogą być grane w rolce przez naciśnięcie przycisku „roll”.

- Podczas nagrywania LIVE, przychodzące dane kanału MIDI są zapisywane w odpowiednim kroku „bęben” (kanał MIDI nr 1 -> „bęben” nr 1 itd.).

Możesz wyczyścić określoną sekwencję syntezatora, naciskając odpowiedni przycisk kroku „bęben”, trzymając wciśnięty przycisk „REC”. Ponowne naciśnięcie go usunie również sekwencję bębnów. Jeśli nagrana została sekwencja CC, będzie ona skasowana jako pierwsza, a następnie zgodnie z kolejnością CC -> Synth -> Drum

Krok 7: Wyzwalacze arpeggio

Syntezatory pre-MIDI z wczesnych lat 80. są często wyposażone w czasami nazywane „wejściem wyzwalającym arpeggio”. Wysyłając sygnał wyzwalający od 2,5 do 5,0 V (V-trig lub „wyzwalacz napięciowy”) lub uziemiając wejście wyzwalacza arpeggio (S-Trig lub „wyzwalacz przełączający”), możesz nakazać syntezatorowi przejście o jeden krok w sekwencji arpeggio. Może to być trudne do opanowania przy użyciu sekwencera bez dedykowanego wyjścia wyzwalacza (czasami dźwięki „rimshot” z dedykowanego wyjścia, gdzie/są używane jako rozwiązanie dla syntezatorów V-trig), ale z płytą mikrokontrolera możesz łatwo zarządzać takim sygnałem i kontrolą Twoje arpeggio syntezatorowe, tak jak miało to miejsce w fabryce.

Ten sekwencer sekcji rytmicznej umożliwia niezależne wyzwalanie arpeggiatora dwóch różnych syntezatorów.

Użycie jest bardzo proste: wybierz bęben 11 lub 12 (naciśnij krok 11 lub 12, jednocześnie naciskając "shift") i aktywuj kroki, które chcesz, aby arpeggiator poruszał się o jeden krok. W ten sposób można „zaprogramować” bardzo ciasne 1/16 długości nuty regularne pasaże, aktywując wszystkie kroki, lub 1/8, aktywując co drugi krok. Ponadto możesz zaprogramować bardziej złożone pasaże, aktywując kroki podążające nieregularną ścieżką.

W zależności od typu sygnału wyzwalającego obsługiwanego przez syntezator, którym chcesz sterować, będziesz potrzebować prostej modyfikacji sprzętowej: w przypadku V-trig (tj. syntezatorów Rolanda) umieść szeregowo rezystor 1 Kohm z wyjściem wyzwalającym arduino. W przypadku S-trig (tj. syntezatorów Korg) użyj shematica dołączonego do kroku „okablowania”, aby bezpiecznie uruchomić przełącznik.

Krok 8: Jeśli coś nie działa…

Nawet stosunkowo prosty projekt, taki jak ten, najprawdopodobniej nie zadziała w 100% po pierwszym włączeniu. Tutaj, na przykład, zgodność między przyciskami a diodami LED jest kluczowa, a niezrównane okablowanie sprawi, że sekwencer będzie bezużyteczny.

W celu przetestowania wszystkich elementów składających się na sekwencer krokowy napisałem prosty szkic testowy (patrz załącznik).

Najnowsze oprogramowanie testowe można pobrać TUTAJ (link do GitHub).

Szkic testowy działa w następujący sposób:

- naciśnij przycisk kroku: odpowiednia dioda LED powinna się zaświecić, a nuta MIDI na kanale 10 zostanie wysłana do wyjścia MIDI.

- nacisnąć przycisk funkcyjny: zaświeci się jedna z pierwszych 5 diod LED.

- przekręć potencjometr: diody zaświecą się odpowiednio (pierwszy potencjometr -> pierwszy rząd diod, drugi potencjometr -> drugi rząd diod, trzeci potencjometr -> trzeci rząd diod).

- jeśli odebrana zostanie nuta MIDI, pierwsza dioda LED zacznie migać.

Pamiętaj, że echo MIDI jest domyślnie włączone. Oznacza to, że jeśli masz pętlę MIDI między syntezatorem a MRSS, może to powodować problemy (w większości przypadków doświadczyłem przewidywalnego wyzwalania podwójnych nut, ale także wyzwalania bardzo niskich dźwięków i ogólnie niereagującej wbudowanej klawiatury z syntezatorami z MIDI działając jako MIDI Throu… to zależy od syntezatora). W takim przypadku wyłącz echo MIDI, naciskając przycisk „mute” przy wciśniętym przycisku „shift”.

Zalecana: