From: Tom Breton (Tehom) <tehom@pa...> - 2011-09-20 00:35:09
Two new commands, PasteConductorDataCommand and EraseTemposInRange.
Ordinarily I wouldn't combine two, but the EraseTemposInRange
functionality I wrote just to make PasteConductorDataCommand work nicely,
and then it seemed a useful command.
Motivation: I was looking for a way to copy just tempos from a range. The
use case is this: I have some stuff where a lead track is repeated but
accompanied differently, and I wanted to repeat the subtle tempo
variations without having to redo the accompaniments. Another use case is
where a tempo changes about the same way every measure (eg a Viennese
To my delight, I found that PasteConductorDataCommand nearly does the job.
I made a command for it on the edit menu, "Paste Tempos and Time
One has to be a little careful that the playback pointer is on a beat, but
it snaps to beat so that's not hard.
The thing that worried me is that PasteConductorDataCommand wasn't meant
to paste to ranges that already have tempos and time signatures.
OpenOrCloseRangeCommand already had code to clean those out of a range,
just it always does other things too. So what I've done is:
* Copy that code into Selection::TempoSelection and
* Make OpenOrCloseRangeCommand use that, rather than end up with 4
identical pieces of source.
* Make PasteConductorDataCommand use that. It has
* New functionality to clear tempos and time sigs first
* New fields to store them for unexecute.
* Make another new command EraseTempiInRangeCommand
Tom Breton (Tehom)