Taula de continguts:

Construir un controlador MIDI Arduino: 9 passos (amb imatges)
Construir un controlador MIDI Arduino: 9 passos (amb imatges)

Vídeo: Construir un controlador MIDI Arduino: 9 passos (amb imatges)

Vídeo: Construir un controlador MIDI Arduino: 9 passos (amb imatges)
Vídeo: How to Build Sim Racing Cockpit Works with Any Game/Console 2024, Desembre
Anonim

Aquest instructiu es va publicar originalment al meu bloc el 28 de juny de 2020

M’agrada construir coses que incloguin electrònica i sempre he volgut construir alguna cosa amb Arduino.

Una de les versions més habituals per a principiants que vaig trobar era un controlador MIDI. Un controlador MIDI és qualsevol maquinari que envia dades MIDI (Musical Instrument Digital Interface) a un dispositiu per activar sons i fer música.

Vaig trobar que moltes implementacions són complicades, fins i tot per a principiants. Va ser molt frustrant trobar que necessitava utilitzar centenars de línies de codi il·legible. O que necessito soldar una resistència en alguns casos, entre altres exemples.

El projecte

En construir el meu propi controlador MIDI Arduino, la meva intenció era fer un projecte agradable, mantenint el soroll al mínim. Alguna cosa que qualsevol principiant podria seguir. Per aconseguir-ho, vaig utilitzar el MIDI Fighter 3D com a inspiració bàsica i vaig eliminar totes les funcions no essencials.

El cost total del meu projecte era inferior a 30 dòlars i la llista de materials era molt curta (enllaços d’afiliació):

  • Leonardo Arduino (o clon): entre 10 i 20 dòlars.
  • 16 botons Sanwa de 24 mm (o clon): entre 1 $ i 2,50 $ per botó.
  • Soldador
  • Filferro elèctric de 22 AWG

La placa Arduino

Quan vaig començar aquest projecte, vaig trobar que hi havia un munt de nous models Arduino (sense incloure els centenars de plaques compatibles). I tots ells ofereixen funcions lleugerament diferents.

Necessitava enviar senyals MIDI a un ordinador i la manera més senzilla de fer-ho és mitjançant USB. Qualsevol placa Arduino basada en el microcontrolador ATmega32u4 té una comunicació USB integrada.

Les plaques Arduino oficials amb suport USB natiu són Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Aquestes plaques tenen suport USB integrat, cosa que significa que poden actuar com un dispositiu MIDI USB.

Vaig decidir anar amb un clon de l'Arduino Leonardo. Té prou entrades per a aquest projecte i també inclou capçaleres, cosa que facilita la connexió / desconnexió de cables.

Primers passos

Tot i que explicaré pas a pas com he implementat el codi d’aquest projecte, podeu descarregar la versió final.

Per pujar codi al tauler, heu d’utilitzar l’IDE Arduino. També tenen un editor web molt útil, però tenen una quota limitada de vegades al dia que podeu compilar codi.

Pas 1: parpellejar el LED integrat

És curiós com el "Hello World" del món del maquinari parpelleja amb un LED.

Va ser una bona sorpresa descobrir que Arduino Leonardo té un LED incorporat que podeu parpellejar per provar el vostre codi. D’aquesta manera no és necessari crear un circuit extern en una placa amb un LED i una resistència.

Codi:

Pas 2: parpellejar el LED a l'entrada manual

El següent pas lògic era parpellejar el mateix LED sempre que envio un senyal. Vaig treure la tapa de plàstic d’un extrem de 2 cables Dupont i vaig connectar l’altre extrem a la placa:

  • Pin número 2: una de les entrades digitals (positiva). Podria ser qualsevol pin digital.
  • Pin GND: qualsevol pin de terra (negatiu).

Ara, cada vegada que uneixo els extrems exposats dels cables, tanco el circuit i, per tant, puc executar codi

Cadascun dels 20 pins digitals del Leonardo té una resistència interna (desconnectada per defecte) que es pot habilitar mitjançant INPUT_PULLUP. Recordeu que una entrada desplegable significa que l'estat del botó s'inverteix:

  • ALTA quan el circuit està obert (el botó NO es prem).
  • BAIX quan el circuit està tancat (es prem el botó).

