Anpassade Arduino MIDI Controller (6 / 14 steg)

Steg 6: Kod tid! Tja, nästan...

Arduino Uno

För Uno måste du flash ATmega16U2 * på brädet med Dimitri Diakopoulos anpassade firmware. Detta är en HEX-fil du bränna på chip med Atmel's Flip programvara. Firmware tar input från den huvudsakliga mikroprocessorn för Uno (ATmega328P) och omvandlar den till MIDI över USB-protokollet.

(*) Den huvudsakliga mikroprocessorn för Uno (ATmega328P) har ingen USB-kapacitet. I stället, den har en seriell anslutning på pin 0 och 1, med en andra mikroprocessor (ATmega16U2, detta är en liten svart ruta mellan USB-kontakten och TX och RX lysdioder). Detta chip är programmerad för att vara en USB-seriell konverterare och känns igen av datorn som en följetong eller COM-port. Genom att ladda upp din egen firmware till chip, kan det vara praktiskt taget någon USB-enhet, inklusive en MIDI-enhet.

Programmering av Uno och MIDI

Eftersom ATmega328P förlitar sig på seriell anslutning av ATmega16U2 för att ladda upp nya Arduino skisser, kan inte du ändra ditt program när du kör MIDI firmware. Det är varför vi kommer att skriva vårt program först, och bränna MIDI firmware efter uppladdning vårt program till ATmega328.

Du kan ta bort MIDI firmware när som helst och installera om den ursprungliga Arduino Uno seriell firmware.

Arduino Leonardo

Leonardo behöver bara ett särskilt bibliotek att använda Teensy MIDI-funktionerna på Arduino.
Här är hur du installerar:

Linux (Ubuntu)

  1. Ladda ner officiella Arduino IDE 1.0.6 här. Du behöver 1.0.6, andra versioner kommer inte arbete.
  2. Skapa en ny mapp i din hemkatalog som kallas "Körbara".
  3. Extrahera filen arduino-1.0.6-linux64.tgz du just laddat ned till den nya körbara filer-mappen.
  4. Data överför det Teensyduino installerat här.
  5. I avsnittet "andra filer" på samma sida, klicka på "Linux udev regler", och slå CTRL + S för att spara.
  6. Ta bort filnamnstillägget .txt i spara dialog, och välja "alla filer" i stället för .txt innan du sparar (men hålla tillägget .rules). Spara den i mappen "Downloads".
  7. Öppna ett terminalfönster med CTRL + ALT + T, eller via din programmenyn.
  8. Kör kommandot Kopiera reglerna i udev till rätt mapp.
    sudo cp nedladdningar/49-teensy.rules /etc/udev/rules.d/
  9. Gå till du hämtningsmappen använda din fil webbläsare. Högerklicka på filen teensyduino.64bit som du hämtade i steg 4 och välj "Egenskaper".
  10. Markera rutan "Tillåt filen som program" under fliken "Behörigheter". Stäng sedan fönstret.
  11. Dubbelklicka på teensyduino.64bit för att köra installationsprogrammet.
  12. Tryck på "nästa".
  13. Bläddra till din "arduino-1.0.6" mapp inuti mappen "Executables". När du gör detta, bör 'Nästa'-knappen inte längre vara nedtonad. Klicka på "nästa".
  14. Markera rutan "MIDI" och andra bibliotek, om nödvändigt för ditt projekt. (Du kan också välja "alla" om du vill). Klicka sedan på "nästa" igen.
  15. Klicka på "Installera".
  16. Ladda ner Fricklrs "TeeOnArdu"-programvara från GitHub. På höger sida finns det en knapp 'Hämta ZIP'.
  17. Extrahera ZIP-filen i mappen Hämtade filer och öppna filerna i webbläsaren filen.
  18. Det bör finnas en mapp som heter "TeeOnArdu-herre". Dubbelklicka på den och kopiera katalogen "TeeOnArdu".
  19. Gå till mappen /home/Executables/arduino-1.0.6/hardware och förbi mappen TeeOnArdu här.
  20. I terminalen (CTRL + ALT + T), gå till katalogen Arduino:
    CD Executables/arduino-1.0.6/
  21. Kör programmet Arduino:
    . / arduino
  22. Inuti den Arduino programvaran, under "Verktyg", välj "TeeOnArdu (Leo på TeensyCore)" som din styrelse.
  23. Ange "USB-typ" till "MIDI".
  24. Nu är du klar att använda MIDI med din Leonardo!

Instruktionerna för Windows och Mac är mycket lika, finns de på sidan Adafruit. Observera att versionen är olika. Den Adafruit läraren använder Arduino 1.0.5, men du behöver 1.0.6. Också, inte använda den Adafruit data överför golfbanan, men Använd länkarna i steg 1, 4 och 16 (se ovan).

MIDI-meddelanden

Innan vi börjar programmering, låt oss först försöka förstå vad MIDI är.

MIDI (Musical Instrument Digital Interface) togs fram 1982 och är en standard för kommunikation mellan musikinstrument, som namnet antyder. De ursprungliga signalerna överfördes över en gammaldags buller 41524 connector. De flesta MIDI-enheter har numera, en USB-kontakt, Anslut dem till en dator. Men har inte själva protokollet förändrats.

