[sdiy] Local control versus MIDI remote control

Brian Willoughby brianw at audiobanshee.com
Wed Jan 27 05:58:09 CET 2021


Does anyone have references or pointers about implementing synth firmware that correctly handles both local control and MIDI input?


I recall that the MIDI Specification points out that the firmware should keep MIDI note state separate from local control. I'm wondering how far this extends. Obviously, Note On and Note Off would be separate. But what about a (channel) global control like Pitch Bend?


For example, when scanning a local keyboard matrix, the firmware will keep the state of the keys in memory. If the keyboard player holds a key down, that's not going to create a new note every single time the firmware rescans the keyboard. Instead, the firmware keeps the most recent state of the keys in memory, and only turn Gate on when a key that wasn't down first gets pressed. Likewise, Gate stays on until the key changes from down to up. We can ignore Velocity scanning since it doesn't really complicate things too much.

The firmware would have another state for incoming MIDI notes, where Note On sets a bit and Note Off clears the bit, with Gate being controlled like above. All Notes Off would go through the state and clear all bits, deallocating voices as appropriate.

Notes are less of a problem because voice allocation will put each note on its own VCO+VCF+VCA. I'm thinking about Pitch Bend because it affects all the voices. I'm not quite sure what should happen to deal with Pitch Bend coming in via MIDI versus Pitch Bend from the local wheel.

Some old synths - and I'm thinking of the Oberheim Matrix-12 - have extensive settings to put voices into pure MIDI mode, or pure local control, or into Zones. In that context, it makes sense that each subdivision would have its own Pitch Bend state. But the Oberheim Matrix-12 "Multi Patch" settings are hardly what I would call user friendly. Sure, I can figure them out with the manual in hand, but how are these details handled in a modern synth that's maybe a bit simpler to configure?

Of course, besides Pitch Bend, there are other (channel) global messages and controls to deal with from both local and MIDI sources.

Brian Willoughby

p.s. I should probably just read the MIDI 1.0 Specification from cover to cover again. It's possible they answer all of my questions in there.





More information about the Synth-diy mailing list