Just to clarify this whole issue of grooves and what gets restored and why.
A groove is a collection of various settings at a point in running a MMA program. These settings are saved into a buffer when a DEFGROOVE command is issued. When a GROOVE command is issued those settings are restored into the current MMA state.
The decisions as to what is and is not saved/restored is based on the logic that a groove represents a certain type of musical accompaniment. So, things like the instruments being used, the time signature (well, MMA time), the pitch (octave) and the sequences are all part of the groove. And, when using a plectrum track, the tuning and capo values also set the "mood" so they are saved/restored as well.
If we did not save/restore things like capo we'd get the situation when a user (quite properly) uses a capo setting to make the string instrument sound higher or lower in pitch and then do a Defgroove and assume that the capo (or tuning) setting is saved as part of the groove. I think this is a reasonable expectation.
Now, user number two comes along and says: yes, but I don't what this behavior. Opps ... what now?
Actually, the solution is pretty simple: define a new groove with the settings you want. It's quite simple,
In a song file:
Groove A
set some things which the lib has "wrong"
DefGroove A
Now, for the rest of the song you can call Groove A and have your settings.
Want to toggle between grooves A and B? Just do the same thing for B.
And, an easier solution may be to use the allgrooves option. Simply load all the grooves into memory:
Groove A
Groove B
Groove C
AllGrooves Plectrum Capo 2
Having a Sticky option for capo and tuning may or may not be a good thing
But, remember: MMA is not a guitar. No matter what we do to make life simple, guitar players are going to be confused if they think along the line that MMA is a guitar emulation. It's not. It's not intended to be one.
A MMA capo does NOT transpose. A guitar capo does. I think I said in an earlier post that using the term "capo" is, perhaps, unfortunate. But, when you capo in MMA a C chord remains a C chord. All the notes are notes from a C chord and the sound is definitely "C"-ish. When you capo a guitar and use the same fingering a C chord becomes a C# or D or Eb or ... As long as the lib writing thinks in guitar terms with capo there will be a problem
The code for the plectrum track has its own save/restore routines for grooves so it is an easy matter to tie into them. If having a sticky option is a good thing, I don't see a problem. Hopefully this will not effect MMA code which already has a capo or tuning command in an existing lib? You might consider just having a special value for CAPO which is checked when doing a restore? I've not really thought this through or looked much at the bit of code.
Hope I'm making sense. I just got in from clearing off the driveway. We've had about 60cm of snow in the last 24 hours ... this is Canada and we love it!