Arduino Midi Class - zbadano sprzęt, kody i skróty: 11 kroków

Arduino Midi Class - zbadano sprzęt, kody i skróty: 11 kroków

Spisu treści:

Anonim

W Internecie jest wielu twórców, którzy tworzą niesamowite instrumenty muzyczne za pomocą interfejsu MIDI.

Być może myślisz „Chciałbym mieć elektroniczny zestaw perkusyjny”. Prosty bracie, sam go zbuduj.

Być może myślisz: „Chcę mieć biurko do kontroli garażu, ale są one zbyt drogie”.

Zbyt łatwe! Taki prosty projekt. Kiedy już wiesz, jak to zrobić, możesz to zrobić w weekend.

Być może myślisz: „Gdybym tylko mógł użyć moich butów do tańca z kranem, żeby zagrać inne dźwięki!

Po prostu włóż czujniki piezoelektryczne na spód butów do tańca i wyślij rytm w midi.

Być może myślisz: „Chciałbym móc grać w zespół rockowy z prawdziwą gitarą!”

Umieść pojemnościowe czujniki dotykowe na strunach gitary i wyślij midi do kontrolera zespołu rockowego.

Możesz teraz myśleć: „Czy mogę kazać mojemu kotowi grać na bębnach, liżąc mleko z pojemnej metalowej miski wyczuwającej dotyk?” Tak, możesz!

Być może myślisz: „Gdybym tylko mógł grać muzykę przy użyciu sił natury !!”

Odpowiedź na to brzmi: tak, możesz! Umieść czujnik wilgotności w ziemi, czujnik deszczu, czujnik wiatru, czujnik światła, czujnik temperatury, niektóre czujniki zginania na cienkich gałęziach drzewa, niektóre czujniki wibracji lub stuków na gałęziach, które uderzają się nawzajem. Zdobądź Arduino, aby przekształcić to wszystko w sygnały midi… Arduino są świetne w tego typu sprawach.

Jeśli wpiszesz midi w pasku wyszukiwania instruktorów, znajdziesz setki różnych projektów. Midi otwiera muzykę do zupełnie nowej gamy opcji. I tak zaczyna się twoje uzależnienie od tworzenia dziwnych i wspaniałych instrumentów muzycznych. (Przepraszam twojego partnera, dzieci lub współlokatorów za miejsce używane do przechowywania wszystkich tych nowych urządzeń, ale nie muszą być duże.)

Ten instruktaż ma pomóc Ci zdecydować, gdzie szukać i co wziąć pod uwagę, rozpoczynając projekt midi.

Urządzenia USB typu plug and play doskonale nadają się do sterowania wszelkiego rodzaju programami muzycznymi na komputerach, umożliwiając nagrywanie szerokiej gamy dźwięków z pojedynczej klawiatury lub urządzenia midi. Urządzenia Midi wahają się od pulpitów do miksowania po urządzenia oświetleniowe, do zadrapań DJów i podkładek pod klawisze, do harf Lazer, iPadów i standardowej klawiatury. Midi to sposób, w jaki każdy z tych kontrolerów może rozmawiać z komputerami lub ze sobą nawzajem i rozumieć wysyłane wiadomości muzyczne.

Pamiętaj, że Midi nie jest dźwiękiem, lecz instrukcjami dźwięku. Tworzenie kontrolera midi to sposób na tworzenie muzyki za pośrednictwem interfejsu MIDI, takiego jak klawiatura, elektroniczny zestaw perkusyjny lub komputer z oprogramowaniem midi (GarageBand, mainstage, logika, ableton live, owocowe pętle itp.).

Aby uzyskać więcej informacji na temat MIDI, bardzo polecam to pouczające

Gorąco polecam również odwiedzanie strony Amandaghassaei i przeglądanie jej bardzo obszernych instrukcji. Polecam również samouczek midi sparkfun.

Arduino midi to majsterkowiczy ruch instrumentów cyfrowych. Zaczyna się od podstawowych klawiatur dosłownie zrobionych z bananów, aż po złożone algorytmy śledzące tancerzy w przestrzeni 3D. Arduino dodaje możliwości szerokiej gamie czujników, aby nagle stać się muzykalnymi. Gięcie, toczenie, odległość, światło, temperatura, ciśnienie … arduino ma ogromny zakres czujników, z którymi jest kompatybilny i dodawanie MIDI do arduino tworzy nieskończone możliwości muzyczne. Od stosowania czujników światła, czujników temperatury, deszczu i czujników wilgotności gleby, do odwzorowania pogody w utworze, aż po zestaw perkusyjny, odczytywanie notatek midi i odtwarzanie się za pomocą silników. Ta instrukcja jest po to, by dać ci wskazówki i zasmucić wyobraźnię.

