Sugarcube MIDI Controller (27 / 38 stap)

Stap 27: Midi Out


Dit instrument is voornamelijk een MIDI-apparaat, dus moeten we bouwen een MIDI out. Er zijn twee manieren om dit te doen (en in de loop van dit project ik heb een en vervolgens overgeschakeld naar de andere):

MIDI-uitgang via een 5 pin DIN connector (zie fig 1)
MIDI uitgang via USB (dit is wat ik uiteindelijk afgerekend op)

Een van deze opties is prima, ik koos voor USB, omdat ik niet wil hoeft te dragen een speciale MIDI naar USB-kabel altijd. Als je hebt een heleboel synthesizers die ontvangen wordt een 5-pin MIDI input, het wellicht handiger voor u te gebruiken van de 5 Penaansluiting (het is ook een beetje makkelijker). Ik ga via beide processen hieronder:

5 pins aansluiting:

Een weerstand van 220 ohm aan pin 4 van de MIDI-aansluiting soldeer en verbinding met 5V van de Arduino. Soldeer een draad tussen MIDI pin 2 en grond. Soldeer een draad tussen MIDI pin 5 en digitale pin 1 (TX).

MIDI over USB:

MIDI over USB is een beetje lastig. Idealiter wij zou kunnen sturen MIDI uit de USB-poort al aangesloten op de Arduino, maar dit blijkt te zijn meer moeite dan het waard naar mijn mening. U kunt lezen een beetje over verschillende oplossingen hier. In plaats daarvan vond ik een echt grote tutorial waarin wordt uitgelegd hoe u een goedkope MIDI naar USB-kabeluit elkaar te halen, nieuwe verbindingen met het soldeer, en plooi het in het terrarium van uw project met uw Arduino, maken een secundaire MIDI-USB-uitgang. Het proces wordt uitgelegd echt goed op de blog van de Shiftmore, maar de MIDI naar USB-kabel ontving ik van amazon was een beetje anders, dus ik het proces weer hier beschrijven zal.

Verwijder de plastic behuizing van de MIDI naar USB-kabel en unsolder van de verbindingen met de kabels aan beide zijden (Fig. 8). De USB-verbindingen staan hier, maak de volgende aansluitingen:

5V tot +
DP tot D +
DM naar D-
VSS-

Zoals u in vijgen 9 en 10 zien kunt, gebruikte ik een pieced van première van bestuur om de verbinding met de USB-aansluiting maken. Aan de andere kant van de MIDI naar USB-bestuur, door de volgende verbinding met de Ardunio te maken:

IN-tot digitale Pin 1 (TX)
GND op grond van de Arduino

Testen het uit:

Laden van de firmware hieronder op de Arduino (ook in het bijgevoegde bestand), het zal het toetsenbord veranderen in een eenvoudige MIDI-apparaat: elk van de knoppen te drukken zal veroorzaken de knop aan het licht omhoog en leiden tot een MIDI-noot. Van de Arduino seriële verbinding verbreken en sluit de MIDI-uitgang naar een MIDI-instrument of uw computer om te horen van de MIDI-noten. U ziet ook het gele lampje van de MIDI IN op de MIDI naar USB bestuur inschakelen met elke noot. Meer info over het programmeren van de Arduino te sturen MIDI kan hier worden gevonden.

 //basic midi test //by Amanda Ghassaei 2012 /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * */ //this firmware will cause the buttons to light up momentarily while they are pressed. //pin connections int ledLatchPin = 6; int ledClockPin = 5; int ledDataPin = 7; int buttonLatchPin = 4; int buttonClockPin = 3; int buttonDataPin = 2; //looping variables byte i; byte j; byte k; //storage for led states, 4 bytes byte ledData[] = {0, 0, 0, 0}; //storage for buttons, 4 bytes byte buttonCurrent[] = {0,0,0,0}; byte buttonLast[] = {0,0,0,0}; byte buttonEvent[] = {0,0,0,0}; byte buttonState[] = {0,0,0,0}; //button debounce counter- 16 bytes byte buttonDebounceCounter[4][4]; //MIDI variables int velocity = 100; int noteON = 144; int MIDIoffset = 60; void setup() { DDRD = 0xFA;//set pins D7-D4 as output, D2 as input Serial.begin(31250);//set midi baud rate } // buttonCheck - checks the state of a given button. //this buttoncheck function is largely copied from the monome 40h firmware by brian crabtree and joe lake void buttonCheck(byte row, byte index) { if (((buttonCurrent[row] ^ buttonLast[row]) & (1 << index)) && // if the current physical button state is different from the ((buttonCurrent[row] ^ buttonState[row]) & (1 << index))) { // last physical button state AND the current debounced state if (buttonCurrent[row] & (1 << index)) { // if the current physical button state is depressed buttonEvent[row] = 1 << index; // queue up a new button event immediately buttonState[row] |= (1 << index); // and set the debounced state to down. } else{ buttonDebounceCounter[row][index] = 12; } // otherwise the button was previously depressed and now // has been released so we set our debounce counter. } else if (((buttonCurrent[row] ^ buttonLast[row]) & (1 << index)) == 0 && // if the current physical button state is the same as (buttonCurrent[row] ^ buttonState[row]) & (1 << index)) { // the last physical button state but the current physical // button state is different from the current debounce // state... if (buttonDebounceCounter[row][index] > 0 && --buttonDebounceCounter[row][index] == 0) { // if the the debounce counter has // been decremented to 0 (meaning the // the button has been up for // kButtonUpDefaultDebounceCount // iterations/// buttonEvent[row] = 1 << index; // queue up a button state change event if (buttonCurrent[row] & (1 << index)){ // and toggle the buttons debounce state. buttonState[row] |= (1 << index); } else{ buttonState[row] &= ~(1 << index); } } } } void shift(){ for (i=0;i<4;i++){ buttonLast[i] = buttonCurrent[i]; byte dataToSend = (1 << (i+4)) | (15 & ~ledData[i]); // set latch pin low so the LEDs don't change while sending in bits digitalWrite(ledLatchPin, LOW); // shift out the bits of dataToSend shiftOut(ledDataPin, ledClockPin, LSBFIRST, dataToSend); //set latch pin high so the LEDs will receive new data digitalWrite(ledLatchPin, HIGH); //once one row has been set high, receive data from buttons //set latch pin high digitalWrite(buttonLatchPin, HIGH); //shift in data buttonCurrent[i] = shiftIn(buttonDataPin, buttonClockPin, LSBFIRST) >> 3; //latchpin low digitalWrite(buttonLatchPin, LOW); for (k=0;k<4;k++){ buttonCheck(i,k); } } } void updateLEDs(){ //update the leds to reflect hte state of the buttons for (j=0;j<4;j++){ ledData[j] = buttonState[j]; } } void MIDImessage(int command, int MIDInote, int MIDIvelocity) {//send s a MIDI message Serial.write(command);//send note on or note off command Serial.write(MIDInote);//send pitch data Serial.write(MIDIvelocity);//send velocity data } void sendMIDI(){ for (byte a=0;a<4;a++){ for (byte b=0;b<4;b++){ if (buttonEvent[a]&(1<<b)){ buttonEvent[a]&=~(1<<b);//zero button event if (buttonState[a]&(1<<b)){ MIDImessage(noteON,(MIDIoffset+a*5+b),100); } else{ MIDImessage(noteON,(MIDIoffset+a*5+b),0); } } } } } void loop() { shift(); updateLEDs(); sendMIDI(); } 

Gerelateerde Artikelen

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
MIDI-Controller Arcade

MIDI-Controller Arcade

Ik ben zeker dat u deze coole video's van mensen die jammen op een doos met een bos van knoppen op het hebben gezien. Nou, vandaag, zal ik je laten zien hoe u ook kunt verdienen een vak waarmee u Jam kunt maken. < Geïnspireerd door de MIDI Fighter Cl
Aangepaste Arduino MIDI Controller

Aangepaste Arduino MIDI Controller

Hallo, en welkom op dit instructable over het bouwen van een aangepaste, goedkoop en makkelijk USB MIDI-controller, gebaseerd op de Arduino. Het beste nieuws: geen gedoe met USB-naar-MIDI interfaces of softwaretools zoals Haarloze MIDI, gewoon plug '
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
Zelfgemaakte MPC-stijl MIDI controller

Zelfgemaakte MPC-stijl MIDI controller

1.0 INLEIDINGIk besloot om te bouwen en ontwerpen van een midi-controller die wordt gebruikt om opdrachten te verzenden naar een computer met een DAW (digital audio workstation) om te controleren van verschillende parameters binnen het. De DAW ik geb
U Rock Guitar midi controller met Bluetooth BLE en oplaadbare batterij

U Rock Guitar midi controller met Bluetooth BLE en oplaadbare batterij

In deze tutorial zal ik u tonen hoe te schakelen gitaar u Rock gitaar in een midi-controller voor Bluetooth 4.0 met oplaadbare batterij. De oplossing was simpel maar moest denken.Dit systeem is getest met de iMac, iPad en iPhoneHet materiaal dat we n
Makey Makey MIDI-controller

Makey Makey MIDI-controller

Makey makey is een microcontroller die als een toetsenbord fungeert wanneer deze aangesloten op uw computer. Ik geherprogrammeerd het zodat het stuurt midi notities. Waarom? Omdat wanneer u een toetsenbord controle dingen gebruikt heeft het venster d
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
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
Omzetten van een geredde speelgoed in een MIDI-controller

Omzetten van een geredde speelgoed in een MIDI-controller

In dit Instructable, zal ik u door het proces van het omzetten van een geredde lawaai maken Kinder speelgoed in een eigenlijk nuttig muziekinstrument met behulp van MIDI lopen! Neem een moment om gewoon blik op de titels van de stappen in dit Instruc
Arcade stijl DJ MIDI-controller

Arcade stijl DJ MIDI-controller

>>> Dit is niet helemaal klaar nog als ik een beetje van het circuit omhoog hield. Ik update de instructable en een video uploaden wanneer het wordt gesorteerd op <<<Ik heb DJ voor ongeveer 10 jaar nu, en voor de laatste paar heb ik goed
Vlam gecontroleerde MIDI Controller

Vlam gecontroleerde MIDI Controller

Een groot probleem in de wereld van digitale muziekproductie is het bijhouden van die analoge warmte (dat resoneerde uit reel-to-reel systemen en buizen) in moderne digitale muziek. Veel zweren dat analoge systemen hebben een geluid dat nooit kan wor
Laser Midi-Controller - (Laser geactiveerde Midi Keyboard)

Laser Midi-Controller - (Laser geactiveerde Midi Keyboard)

Het doel van het project:"Het bouwen van een laser geactiveerde midi-controller, met behulp van standaard elektrische componenten en een gerecycled midi keyboard."Stap 1.Vind een gerecycleerde midi keyboard / controller.Stap 2.Construeer een las