Stap 9: Pitchbend en Arduino
Nu dat je weet hoe de controle van de nota over en opmerking af, kunt u proberen pitchbend.
Pitchbend informatie wordt opgeslagen in 2 gegevensbytes, en meest significante byte (MSB) en een minst significante byte (LSB). Elk van deze bytes bevat alleen 7 stukjes informatie. Dit betekent dat alle pitchbend-informatie wordt opgeslagen in 14 bits, met de meest significante 7 bits opgeslagen in de MSB en de minst significante 7 bits die zijn opgeslagen in de LSB.
Voor de meeste toepassingen vindt u alleen jezelf veranderen pitchbend via de MSB en gewoon de LSB instellen op 0. In dit geval heb je 7 bits van resolutie voor pitchbend (128 stappen). In MIDI protocol pitchbend = 64 is geen pitchbend, pitchbend groter is dan 64 is pitchbends de frequentie omhoog, en minder dan 64 pitchbends de frequentie naar beneden.
In het voorbeeld hieronder een toelichting gespeeld en gehouden, daarna speelde weer terwijl de pitchbend-verhogingen van 64 naar de max waarde van 127, speelde vervolgens een derde keer terwijl de pitchbend verhogingen van 64 naar haar de minimumwaarde 0. Deze volgorde is voor eeuwig lus. De bovenstaande foto's tonen de output in ableton uit dit Arduino schets.
<pre>/* MIDI Pitchbend (msb) By Amanda Ghassaei July 2012
Hieronder is een video demonstratie van de bovenstaande code. Voor dit stuk van code, pitchbend merkbaarste in instrumenten met een lange sustain, zoals een snaarinstrument, want deze worden dat in gedachten te houden bij het testen van de code zelf.
U zal waarschijnlijk wel goed alleen 128 stappen uit te voeren van pitchbend resolutie, maar in het geval moet u alle 16384 stappen, zie de onderstaande code. In principe wat ik hier heb gedaan is gedefinieerd een variabele met de naam pitchbendVal, die van 0 tot 16383 varieert. Zoals gezegd onder de "nul" pitchbend-waarde is msb = 64 en lsb = 0. Binair is dit:
MSB 64 = 01000000 =
LSB = 0 = 0000000
(Vergeet niet MSB en LSB 7 bits getallen)
het samenstellen van deze waarden krijgen we:
1000000 0000000
MSB LSB
of
10000000000000
die vertaalt naar 8192 in decimale notatie
Dus nu is de "nul" pitchbend-waarde 8192.
U zult ook zien dat ik moest de variabele pitchbendVal opsplitsen in twee 7 bit delen uit te zenden via MIDI-bericht:
MIDImessage (pitchbend, (pitchbendVal & 127), (pitchbendVal >> 7));
het eerste deel, pitchbendVal & 127, retourneert de minst significante 7 bits van pitchbendVal
het tweede deel, pitchbendVal >> 7, geeft als resultaat de meest significante 7 bits van pitchbendVal
Zie & en >> op de Arduino referentie pagina voor meer info.
<pre>/* MIDI Pitchbend (full resolution) By Amanda Ghassaei July 2012