Stap 3: Midi concepten...
MIDI verzendt gegevens met 3 bytes van informatie met een baud-rate van 31250. De eerste byte bepaalt of een opmerking is ingeschakeld, de volgende byte bepaalt welke toonhoogte wordt gespeeld, en de derde byte bepaalt het volume van de notitie. Het is belangrijk op te merken van de volgorde van de gegevens als u de code om te lezen in deze volgorde voor slechts 3 bytes, grappig dingen beginnen gebeurt niet ingesteld. Vertrouwen in ons.
Houd rekening met de volgende code:
//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; } } }
Deze functie controles wanneer er 3 beschikbare bytes om te lezen, en zet ze in de juiste variabelen, en tenslotte retourneert waar wanneer de taak is voltooid. De variabelen zijn globaal omdat ze worden gebruikt in andere functies. Zeker, er zijn vele andere geweldige manieren dat zou waarschijnlijk veel netter binnen C++, maar omwille van de grootte van het systeemgeheugen, het geen kwaad om een beetje slordig in de Arduino. (Net zo lang als je kunt bijhouden van wat er gaande is!) Wat betreft de uitvoer, indien u wenst te verzenden uw muziek uit het schild ook, kunt u overwegen deze code:
//Here is the internet function for writing out the pitch void midi_send(byte cmd, byte note, byte volume) { Serial.write(cmd); Serial.write(note); Serial.write(volume); }
Deze code krijgt van 3 bytes en schrijft ze (in volgorde!) naar de seriële poort op de Arduino. Dit stuurt het in- of uitschakelen command, de toonhoogte en het volume via de uit lijn. BELANGRIJK! --Als u van een USB-kabel gebruikmaakt om te reizen vanaf de computer naar de Arduino, zult u bemerken dat de kabels worden teruggedraaid, zodat de in kabel naar de out gaat; en de out gaat in de in. Anders zal er veel problemen en je zult worden gelaten met frustratie. Ons vertrouwen...