Dane techniczne dotyczące Midi

Istnieje również wiele przydatnych informacji w tym pouczającym, które nie powinny być pomijane.

W tej instrukcji każdy krok jest niezależny od reszty. Możesz mieszać i dopasowywać kroki do swoich preferencji i projektu. Żaden z kroków nie jest obowiązkowy, istnieje wiele różnych sposobów na wykonanie tego.

Ponadto jestem bardzo otwarty na współpracę w tej instrukcji, więc jeśli chcesz edytować, dodawać lub poprawiać cokolwiek w tym instruktażowym, napisz do mnie, a dodam cię jako współpracownika. Celem jest stworzenie bardzo wszechstronnego widoku arduino midi.

Kieszonkowe dzieci:

Krok 1: Płyty Arduino

W zależności od tego, co chcesz osiągnąć, należy wziąć pod uwagę wiele różnych płyt arduino. Cyfrowe szpilki odczytują lub wyłączają sygnały, a także mogą wysyłać komunikaty o wyłączeniu silników, włączaniu świateł, wysyłaniu informacji na ekrany itp.

Analogowy odczytuje napięcie, co jest pomocne w przypadku takich rzeczy, jak czułość na dotyk, przetworniki piezoelektryczne do padów bębnowych, czujniki ciśnienia, światła lub flex (wśród wielu innych czujników). Dla kontrolera przycisków nie stanowią one problemu, ale jeśli chcesz mieć dużo pokręteł i suwaków, będziesz potrzebował płytki z wystarczającą liczbą pinów analogowych.

Napięcie jest przydatne do przemyślenia. Większość pedałów gitarowych zasilana jest napięciem 9V. Jeśli chcesz, aby Twój pedał midi ładnie pasował do innych pedałów gitarowych, przydatna może być funkcja uruchamiana przy 9v. Również napięcie 5V jest napięciem połączenia USB, więc gdy używasz mniejszych płyt i podłączasz złącze USB, dobrze jest mieć takie, które jest 5v zamiast 3.3v.

Tutaj znajduje się pełna lista płyt Arduino, ale niektóre z nich zostały wymienione poniżej.

UNO - Standard zapasowy, dość tani w dostawie, może być podwójnym bootowaniem z podwójnym Moco, aby stworzyć dość łatwe urządzenie midi USB. 6 pinów analogowych. Jeśli nie jesteś fanem żołnierza i chcesz mieć standardowe gniazda MIDI zamiast MIDI za pośrednictwem USB, są sterty tarcz, które się w nim znajdują.

www.sparkfun.com/products/12898 Midi shield.

101 - Uno z wbudowanym Gyro i Bluetooth … midi poprzez Bluetooth jest możliwe na iPadach i Macach. Kod byłby trudniejszy, ale jeśli sprostasz wyzwaniu, istnieją sposoby i środki.

Leonardo - Kompatybilny z biblioteką arcore midi dla łatwego programowania. 12 wejść analogowych

Pro Micro - Tanie, małe i wszechstronne. Kompatybilny z biblioteką Arcore Midi dla łatwego programowania. 6 wejść analogowych

Lilypad - Chcesz stworzyć poręczny instrument, taki jak dżinsy drumpad czy coś takiego? Lilypad to arduino do noszenia.

Yun lub MKR1000 - Chcesz, aby Twoje urządzenie midi łączyło się z twoim iPadem i komputerem przez Wi-Fi? Może idź do jednego z nich.

Mega-stosy wejść i wyjść. 16 wejść analogowych. Sterty pokoju, aby dodać stosy kodu. Fajne jak na … posiadanie elektronicznego zestawu perkusyjnego, który rozświetla się w całej gamie kolorów, tworząc klawiaturę dotykową z 48 klawiszami. Większe projekty takie jak ten.

Krok 2: Niestandardowe płyty MIDI

