MIDI lichtshow (6 / 7 stap)

Stap 6: Codering concepten


Hier is de eerste grote brok van onze code.

 //These are the midi commands to interact with the arduino byte midi_on = 0x90; byte midi_off = 0x80; /* These global variables are used specifically with the check_midi() function listed later in the program */ byte location_byte; byte in_note; byte in_volume; 

We stellen eerst een constante variabele voor het bericht van de midi_on en de midi_off-bericht zodat we snel naar hen in de code verwijzen kunnen. Vervolgens maken we 3 byte variabelen voor de inbreng van de midi-functies als u eerder gemerkt.

Vervolgens zijn de midi-functies weer:

Hier is de internet-functie voor het schrijven van de worp void midi_send (byte cmd, byte opmerking, byte volume) {digitalWrite(3,LOW); Serial.write(cmd); Serial.write(Note); Serial.write(volume); } //Here is the internet function for writing out the pitch void midi_send(byte cmd, byte note, byte volume) { digitalWrite(3,LOW); Serial.write(cmd); Serial.write(note); Serial.write(volume); } //reads the serial port to see if there is any incoming information boolean check_midi() { while (Serial.available() >= 3)//when three bytes available { if (Serial.available()) { digitalWrite(3,HIGH); location_byte = Serial.read();//read first byte in_note = Serial.read();//read next byte in_volume = Serial.read();//read final byte return true; } } } 

Hier zijn de functies die we al eerder zagen.  Ze worden gekopieerd gewoon omwille van de continuïteit. Bewegen op...

 //arduino specific setup void setup () { Serial.begin(31250); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5, OUTPUT); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5, LOW); } 

Dit is een zeer belangrijk onderdeel van de Arduino.  Dit stelt de baud-rate, hetzij van de prijs waartegen de Arduino leest de bits die worden verzonden naar de wisselkoers die midi systemen vereisen.  Volgende daarin pinnen 3, 4 en 5 naar output pinnen.  Tot slot schrijft het de pennen als u wilt uitschakelen of laag.

VOID light_on() {int switch_note = in_note % 12; switch(switch_note) {//C geval 0: digitalWrite(3,HIGH); break; case //D 2: digitalWrite(4,HIGH); break; case //E 4: digitalWrite (5, hoge); break; //F case 5: digitalWrite(3,HIGH); digitalWrite(4,HIGH); break; //G geval 7: digitalWrite(4,HIGH); digitalWrite(5,HIGH); break; //A zaak 9: digitalWrite(3,HIGH); digitalWrite (5 HOGE); breken; B case 11: void light_on() { int switch_note = in_note % 12; switch(switch_note) { //C case 0: digitalWrite(3,HIGH); break; //D case 2: digitalWrite(4,HIGH); break; //E case 4: digitalWrite(5, HIGH); break; //F case 5: digitalWrite(3,HIGH); digitalWrite(4,HIGH); break; //G case 7: digitalWrite(4,HIGH); digitalWrite(5,HIGH); break; //A case 9: digitalWrite(3,HIGH); digitalWrite(5,HIGH); break; //B case 11: digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,HIGH); break; } } //quick call to turn all the lights off void light_off() { digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); } breken; }} //quick oproep aan alle van de lichten uit nietig light_off() {} //the main loop void loop() { //checks if there is a midi to use, then sends it out (echoes echoes echoes echoes) if(check_midi()) midi_send(location_byte,in_note,in_volume); if(location_byte == midi_on && in_volume != 0) { light_on(); } else light_off(); } 

De eerste functie is echt het vlees van de code, terwijl de tweede gewoon een snelle verwijzing gesprek is uitschakelen alle LEDs tegelijk.  De eerste functie leest de input van de variabele in_note, verdeelt het door 12 (want er zijn 12 tonen in de muziek).  Gebaseerd op de opmerking wat dat het is, blijkt op de gewenste kleur door het schrijven van de pinnen op hoog.  Nu voor het laatste hoogtepunt van al deze:

Hier is de hoofdlus van de functie.  Ten eerste wordt gecontroleerd als er in midi input komen en als het is, dan het via de midi_send functie stuurt.  Aangezien de check_midi() de globale variabelen vult, controleren wij om te zien of er een oproep van de midi_on en dat het volume van de binnenkomende notitie is niet 0.  Als aan deze voorwaarden wordt voldaan, het loopt door de light_on() functie en schakelt de verlichting. Anders wordt het de lichten uitgeschakeld als een standaard.  En thats it!

Gerelateerde Artikelen

Lichtshow jas die op muziek reageert

Lichtshow jas die op muziek reageert

Deze tutorial is opgesteld als onderdeel van mijn laatste jaar project voor mijn degree in Music Technology en toegepaste elektronica aan de Universiteit van York. Het is gericht op muzikanten met een interesse in elektronica. Het eindproduct zullen
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
MIDI-gulzige Mixing Desk

MIDI-gulzige Mixing Desk

Ik wilde het bouwen van een mengpaneel met geïntegreerde luidsprekers die mijn eigen verwachtingen in omvang en kwaliteit. Een mengpaneel altijd kant-en-klare wanneer i 'm in the mood voor creatief of gewoon het gevoel dat het luisteren naar mijn fav
Lumia lichtshow laser

Lumia lichtshow laser

Onlangs vond ik een artikel op een groep die opgewekt van hun verleden als laser lichtshow operators, een draagbare laser lichtshow voor een publiek gebouw:"Lunch Box Laser Show" http://makezine.com/projects/make-20/lunchbox-las...Ik had ook, ge
Programable MIDI Synth met Intel Edison en Csound

Programable MIDI Synth met Intel Edison en Csound

Een MIDI-controller is zoals een computer toetsenbord, maar in plaats van tekens worden verzonden naar de computer, het stuur notities (en een heleboel meer informatie over hoe de notitie wordt gespeeld). U kunt meer informatie over MIDI-Controllers
MIDI naar WAVE - Windows Edition

MIDI naar WAVE - Windows Edition

Een tijdje geleden postte ik een Ubuntu MIDI naar WAVE Converter. Ik heb uiteindelijk zat hier en schreef een batchscript (Windows) die hetzelfde kan doen. Het was niet eenvoudig, zoals BATCH raar is. Maar mij tenslotte got op gedaan. Dus hier gaan w
MIDI Foot Controller (Pedalera controladora MIDI) para Amplitube 3.

MIDI Foot Controller (Pedalera controladora MIDI) para Amplitube 3.

Instrucciones de armado y puesta nl funcionamiento del Midi Foot Controller.(Pedalera controladora MIDI) para Amplitube 3.Hola, uso habitualmente el programa Amplitube 3 para practicar con mi Guitarra, realmente mij gustan mucho los sonidos y posibil
USB MIDI Littlebits synth!

USB MIDI Littlebits synth!

Mijn mooie vrouw kocht me de synth kit van littlebits voor Kerstmis, en ik heb enkele dagen vervelend iedereen met gillend geluiden. Na een tijdje wilde ik meer controle over het, aan sync het met andere dingen, of om het te spelen van een goede toet
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
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
Rockband Controller converteren naar MIDI Drums

Rockband Controller converteren naar MIDI Drums

Hey! Vandaag ga ik u tonen hoe om te zetten van een rockband of trommel Guitar Hero-controller in een echte MIDI-drumstel kunt interfacecomponenten met digitale audio workstations zoals Ableton Live, Pro Tools, FL Studio en enz.Of u kunt gewoon gebru
MIDI-handschoen met behulp van de Arduino en lichtsensoren drummen

MIDI-handschoen met behulp van de Arduino en lichtsensoren drummen

ik zal beschrijven een leuke en gemakkelijke manier om uw eigen geluid expressie opbouwt MIDI ingeschakeld handschoen gebruikten veel van geld op MIDI Interfaces of dure sensoren zonder.Voel je vrij om contact met mij direct per mail als u suggesties