Ett MIDI-meddelande består av 3 byte, och har 4 delar:

  1. Status Byte: i vårt fall, detta kommer att bestå av en "kanal meddelande" och en "kanal".
  2. Databyte 1: en 7-bitars nummer.
  3. Databyte 2: en annan 7-bitars tal.

För vår MIDI-controller, vi kommer att använda endast 3 olika kanaler meddelanden: noteOn, noteOff och ControlChange.

  • NoteOn:
    kanal meddelande: 0b1001 * (0x9) **
    kanal: 0b0000-0b1111 (0x0-0xF) data 1: anteckna: 0-127
    data 2: hastighet ***: 0-127
  • NoteOff:
    kanal meddelande: 0b1000 (0x8)
    kanal: 0b0000-0b1111 (0x0-0xF)
    data 1: Observera numer: 0-127
    data 2: hastighet: 0-127
  • ControlChange:
    kanal meddelande: 0b1011 (0xB)
    kanal: 0b0000-0b1111 (0x0-0xF)
    data 1: styrenhetsnummer: 0-119 ***
    data 2: controller värde: 0-127

(*) 0b innebär binära notation.
(*) 0 x medel hexadecimal notation.
(***) Hastigheten är hur hårt en nyckel är drabbade.
(****) Controller nummer 120-127 är inte tillgängliga för normala styrenheter, men är reserverade för driftslägen.

Obs: det finns andra meddelanden som wel (se länkar längst ned i detta steg). Till exempel ett pitch bend meddelande har sin egen 4 första bitarna, och är inte ett kontrollmeddelande förändring, den har inget controller-nummer, så det kan lagra ett 14-bitars värde. Detta används av högre slutet MIDI controllers, när högre upplösning krävs. Dock kan det bara finnas högst 16 pitch benders (1 för vart och ett av de 16 kanalerna).

N oteOn och noteOff som används för nycklarna till en digital piano, till exempel. Här är Obs siffrorna med deras motsvarande musiknoter. Den mellersta C (C4) mappas till 60, och 440Hz (A4) mappas till 69. Vi kommer att använda dessa anteckningar för våra knappar och switchar: noteOn när knappen trycks, och noteOff när knappen släpps. Jag rekommenderar att du använder kanal 1 (0b0000), men när du har mer än 128 knappar, måste naturligtvis en andra kanal. Data 1 kommer att notera nummer, adress om ni vill, om knappen och Data 2 (hastighet) spelar egentligen ingen roll för en knapp (även om det gör om du vill ha tryck/velocity känsliga kuddar till exempel). Vi ska bara göra det 127 (100%).

De allmänna notation noteOn: 1001 cccc 0nnnnnnn 0vvvvvvv
där cccc är kanalen, är Hej numret på den knappen och vvvvvvv hastighet
Till exempel: du trycker på knappen 15 (0b00001111) skulle skicka detta meddelande: 1001 0000 00001111 01111111

De allmänna notation noteOff: 1000 cccc 0nnnnnnn 0vvvvvvv
där cccc är kanalen, är Hej numret på den knappen och vvvvvvv hastighet
Till exempel: släppa knappen 15 (0b00001111) skulle skicka detta meddelande: 1000 0000 00001111 01111111


ControlChange meddelanden används för styrenheter som kan ha ett brett utbud av värden, som en potentiometer eller en fader. Detta värde har 7 bitar, så det har intervallet 0 till 127 (0% - 100%). Här är en lista över alla styrenheter och deras motsvarande nummer.

De allmänna notation ControlChange: 1011 cccc 0nnnnnnn 0vvvvvvv
Hej är där cccc är kanalen, antalet controller, och vvvvvvv värdet av registeransvarige.
Till exempel: svarvning volymen (controller nummer 7 eller 0b00000111) av kanal 8 (0b1000) högsta (127 eller 0b01111111) kommer att sända detta budskap: 1011 1000 00000111 01111111

Mer information om MIDI-protokollet kan hittas på midi.org, i denna PDF, eller på Wikipedia.

Se Steg
Relaterade Ämnen

Arduino MIDI-controller med en ZX avstånd och gest Sensor

Välkommen till detta instructable om hur man bygger en mycket grundläggande MIDI-Controller med SparkFun ZX avståndet och gest Sensor. Detta instructable är del av en skoluppgift.Obs: Detta är ingen kodning handledning. Den final koden kommer att ing...

Arduino MIDI-controller - techshop använder scarff boarduino

jag har tittat på ett antal olika arduino lösningar för MIDI. Mitt projekt omfattar över 100 analoga ingångar att varje känsla hastighet och ge MIDI-utgången. Med den bakgrunden info jag fick från techshop klass beslutat jag att ställa in det först m...

Arduino MIDI Controller

