I know I sound like a broken record at this point, but please remove channel assignment from definitions files and allow multiple tracks to share the same instrument defiition files, and I think you will have a solid feature that can be used in a much more flexible manner.
We already have a perfectly valid mechanism that can be used to setup Track Defaults, called: Track Defaults I can “call” an instrument definition on a track, assign a midi channel and name to that track and save that as my project default. This achieves the exact same result, without involving magical mapping and editing of text files.
Because, guess what, sometimes the bassline is played on the Blofeld, sometimes it’s the PreenFM2. but in both case, I’m going to name that track “Bassline”. And I like to have the Bassline on Track 01A.
As developer, surely you know the DRY principle ( DO NOT REPEAT YOURSELF, aka The Anti-Copy/Paste rule ). Not hardcoding the midi channel into the definition files means that you can load the definitions on the tracks that you’re planning to use for that synth, and only those tracks.
For example, I usually use 3-4 tracks on the Blofeld, and 1-2 on the PreenFM2 even thought they are 16 part and 4 part multi-timbral respectively. With the current scheme, I can either not use them at all, or I have to… Actually I don’t know how I can use definition files on multi-timbral synth and not go down in a hell of swapping SD card between the Pyramid and a computer running a text editor. yuck!
Single Instrument Definition per File
This would mean that we could have a folder on the SD card with every single definition that’s been contributed by users so far and be ready for anything. Also this would prevent needing to have a computer nearby. The pyramid is really designed to operate standalone, so this artificial tether to the computer to edit that single definitions file is super annoying. See comment about editing definition files all the time
Load Definitions on Demand
Loading definitions on demand instead of automatically, would allow you to scan a folder full of definition files at “call” time, and load the one for a single specific synth.
Also the definition should never be loaded in memory. instead you could just read the file when a CC assignment is about to be made, either when we map an encoder or create an automation. if the tradeoff is that the Pyramid can’t sustain playback while reading the CC definitions I think that would be worth having if that means I can use definitions for the up to the total 64 available tracks.
Once a CC mapping is made, you could just keep that particular CC number to name assignment in memory, and re-use it on every track that shares the same instrument mapping. Some synths map all 127 messages, but I might only use 3-4 messages, on a given project. I just don’t know which one in advance.