Cuprins:

Construirea unui controler MIDI Arduino: 9 pași (cu imagini)
Construirea unui controler MIDI Arduino: 9 pași (cu imagini)

Video: Construirea unui controler MIDI Arduino: 9 pași (cu imagini)

Video: Construirea unui controler MIDI Arduino: 9 pași (cu imagini)
Video: Mi-am distrus mașina… 2024, Noiembrie
Anonim

Acest instructable a fost publicat inițial pe blogul meu pe 28 iunie 2020

Îmi place să construiesc lucruri care includ electronice și am vrut întotdeauna să construiesc ceva folosind Arduino.

Una dintre cele mai comune versiuni pentru începători pe care am găsit-o a fost un controler MIDI. Un controler MIDI este orice hardware care trimite date MIDI (Musical Instrument Digital Interface) către un dispozitiv pentru a declanșa sunete și a face muzică.

Am constatat că multe implementări sunt complicate, chiar și cele care sunt pentru începători. A fost foarte frustrant să constat că trebuie să folosesc sute de linii de cod necitit. Sau că trebuie să lipesc un rezistor în unele cazuri, printre alte exemple.

Proiectul

Construind propriul meu controler MIDI Arduino, intenția mea a fost să fac un proiect plăcut, menținând zgomotul la cel mai mic nivel. Ceva care ar putea urma orice începător. Pentru a realiza acest lucru, am folosit MIDI Fighter 3D ca bază de inspirație și am eliminat fiecare caracteristică neesențială.

Costul total al proiectului meu a fost sub 30 USD, iar lista materialelor a fost foarte scurtă (linkuri de afiliere):

  • Arduino Leonardo (sau clonă): între 10 și 20 USD.
  • 16 x butoane Sanwa de 24 mm (sau clonă): între 1 USD și 2,50 USD pe buton.
  • Ciocan de lipit
  • 22 fire electrice AWG

Placa Arduino

Când am început acest proiect, am descoperit că există o serie de noi modele Arduino (fără a include sutele de plăci compatibile). Și toate oferă capacități ușor diferite.

Aveam nevoie să trimit semnale MIDI către un computer și cel mai simplu mod de a face acest lucru este prin USB. Orice placă Arduino bazată pe microcontrolerul ATmega32u4 are comunicație USB încorporată.

Plăcile oficiale Arduino cu suport USB nativ sunt Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Aceste plăci au suport USB integrat, ceea ce înseamnă că pot acționa ca un dispozitiv USB MIDI.

Am decis să merg cu o clonă a Arduino Leonardo. Are suficiente intrări pentru acest proiect și include și anteturi, ceea ce face mai ușoară conectarea / deconectarea firelor.

Primii pasi

Deși voi explica pas cu pas modul în care am implementat codul pentru acest proiect, puteți descărca versiunea finală.

Pentru a încărca codul pe placa, trebuie să utilizați ID-ul Arduino. De asemenea, au un editor Web care este foarte util, dar au o cotă limitată de ori pe zi în care puteți compila cod.

Pasul 1: clipește LED-ul încorporat

Este amuzant cum „Hello World” din lumea hardware-ului clipește cu un LED.

A fost o surpriză frumoasă pentru mine să descopăr că Arduino Leonardo are un LED încorporat pe care îl puteți clipi pentru a vă testa codul. În acest fel nu este nevoie să construiți un circuit extern pe o placă cu un LED și un rezistor.

Cod:

Pasul 2: clipirea LED-ului la intrarea manuală

Următorul pas logic a fost să clipesc același LED ori de câte ori trimit un semnal. Am îndepărtat capacul de plastic al unui capăt al 2 fire Dupont și am conectat celălalt capăt la placă:

  • Pinul 2: Una dintre intrările digitale (pozitivă). Ar putea fi orice pin digital.
  • Pin GND: Orice pin de masă (negativ).

Acum, de fiecare dată când mă alătur capetelor expuse ale firelor, închid circuitul și astfel pot executa cod în consecință

Fiecare dintre cei 20 de pini digitali de pe Leonardo are un rezistor intern (deconectat în mod implicit) care poate fi activat folosind INPUT_PULLUP. Rețineți că o intrare pull-up înseamnă că starea butonului este inversată:

  • HIGH când circuitul este deschis (butonul NU este apăsat).
  • LOW când circuitul este închis (butonul este apăsat).