En MIDI-controller är någon utrustning som genererar och sänder MIDI-data till MIDI-aktiverade enheter. Kort sagt, om du har knappar på din MIDI-controller, kan du programmera dessa knappar till alla ljud du vill ha via musikaliska programvara (ex.:...

E-licktronic Arduino MIDI-controller

E-licktronic skapa 3 olika block att bygga din MIDI-hårdvaraMer information http://www.e-licktronic.com/en/...

Bygga en grundläggande MIDI-Controller del 1 - lätt 3 effekter Pot (Potentiometer) Arduino Uno MIDI-Controller (Serial-USB)... Snabb, enkel och billig!

Hej alla,Jag är relativt ny på Arduino och så har kämpat mitt sätt att göra min egen MIDI-controllers. Det finns en enorm mängd information runt om men jag kunde inte hitta en enkel handledning för sådan en enkel enhet; så här går.Min ursprungliga av...

Anpassade MIDI-Controller

Denna handledning visar hur man gör en egen MIDI-controller. (förutsätter erfarenhet med MIDI-controllers, enkla kretsar, enkla c kodning)Steg 1: Räkna ut vad styr du vill på din controllerHur många/vad delar vill du på handkontrollen?Vill du reglage...

Arcade-knappen MIDI-Controller

att ha en hårdvara gränssnitt till din favorit musik / DJ / VJ programvara kan verkligen öppna upp dörrar i din kreativitet. Mest utbredda form av hårdvara kontroll till datorn för sådana program är en MIDI controller.En MIDI-controller kan skicka oc...

Teensy Monster v1.0 / / DIY MIDI-Controller

Välkommen till Instructable Teensy Monster!Detta Instructable hjälper dig montera din Teensy Monster, förstå hur man kan programmera den och ge många tips för att bygga en stor DIY controller.teensymonster.ccKöp din Teensy Monster här.https://github....

Beatfly: Gör en lysande luftskepp och kontrollera den med din röst, tangentbord, MIDI-Controller, Garageband fil, iPhone, Flash och mycket mer! [Mac OSX]

Jag har arbetat med flera projekt med hjälp av luftskepp och ballonger, och här vill jag dela en av dem, Beatfly. Detta är en lysande luftskepp kontrolleras med olika gränssnitt såsom röst, tangentbord, MIDI-Controller, Garageband MIDI-fil, iPhone oc...

Rita själv - MIDI controller med ledande bläck

"Rita det själv" är en MIDI-controller som använder ledande bläck som knappar. Den bygger på Arduino, och använder en kapacitiv sensor (två, faktiskt) att avgöra huruvida ritade knapparna är beröring eller inte.http://sanidanz.tumblr.com/drawity...

Konvertera en räddade leksak till en MIDI-controller

i detta Instructable, jag kommer att gå igenom processen att konvertera ett räddade buller-making barnleksak till ett faktiskt användbara musikaliska instrument med MIDI! Ta en stund att bara kasta en blick över titlarna på stegen i detta Instructabl...

Arduino MIDI fot Pedal tangentbord

UrsprungMin pappa är en musiker. Han kan spela många olika instrument. Men han bara har två armar, men han har också ben! Det är när vi bestämde oss att vi vill återanvända pedaler från en gammal orgel och omvandla dem till en arduino powered MIDI-ke...

Sockerbit MIDI Controller

Detta projekt är en bärbar, Arduino-powered, grid-baserad MIDI-controller som startar upp till olika apps att göra massor av saker med ljud. Den har 16 bakgrundsbelysta knappar, används som både in- och utgångar för att ge registeransvarige lite visu...

MIDI-Controller med tangentbord

Idag bygger vi 400 nyckeln MIDI-controller med hjälp av en Arduino och dator tangentbord!För budget medvetna musik producenterna ute är detta projekt ett bra sätt att bygga en billig kontroll styrelse för din digital audio workstation.Eller om du bar...

Flamma kontrollerade MIDI-Controller

En stor fråga i världen av digital musikproduktion är att hålla det analog värme (som genljöd från rullbandspelare system och rör) i dagens moderna digitala musik. Många svär att analoga system har ett ljud som aldrig kan replikeras av bits, och hopp...

Arkad stil DJ MIDI-controller

>>> detta är inte helt klar ännu som jag spänt lite av banan. Jag ska uppdatera den instructable och ladda upp en video när det sorteras <<<Jag har varit DJ ungefär 10 år nu, och under de senaste har jag bytte bra gamla gammaldags vinyl...

Makey Makey MIDI-controller

Makey makey är en mikrokontroller som fungerar som ett tangentbord när den är ansluten till datorn. Jag omprogrammerade det så att den skickar MIDI-noter. Varför? Eftersom när du använder ett tangentbord till kontroll saker har fönstret du styr vara...

Gör din egen billiga USB-MIDI-Controller eller tangentbord

Jag letade efter en USB MIDI-controller-enheten (eller gränssnitt) för musikprogram som piano eller orgel tangentbord eller pedalboard. Efter en del forskning ville jag gå till en mer "hemlagad" lösning. Mitt val har äntligen varit inriktad på e...

BeatSauce - en Laptop Midi Controller Hybrid

Länge jag har velat bygga en egen MIDI-controller, och medan det är exakt en ny domänkontrollant jag gjorde andas nytt liv i några gamla hårdvara.Använder vissa delar som jag hade samlat och minimal fickpengar på nya jag lyckades bygga a... en... DJ...