Zanim przejdziesz do arduino, istnieje wiele innych płyt, które warto rozważyć, zależy to od rozmiaru projektu, tego, co chcesz zrobić i budżetu, w jaki musisz to zrobić.

Makey Makey - super prosty w użyciu. Bardzo mała krzywa uczenia się. Nie midi, ale zamiast tego naciska klawiaturę wejściową, dla której istnieje wiele konwerterów oprogramowania online. Garageband i logika mają klawiaturę, którą można grać. Po prostu wciśnij zatrzaski i odtwórz. Łatwy w grze, ale ograniczony i dość drogi. Technicznie, Makey Makey jest Arduino Leonardo z ogromnymi rezystorami pull down, więc jest również całkowicie przeprogramowalny i może być po prostu przekształcony w kontroler midi za pomocą biblioteki arcore.

Teensy - Teensy jest zdecydowanie najłatwiejszą płytą kompatybilną z arduino do użycia w MIDI. Po skonfigurowaniu kody midi są dość proste, a samouczki na ich stronie dają wiele informacji. Ponieważ Teensy jest kompatybilny z Midi USB, łatwo go kodować, a następnie wypróbować. Istnieją sposoby na to, aby normalne arduino zrobiło to samo za dużo mniej pieniędzy, ale Teensy wyprzedza grę dla łatwej kompatybilności i łatwości użycia. Biblioteka Usb.midi jest bardzo łatwa w użyciu. Teensy jest wyposażony w stos wejść analogowych, które są bardzo przydatne do budowania zestawów perkusyjnych lub mikserów. Ponieważ jest kompatybilny z arduino, wszystko, co może zrobić arduino, może również zrobić nastolatka. Teensy 3.6 ma 24 wejścia analogowe, które są ogromne. Jest także szybszy niż wszystkie płyty arduino. Z tego powodu podałem Teensy własny krok.

Sparkfun zrobi świetny przegląd produktów na płytach Teensy

Doepfer posiada szereg różnych instrumentów midi do digitalizacji syntezatorów. Ich USB64 ma ogromne 64 wejścia analogowe do tworzenia wrażliwych na dotyk klawiatur lub 64-elementowych elektronicznych zestawów perkusyjnych. To więcej niż możliwości arduino. Doepfer specjalizuje się w przekształcaniu organów retro w midi, więc jeśli to właśnie rozważasz, warto je sprawdzić. Każdy projekt klawiatury wrażliwej na dużą prędkość powinien zdecydowanie uwzględniać ich produkty.

Livid Instruments ma kilka łatwych w użyciu płyt kontrolnych DIY Midi. Wydają się dość proste w użyciu i choć trochę droższe niż arduino, zaoszczędzą dużo czasu na nauczenie się kodu, jeśli miałbyś na myśli dość normalny instrument muzyczny, zestaw perkusyjny, klawiaturę lub mikser.

Tablice projektowe Midibox dla projektów midi, które są w stanie wykonywać szeroki zakres zadań. Ich płyty są w stanie nagrywać i odtwarzać midi na żywo w pętli midi i innych pomysłach.

Midifighter ma wysokiej jakości zestawy (dość drogie, ale są całkiem funkcjonalne). Są to w szczególności

Bhoreal slim to kontroler midi o otwartym kodzie źródłowym oparty na przyciskach, który ma 16–64 klocki szaleństwa.

Arduino na innych chipach

Arduino można załadować na inne układy jako samodzielne układy. Może to być przydatne do zmniejszenia rozmiaru, kosztu lub zwiększenia funkcji płyty głównej.

Plac zabaw Arduino ma informacje o tym, które układy są kompatybilne i jak to zrobić. El Pajaro Manitas napisał instruktaż, jak skrócić ogromne ilości sprzętu, używając tylko chipa z arduino, a nawet eksperymentować z innymi mniejszymi chipami, takimi jak Attiny85.

Oto przykład syntezatora wtyczki midi z układem attiny 2313.

Inne płyty rozwojowe

Zawsze są inne sposoby robienia rzeczy, rozejrzyj się, ponieważ może to zaoszczędzić pieniądze, czas lub stworzyć inną jakość lub funkcjonalność.

djtechtools.com/2011/06/21/diy-midi-still-m…

www.instructables.com/id/DIY-USB-DJ-Contro…

Intel Edison - w zasadzie mały komputer … może mieć wszystkie własne dźwięki i programy wstępnie załadowane do użytku jako samodzielny instrument. Oto przykład projektu midi wykorzystującego Intel Edison.

Raspberry Pi - w zasadzie mały komputer … może mieć wszystkie własne dźwięki i programy wstępnie załadowane do użytku jako samodzielny instrument

Krok 3: Używanie Teensy

Technicznie teensy jest kompatybilny z arduino, ale ma kilka zalet midi w stosunku do arduino.

1. Już wie, jak rozmawiać MIDI. To duży bonus. Nie musisz mieć żadnego sprytnego obejścia lub kodowania, aby móc mówić MIDI przez port USB. Nie musisz odłączać go, aby wypróbować swój kod, nie musisz używać żadnych zewnętrznych programistów, nie musisz go uruchamiać ani wykonywać żadnych innych fantazyjnych pomysłów, to po prostu mówi midi. Wpisujesz swój kod i wypróbowujesz go, edytujesz kod, przesyłasz i wracasz, aż będzie dobrze. Po skonfigurowaniu można go podłączyć do dowolnego komputera i rozpoznać go jako urządzenie midi.

www.pjrc.com/teensy/td_midi.html

2. Posiada łatwą bibliotekę MIDI. Nie musisz uczyć się, jak zapisywać liczby szesnastkowe, aby dostać się do żądanej notatki, możesz pisać w formacie dziesiętnym z normalnymi liczbami i łatwo jest owinąć głowę wokół koncepcji.

Zasadniczo są to kody usbMIDI.sendNoteOn (uwaga, prędkość, kanał);

Oznacza to, że łatwo jest powiedzieć, co robisz w kodzie, i nie gubisz się zbytnio.

3. Ponieważ jest łatwy w użyciu dla Midi, sterty ludzi używają go do midi i są stosy tutoriali, jak go używać.

Oto przykładowy kontroler midi wykorzystujący teensy.

Oto bardziej złożony, ale bardzo pomocny i wszechstronny instruktaż na temat nastolatków. Warto sprawdzić tylko pomysły i wskazówki w ogóle.

Oto pedał nożny midi, który zrobiłem za pomocą nastolatka. Łatwo było się go nauczyć i zbudować.

Krok 4: Konwertery szeregowe na midi

Więc zdecydowałeś, że chcesz przejść z Arduino na inne pomysły, ale chcesz robić midi przez USB. Istnieje wiele sposobów, aby to zrobić, która metoda będzie zależała od tego, jak chcesz działać.

Rozpoczynając, prosty i łatwy sposób na grę z midi odbywa się poprzez konwertery szeregowe na midi. Nie wymaga dodatkowych manipulacji przy chipie, wystarczy proste pobranie i odejdziesz. Wypróbowałem kilka z tych pomysłów i mogą one być pomocnymi sposobami na rozpoczęcie pracy, ale ograniczają Twój projekt do używania z komputerami, na których zainstalowany jest program.

Może to być kabel midi usb lub konwerter oprogramowania, taki jak max, wirtualny fortepian, ardrumio lub bezwłosy midi.

Oto przykład użycia wirtualnego fortepianu

Oto przykład użycia bezwłosego Midi

Krok 5: Przeprogramowanie chipa

Arduino jest bardzo wszechstronnym chipem, ponieważ jest open source, a hakerzy bardzo się nim bawią. Więc arduino nie zawsze musi być arduino. Może być przeprogramowany jako kontroler midi. Jest na to kilka różnych sposobów. Wymieniłem je w kolejności łatwości.

Arcore

Jest to biblioteka Midi, która jest kompatybilna z płytami Leonardo i Pro Micro dla midi USB. Po zainstalowaniu tej biblioteki, Arduino IDE może zaprogramować Leonardo lub Pro Micro jako urządzenie USB w sposób podobny do korzystania z Teensy. To natychmiast przeprogramowuje Twój układ bez potrzeby programowania DFU (patrz poniżej).

Musico Nerd ma niesamowity poradnik, jak go używać.

Biblioteka USBMidi

TheBiblioteka UsbMidipozwala płytce Arduino z funkcją USB działać jako instrument MIDI przez USB. Działa to tak samo jak Arcore, ale nie musi być instalowany jako nowa opcja sprzętowa. Więcej informacji tutaj.

Biblioteka Midi

Ta biblioteka Midi zawiera teraz dodatek do USB Midi.

Podwójny MocoLufa