Cod:

Pasul 3: Instalarea bibliotecii MIDIUSB

Această bibliotecă permite unei plăci Arduino cu capacități USB să acționeze ca un instrument MIDI prin USB. Consultați documentația oficială pentru mai multe informații.

Folosind Arduino IDE, puteți instala biblioteci Arduino suplimentare folosind Managerul de biblioteci:

  1. Deschideți IDE și faceți clic pe meniul „Schiță”, apoi „Includeți biblioteca”, apoi „Gestionați bibliotecile”.
  2. Căutați MIDIUSB și faceți clic pe Instalare.
  3. Odată ce a terminat, ar trebui să apară o etichetă instalată lângă biblioteca MIDIUSB.
  4. Închideți Manager bibliotecă.

Acum, Leonardo poate trimite mesaje MIDI prin USB! Dar, mai întâi, este nevoie de câteva informații despre cum funcționează MIDI.

Cum funcționează MIDI

„MIDI (Musical Instrument Digital Interface) este un protocol de comunicație standard care conectează instrumente muzicale electronice, computere și dispozitive audio conexe pentru redarea muzicii.” - Wikipedia

Se ocupă de mesaje de eveniment cu date despre tonul și viteza notei redate, printre alte instrucțiuni

În acest proiect specific, intrarea din cele 16 butoane trimite mesaje diferite prin USB. Aceste mesaje pot fi convertite în sunet pe un computer utilizând orice software adecvat, cum ar fi GarageBand sau Ableton Live.

Anatomia unui mesaj MIDI

Pentru a trimite un mesaj MIDI, am folosit metoda sendMIDI () din Biblioteca MIDIUSB pe care am instalat-o la pasul 3.

Această metodă poate primi 4 parametri:

  • Tipul evenimentului: poate fi 0x09 pentru nota Activată (redare notă) sau 0x08 pentru nota Dezactivată (opriți redarea notei).
  • Notă On / Off: Tipul de eveniment combinat cu canalul MIDI (1-16). Folosesc doar canalul 1, deci este 0x90 pentru nota On sau 0x80 pentru nota Off.
  • Numărul notei: Fiecare notă are un ton numeric asociat (scala de frecvență).
  • Viteza: De la 0 (fără viteză) la 127 (cea mai rapidă).

Pasul 4: Trimiterea unui mesaj MIDI

Am inclus Biblioteca MIDIUSB și, în loc să clipesc LED-ul încorporat, am trimis o notă.

Cod:

⚠ Important: Începând cu acest pas, Arduino se transformă într-un controler MIDI USB și nu mai primește cod prin USB.

Când rămâneți blocat într-o poziție în care Arduino nu mai poate fi programat, urmați acești pași:

  1. Țineți apăsat butonul de resetare rotunjit de pe placa Arduino.
  2. Faceți clic pe Încărcare pe IDE Arduino.
  3. Eliberați butonul de resetare.
  4. Codul actualizat va fi încărcat pe tablă.

Pasul 5: Trimiterea unui mesaj MIDI din fiecare buton

Trimiterea unui mesaj MIDI din fiecare buton
Trimiterea unui mesaj MIDI din fiecare buton

Ultimul pas a fost să mapezi fiecare pitch la un buton. Pentru cele 16 butoane, am definit o scară de la C2 la E3b, care sunt pitch-urile de la 36 la 51 într-o secvență de jos în sus și de la stânga la dreapta. Consultați acest fișier din Tutoriale Arduino pentru a vedea ce ton corespunde fiecărei note.

Am folosit pini digitali de la 2 la 12 și pini analogici (folosindu-i ca cifre) de la A0 la A4.

Și așa arată codul final

Pasul 6: Configurarea canalelor sau a băncilor (opțional)

Configurarea canalelor sau a băncilor (opțional)
Configurarea canalelor sau a băncilor (opțional)

În cazul în care doriți să adăugați mai multe butoane cu posibilitatea de a schimba canalele sau băncile, ca în MIDI Fighter 3D (a se vedea imaginea), Arduino Leonardo are încă patru pini pe care îi puteți folosi. Arduino Leonardo are 20 de pini de intrare / ieșire digitale, dintre care doar 16 sunt folosiți pentru redarea notelor.

