Currently tone_remain is just yes/no, but as well as yes/no, have a third option which is "BySet", which then has a value for each of the 3 sets (User, Piano, EPiano). Each of these BySet values can be yes/no, but also have a third option called "ByNumber". The ByNumber value is an array of indicies (0 to LEN-2) of the patch number which must remain when incremented. Eg: (LEN=60)
[0] means Patch 1-2 must tone remain,
[58] means Patch 59-60 must tone remain,
[59] is invalid as that would be the last patch must tone remain to the next patch (but there is no next patch)
json schema will be non-trivial for this
tone_remain_warnings must then act on this information and only present valid warnings
when encoding RDS, if any patches must tone remain, write true to RDS
when decoding RDS, if true, set tone_remain as the full yes
This extra information is additional metadata which won't be included in the RDS file (which will still store a simple true/false), but it can be very helpful for validation/warnings.
Currently tone_remain is just yes/no, but as well as yes/no, have a third option which is "BySet", which then has a value for each of the 3 sets (User, Piano, EPiano). Each of these BySet values can be yes/no, but also have a third option called "ByNumber". The ByNumber value is an array of indicies (0 to LEN-2) of the patch number which must remain when incremented. Eg: (LEN=60) [0] means Patch 1-2 must tone remain, [58] means Patch 59-60 must tone remain, [59] is invalid as that would be the last patch must tone remain to the next patch (but there is no next patch)
This extra information is additional metadata which won't be included in the RDS file (which will still store a simple true/false), but it can be very helpful for validation/warnings.