Jeśli chcesz robić MIDI taniej, jest to nieco trudniejszy do zrozumienia proces, ale oznacza to, że możesz mieć USB MIDI na Arduino UNO lub Mega bez żadnego innego oprogramowania. Podwójnie ładuje arduino, dzięki czemu można je kodować, przesyłać, przełączać niektóre połączenia i używać go jako natywnego urządzenia USB MIDI, przetestować je, a jeśli nie jest to w pełni poprawne, po prostu odłącz je, przełącz połączenia z powrotem, podłącz i przekoduj to. Ta metoda nie wymaga żadnego innego wymyślnego programisty, możesz po prostu przełączać się między nimi.

Lufa jest oryginalna, została opracowana jako format programowania do tworzenia wielu różnych typów urządzeń USB wykorzystujących układy ATMel. Moco Lufa został opracowany jako podwójna wersja kontrolera midi Lufy i standardowego bootloadera arduino.

Dual Moco to natywny program midi, który zawiera bootloader arduino i buty jako arduino, gdy dwa piny ISP są ze sobą połączone. Po zainstalowaniu na arduino, arduino może być zwykłym arduino lub zgodnym z klasą urządzeniem midi za naciśnięciem przełącznika. Ta instrukcja wyjaśnia, jak załadować inne programy na arduino za pomocą programowania DFU. Bardziej wszechstronny sposób na Dual Moco jest dostępny na stronie arduino i na stronie Dual Moco.

Ta strona pokazuje, jak zbudować termoparę za pomocą tej techniki Moco.

Ten facet wykorzystuje technikę moco lufa ze swoją własną deską, aby stworzyć reprogramowalne urządzenie Midi.

Hiduino

Osobiście nie jestem fanem Hiduino. Jeśli nie masz programisty, wygląda na to, że przy przeprogramowaniu jest dużo pracy, ale i tak sprawdź to jako opcję. Zaletą Hiduino jest to, że twój układ będzie działał tylko jako kontroler Midi i nie ma kompatybilności arduino również wbudowanej w kod. Oznacza to, że możesz mieć większy program działający na chipie, a układ prawdopodobnie będzie działał szybciej i będzie miał mniej opóźnień, ponieważ koncentruje się wyłącznie na urządzeniu MIDI.

Krok 6: Biblioteki

Istnieje wiele bibliotek midi, które ułatwiają kodowanie midi. Nie są jednak obowiązkowe… są po prostu przydatne.

Arcore

Jest to biblioteka Midi, która jest kompatybilna z płytami Leonardo i Pro Micro dla midi USB.

MidiUSB

Jest to biblioteka Midi, która jest kompatybilna z większością modeli Arduino dla midi USB.

Biblioteka Midi

Ta biblioteka midi zawiera teraz dodatek do USB Midi.

Krok 7: Sprzęt fizyczny

Istnieje wiele elementów, które można zrobić, aby dowiedzieć się o tworzeniu kontrolera midi.

Wejścia cyfrowe

Pierwsze to wejścia cyfrowe. Są to wejścia, które wysyłają komunikaty do pinów wejścia cyfrowego. Najbardziej oczywistym z nich jest przycisk lub przełącznik, ale opcje rozszerzają się o inne komponenty i biblioteki. Mogą to być czujniki odległości, czujniki częstotliwości lub czujniki impulsów PWM, odbiorniki podczerwieni (do używania dowolnego pilota jako kontrolerów MIDI).

Wadą wejść cyfrowych jest to, że czytają lub wyłączają tylko wiadomości i nic pomiędzy nimi. Niektóre czujniki radzą sobie z tym, pulsując i wyłączając i używając kodu do zliczania czasu między impulsami.

Większość klawiatur Midi wykorzystuje ten pomysł do tworzenia dotyku wyczuwającego prędkość. Gdy przycisk jest lekko wciśnięty, naciska pierwszy przycisk i zaczyna odliczanie, po całkowitym naciśnięciu przycisku zatrzymuje licznik i ustawia prędkość. Mimo, że jest tam, aby przeczytać, jak mocno wciśnięto ten klawisz, to faktycznie odczytuje prędkość, którą jest naciskany. Zwykle jest to dość bezbłędne, ponieważ klucz jest zwykle pchany szybciej, gdy gracz chce grać mocniej na klawiaturze.

Wejścia analogowe

