INHOUDSOPGAWE:

Bou van 'n Arduino MIDI -beheerder: 9 stappe (met foto's)
Bou van 'n Arduino MIDI -beheerder: 9 stappe (met foto's)

Video: Bou van 'n Arduino MIDI -beheerder: 9 stappe (met foto's)

Video: Bou van 'n Arduino MIDI -beheerder: 9 stappe (met foto's)
Video: 2022 #9 DOORVAREN IN DE WINTER | De Canicula 2024, Desember
Anonim

Hierdie instruksies is oorspronklik op 28 Junie 2020 op my blog gepubliseer

Ek bou dit graag met elektronika, en ek wou nog altyd iets bou met Arduino.

Een van die mees algemene builds vir beginners wat ek gevind het, was 'n MIDI -kontroleerder. 'N MIDI -kontroleerder is enige hardeware wat MIDI -data (Musical Instrument Digital Interface) na 'n toestel stuur om klanke te aktiveer en musiek te maak.

Ek het gevind dat baie implementerings ingewikkeld is, selfs vir beginners. Dit was baie frustrerend om uit te vind dat ek honderde reëls onleesbare kode moet gebruik. Of dat ek in sommige gevalle, onder andere voorbeelde, 'n weerstand moet soldeer.

Die projek

Deur my eie Arduino MIDI -kontroleerder te bou, was my bedoeling om 'n aangename projek te maak en die geraas op die laagste te hou. Iets wat enige beginner kan volg. Om dit te bereik, gebruik ek die MIDI Fighter 3D as 'n basisinspirasie en verwyder alle nie-noodsaaklike funksies.

Die totale koste van my projek was minder as $ 30, en die lys materiaal was baie kort (aangeslote skakels):

  • Arduino Leonardo (of kloon): tussen $ 10 en $ 20.
  • 16 x Sanwa -knoppies 24 mm (of kloon): tussen $ 1 en $ 2,50 per knoppie.
  • Soldeerbout
  • 22 AWG elektriese draad

Die Arduino -raad

Toe ek met hierdie projek begin, het ek gevind dat daar 'n klomp nuwe Arduino -modelle is (nie die honderde versoenbare borde nie). En almal bied effens verskillende funksies.

Ek moes MIDI -seine na 'n rekenaar stuur, en die eenvoudigste manier om dit te doen is via USB. Enige Arduino-bord wat gebaseer is op die ATmega32u4-mikrobeheerder, het ingeboude USB-kommunikasie.

Die amptelike Arduino -borde met inheemse USB -ondersteuning is Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Hierdie borde het geïntegreerde USB -ondersteuning, wat beteken dat hulle kan dien as 'n USB MIDI -toestel.

Ek het besluit om met 'n kloon van die Arduino Leonardo te gaan. Dit het genoeg insette vir hierdie projek en dit bevat ook opskrifte, wat dit makliker maak om drade aan te sluit/te ontkoppel.

Eerste stappe

Alhoewel ek stap vir stap verduidelik hoe ek die kode vir hierdie projek geïmplementeer het, kan u die finale weergawe aflaai.

Om kode op die bord te laai, moet u die Arduino IDE gebruik. Hulle het ook 'n baie nuttige webredakteur, maar hulle het 'n beperkte kwota per dag wat u kan saamstel.

Stap 1: Knipper die ingeboude LED

Dit is snaaks hoe die 'Hello World' in die hardeware -wêreld 'n LED knipper.

Dit was vir my 'n aangename verrassing om te ontdek dat Arduino Leonardo 'n ingeboude LED het wat u kan knip om u kode te toets. Op hierdie manier hoef u nie 'n eksterne kring op 'n broodbord met 'n LED en 'n weerstand te bou nie.

Kode:

Stap 2: Knipper die LED op handmatige invoer

Die volgende logiese stap was om dieselfde LED te knip wanneer ek 'n sein stuur. Ek het die plastiekdeksel van die een kant van 2 Dupont -drade verwyder en die ander kant aan die bord gekoppel:

  • Speld nommer 2: Een van die digitale insette (positief). Dit kan enige digitale pen wees.
  • Speld GND: Enige gemaalde pen (negatief).

Elke keer as ek by die blootgestelde ente van die drade aansluit, sluit ek die kring en kan ek gevolglik kode uitvoer

Elkeen van die 20 digitale penne op die Leonardo het 'n interne weerstand (standaard losgemaak) wat met INPUT_PULLUP geaktiveer kan word. Hou in gedagte dat 'n optel-invoer beteken dat die knoppie-status omgekeerd is:

  • HOOG as die kring oop is (die knoppie word NIE ingedruk nie).
  • LAAG as die kring gesluit is (die knoppie word ingedruk).

