Replies: 1 comment
-
I have numberFromDump(message) defined, but that's never called when importing patches from a file - I've added a print before the return to check. Could we, perhaps, have an optional function that is passed the patch dump message instead of an arbitrary number which might not correspond to the one in the dump (as in this case), and have that called in preference to friendlyProgramName(program), which is only passed the arbitrary number? Perhaps is could be called friendlyProgramNameFromPatch(message), or similar? It appears that friendlyProgramName() is only called to generate the patch number that's shown in the Library window, so it seems it shouldn't cause any problems if that's changed. At the moment it only works if the dump contains a complete set of patches in each bank imported. That's usually the case, I guess, but the Pro 800 shows that it isn't always the case. Perhaps I should raise this as an issue, instead of a discussion? [EDIT: I opened issue #259 referring to this discussion] |
Beta Was this translation helpful? Give feedback.
-
I'm trying to make a partial adaptation for the Behringer Pro 800. The sysex spec hasn't been published, so currently the only way to get patches dumped is to ask for all of them in one dump, from the synths Settings menu.
I've got as far as importing the dump of all patches (via Patches->Import from files into database) and showing the patch names, for patches that have a name, and I implemented friendlyBankName() and friendlyProgramName() but they don't really do anything useful - the numbers that are passed to friendlyProgramName() don't correspond to the ones in the dump, they're just a count that gets restarted when it passes the maximum for a program number in a bank (99), as the patches are imported. It seems friendlyBankName() is normally only called to populate the MIDI->Import patches from synth dialog.
The synth doesn't include "init" patches in the dump, and there is no way to name a dump from the front panel of the synth, but it does display the names where they exist, and it is possible to enter them with a hex editor. The main goal is to use the Orm to rename them, but it's important to show the actual bank (A-D) and program slot number (0-99) in the Library window, so users know which ones to edit.
Since I couldn't figure out how to get it to show the bank name in the Library window, I tacked it onto the value returned by friendlyProgramName(), but that doesn't work because friendlyProgramName is only ever passed a number from 0-99, and it isn't the number stored in the patch. I can tell that because I have banks that are only partly full, with a large gap left between two edited patches. The dump file I've been trying it with contains A0-99, B0-11, C0-5, D0, then D98, but they're listed in the library as 0-99 then 0-18. If I try to tack on the bank number, all patches are shown as being in bank A, because friendlyProgramName() is only ever passed 0-99.
The patch numbers in the actual dump are stored as 0-399, over two 7 bit bytes - the patch numbers 0-99 are bank A, numbers 100-199 are bank B, and so on, but the dump only contains patches that have been edited, so there are gaps in the numbers where the init patches would be.
Neither friendlyProgramName() nor friendlyBankName() are passed the dump (normally passed to functions as "message"), so I don't see any way to obtain the correct values from a dump, to make it show the correct thing.
Beta Was this translation helpful? Give feedback.
All reactions