Bakgrund
Midistyrenheten är tänkt att användas att styra olika parametrar i instrument- och effekttillägg i musiksequencerprogram.
Många nyare sequencerprogram innehåller funktionalitet för att kommunicera med midistyrenheter i båda riktningar, dels reagera på inkommande signaler och skicka återkoppling så att midistyrenheten i sin tur kan visa aktuella värden på parametrar.
En del sequencerprogram har även funktionalitet som avbildar en uppsättning kontroller till instrumentet eller effekten i fokus, ofta i grupper om åtta parametrar. Användarvänligheten ställer dock vissa krav på styrenheten. Vid byte av instrument eller parametergrupp bör kontrollerna uppdateras till de nya parametrarnas aktuella värden, så att det inte sker ett plötsligt "hopp" till det nya värdet när reglaget eller kontrollen justeras. Om ett reglage t.ex. ändrar en parameter A till värdet 32 innan reglaget ändras till styra en parameter B som vid byttillfället har värdet 64, vill man inte att reglaget ska skicka värdena 33, 34 osv när den justeras uppåt utan värdena 65, 66 osv.
Det finns olika sätt att lösa den här problematiken på. En del sequencerprogram tillämpar s.k. "value pickup". I exemplet ovan ändras inte parameterns värde förrän det fysiska reglaget nått värdet 64. Dock är den här lösningen problematisk. I exemplet ovan fungerar det så länge man vill höja parameter B:s värde medan en sänkning av densamma innebär att man som användare först måste långsamt vrida reglaget uppåt till 64 för att sedan sänka det, något som kan vara utmanande att hålla reda på vid t.ex. ett uppträdande.
Lösning
Den lösning som implementerats här är ändlösa (360 graders) fysiska reglage och visuell återkoppling om vad aktuella parametrar har för värden på en LCD-display. De ändlösa reglagen skickar endast relativa värdeändringar medan absoluta parametervärden visas på LCD-displayen.
Midistyrenheten består av fyra ändlösa reglage, en LCD-display för visning av återkopplad information från sequencerprogram och fyra knappar för val av olika parametergrupper.
Resultat
I takt med att tiden för projektet började ta slut strök en del av de ursprungliga kraven med och en del nya tillkom för att ändå få en fungerande enhet. T.ex. så togs kravet på navigering i sequencerprogrammet bort men istället tillämpades ett sätt att välja olika parametergrupper.
Även om enheten skickar och tar emot MIDI-meddelanden i rätt format behövs en USB-MIDI-drivrutin på datorsidan. Det kändes som överkurs att implementera en sådan och istället programmerades en MIDI-server i Java som kopplar ihop serieportens in- och utgångar med musikprogrammets ingående och utgående MIDI-portar.