Puteți utiliza acele butoane suplimentare pentru a actualiza o variabilă din cod și pentru a trimite valoarea acesteia ca parametru la metoda MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Pasul 7: Cazul

Cazul
Cazul
Cazul
Cazul

Pentru a menține acest proiect simplu, am fost extrem de pretențios în ceea ce privește alegerea caracteristicilor care includ.

  • Numai butoane: 16 butoane arcade de tip Sanwa, într-o grilă 4x4. Fără butoane, fără glisoare, fără fadere sau orice altă intrare analogică.
  • Carcasă monocorp: nu utilizați șuruburi, piulițe, șuruburi sau lipici pentru carcasă sau pentru a ține placa Arduino.
  • Unelte de zi cu zi: De exemplu, am lipit firele în loc să cumpăr un tăietor special pentru butoanele arcade.

Unibody Design

Una dintre provocările cu care m-am confruntat a fost proiectarea unui caz suficient de simplu încât să nu aibă nevoie de asamblare și să poată fi tipărit 3D într-o singură tiră.

Pentru a evita folosirea șuruburilor sau lipiciului, a trebuit să proiectez o carcasă care să ofere cel mai mic acces la electronică. Cea mai mare inspirație pentru incintă a fost Mac Mini, care are o gaură în formă de cerc în partea de jos. De asemenea, am vrut să proiectez un capac înșurubabil pentru asta, dar am decis să-l deschid pentru a expune electronica.

Descărcați carcasa imprimabilă 3D (322 KB). Setări recomandate: PLA, straturi de 0,15 mm, umplutură de 20%, suporturi de aplicare cel puțin pentru gaura de jos rotunjită, suporturile Arduino și micro USB.

Ținând un Arduino fără șuruburi

Leonardo are 4 găuri pentru a înșuruba placa în orice carcasă adecvată, dar ideea mea a fost să ușurez adăugarea și scoaterea plăcii din carcasă.

Găsirea unui suport de clip pentru Arduino pe Thingiverse a fost ușoară și mi-au trebuit 5 iterații pentru a integra acel suport în designul unibody. Partea cea mai dificilă a fost să-și facă picioarele pentru a evita găurile pentru butoane și pentru a face ca micro USB să fie aliniat în centru la carcasă.

Pasul 8: Adunarea

Adunarea
Adunarea
Adunarea
Adunarea
Adunarea
Adunarea

După introducerea tuturor butoanelor la locul lor, am lipit fire scurte negre care uneau toate picioarele negative ale butoanelor între ele.

Apoi am lipit fire lungi roșii de la fiecare picior pozitiv pentru a mă conecta direct la placă.

Pentru a conecta firele la Arduino, am tăiat și lipit câteva capete Dupont și le-am acoperit cu tuburi termocontractabile.

Am conectat firele la placa urmând aceeași ordine ca în MIDI Fighter. De jos în sus și de la stânga la dreapta

Pasul 9: Utilizarea controlerului MIDI

Utilizarea controlerului MIDI
Utilizarea controlerului MIDI

Orice software de muzică (sau hardware adecvat) poate fi utilizat pentru a primi MIDI și a face muzică. Cele mai recomandate sunt Garage Band, Ableton Live și știu că există o grămadă de aplicații de instalat pe un telefon.

Toate aceste instrumente sunt utile pentru încărcarea sunetelor predefinite pentru toba degetelor, dar au fost create pentru scopuri mai mari. Aceste instrumente pot fi dificil de configurat pentru începători.

MIDI în browserul web

Pentru a face ceva mai aliniat cu acest proiect și simplitatea acestuia, am construit un instrument web complet axat pe controlere MIDI.

Punchy: implementare WebMIDI și WebAudio pentru controlere MIDI.

Poate citi mesaje MIDI pe orice browser care acceptă API-ul WebMIDI JavaScript. Apoi redă sunete într-un sintetizator (utilizând API-ul WebAudio) sau într-un sampler, încărcând sunete personalizate din orice pachet de sunete.

Configurați Ableton Live

Pentru a face controlerul MIDI să funcționeze cu Ableton Live, urmați acești pași simpli din documentația lor oficială.

Accesați Preferințe → Link MIDI și asigurați-vă că „Intrare” are „Urmărire” și „Telecomandă” ACTIVATĂ și că ieșirea are „Telecomandă” ACTIVATĂ, precum și menționat în ghid:

Recomandat: