davidnalesnik / lilypond-roman-numeral-tool

LilyPond typesetter for Roman numeral harmonic analysis
MIT License
23 stars 7 forks source link

Lone accidentals #2

Open sambivens opened 8 years ago

sambivens commented 8 years ago

Hi David,

(This is perhaps related to #1)

You state that alterations are only available before figures. However, the following markup compiles correctly: \markup \rN { V 5 s }

It fails, as you state, with the following code: \markup \rN { V s }

This latter problem isn't too bad, because we can just use the long-form version of the first code. The real problem manifests itself, however, when we add in extender lines: \markup \rN { V 4---s3 } compiles "s3," not "#3," and of course { 4---s } compiles "4---s," not "4---#."

I'm guessing the problems are related; do you know of any fixes or workarounds? { 4---"s3" } compiles #3, but pushes it to a lower level. I'm on 2.19.32.

In any event, I've been using the code like crazy these last few weeks; this is REALLY terrific work!

Sam

davidnalesnik commented 8 years ago

(This is perhaps related to #1)

Sam writes: You state that alterations are only available before figures. However, the following markup compiles correctly: \markup \rN { V 5 s }

Sam writes: it fails, as you state, with the following code: \markup \rN { V s }

I should revise the documentation to reflect this. I've been hesitant to do this, because I'd like to fix the underlying problem first. Right now the appearance of the unadorned alteration in the column is a happy coincidence, not a "feature".

The code relies on an internal separation of quality markers and inversion numbers. Figures are parsed in the entry list based on the presence of a number in the first figure given. So \markup \rN { V 5 s } works, but \markup \rN { V s } does not. "s" in this case would be taken as a quality marker, and "s" is not an option--the simple string will be returned.

Is "#" commonly used as a marker for augmented chords? (I can't imagine that V# would ever mean a V with a raised third...) If it is, I can add it to the list of recognized qualities. (You'll note that I removed "f" from the list of recognized qualities -- "V f:" makes no sense. If you need a Mmm7 chord, write "V f9".)

In general, I am having great difficulties deciding what constitutes a quality and what constitutes a figure. I think that the Roman numeral system is rather fuzzy about the distinction. For example, take iio7 and iio4/3 and compare them with iihalf-dim7 and iihalf-dim4/3 (with the slashed circle, of course). In the first "o" obviously refers to the triad quality. In the second, is the quality marker in one case "slashed-circle7" and in the other "slashed-circle" alone? (You can see this messes with the recognition of figures by the presence of numbers....)

Unfortunately, the computer requires a precision that we don't need when writing RNs by hand. Any thoughts on how to sort this out would be most welcome. I can't imagine how much time I've spent going around in circles with this.

Sam writes: This latter problem isn't too bad, because we can just use the long-form version of the first code. The real problem manifests itself, however, when we add in extender lines: \markup \rN { V 4---s3 } compiles "s3," not "#3," and of course { 4---s } compiles "4---s," not "4---#."

Yes, a search-and-replace needs to be done with the whole figure-string. What happens now is pretty rudimentary.

Same writes: I'm guessing the problems are related; do you know of any fixes or workarounds? { 4---"s3" } compiles #3, but pushes it to a lower level. I'm on 2.19.32.

Right, because "s3" is being taken as a new figure. As for a solution, honestly I don't know. I would say include a markup, but \rN requires strings. Use a Unicode flat, perhaps?

Sam writes: In any event, I've been using the code like crazy these last few weeks; this is REALLY terrific work!

Glad to hear it!

David

davidnalesnik commented 8 years ago

I wrote: In general, I am having great difficulties deciding what constitutes a quality and what constitutes a figure. I think that the Roman numeral system is rather fuzzy about the distinction. For example, take iio7 and iio4/3 and compare them with iihalf-dim7 and iihalf-dim4/3 (with the slashed circle, of course). In the first "o" obviously refers to the triad quality. In the second, is the quality marker in one case "slashed-circle7" and in the other "slashed-circle" alone? (You can see this messes with the recognition of figures by the presence of numbers....)

No, of course that comparison is faulty. What was I thinking. Of course, "o" has consequences for the seventh. What I'm wrestling with is whether to recognize both "o" and "o7", and both "h" and "h7" as "quality-markers". This would mean a revision of how figures are located.

What to do with Clenndining's "Go3" for an augmented-chord with #^4 in the bass, I don't know,

davidnalesnik commented 8 years ago

augmented-6th chord

sambivens commented 8 years ago

I might be misunderstanding you, but the current layout for o and h qualities works great for me, and your example of the { Ger o 3 } looks exactly like I hoped it would. Can you clarify what you mean?

davidnalesnik commented 8 years ago

Oh, I'm talking about how the code parses the input. I realize that the output looks nice--it's just that the way the code interprets the input is questionable. The code aims to divide indications of quality from figures in a logical way, and this doesn't happen.

In the case of { Ger o 3 }. the code ends up dividing the input into "o" for the quality and "3" for figures. That doesn't make sense, b/c the "o" and "3" logically belong together: it's a chord with a diminished 3rd in it.

Of course in a case of { V + 6 }, quality = "+" and figures = "6" is exactly what we want; conversely, an augmented-sixth chord ought to be notated { Fr +6 }, with quality = "", figures = "+6", presumably.

In the case of viio4/3, quality = "o" and figures = "4", "3" naturally, but should "viio7" be parsed as quality = "o7", figures = "" or quality = "o". figures "7".(the way it is now). I mean, you speak of a diminished-7th chord, and the "o" here has implications for the seventh.

Maybe I'm being too pedantic about this, maybe I've been staring at this thing too long, but I would like the processing to be as theoretically correct as I can make it.

I hope that's clearer!

davidnalesnik commented 8 years ago

This could have consequences for layout. Right now, { V + 6 } and { V +6 } look identical, because the quality and inversion superscripts are lined up. However, you may want the "6" to be higher in the case of the augmented triad so that it's clear we're dealing with an inverted augmented triad. Similarly, we may want the o and 7 of viio7 to be lined up horizontally, but the "o" and the "4" of viio4/3 to not be lined up.

davidnalesnik commented 8 years ago

(Not to imply that { V +6 } is a viable chord.)

davidnalesnik commented 8 years ago

On Mon, Dec 14, 2015 at 10:56 AM, Sam Bivens notifications@github.com wrote:

The real problem manifests itself, however, when we add in extender lines: \markup \rN { V 4---s3 } compiles "s3," not "#3," and of course { 4---s } compiles "4---s," not "4---#."

I'm guessing the problems are related; do you know of any fixes or workarounds? { 4---"s3" } compiles #3, but pushes it to a lower level. I'm on 2.19.32.

You can now do this easily:

\markup \rN { V 4---s3 }

In fact, you can put accidentals wherever the mood strikes:

\markup \rN { V f4f---s3natural---sharp }

Well, not conjoined :)

David

sambivens commented 8 years ago

Hi David,

Terrific--my students will love it when they see it on their final exams tomorrow. (Okay, that last part might not be true...)

And I've seen some weird notation in my day, but never conjoined accidentals, so I think we're safe there!

Thanks again,

Sam

On 12/15/2015 08:21 PM, davidnalesnik wrote:

On Mon, Dec 14, 2015 at 10:56 AM, Sam Bivens notifications@github.com wrote:

The real problem manifests itself, however, when we add in extender lines: \markup \rN { V 4---s3 } compiles "s3," not "#3," and of course { 4---s } compiles "4---s," not "4---#."

I'm guessing the problems are related; do you know of any fixes or workarounds? { 4---"s3" } compiles #3, but pushes it to a lower level. I'm on 2.19.32.

You can now do this easily:

\markup \rN { V 4---s3 }

In fact, you can put accidentals wherever the mood strikes:

\markup \rN { V f4f---s3natural---sharp }

Well, not conjoined :)

David

— Reply to this email directly or view it on GitHub https://github.com/davidnalesnik/lilypond-roman-numeral-tool/issues/2#issuecomment-164953781.

Sam Bivens Ph.D. Student, Music Theory Eastman School of Music Co-Editor, /Intégral/