Requesting current values of control parameters from a device
It's easy enough to handle control parameter changes, but is there a way to ask the device for the current value of a control parameter? I'd like to create a UI that lets you edit the parameters, but want it to be initialized to whatever the value was on the device.
I looked into trying to use sysex to dump that data, but haven't found the information I think I need. I'm playing with a Microkorg XL and the particular sysex functions that it supports don't seem to be documented anywhere.
I tried using: output.sendSysex(0x42, [0x31, 0x7e, 0x19, 0x10]); where 0x42 is Korg's ID, 0x31 is channel 1 (I tried 0x30 too), 0x7E is the Microkorg XL model ID, and 0x19 0x10 came from here (http://www.sysexdb.com/synth_detail.aspx?dv=20) which corresponds to a data dump request on a Korg M1. I'm listening for all sysex messages, and gave my browser midi permissions (which were requested when I asked for sysex permissions, but not before).
Ideally there would be some message that tells the device to send a controlChange message even though there's no change, but I didn't find anything like that in my digging.
Any other thoughts/suggestions?
Thanks!
Comments
Hello Ben,
As fas as I know, this cannot be done with vanilla MIDI 1.0 which, at this stage, is all that is supported by the Web MIDI API upon which WebMidi.js is built. MIDI 2.0 (MIDI-CI) will bring such capabilities.
Having said that, you were right to look at sysex. I'm not familiar with Korg's sysex support but they might indeed provide that capability. Are you saying that the data dump returned nothing?
The manual does provide the general format for sysex but not much detail about the available functions...
I didn't get back any sysex messages as far as I could tell, so I suspect I sent a message the synth didn't understand.
Glad to hear that's coming in MIDI 2, although that doesn't help me :). I'll reach out to Korg and see if they have their sysex messages documented anywhere and I guess I'll see if I can find a machine capable of running their editor software and try to snoop on its MIDI messages.
Thanks!
Looks like most of what I needed was documented for the Microkorg and was collected by the internet archive here: https://ia803205.us.archive.org/21/items/micro-korg-sysex-implementation/MicroKorg%20SYSEX%20implementation.txt
I had to change the modelID from 58 to 7E, but it worked. output.sendSysex(0x42, [0x30, 0x7e, 0x10]); got back a dump of the current channel's params
Awesome! Thanks for reporting back.
In case anybody stumbles upon this conversation, I'm adding the MicroKorg sysex commands below for future reference: