The new (in 21.12??) black key highlighting in the Matrix Editor is awesome! Wanting something like this instead of the old triad highlights was one of the two missing features in 17.12 that prompted me to look into the source code, so imagine my surprise when I found it had already been implemented. Not that I can imagine anyone being interested my motivations. ;)

What might be of interest is that IMO there's a bug (or missing feature) in the new highlighting. The old triad version respected key changes and also major-vs-minor, re-aligning the tonic triad's root to the new key and switching the third between natural and flat.

I think the new black key highlighting should do something similar, both aligning to the tonic of the current key, and highlighting "black keys" that are the accidentals in that key depending on if it's major or minor. I'm sure that's clear, but just to beat a dead horse I'm saying tonic plus 1,3,6,8,10 semitones in major keys, and tonic plus 1,4,6,9,11 semitones for minor keys.

I also think that the tonic needs to be highlighted differently than the other non-black/non-tonic keys. It was fine to have it the same with the triad highlighting because the gap between the fifth and the next tonic made it obvious, but with all the non-accidental scale notes the same it's too cluttered and not immediately apparent.

I have a partly working implementation of the all the above, and will submit a merge request for review, hopefully in a day or two. It's a fairly easy change, but I'd also like to be presumptuous and do a little cleanup in MatrixScene.cpp at the same time. On that subject, it seems like the current black key highlighting code is a bit preliminary. For instance, the triad highlighting is still in there, settable in the user's configuration (I think. I'm not familiar with that subsystem). Is the intent to add a "triad/black-keys" control to the GUI to allow switching it on the fly (for users who liked it the old way)?

As a pure feature request, I'd also like to add user selectable scales and modes to the Segment -> Add Key Change... dialog that (I assume) is shared between the Matrix and Notation Editors. Instead of the current "Major,Minor" pulldown menu. I'd like to see two: One for scales with Major, Natural Minor, Harmonic Minor, Melodic Minor, Minor Pentatonic, Major Pentatonic, Blues, Whole Tone, Whole/Half Tone ... the list can go on forever, see sites like https://allthescales.org/. Or maybe have a "Custom" entry with additional buttons to select any subset of the 12TET notes. (Yes, melodic minor is weird. Just the ascending version because descending is same as natural and I can't figure out how it could be dynamically switched between the two.)

And then also a Mode menu: Ionian (default), Dorian, Phrygian, Lydian, Mixolydian, Aeolian, and Locrian. Yes, Major+Aeolian is the same as Minor+Ionian, but I don't think the redundancy is a problem, and despite being an extremely unskilled/amateur musician my understanding is that is does make sense to talk about modes of other-than-major scales. Also yes, there's things like Aeolian and Locrian not making sense for the pentatonic scales because there's not enough notes in them, but that could be handled by forcing the offset back within range or just wrapping around modulo scale size, with or without a warning message in either case.

Unless I get a response of "This is the stupidest feature request we've ever heard", I'll try to implement it and submit for review and possible approval. That will take a bit longer as my Qt-fu (adding menus and rearranging dialogs) is pretty weak, but the actual algorithmic code for computing in-vs-out notes of scales+modes is trivial (and something I've done many times before in simple ad-hoc MIDI utilities that I've written over the past few years for my own use).


_______________________________________________
Rosegarden-devel mailing list
Rosegarden-devel@lists.sourceforge.net - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel

Reply via email to