Kode:

Stap 3: Installeer die MIDIUSB -biblioteek

Met hierdie biblioteek kan 'n Arduino -bord met USB -vermoëns as 'n MIDI -instrument via USB optree. Raadpleeg die amptelike dokumentasie vir meer inligting.

Deur die Arduino IDE te gebruik, kan u ekstra Arduino Libraries installeer met behulp van die Library Manager:

  1. Maak die IDE oop en klik op die spyskaart "Skets", dan "Sluit biblioteek in" en dan "Bestuur biblioteke".
  2. Soek MIDIUSB en klik op Installeer.
  3. Sodra dit klaar is, moet 'n geïnstalleerde merker langs die MIDIUSB -biblioteek verskyn.
  4. Maak die biblioteekbestuurder toe.

Nou kan die Leonardo MIDI -boodskappe via USB stuur! Maar eers is 'n bietjie insig nodig oor hoe MIDI werk.

Hoe werk MIDI

"MIDI (Musical Instrument Digital Interface) is 'n standaard kommunikasieprotokol wat elektroniese musiekinstrumente, rekenaars en verwante klanktoestelle verbind om musiek te speel." - Wikipedia

Dit hanteer gebeurtenisboodskappe met data van die toonhoogte en die snelheid van die noot wat gespeel word, onder andere instruksies

In hierdie spesifieke projek stuur die insette van die 16 knoppies verskillende boodskappe via USB. Hierdie boodskappe kan op 'n rekenaar omgeskakel word in klank met behulp van enige geskikte sagteware soos GarageBand of Ableton Live.

Anatomie van 'n MIDI -boodskap

Om 'n MIDI -boodskap te stuur, gebruik ek die sendMIDI () -metode uit die MIDIUSB -biblioteek wat ek op stap 3 geïnstalleer het.

Hierdie metode kan 4 parameters ontvang:

  • Soort gebeurtenis: Dit kan 0x09 wees vir noot aan (speelnoot) of 0x08 vir noot af (ophou om noot te speel).
  • Nota Aan/Uit: Die tipe gebeurtenis gekombineer met die MIDI-kanaal (1-16). Ek gebruik slegs kanaal 1, so dit is óf 0x90 vir noot aan of 0x80 vir noot af.
  • Nootnommer: Elke noot het 'n gepaardgaande numeriese toonhoogte (frekwensieskaal).
  • Snelheid: Van 0 (geen snelheid) tot 127 (vinnigste).

Stap 4: Stuur 'n MIDI -boodskap

Ek het die MIDIUSB-biblioteek ingesluit, en in plaas daarvan om die ingeboude LED te knip, het ek 'n nota gestuur.

Kode:

⚠ Belangrik: Vanaf hierdie stap verander die Arduino in 'n MIDI USB -beheerder, en dit hou op om kode via USB te ontvang.

Volg hierdie stappe as u vasval in 'n posisie waar die Arduino nie meer geprogrammeer kan word nie:

  1. Hou die afgeronde reset -knoppie op die Arduino -bord ingedruk.
  2. Klik op Laai op die Arduino IDE.
  3. Laat die reset -knoppie los.
  4. Die opgedateerde kode sal na die bord opgelaai word.

Stap 5: Stuur 'n MIDI -boodskap vanaf elke knoppie

Stuur 'n MIDI -boodskap vanaf elke knoppie
Stuur 'n MIDI -boodskap vanaf elke knoppie

Die laaste stap was om elke toonhoogte met 'n knoppie in kaart te bring. Vir die 16 knoppies het ek 'n skaal van C2 tot E3b gedefinieer, wat die toonhoogtes is van 36 tot 51 in 'n ry van onder na bo en van links na regs. Kyk na hierdie lêer van Arduino Tutorials om te sien watter toonhoogte met elke noot ooreenstem.

Ek gebruik digitale penne van 2 tot 12 en analoog penne (gebruik dit as syfers) van A0 tot A4.

En so lyk die finale kode

Stap 6: Opstelling van kanale of banke (opsioneel)

Kanale of banke opstel (opsioneel)
Kanale of banke opstel (opsioneel)

As u meer knoppies wil byvoeg met die moontlikheid om van kanaal of bank te wissel, soos in die MIDI Fighter 3D (sien prent), het die Arduino Leonardo nog vier penne wat u kan gebruik. Die Arduino Leonardo het 20 digitale invoer-/uitvoerpenne, waarvan slegs 16 gebruik word om notas te speel.

