A subjective and evolving list of things I look for in a midi controller. To the best of my knowledge no such controller meets all of the items on the wish list. But some are quite a bit closer than others. In the future I may document how some controllers fare against this list.
Overall design
- Small, but …
- Enough space to apply labels to each controller or facilitate software labeling
- Configuration templates
- XML or similar human readable text editable
- change template via incoming midi message or via single push on hardware button
Every control
- communicates bidirectionally (sends and receives midi data)
- indicates its current value approximately
- every control can send every conceivable midi message
Knobs (also known as dials, rotary encoders)
- endless
- sensitivity is widely programmable (at least 30 – 720 degrees)
- can send absolute or relative messages (for left vs. right turn), not only for CC, but also for every other midi message type
- increment / decrement reversible
- increment / decrement in variable steps (e.g. 1,2,3,1,2,3,1 … or 2,4,6,2,4,6,2 … or 0,3,6,9,12,0,3,6,9,12,… or 25,20,15,5,0,25,20,15,10,5,0,20, …)
Buttons
- LED lit (color)
- on, off
- infinite step cycle forward or reverse with variable steps (e.g. 1,2,3,1,2,3,1 … or 2,4,6,2,4,6,2 … or 0,3,6,9,12,0,3,6,9,12,… or 25,20,15,5,0,25,20,15,10,5,0,20, …)
- velocity sensitive
- pressure sensitive
Faders
- back-lit or side-lit led to indicate approximate current position
- touch strips (not motorized faders, since I find noisy jumping faders very annoying)
- can send absolute or relative messages (for up vs. down swipe), not only for CC, but also for every other midi message type
- swipe speed sensitive (slow swipe = small change in value, fast swipe = large change in value)
- can send tap gesture as absolute or relative messages
- traditional or momentary mode (snap back to default value when not touched)
XY-Pads (not joysticks)
- like touch strips, but in 2 dimensions
- backlit led indicating current position