Aangepaste Arduino MIDI Controller (6 / 14 stap)

Stap 6: Code tijd! Nou ja, bijna...

Arduino Uno

Voor de Uno hebt u te knipperen de ATmega16U2 * op het bord met Dimitri Diakopoulos van aangepaste firmware. Dit is een HEX-bestand dat u op de chip met behulp van Atmel's Flip software branden. De firmware is de input van de belangrijkste microprocessor van de Uno (ATmega328P) en zet deze om in de MIDI over USB-protocol.

(*) De belangrijkste microprocessor van de Uno (ATmega328P) heeft geen USB-mogelijkheden. In plaats daarvan is er een seriële verbinding op pin 0 en 1, met een tweede microprocessor (ATmega16U2, dit is de zwarte pleintje tussen de USB-connector en de TX en RX LEDs). Deze chip is geprogrammeerd als een USB-serieel converter en wordt herkend door de computer als een seriële of COM-poort. Door het uploaden van uw eigen firmware naar de chip, kan het vrijwel elk USB-apparaat, met inbegrip van een MIDI-apparaat.

Programmeren van het Uno en MIDI

Omdat de ATmega328P afhankelijk van de seriële verbinding tot stand gebracht door de ATmega16U2 is voor het uploaden van nieuwe Arduino schetsen, wijzigen u uw programma niet tijdens het uitvoeren van de MIDI-firmware. Dat is waarom wij zal schrijven ons programma eerst en branden de MIDI firmware na het uploaden van ons programma op de ATmega328.

U kunt de firmware van de MIDI op elk moment verwijderen en opnieuw installeren van de originele Arduino Uno seriële firmware.

Arduino Leonardo

De Leonardo moet alleen een speciale bibliotheek de Teensy MIDI-functies gebruiken op de Arduino.
Hier is hoe om dit te installeren:

Linux (Ubuntu)

  1. De officiële Arduino IDE 1.0.6 downloaden hier. U moet 1.0.6, andere versies zullen niet werken.
  2. Maak een nieuwe map in je home directory 'Executables' genoemd.
  3. Pak het arduino-1.0.6-linux64.tgz-bestand dat u zojuist hebt gedownload naar de nieuwe map met uitvoerbare bestanden.
  4. Download de Teensyduino installateur van hier.
  5. In de 'andere bestanden' sectie op dezelfde pagina, klik op 'Linux udev regels' en druk op CTRL + S om te slaan.
  6. De extensie .txt in de opslaan verwijderen dialoogvenster, en kies 'alle bestanden' in plaats van .txt voordat u opslaat (maar houd de .rules extensie). Opslaan in de map 'Downloads'.
  7. Toegankelijk te terminal venster met behulp van CTRL + ALT + T, of via het toepassingsmenu van uw.
  8. Dit commando de udev regels kopiëren naar de juiste map.
    sudo cp Downloads/49-teensy.rules /etc/udev/rules.d/
  9. Ga naar je map ' Downloads ' met behulp van uw browser van het dossier. Het teensyduino.64bit -bestand dat u hebt gedownload in stap 4 vlak tikken, en kies 'Eigenschappen'.
  10. Onder het tabblad 'Permissies' het selectievakje 'Allow bestand als programma uitvoeren'. Sluit dit venster.
  11. Dubbelklik op de teensyduino.64bit voor het uitvoeren van het installatieprogramma.
  12. Druk op 'volgende'.
  13. Vervolgens bladert u naar uw ' arduino-1.0.6 "map in uw map 'Executables'. Zodra u dit doet, moet de knop 'next' niet langer worden grijs weergegeven. Klik op 'volgende'.
  14. Selectievakje de 'MIDI' en andere bibliotheken, indien nodig voor uw project. (U kunt ook selecteren 'all' als u wilt). Klik vervolgens op 'volgende' weer.
  15. Klik vervolgens op 'Install'.
  16. Downloaden van de Fricklr 'TeeOnArdu'-software van GitHub. Aan de rechterkant is er een knop "Download ZIP".
  17. Pak het ZIP-bestand in uw downloadsomslag en de bestanden openen in uw browser van het dossier.
  18. Moet er een map met de naam 'TeeOnArdu-meester'. Dubbelklik op en kopieer de map 'TeeOnArdu'.
  19. Ga naar de map /home/Executables/arduino-1.0.6/hardware en langs de TeeOnArdu map hier.
  20. In de terminal (CTRL + ALT + T), ga naar de directory van de Arduino:
    cd Executables/arduino-1.0.6/
  21. Voer de Arduino software:
    . / arduino
  22. Selecteer in de Arduino software, onder 'Tools', 'TeeOnArdu (Leo op TeensyCore)' als je board.
  23. 'USB-Type' naar 'MIDI' instellen.
  24. Nu ben je klaar voor het gebruik van MIDI met uw Leonardo!

De instructies voor Windows en Mac zijn zeer vergelijkbaar, kunnen zij worden gevonden op de pagina van Adafruit. Merk op dat de versie anders is. De Adafruit tutorial Arduino 1.0.5 gebruikt, maar u moet 1.0.6. Ook niet de downloadverbindingen Adafruit gebruiken, maar de koppelingen in stap 1, 4 en 16 (hierboven genoemde) gebruiken.

MIDI-berichten

Voordat we beginnen met programmeren, laten we eerst proberen om te begrijpen wat MIDI.

MIDI (Musical Instrument Digital Interface) is ontwikkeld in 1982, en is een standaard voor communicatie tussen muziekinstrumenten, zoals de naam impliceert. De originele signalen werden overgedragen aan een ouderwetse DIN 41524 connector. Tegenwoordig hebben de meeste MIDI-apparaten een USB-aansluiting, om deze te verbinden met een computer. Echter, het protocol zelf is niet veranderd.

Een MIDI-bericht bestaat uit 3 bytes, en heeft 4 delen:

  1. Byte status: in ons geval, deze zal bestaan uit een 'kanaal bericht' en een 'kanaal'.
  2. Gegevensbyte 1: een 7-bits getal.
  3. Gegevensbyte 2: een andere 7-bits getal.

Voor onze MIDI-controller, we zullen worden met behulp van slechts 3 ander kanaal berichten: noteOn, noteOff en ControlChange.

  • NoteOn:
    kanaal bericht: 0b1001 * (0x9) **
    kanaal: 0b0000-0b1111 (0x0-0xF) gegevens 1: Noteer het nummer: 0-127
    gegevens 2: snelheid ***: 0-127
  • NoteOff:
    kanaal bericht: 0b1000 (0x8)
    kanaal: 0b0000-0b1111 (0x0-0xF)
    gegevens 1: Opmerking nr: 0-127
    gegevens 2: snelheid: 0-127
  • ControlChange:
    kanaal bericht: 0b1011 (0xB)
    kanaal: 0b0000-0b1111 (0x0-0xF)
    gegevens 1: controllernummer: 0-119 ***
    gegevens 2: controller waarde: 0-127

(*) 0b betekent binaire notatie.
(*) 0 x middelen hexadecimale notatie.
(***) De snelheid is hoe hard een sleutel raken.
(****) Controller nummers 120-127 zijn niet beschikbaar voor normale controllers, maar zijn gereserveerd voor de bedrijfsmodi.

Opmerking: er zijn andere berichten als wel (zie links onderaan deze stap). Bijvoorbeeld een pitch bend bericht heeft zijn eigen 4 eerste bits, en is niet een besturingsbericht van de verandering, het heeft geen controllernummer, zodat het een 14-bits waarde kunt opslaan. Dit wordt gebruikt door hogere einde MIDI-controllers, toen de hogere resolutie is vereist. Er kan alleen wel een maximum van 16 toonhoogte benders (1 voor elk van de 16 kanalen).

N oteOn en noteOff worden gebruikt voor de sleutels van een digitale piano, bijvoorbeeld. Hier worden de nummers van de nota met hun bijbehorende muzieknoten. De Midden-C (C4) wordt toegewezen aan 60, en 440Hz (A4) is toegewezen aan 69. We zullen deze opmerkingen gebruiken voor onze knoppen en schakelaars: noteOn wanneer de knop wordt gedrukt, en noteOff wanneer de knop wordt losgelaten. Ik adviseer gebruikend kanaal 1 (0b0000), maar wanneer u meer dan 128 knoppen hebt, moet u uiteraard een tweede kanaal. Gegevens 1 zullen de notitie nummer, het adres als je wil, van de knop, en Data 2 (de snelheid) maakt eigenlijk niet uit voor een knop (hoewel het doet als de gewenste druk/snelheid gevoelige pads bijvoorbeeld). We maken het gewoon 127 (100%).

Algemene notatie noteOn: 1001 cccc 0nnnnnnn 0vvvvvvv
waar cccc is het kanaal, is nnnnnnn het getal van de knop, en vvvvvvv de snelheid
Bijvoorbeeld: dringende knop 15 (0b00001111) zou dit signaal: 1001 0000 00001111 01111111

Algemene notatie noteOff: 1000 cccc 0nnnnnnn 0vvvvvvv
waar cccc is het kanaal, is nnnnnnn het getal van de knop, en vvvvvvv de snelheid
Bijvoorbeeld: loslaten van knop 15 (0b00001111) zou dit signaal: 1000 0000 00001111 01111111


ControlChange berichten worden gebruikt voor domeincontrollers die een breed scala van waarden, zoals een potentiometer, of een fader hebben kunnen. Deze waarde heeft 7 bits, dus het heeft een bereik van 0 tot 127 (0% - 100%). Hier is een lijst van alle domeincontrollers en hun bijbehorende rugnummers.

Algemene notatie ControlChange: 1011 cccc 0nnnnnnn 0vvvvvvv
waar cccc is het kanaal, is nnnnnnn het nummer van de controller, en vvvvvvv de waarde van de controller.
Bijvoorbeeld: draaien het volume (controllernummer 7 of 0b00000111) van kanaal 8 (0b1000) tot het maximum (127 of 0b01111111) stuurt dit bericht: 1011 1000 00000111 01111111

Meer informatie over het MIDI protocol kan gevonden worden op midi.org, in deze PDFof op Wikipedia.

Gerelateerde Artikelen

Arduino Midi-controller met een ZX afstand en gebaar Sensor

Arduino Midi-controller met een ZX afstand en gebaar Sensor

Welkom bij dit instructable over het bouwen van een zeer basic Midi-Controller met de SparkFun ZX afstand en gebaar Sensor. Dit instructable is onderdeel van een schoolwerk.Opmerking: Dit is geen codering tutorial. De definitieve code zal worden opge
Arduino MIDI Controller

Arduino MIDI Controller

Een MIDI-controller is een stuk van apparatuur die genereert en stuurt MIDI-data naar MIDI-apparaten. Kortom, hebt u knoppen op uw MIDI-controller, kun je deze knoppen om elk geluid dat je door muzieksoftware wilt programmeren (ex.: Ableton, Garage B
Arduino MIDI-controller - techshop met scarff boarduino

Arduino MIDI-controller - techshop met scarff boarduino

ik heb gekeken rond een aantal verschillende arduino oplossingen voor MIDI. Mijn project concept omvat meer dan 100 analoge ingangen dat elk gevoel van snelheid en voorzien van MIDI-uitgang.   Met behulp van de achtergrondinfo die ik kreeg van techsh
Aangepaste gebouwd MIDI Controller

Aangepaste gebouwd MIDI Controller

Im het aangaan van deze jnstructable de wedstrijd van muziekinstrumenten, als je het gelieve stemming voor mij cos ik graag een nieuwe synth! Als een elektronische muziek producent/performer, heb ik heel wat verschillende MIDI-controllers verzameld d
Arduino Midi-controller voor e-licktronic

Arduino Midi-controller voor e-licktronic

E-licktronic maken 3 verschillende blok te bouwen uw MIDI hardwaremeer informatie http://www.e-licktronic.com/en/
Bouwen van een Basic Midi Controller deel 1 - eenvoudig 3 effecten Pot (Potentiometer) Arduino Uno Midi-Controller (Serial-USB)... Snel, gemakkelijk en goedkoop!

Bouwen van een Basic Midi Controller deel 1 - eenvoudig 3 effecten Pot (Potentiometer) Arduino Uno Midi-Controller (Serial-USB)... Snel, gemakkelijk en goedkoop!

Hallo iedereen,Ik ben relatief nieuw voor de Arduino en zo hebben te kampen met mijn manier om mijn eigen midi-controllers. Er is een enorme hoeveelheid informatie verspreid over maar ik kon het niet vinden een eenvoudige tutorial voor zulk een eenvo
Aangepaste Midi Controller

Aangepaste Midi Controller

Deze tutorial toont je hoe maak je een aangepaste midi-controller. (ervaring met midi-controllers, eenvoudige schakelingen, veronderstelt eenvoudige c codage)Stap 1: Uitzoeken wat regelt u wilt op uw domeincontrollerHoe veel/wat onderdelen wilt u op
BeatSauce - een Laptop Midi Controller hybride

BeatSauce - een Laptop Midi Controller hybride

Voor een lange tijd heb ik gezocht om te bouwen van een aangepaste Midi-controller, en hoewel dit niet precies een nieuwe controller deed ik adem nieuw leven in sommige oude hardware.Met behulp van sommige delen die ik had opgelopen en minimale geld
Maak uw eigen goedkope USB MIDI-Controller of toetsenbord

Maak uw eigen goedkope USB MIDI-Controller of toetsenbord

Ik was op zoek naar een USB MIDI controller-apparaat (of interface) voor muziek toepassingen zoals piano of orgel toetsenbord of pedalboard. Na wat onderzoek wilde ik gaan naar een meer "zelfgemaakte" oplossing. Mijn keuze is tenslotte gericht o
Sugarcube MIDI Controller

Sugarcube MIDI Controller

Dit project is een draagbare, Arduino aangedreven, grid-gebaseerde MIDI controller die zelfstart opwaarts in allerlei apps te doen veel dingen met geluid. Het heeft 16 verlichte knoppen, gebruikt als zowel in- en uitgangen te geven van de controller
Knop MIDI-Controller Arcade

Knop MIDI-Controller Arcade

met een hardware-interface naar uw favoriete muziek / DJ / VJ-software kan echt open deuren in uw creativiteit. De meest voorkomende vorm van controle van de hardware op uw PC voor dergelijke toepassingen is dat een MIDI-gebaseerde controller.Een MID
Teensy Monster v1.0 / / DIY MIDI Controller

Teensy Monster v1.0 / / DIY MIDI Controller

Welkom op de Instructable Teensy Monster!Dit Instructable zal u helpen monteren uw Teensy Monster, begrijpen hoe te programmeren, en bieden veel tips voor het bouwen van een grote DIY controller.teensymonster.CCKoop uw Teensy Monster hier.https://git
Tekenen-het-zelf - MIDI controller met de geleidende inkt

Tekenen-het-zelf - MIDI controller met de geleidende inkt

'Draw It Yourself' is een MIDI-controller met de geleidende inkt als drukknoppen. Het is gebaseerd op de Arduino, en maakt gebruik van een capacitieve sensor (twee, eigenlijk) om te bepalen of de getekende knoppen zijn geraakt of niet.http://sanidanz
MIDI-Controller met toetsenborden

MIDI-Controller met toetsenborden

We bouwen vandaag de 400 sleutel MIDI-controller met behulp van een Arduino en computer toetsenborden!Voor de budget bewuste muziekproducenten daar is dit project een geweldige manier om het bouwen van een goedkope control board voor uw digitale audi