U kan die ekstra knoppies gebruik om 'n veranderlike in die kode by te werk en die waarde daarvan as 'n parameter na die MidiUSB.sendMIDI -metode te stuur:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Stap 7: Die saak

Die geval
Die geval
Die geval
Die geval

Om hierdie projek eenvoudig te hou, was ek uiters kieskeurig oor die keuse van watter funksies dit insluit.

  • Slegs knoppies: 16 Sanwa-agtige arcade-knoppies, in 'n 4x4-rooster. Geen knoppies, geen skuifbalkies, geen faders of enige ander analoog insette nie.
  • Unibody case: Gebruik geen skroewe, moere, boute of gom vir die omhulsel of om die Arduino -bord vas te hou nie.
  • Alledaagse gereedskap: ek het byvoorbeeld die drade gesoldeer in plaas daarvan om 'n spesifieke draadknipper vir die arcade -knoppies te koop.

Unibody -ontwerp

Een van die uitdagings waarvoor ek te staan gekom het, was om 'n saak te ontwerp wat eenvoudig genoeg is om nie saamgestel te word nie en in drie keer in drie keer gedruk kan word.

Om te voorkom dat ek skroewe of gom gebruik, moes ek 'n omhulsel ontwerp wat die kleinste toegang tot die elektronika bied. My grootste inspirasie vir die omhulsel was die Mac Mini, wat 'n sirkelvormige gat onderaan het. Ek wou ook 'n skroefbare deksel daarvoor ontwerp, maar ek het besluit om dit oop te maak om die elektronika bloot te stel.

Laai die 3D -drukbare omhulsel (322 KB) af. Aanbevole instellings: PLA, 0,15 mm lae, 20% opvulling, ondersteun tenminste handhawers vir die afgeronde onderste gat, die Arduino -houers en die mikro -USB.

Hou 'n Arduino vas sonder skroewe

Die Leonardo het 4 gate om die bord in enige geskikte omhulsel te skroef, maar my idee was om dit maklik te maak om die bord uit die kas te verwyder en te verwyder.

Dit was maklik om 'n houer vir Arduino op Thingiverse te vind, en dit het my vyf herhalings geneem om die houer by die unibody -ontwerp te integreer. Die moeilikste was om sy bene te maak om die gate vir die knoppies te vermy, en om die mikro -USB in die middel van die saak te laat pas.

Stap 8: Die vergadering

Die Vergadering
Die Vergadering
Die Vergadering
Die Vergadering
Die Vergadering
Die Vergadering

Nadat ek al die knoppies ingesit het, het ek kort swart drade gesoldeer wat al die negatiewe bene van die knoppies tussen hulle verbind het.

Toe soldeer ek lang rooi drade van elke positiewe been om direk aan die bord te koppel.

Om die drade aan die Arduino te koppel, het ek 'n paar Dupont-ente gesny en gesoldeer en dit bedek met 'n krimpbuis.

Ek het die drade volgens dieselfde volgorde as in die MIDI Fighter met die bord verbind. Van onder na bo en van links na regs

Stap 9: Gebruik die MIDI -beheerder

Gebruik die MIDI -beheerder
Gebruik die MIDI -beheerder

Enige musieksagteware (of geskikte hardeware) kan gebruik word om MIDI te ontvang en musiek te maak. Die mees aanbevole is Garage Band, Ableton Live, en ek weet dat daar 'n klomp programme is om op 'n telefoon te installeer.

Al hierdie instrumente is nuttig om vooraf gedefinieerde geluide vir vinger tromme te laai, maar dit is gemaak vir groter doeleindes. Hierdie gereedskap kan moeilik wees vir beginners om op te stel.

MIDI in die webblaaier

Om iets meer in lyn te bring met hierdie projek en die eenvoud daarvan, het ek 'n webhulpmiddel gebou wat volledig gefokus is op MIDI -beheerders.

Punchy: WebMIDI- en WebAudio -implementering vir MIDI -beheerders.

Dit kan MIDI -boodskappe lees in enige blaaier wat die WebMIDI JavaScript API ondersteun. Dan speel dit klanke in 'n sintetiseerder (met behulp van die WebAudio API) of in 'n sampler, en laai dit persoonlike klanke uit enige klankpakket.

Stel Ableton Live op

Om die MIDI -beheerder met Ableton Live te laat werk, volg hierdie eenvoudige stappe uit hul amptelike dokumentasie.

Gaan na Voorkeure → Koppel MIDI en maak seker dat die "Invoer" "Spoor" en "Afstandsbediening" AAN het en dat die uitset "Afstandsbediening" AAN is, sowel as genoem in die gids:

Aanbeveel: