Arduino, sensoren en MIDI (5 / 16 stap)

Stap 5: Trigger een MIDI noot met een knop


Met behulp van de eenvoudige knop ontdendering code uit de eerste klasse (u kunt ook deze ontdendering code die gebruikmaakt van millis() tijd te houden), kabellengte tot een knop op digitale pin 7 en gebruiken voor het activeren van een MIDI-Opmerking:

 byte noteON = 144;//note on command int buttonPin = 7; boolean currentState = LOW;//stroage for current button state boolean lastState = LOW;//storage for last button state void setup(){ pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT Serial.begin(9600);//initialize Serial connection } void loop(){ currentState = digitalRead(buttonPin); if (currentState == HIGH && lastState == LOW){//if button has just been pressed MIDImessage(noteON, 60, 127);//turn note 60 on with 127 velocity delay(2);//crude form of button debouncing } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//turn note 60 off delay(2);//crude form of button debouncing } lastState = currentState; } //send MIDI message void MIDImessage(byte command, byte data1, byte data2) { Serial.write(command); Serial.write(data1); Serial.write(data2); } 

In deze schets, telkens wanneer die de knop wordt ingedrukt we een boodschap opmerking op, en telkens wanneer die de knop wordt vrijgegeven, we een signaal opmerking af. Nu proberen om de toonhoogte van de notitie in de potentiometer (aangesloten op A0) toe te voegen:

 byte noteON = 144;//note on command byte note;//storage for currently playing note int buttonPin = 7; int potPin = A0; boolean currentState = LOW;//stroage for current button state boolean lastState = LOW;//storage for last button state void setup(){ pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT Serial.begin(9600);//initialize Serial connection } void loop(){ currentState = digitalRead(buttonPin); if (currentState == HIGH && lastState == LOW){//if button has just been pressed int currentPotVal = analogRead(potPin); note = map(currentPotVal, 0, 1023, 0, 127); MIDImessage(noteON, note, 127);//turn note on with 127 velocity delay(2);//crude form of button debouncing } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, note, 0);//turn note off delay(2);//crude form of button debouncing } lastState = currentState; } //send MIDI message void MIDImessage(byte command, byte data1, byte data2) { Serial.write(command); Serial.write(data1); Serial.write(data2); } 

Nu we een paar meer notities in de mix toevoegen kunt, speelt deze schets een drie Opmerking zin op elke druk op de knop. U kunt de basis notitie wijzigen met de potmeter:

 byte noteON = 144;//note on command byte note;//storage for currently playing note int buttonPin = 7; int potPin = A0; boolean currentState = LOW;//stroage for current button state boolean lastState = LOW;//storage for last button state void setup(){ pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT Serial.begin(9600);//initialize Serial connection } void loop(){ currentState = digitalRead(buttonPin); if (currentState == HIGH && lastState == LOW){//if button has just been pressed int currentPotVal = analogRead(potPin); note = map(currentPotVal, 0, 1023, 0, 127); int noteLength = 200; byte noteVelocity = 127; MIDImessage(noteON, note, noteVelocity);//base note delay(noteLength); MIDImessage(noteON, note, 0);//turn note off MIDImessage(noteON, note+7, noteVelocity);//fifth delay(noteLength); MIDImessage(noteON, note+7, 0);//turn note off MIDImessage(noteON, note+12, noteVelocity);//octave delay(noteLength); MIDImessage(noteON, note+12, 0); } lastState = currentState; } //send MIDI message void MIDImessage(byte command, byte data1, byte data2) { Serial.write(command); Serial.write(data1); Serial.write(data2); } 

Tot slot kunnen we een terwijl lus gebruiken om de arpeggio blijven zolang wij druk op de knop. Terwijl loops in principe loopbare zijn als verklaringen. Als het argument binnen de while lus de haakjes geëvalueerd als true, dan de opdrachten die binnen de while lus worden uitgevoerd. Op het einde van de while lus, de Arduino controles om te zien of het argument binnen de while loops van haakjes klopt weer. Als het nog steeds waar is, is de while lus voert alle opdrachten in de culy accolades opnieuw, dit blijft voor altijd tot het binnen de while lus van haakjes resulteert in ONWAAR argument. In het onderstaande voorbeeld gebruik ik de while lus te blijven spelen de drie Opmerking uitdrukking voor zo lang als digitalRead(buttonPin) == HIGH.

 byte noteON = 144;//note on command byte note;//storage for currently playing note int buttonPin = 7; int potPin = A0; boolean currentState = LOW;//stroage for current button state boolean lastState = LOW;//storage for last button state void setup(){ pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT Serial.begin(9600);//initialize Serial connection } void loop(){ currentState = digitalRead(buttonPin); if (currentState == HIGH && lastState == LOW){//if button has just been pressed int currentPotVal = analogRead(potPin); note = map(currentPotVal, 0, 1023, 0, 127); int noteLength = 200; byte noteVelocity = 127; while(digitalRead(buttonPin) == HIGH){//as long as the button is pressed, repeat the arpeggio MIDImessage(noteON, note, noteVelocity);//base note delay(noteLength); MIDImessage(noteON, note, 0);//turn note off MIDImessage(noteON, note+7, noteVelocity);//fifth delay(noteLength); MIDImessage(noteON, note+7, 0);//turn note off MIDImessage(noteON, note+12, noteVelocity);//octave delay(noteLength); MIDImessage(noteON, note+12, 0); } } lastState = currentState; } //send MIDI message void MIDImessage(byte command, byte data1, byte data2) { Serial.write(command); Serial.write(data1); Serial.write(data2); } 

Gerelateerde Artikelen

Arduino Touch capacitieve MIDI Keyboard

Arduino Touch capacitieve MIDI Keyboard

Dit Instructable zal u tonen hoe te maken van een touch capacitieve MIDI keyboard. Als je alle stappen correct te volgen, werkt het zoiets als dit:Video Opmerking: dit werkt niet met normale verf. Voor deze video heb ik gebruikt geleidende verf.Wat u
Arduino polyfone microtonale midi converter

Arduino polyfone microtonale midi converter

Sterk verbeterde versie hier!***********************************Ik wilde spelen van microtonale schalen met mijn MIDI-keyboard, dus maakte ik dit arduino gebaseerd apparaat dat MIDI notities leest en bijbehorende microtonale standplaatsen met behulp
RC Car gecontroleerd door Arduino sensoren - autonome en gemakkelijk te bouwen

RC Car gecontroleerd door Arduino sensoren - autonome en gemakkelijk te bouwen

Dit instructable laat zien hoe een tweedehandswagen afstandsbediening weer op te bouwen. Hier ziet u hoe opnieuw draad het circuit bord. Als Nou, worden elementaire codering en Arduino gebaseerd vaardigheden gedemonstreerd in deze constructie. Het ei
Openremote Arduino sensoren servo RGB led en switch

Openremote Arduino sensoren servo RGB led en switch

Dit is hoe Openremote Software te controleren een RGB led met schuifregelaars voor elke kleur gebruiken, gebruikt u een schakeloptie een led op of uit te schakelen, een servo met een schuifregelaar verplaatst, en lees een temperatuursensor. Item alle
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 '
Verzenden en ontvangen van MIDI met Arduino

Verzenden en ontvangen van MIDI met Arduino

Dit instructable zal u tonen hoe te een Arduino gebruiken voor het verzenden en ontvangen van een verscheidenheid van MIDI-berichten, zodat u kunt beginnen met het opbouwen van uw eigen MIDI-controllers en instrumenten. Eerst ik zal praten een beetje
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
Arduino MIDI voet pedaal Keyboard

Arduino MIDI voet pedaal Keyboard

De oorsprongMijn vader is een muzikant. Hij kan een veelheid van instrumenten spelen. Hij heeft slechts twee takken, maar hij heeft ook benen! Dat is toen we besloten dat we opnieuw gebruikt op de voetpedalen van een oude orgel en hen in een arduino
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 VIERREGELIGE MOTION CONTROL

ARDUINO MIDI VIERREGELIGE MOTION CONTROL

Dit Instructable zullen over het bouwen van een vier-line cablecam/beweging controle-eenheid.Het principe is niets nieuws Zie CATCAM.Zijn gebaseerd rond vier motoren/lieren en een controle-eenheid waarmee de motoren.KERNONDERDELENArduino UNO (of elke
Uber Home Automation w / Arduino & Pi

Uber Home Automation w / Arduino & Pi

[BEWERKEN] Ik heb een forum om samen te werken op gateway code.http://homeautomation.proboards.com/Board/2/openha...Een paar jaar geleden, werd ik de hondeigenaar van een voor de eerste keer. Ik hield niet van Cody in de kennel alleen hele dag verlat
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
Garduino: Tuinieren + Arduino

Garduino: Tuinieren + Arduino

Garduino is een tuinieren Arduino. Tot nu toe Garduino:-Wateren mijn planten wanneer hun bodem vochtigheidsniveau zakt tot onder een vooraf gedefinieerde waarde.-Bochten op groeien lichten, maar alleen wanneer het donkere uit en alleen lang licht gen
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