Codi:

Pas 3: Instal·lació de la biblioteca MIDIUSB

Aquesta biblioteca permet que una placa Arduino amb funcions USB funcioni com a instrument MIDI per USB. Consulteu la documentació oficial per obtenir més informació.

Mitjançant l'IDE Arduino, podeu instal·lar biblioteques Arduino addicionals mitjançant el gestor de biblioteques:

  1. Obriu l'IDE i feu clic al menú "Esbós", després a "Inclou biblioteca" i, a continuació, a "Gestiona les biblioteques".
  2. Cerqueu MIDIUSB i feu clic a Instal·la.
  3. Un cop acabada, hauria d'aparèixer una etiqueta instal·lada al costat de la biblioteca MIDIUSB.
  4. Tanqueu el gestor de biblioteques.

Ara, el Leonardo pot enviar missatges MIDI per USB. Però, primer, cal conèixer algunes coses sobre el funcionament del MIDI.

Com funciona MIDI

"MIDI (Musical Instrument Digital Interface) és un protocol de comunicació estàndard que connecta instruments musicals electrònics, ordinadors i dispositius d'àudio relacionats per reproduir música." - Viquipèdia

Maneja missatges d'esdeveniments amb dades del to i la velocitat de la nota reproduïda, entre altres instruccions

En aquest projecte específic, l'entrada dels 16 botons envia diferents missatges mitjançant USB. Aquests missatges es poden convertir en so en un ordinador mitjançant qualsevol programari adequat com GarageBand o Ableton Live.

Anatomia d’un missatge MIDI

Per enviar un missatge MIDI, he utilitzat el mètode sendMIDI () de la biblioteca MIDIUSB que he instal·lat al pas 3.

Aquest mètode pot rebre 4 paràmetres:

  • Tipus d'esdeveniment: pot ser 0x09 per a la nota On (reproduir nota) o 0x08 per a la nota Off (deixar de reproduir la nota).
  • Nota On / Off: el tipus d'esdeveniment combinat amb el canal MIDI (1-16). Només faig servir el canal 1, de manera que és 0x90 per a la nota On o 0x80 per a la nota Off.
  • Número de nota: cada nota té un to numèric associat (escala de freqüència).
  • Velocitat: de 0 (sense velocitat) a 127 (més ràpida).

Pas 4: enviant un missatge MIDI

Vaig incloure la biblioteca MIDIUSB i, en lloc de parpellejar el LED integrat, vaig enviar una nota.

Codi:

⚠ Important: a partir d’aquest pas, l’Arduino es converteix en un controlador MIDI USB i deixa de rebre codi per USB.

Quan us quedeu atrapats en una posició on l'Arduino ja no es pugui programar, seguiu aquests passos:

  1. Mantingueu premut el botó de restabliment arrodonit de la placa Arduino.
  2. Feu clic a Puja a l'IDE Arduino.
  3. Deixeu anar el botó de reinici.
  4. El codi actualitzat es carregarà al tauler.

Pas 5: enviant un missatge MIDI des de cada botó

S’envia un missatge MIDI des de cada botó
S’envia un missatge MIDI des de cada botó

L’últim pas va ser assignar cada llançament a un botó. Per als 16 botons, he definit una escala de C2 a E3b, que són els tons del 36 al 51 en una seqüència de baix a dalt i d'esquerra a dreta. Consulteu aquest fitxer de Tutorials Arduino per veure quin to correspon a cada nota.

He utilitzat pins digitals de 2 a 12 i pins analògics (que els utilitzen com a digitals) de A0 a A4.

I així és com es veu el codi final

Pas 6: configuració de canals o bancs (opcional)

Configuració de canals o bancs (opcional)
Configuració de canals o bancs (opcional)

En cas que vulgueu afegir més botons amb la possibilitat de canviar de canal o de banc, com al MIDI Fighter 3D (vegeu la imatge), l'Arduino Leonardo té quatre pins més que podeu utilitzar. L'Arduino Leonardo té 20 pins d'entrada / sortida digitals, dels quals només 16 s'utilitzen per reproduir notes.

Podeu utilitzar aquests botons addicionals per actualitzar una variable del codi i enviar-ne el valor com a paràmetre al mètode MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Pas 7: el cas

El cas
El cas
El cas
El cas

Per simplificar aquest projecte, vaig ser extremadament exigent a l’hora de triar quines funcions inclouen.

  • Només botons: 16 botons arcade semblants a Sanwa, en una quadrícula 4x4. Sense comandaments, ni control lliscant, ni faders ni cap altra entrada analògica.
  • Funda unibody: no utilitzeu cargols, femelles, perns ni cola per al recinte ni per subjectar la placa Arduino.
  • Eines quotidianes: per exemple, vaig soldar els cables en lloc de comprar un tallador de filferro específic per als botons arcade.

Disseny Unibody

Un dels reptes que vaig afrontar va ser dissenyar un estoig prou senzill que no necessita muntatge i es pot imprimir en 3D en una sola tirada.

Per evitar l'ús de cargols o cola, necessitava dissenyar un armari que proporcionés l'accés més petit a l'electrònica. La meva inspiració més gran per al recinte va ser el Mac Mini, que té un forat en forma de cercle a la part inferior. També volia dissenyar una tapa cargolable per a això, però vaig decidir deixar-la oberta per exposar l'electrònica.

Descarregueu la funda imprimible en 3D (322 KB). Configuració recomanada: PLA, capes de 0,15 mm, un 20% d'ompliment, suport per a aplicacions com a mínim per al forat inferior arrodonit, els suports Arduino i el micro USB.

Sostenint un Arduino sense cargols

El Leonardo té 4 forats per cargolar el tauler en qualsevol cas adequat, però la meva idea era facilitar l’afegit i la retirada de la caixa.

Trobar un suport de clip per a Arduino a Thingiverse va ser fàcil i em van costar cinc iteracions integrar aquest suport al disseny d’un únic cos. El més difícil va ser fer les potes per evitar els forats dels botons i fer que el micro USB estigués alineat al centre amb la caixa.

Pas 8: l'Assemblea

L’Assemblea
L’Assemblea
L’Assemblea
L’Assemblea
L’Assemblea
L’Assemblea

Després d’inserir tots els botons al seu lloc, he soldat cables negres curts que uneixen totes les potes negatives dels botons entre ells.

Després vaig soldar llargs cables vermells de cada pota positiva per connectar-los directament a la placa.

Per connectar els cables a l'Arduino, vaig tallar i soldar alguns extrems Dupont i els vaig cobrir amb tubs termoretràctils.

Vaig connectar els cables a la placa seguint el mateix ordre que al MIDI Fighter. De baix a dalt i d'esquerra a dreta

Pas 9: utilitzar el controlador MIDI

Utilització del controlador MIDI
Utilització del controlador MIDI

Qualsevol programari musical (o maquinari adequat) es pot utilitzar per rebre MIDI i fer música. Les més recomanades són Garage Band, Ableton Live, i sé que hi ha un munt d’aplicacions per instal·lar al telèfon.

Totes aquestes eines són útils per carregar sons predefinits per a bateria de dits, però es van fer per a propòsits més grans. Aquestes eines poden ser difícils de configurar per a principiants.

MIDI al navegador web

Per fer alguna cosa més alineada amb aquest projecte i la seva simplicitat, vaig construir una eina web completament centrada en els controladors MIDI.

Punchy: implementació WebMIDI i WebAudio per a controladors MIDI.

Pot llegir missatges MIDI en qualsevol navegador que admeti l'API JavaScript WebMIDI. A continuació, reprodueix sons en un sintetitzador (mitjançant l'API WebAudio) o en un sampler, carregant sons personalitzats des de qualsevol paquet de sons.

Configureu Ableton Live

Per fer funcionar el controlador MIDI amb Ableton Live, seguiu aquests senzills passos des de la seva documentació oficial.

Aneu a Preferències → Enllaça MIDI i assegureu-vos que la "Entrada" té "Pista" i "Remot" ACTIVAT i que la sortida té "Remot" ACTIVAT, així com s'esmenta a la guia:

Recomanat: