Query existing MIDI value

Hi Steve / Others...

I've been looking further into some other options for storing values and for general workflow ideas (separate reasons) for my Qu16 mega-mix-2000 (is '2000' now "old-school"??)... and other project ideas... I've been searching around for an answer to this, but I'm probably using the wrong terminology:

Is there a way to ping/query an existing midi value of something? e.g. HP filter cutoff =120... Can I ping my Qu16 with some kind of 'query' message and then extract it's actual value (120)? Also - is there an increment/decrement message in midi that I'm not aware of? (I've watched the two increment / decrement encoder vids, but they seem to be specific to an encoder type / functionality)...

The types of things I'm hoping to do:

Use the save scene function on my Qu16 to store all current values for parameters (most of my qu16 setup is only controlling actual internal parameters)... Then I can save / recall all of my custom settings by simply saving/loading that scene. This would rely on MT Pro actually pinging these values after scene load to allow fader automation to present the actual values...

Use a fader as a +/- modifier (not absolute) like a modwheel. Use this to modify values on e.g. a synthesiser from their current value to max 127, min 0 (but I'd script to retain values beyond these limits to allow return to their original state)...

Use a non-automated fader to "do nothing until its value equals the actual value" (maybe + or - 1 to avoid skipped value issues)... So you can scan for the value manually without value jumps...

As always, I'm sorry if this is basic / part of every-day midi... I do try to search around before asking questions! I'm also sorry if this isn't actually possible, but that's a different kind of sorry :) haha...

Hi, as a general MIDI statement, there is no standard for query and response of a parameter. In generally, however you can monitor the parameter of a given MIDI device when it outputs a MIDI Message (such as when a fader moves) and keep them storied in global variables for later retrieval and reuse. I often do this to compare my non motorized faders on a controller to the DAW last known fader state. By doing this I can create a \"pickup\" point where the faders doen\'t jump (or move) until it crosses the last known DAW fader position.


With this said, some manufacturers implement some sort of query/response protocol using SysEX messages but it is not consistent. I think the QU16 might support this so you should probably ask Allen and Heath. I think they have a QU Protocol manual that describes these messages (if you can decipher it).

As to increment/decrement again there are many ways that this is handled in MIDI, however it also varies by manufacturer. In MT Pro, I typically add or subtract from the last known state and increment/decrement a global variable and then use the absolute value to the application if it requires absolute numbering. The most common CC types for increment/decrement are

127/1 - Also known as 2\'s complement.

127=decrement 1 126=decrement 2 ... 65=decrement 64

1 = increment 1 2=increment2 ... 64 is increment 64

3F/41 Hex (63/65 decimal)

65=Increment 1 66=Increment 2 ...

63=Decrement 1 62=Decrement 2 ...

64=No movement


There are also manufactures that use NRPN (Non-registered paramenter number) Increment/Decrement. But since it is called (Non-Registered), each manufacture has leeway to define them themselves and if they are good enough to document them, consider yourself lucky.


There are video tutorials for converting Absolute to Relative (if you need increment decrement) or Relative to Absolute, if you need absolute.


Steve Caldwell
Bome Customer Care

Also available for paid consulting services: bome@sniz.biz


Thanks buddy - I'll leaf through the Qu16 protocol again... I'm getting suite familiar with that now :)

Sorry for the thread hijack.

tl;dr: Thank you for your question. It kicked me in the head to resolve a thing I didn't know needed resolving in my own rig.

The long 'splanation:
I use a bunch of 90s romplers. One of them (which I use 2, tho - so...2 of them?) you can define four incoming MIDI CC's for modulation that get labelled A, B, C ,D. Then in the patch you can set MIDI CC A to modulate a parameter.

Except this device was from a time when extensive SysEx documentation and printed manuals were a thing, so I have ALL the SysEx documentation and I realised that along with all the other realtime SysEx stuff I do, I don't have to play that MIDI A, B, C, D thing! 

Why didn't I realise this sooner?!?

But you fixed it.
So: thank you for your question.
You helped me immensely with a tangential issue!  :) :) :)