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

Reply via email to