D. Michael McIntyre wrote:
On Saturday 09 June 2007, you wrote:
So the piece should sound the same, simply look different?
Right. More broadly, we really need an easy way to flip around between
written transpositions. I played with Sibelius and Finale briefly, and one
thing that stuck with me was how you could flip a button of some sort and
display the part in either concert pitch or the written notation as would be
read by the player.
I haven't really used Finale or Sibelius, but I've been mocking around
with something like that for Rosegarden locally. Part of the problem is
that when you're going from '-2' to '-9', Rosegarden can't really know
if the interval you're transposing by is a natural fifth or, say, an
augmented fourth or dimnished sixth (as those all are 7 semitones).
One approach could be to simply choose a mapping from transposition
(-2,-9) to instrument tuning (Bb, Eb): e.g. if a segment is in -2, it's
probably a Bb instrument, as A# instruments are rare. I used the
quint-circle to come up with the following list:
-6 F# instruments
-5 G instruments
-4 Ab instruments
-3 A instruments
-2 Bb instruments
-1 B instruments
0 C instruments
1 Db instruments
2 D instruments
3 Eb instruments
4 E instruments
5 F instruments
I added a 'Transpose Toolbar' to the notationview, which fills a
combobox with those values and chooses the current selection based on
the current transposition. If the current transposition of your segment
is -2 and you choose '3 Eb' from that list, it'll assume you're
transposing from Bb to Eb and fire off a SegmentTransposeCommand fixing
the notes, keys and segment transposition accordingly.
This isn't quite commit-worthy yet I think though, as I'm still getting
to know KDE/QT to get this right and add some more buttons (e.g.
transpose octave up/down).
That has never been possible before, because our automagic transposition code
wasn't reliable enough. I haven't really looked to see if anything is
different now that you've been puttering around, but the old problem used to
be that the automatic transposition code would sometimes put things in
entirely the wrong octave.
I think the current code should get that right.
I think my 'Transpose by Interval' is supposed to support that: Choose
'Segment->Transpose by Interval', choose 'Bb' as reference, 'F' as
target, select 'Change key for selection' and check 'Adjust segment
transposition (maintain audible pitch')'.
This, again, is too much "mental math" to suit what I'd like to see as a
stupid user. I'd rather not have to know that the Bb part I'm looking at in
a -2 segment is really Ab, or that I want to go to F now that I've switched
to -9. What I'd rather see is the notation automatically flipping itself the
opposite way of the segment transpose value step by step.
Actually, you only have to know that you want to go from Bb to F: the
SegmentTransposeCommand will take care of going from -2 to -9 (if you
enable 'maintain audible pitch') and as a user you don't the information
that Bb in -2 is really Ab.
However, if I do that my Bb'es get turned into E#'es instead of F's,
which looks like a bug :).
That looks like just the sort of "you break it, you bought it" thing I was
talking about. :)
I know, I'm already looking into it :)
This stuff is really tricky to get right. It seems so
simple on the surface, but it's so easy to miss the edge cases, and so hard
to get them working without breaking something in the middle.
I certainly agree - that's the main reason I've recently been adding
unit/regression testing to the build process. Every time I run into a
bug, I intend to isolate the problem in such a test, so that I know when
it's fixed and (more importantly) when it gets broken again :).
Arnout
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel