christofmuc / KnobKraft-orm

The KnobKraft Orm - The free modern cross-platform MIDI Sysex Librarian
GNU Affero General Public License v3.0
200 stars 25 forks source link

Allow user to choose whether to send program change or edit buffer #234

Closed christofmuc closed 2 months ago

christofmuc commented 1 year ago

Thinking about this I may have found a way to handle program changes and edit buffer dumps consistently without a switch. Add two clickable areas, one for the program number, which sends a program change, and one for the patch name, which sends the edit buffer. Now the user can choose what they want in each case. That would work both in the bank panel and in the library, but in the bank panel I guess it's better to split the button horizontally between patch number and patch name.

Originally posted by @bboc in https://github.com/christofmuc/KnobKraft-orm/issues/228#issuecomment-1435771762

christofmuc commented 1 year ago

The new program change mode currently is an automatic feature - when you click a patch, the Orm checks if that patch is found in any of the synchronized synth banks (the "active banks"), and if yes it hopes that the patch is still there and issues a bank change/program change instead of sending the full edit buffer.

This is really useful for synths that are slow in receiving an edit buffer, e.g. Hydrasynth, or other synths with large sysex data when driven over DIN MIDI.

The problem comes up when the active bank hasn't been synchronized for a while and the patch is no longer there, or when the bank select is not correctly implemented - you get a different patch than expected, and have no way around it a the moment than deleting the active bank (drag it into the trash). That workaround is non obvious.

So we could think of either a global switch to turn this feature on or off, or have multiple UI elements as suggested above by @bboc to have the user freely choose. One thing here is though that not every bank/program change will bring you the patch - it might be a bank/program from somebody else's synth, so you get something completely different. We should somehow flag if the patch is "active", i.e. known to be in the synths memory, and show that in the UI?

Andy2No commented 7 months ago

It would be good to have a set of radio buttons, visible on the Library tab, to have control over what happens when we click a patch on the grid.

Partly what's been putting me off getting further with the Behringer Pro 800 adaptation is not being able to be sure what happens when I click on the grid. There is no known way of sending to an edit buffer (it's not in the paltry sysex spec) and I strongly suspect patches are stored in Flash, so can only be saved about 1,000 times to any given location before it starts going wrong - curable only with a soldering iron. This is less of a problem with older synths because they were generally designed without cutting so many corners to meet a price.

Also, when trying to do some round trip editing of patches on the Sequential Rev 2 by sending to the edit buffer, editing on the synth then retrieving them back to the Orm database, I often found it wasn't doing what I expected, possibly because it was deciding it didn't need to send the patch, only a bank select / program change.

Having it decide automatically could also be one of the options for the radio buttons, but it would be nice to be able to override that.

So, maybe just three buttons in a small panel, something like:

Click to: Select patch on synth [ ] Send to Edit buffer [ ] Auto [o]

christofmuc commented 2 months ago

Added that for the next release, a small combo box below the patch grid called "send mode".

christofmuc commented 2 months ago

Done with 2.3.1