Drugie wejście to czujnik analogowy. Odczytuje napięcie wysyłane do pinu. Służy do mierzenia dużej liczby rzeczy za pomocą szerokiej gamy czujników. Czujniki gazu, pojemnościowe czujniki dotykowe, czujniki światła, czujniki deszczu, czujniki drgań, potencjometry, czujniki ciśnienia, czujniki zginania itp. To wejście analogowe może być używane do kontrolowania głośności nuty midi, granej nuty i jej kanału jest odtwarzany lub cały szereg interesujących efektów przy użyciu wartości kontrolnych midi.

Uzyskiwanie dodatkowych wejść analogowych…

Co jeśli chcesz przeczytać całą klawiaturę?

A jeśli potrzebujesz więcej niż 6 wejść analogowych w Arduino Uno?

Mux Shield: do 48 wejść analogowych.

Tarcza ekspandera analogowego Blueberry 24

Krok 8: Kodowanie za pomocą Arduino

Załączone kody są napisane dla Arduino Uno z Moco Lufą.

Mogą być również używane na arduino z kablem midi podłączonym do pinów tx, jak pokazano powyżej. To zdjęcie zostało zrobione z placu zabaw arduino, który ma pomocny samouczek i pierwszy projekt.

Kody Arduino zaczynają się od wprowadzenia arduino i nadania im nazwy.

const int ButtonPin = 2;

Oznacza to, że wejście jest w cyfrowym pin 2 arduino. Nazwaliśmy go przyciskiem. „const” oznacza, że ​​ButtonPin będzie stale 2. Nie zmieni się na nic innego.

Następny krok daje zmienną do przechowywania informacji o ButtonPin.

int ButtonState = 0;

Gdy wprowadzimy go jako 0, zmienna będzie domyślnie oznaczać 0.

Następnym etapem jest konfiguracja. W ustawieniach mówimy układowi, aby wysyłał dane z określoną prędkością, aby można było je odczytać z określoną prędkością i zrozumiałe dla odbiorcy. To się nazywa szybkość transmisji.

Szybkość transmisji MIDI wynosi 31250.

Pozwalamy również chipowi wiedzieć, jak będzie korzystać z pinów. Ponieważ chipy mogą być używane jako wyjście, które wysyła moc do oświetlenia diod LED, włączania silników itp. Lub wejść, w których odczytują, czy występuje zasilanie pochodzące z przycisku lub innego wejścia.

Pozwalamy chipowi wiedzieć, że ButtonPin będzie wejściem.

void setup () {

Serial.begin (31250);

pinMode (buttonPin, INPUT);

}

W powyższym kodzie możesz zauważyć kilka rzeczy. Po pierwsze kod w fazie konfiguracji jest ograniczony przez nawias {}. Mówi to układowi, kiedy zadanie jest zakończone. Jeśli kod zawiera problemy, sprawdź, czy w nawiasie zaznaczono odpowiednie etapy.

Drugą rzeczą, którą zauważysz, jest to, że po każdym wierszu kodu znajduje się średnik;. To mówi układowi, że polecenie zostało wykonane. Jeśli go przegapisz, kod nie zadziała.

Następna część kodu zawiera kilka rzeczy, które układ będzie wykonywać w kółko. Nazywa się to pętlą. W następnej pętli przycisk zostanie odczytany, jeśli zostanie naciśnięty, wyśle ​​notatkę midi. Jeśli zostanie zwolniony, wyśle ​​midi off.

void loop () {

ButtonState = digitalRead (ButtonPin);

if (ButtonState == HIGH) {Serial.write (0x80); Serial.write (36); Serial.write (127); // kanał, uwaga, prędkość}

if (ButtonState == LOW) {Serial.write (0x90); Serial.write (0x25); Serial.write (0x00); // kanał, uwaga, prędkość}

opóźnienie (1000);

}

W powyższym kodzie dodałem opóźnienie. Ponieważ kod jest zapętlony z niewiarygodną szybkością, wyśle ​​tony informacji Midi do komputera. Po naciśnięciu przycisku kod natychmiast wyłączy notatkę tysiące razy na sekundę. Po zwolnieniu przycisku kod zostanie wyłączony tysiąc razy na sekundę. Wprowadziłem do kodu opóźnienie 1000 milisekund (1 sekunda), aby spowolnić ten proces i zatrzymać procesor przed zamarznięciem komputera.

Jest jednak inny sposób, aby to zrobić. Dodając zmienną do przechowywania ostatniego odczytu, możesz sprawić, że układ sprawdzi, jak był ostatni przycisk i poprosić go o zrobienie czegoś tylko wtedy, gdy czyta coś innego. Pamiętaj, aby wprowadzić zmienną na początku swojego kodu (int lastButtonState = 0;). Oto etap pętli z ostatnim sprawdzeniem przycisku i opóźnieniem 10 milisekund (na miarę).

void loop () {

ButtonState = digitalRead (ButtonPin);

if (ButtonState == HIGH && lastButtonState == LOW)

{Serial.write (0x80); Serial.write (36); Serial.write (127); // kanał, uwaga, prędkość}

if (ButtonState == LOW && lastButtonState == HIGH)

{Serial.write (0x90); Serial.write (0x25); Serial.write (0x00); // kanał, uwaga, prędkość}

lastButtonState = ButtonState;

opóźnienie (10); }

Inne kody do wypróbowania

Każdy z dołączonych kodów ma różne komponenty, które zostały z nimi przetestowane. Niektóre są napisane dla przycisków, inne są napisane dla czujników piezoelektrycznych, czujników odległości lub pilotów na podczerwień. Każdy inny kod będzie wymagał ustawienia komponentów zgodnie z innymi samouczkami dotyczącymi korzystania z tych składników. Różnica w tych kodach polega na wbudowanych kodach midi i kilku podstawowych funkcjach, które są pomocne w kontrolerach midi.

Midi_Basic jest napisany jako test dla 4 przycisków.

Przyciski są połączone z jednym końcem do 5v i jednym końcem do pinów arduino 2, 3, 4 i 5. Każdy pin jest podłączony do masy za pomocą rezystora 10k. To się nazywa pulldown, ponieważ pin zazwyczaj odczytuje.

AnalogMidi odczytuje napięcie na analogowym styku 0 i wysyła komunikat midi. Może odczytywać potencjometry, flex lub czujniki ciśnienia, czujniki temperatury lub dyski piezoelektryczne.

Distance_sense odczytuje 4-pinowy czujnik odległości i wysyła komunikat midi.

IR Midi odczytuje wnioskowany czujnik. Jest mapowany na pilota z pakietu startowego arduino. Kody szesnastkowe mogą się różnić od twojego pilota i będziesz musiał pobrać i zainstalować bibliotekę IR, aby działała.

Przełącznik CC odczytuje stan przełącznika, który zmienia wejścia z notatek na zmiany sterowania.

Presety bębnów odczytują dyski piezoelektryczne i przycisk. Po naciśnięciu przycisku, uderzenie w dyski piezoelektryczne spowoduje wybranie nowej grupy nut dla każdego dysku.

Krok 9: Wysyłanie notatek i innych wiadomości

Ten przykład Arduino jest doskonałym przykładem kodu testowego

Specyfikacje Midi dla wszystkich różnych typów wiadomości można znaleźć tutaj. Skopiowałem wiele z tych informacji na tej stronie.

SerialWrite (0x80 + kanał); // uwaga na

SerialWrite (uwaga); // zanotuj pomiędzy 0-127

SerialWrite (velocity); // prędkość między 1-127

SerialWrite (0x90 + kanał); // zanotuj

SerialWrite (uwaga); // musi być taki sam jak nuta na uwadze

SerialWrite (0x00); // prędkość 0 powoduje wyłączenie notatki

SerialWrite (0xC0 + kanał); // zmiana programu

SerialWrite (program); // numer programu od 0-127

SerialWrite (0xD0 + kanał); // Ciśnienie kanału aftertouch

SerialWrite (velocity); // prędkość między 1-127

SerialWrite (0xE0 + kanał); // pitchbend

SerialWrite (bend); // jest to 14-bitowa liczba z maksimum 16384 i minimum 0, gdzie 8192 reprezentuje położenie wyśrodkowane lub brak pochylenia.

Komunikaty zmiany sterowania mają kilka różnych typów wiadomości, które zmieniają je w komunikaty trybu kanału.

SerialWrite (0xB0 + kanał); // Komunikat zmiany sterowania

SerialWrite (uwaga); // zauważ między 0-119

SerialWrite (velocity); // prędkość między 1-127

Komunikaty trybu kanału.

To ten sam kod, co zmiana kontroli, wartości dla notatek wybierają określone wiadomości.

120 = Wyłączony dźwięk. Po odebraniu wszystkich dźwięków wszystkie oscylatory zostaną wyłączone, a ich obwiednie głośności zostaną ustawione na zero tak szybko, jak to możliwe. c = 120, v = 0:

121 = Zresetuj wszystkie sterowniki. Po odebraniu Resetuj wszystkie sterowniki wszystkie wartości kontrolera są resetowane do wartości domyślnych. (Zobacz konkretne Zalecane metody postępowania w przypadku niewykonania zobowiązań). c = 121, v = x: Wartość musi wynosić tylko zero, chyba że dopuszczono inaczej w konkretnej zalecanej praktyce.

.

c = 122, v = 0: Local Control Off: Gdy Local Control jest wyłączony, wszystkie urządzenia na danym kanale będą odpowiadać tylko na dane otrzymane przez MIDI. Odtwarzane dane itp. Będą ignorowane.

c = 122, v = 127: Włączone sterowanie lokalne: Włączone sterowanie lokalne przywraca funkcje zwykłych sterowników

Wszystkie notatki wyłączone. Po odebraniu wszystkich notatek wszystkie oscylatory zostaną wyłączone.

c = 123, v = 0: Wszystkie notatki wyłączone (patrz opis poleceń trybu rzeczywistego).

c = 124, v = 0: Tryb omni wyłączony

c = 125, v = 0: włączony tryb omni

c = 126, v = M: włączony tryb mono (Poly Off), gdzie M jest liczbą kanałów (Omni Off) lub 0 (Omni On)

c = 127, v = 0: Poly Mode On (Mono Off) (Uwaga: te cztery komunikaty powodują również wyłączenie All Notes)

Krok 10: MIDI IN i Sound Engines.

Jeśli chcesz czytać midi z komputera, klawiatury lub innego kontrolera midi i robić z nim jakieś zabawne rzeczy, oto kilka ciekawych rzeczy do zrobienia.

Odtwarzacz WAV: Ta tarcza pomaga w odtwarzaniu plików dźwiękowych wyzwalanych przez … cokolwiek chcesz, aby zostały uruchomione. Midi to jedna rzecz, której możesz użyć. Może to być wykorzystane do stworzenia elektronicznego zestawu perkusyjnego, dodania dźwięków do klawiatury midi w celu przenośnego zagłuszania lub wysłania midi z telefonu w celu wykonania cichego hałasu pod kanapą.

Syntezator lub efekty: Ta tarcza ma wbudowane dźwięki i syntezator. Możesz więc użyć midi do kształtowania przebiegów i wyjścia do wzmacniacza. Może to być przez midi lub prosto z kontrolera.

Platformy oświetleniowe: Midi to świetny sposób na kontrolowanie wielu rzeczy. Mógłbyś napisać kod midi, aby pasował do twojego występu na scenie i skonfigurować arduino do czytania wejścia midi i przekaźników sterujących oraz wyłączania i włączania świateł w różnych częściach tańca lub występu muzycznego.

Zespół kontrolowany przez Midi: Oto instruktaż, jak zbudować automatyczny zestaw perkusyjny. Arduino czyta midi i pisze do silników grających na bębnach. Możesz powielić ten pomysł z całą gamą instrumentów. Oto artykuł na temat historii przyrządów robotycznych, który stanowi ciekawą inspirację.

Krok 11: MIDI Thru

Midi thru jest przeznaczony do łańcuchowych instrumentów midi. Midi thru jest taki sam, jak linia wyjściowa, ale zawiera również bezpośrednią kopię linii wejściowej. Wszystko, co wchodzi na wejście, przechodzi prosto.

Oznacza to, że możesz podłączyć instrument do wejścia, użyć instrumentu do sterowania efektami na urządzeniu midi, ale potem również wysłać informacje midi z midi prosto do następnego instrumentu w łańcuchu.

Możesz także użyć midi thru jako wielu efektów. Jeśli masz pojedyncze wejście kierowane do wielu portów przez port, możesz odtwarzać pojedynczą klawiaturę, która wyprowadza, aby kontrolować wiele dźwięków. Skrzynka rozdzielcza na pudełku może się wyłączyć przez różne porty, aby to kontrolować.