christofmuc / KnobKraft-orm

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

Imports are sensitive to the synth setup #284

Open mslinn opened 8 months ago

mslinn commented 8 months ago

After importing all the presets from my Juno-DS, I exported them to a single syx file and a PIF file.

Sysex File

Attempting to import them on an instance of KnobKraft on another computer yielded the following error.

The import computer did not have a KnobKraft Juno-DS adaptor. I tried again, after installing the adaptor, but without enabling the adaptor in setup, with the same results.

There were too many errors to paste, so I put the message in this file:

sysex_error.txt

Only after I used setup to enable the Roland Juno-DS synth did the sysex import succeed.

This message showed up hundreds of times; it would be better to tell the user that the message was repeated xxx time, instead of actually showing it many many many times:

13:28:24: warning Synth Roland Juno-DS has no mapping defined for stored categories. Use Categories... Edit mappings... to fix.
13:22:01: info Skipping patch INIT PATCH because it is a duplicate of INIT PATCH
13:22:02: info Retrieved 1184 new or changed patches from the synth, uploaded to database

A better error message that told the user that the sysex message requires a particular type of synth would be helpful.

PIF File

When I attempted to import a PIF file, I got lots of these errors, which makes sense:

13:14:19: warning Skipping patch which is for synth Roland Juno-DS and not for any present in the list given

Perhaps just generating one error message would be sufficient.

13:27:21: warning Synth Roland Juno-DS has no mapping defined for stored categories. Use Categories... Edit mappings... to fix.
13:27:21: warning Synth Roland Juno-DS has no mapping defined for stored categories. Use Categories... Edit mappings... to fix.
13:27:21: warning Synth Roland Juno-DS has no mapping defined for stored categories. Use Categories... Edit mappings... to fix.
13:27:21: warning Synth Roland Juno-DS has no mapping defined for stored categories. Use Categories... Edit mappings... to fix.
13:27:21: warning Synth Roland Juno-DS has no mapping defined for stored categories. Use Categories... Edit mappings... to fix.
13:27:21: warning Synth Roland Juno-DS has no mapping defined for stored categories. Use Categories... Edit mappings... to fix.
13:27:21: warning Synth Roland Juno-DS has no mapping defined for stored categories. Use Categories... Edit mappings... to fix.
13:27:22: info Skipping patch INIT PATCH because it is a duplicate of INIT PATCH
13:27:22: info Retrieved 1184 new or changed patches from the synth, uploaded to database

The stored categories message showed up again.

christofmuc commented 3 months ago

I am thinking about this again, for the PIF format it is a mere matter of cleaning up the log messages.

For sysex, I had originally built a function "sniff synth", that tries to detect the synth the sysex is for. With the number of synths we have now, this is too slow though if we just try to load the sysex with all adaptations.

Of course, the user can also hand in a ZIP file with sysex files targeting multiple synths, or even mix then in one MIDI file. Without knowing the synth up front, it'll be hard to figure out what should happen.