Maybe Break Stuff?
I just realized bank files are designed wrong!
Right now, keywords like
cc_links can be used within individual patches or at bank level (i.e. zero indent). Bank-level keywords are applied first, then keywords in individual patches. This works to create defaults for all patches, like sending volume and reverb CC’s to all channels, but the problem is sometimes I want to send a CC to set some value only when the bank is first loaded (like the initial volume of a channel). Also,
fluidsettings work a little differently – they’re at bank level and are applied only when the bank is first loaded.
I’m realizing that keywords at bank level should all be applied only on bank load, and there should be a level for keywords that is within
patches but not within individual patches – those would be applied first each time a new patch is selected. This is more logical, and also grants extra needed functionality. It will, however, break some bank files and might annoy the (I assume) small number of people actually using the code at this point, but I think it’s worth it to get the extra functionality.
Got to mess around with the code a bit to see for sure if this will work and is a good idea, but pretty sure I’m going ahead with it unless I get hate mail 🙂
There won’t be any breaking of stuff – there can’t be keywords in
patches: because they would clash with patch names. And actually, only
sysex keywords would gain functionality by having a write once on bank load feature – other keywords have to be cleared and re-processed each time a new patch is selected. I think the thing to do is add a bank-level
init keyword that gets processed only on bank load. That adds functionality and won’t break anything.