DCMLab / standards

Repository containing standards developed at the DCML. https://dcmlab.github.io/standards
4 stars 0 forks source link

Suspensions & Retardations: Which note is being withheld? #4

Closed johentsch closed 4 years ago

johentsch commented 6 years ago

Retardations (= suspensions resolving upwards)?

After informal discussion (07.09.18), the rules for suspensions/retardations are:

retardations (upward resolution)

suspensions (downward resolution)

ISSUE: A symbol is missing for digits departing from this convention, such as a 6 which retards a 7. Ex.: image\ K457-1, m. 37: This can be seen as an alteration of I6 but since alterating the chordal root changes the Roman numeral, the annotator wrote #viio6/ii. This yields the correct chord tones (≙ TPCs 4, 1, 7) but is not a correct analysis (this is not a secondary dominant of ii). Ideally, this would be analysed as a suspension of V2, but in the notation V2(6#4) both 6 and #4 replace the fifth (TPCs -1, 1, 5, 7) when the 6 actually withholds the seven (correct TPCs: 4, 1, 5, 7). A possible solution could be to introduce ^ as in V2(^6#4).

image In the same movement, m. 136, the annotator wrote V43(#7) but with the above rules, #7 does not alter the seventh but instead replaces the octave and thus adds a tone (TPCs 2, -1, 6, 1, 5). Once again, this would be more correctly analysed as a retardation of i6 but without a new symbol, the 2 in i6(#42) would be understood as replacing the root (TPCs -3, 6, 2) rather than replacing the bass note (TPCs 2, 6, 0). This could be remedied by writing i6(#4^2).

And here another case, where 2 replaces 3 rather than 1: image\ K457-3, m. 239. The label iv(9) is understood as triad plus ninth (-1, -4, 0, 1). iv(2) would not solve the problem since in root position this would designate a suspension in the bass (1, -4, 0). Once again, iv(^2) would do the job.

On the other hand, what about instances of 7th going down? This is rarely the case since the usual 7-6 suspensions are mostly considered as suspensions of first inversion chords and the interval 7 is analysed as 2 (suspension of the root note). A 'genuine' 7-6 in the sense of intervals above the roots thus requires the sixth to be considered as a chord tone, e.g.: image K333-3 m. 178. Although the 7 in .bVI(7) is thought to replace an octave, the chord tones come out correctly (-4, 0, -3, 1) but this might be a lucky coincidence.

Here is a case where a fifth is actually a (dissonant) suspension of the (less dissonant w.r.t. the upper voice) fourth of the cadential 64 chord: image K283-3 m. 238 The label V(+6) actually assumes the presence of a third which does however not seem plausible here. Can we come up with a system that lets us account for such a phenomenon?

Disambiguating parallel suspensions

Problem: If two or more suspensions appear at the same time, the corresponding integers (intervals to the root) are written next to each other in parenthesis, so that they actually form a single integer in cases where no [+|#|b] separates them. Since the individual integers are notated in descending order, there might be a set of rules to disambiguate them in all cases but this would have to be proven.

Example: In Corelli op3n2c, m. 16, a iio6 chord has two suspensions, forming a 4th and a 2nd with the root. Since the third appears in the bass at the same time, the 4th will be expressed as 11; the 2nd will be notated as 2 because the root is not present. The symbol is therfore iio6(112). By exclusion, this can easily be disambiguated but in other cases which are yet to appear this might be impossible.

EDIT:

Solution: This is not a problem. This answer explains why.

fabianmoss commented 4 years ago

I will reply to this in a bit. Note that I created another issue to discuss versioning of the REGEX here DCMLab/corpora#46

fabianmoss commented 4 years ago

I was not really involved in the changes that introduced upwards vs. downwards resolutions. As I understand it, all arabic numbers refer to the notes as they occur in the major or natural minor scale. Chromatic alterations are then indicated by the accidentals. Why the need to indicate the resolution tendency? I think that should actually be avoided since

  1. it is implicit in # and b and thus redundant
  2. the "textbook" resolution might not actually occur

I am also confused that 7 resolves upward??

johentsch commented 4 years ago

Why the need to indicate the resolution tendency?

It is relevant for calculating the chord tones that the label describes.

Currently, the following code is used to compute the meaning of an individual change (explanation below):

if added:
    added_notes.append(new_val)
elif chord_interval in [1, 3, 5, 8, 10, 12]:    # these are changes to scale degree 2, 4, 6 that replace the lower neighbour unless they have a #
    if '#' in acc:
        tpcs[chord_interval + 1] = new_val
        if chord_interval == 5 and not figbass in ['7', '65', '43', '2']: # leading tone to 7 but not in seventh chord
            added_notes.append(new_val)
    else:
        tpcs[chord_interval - 1] = new_val
else:                                           # chord tone alterations
    if chord_interval == 6 and figbass != '7':  # 7th are a special case:
        if figbass == '':                       # in root position triads they are added
            added_notes.append(new_val)
        elif figbass in ['6', '64']:            # in inverted triads they replace the root
            tpcs[0] = new_val
        elif '#' in acc:                        # in a seventh chord, they might retardate the 8
            tpcs[7] = new_val
            added_notes.append(new_val)
        else:                                   # otherwise they are unclear
            self.logger.warning(f"{'' if mc is None else f'MC {mc}: '}In seventh chords, such as {label}, it is not clear whether the {full} alters the 7 or replaces the 8 and should not be used.")
    elif tpcs[chord_interval] == new_val:
        self.logger.warning(f"{'' if mc is None else f'MC {mc}: '}The change {full} has no effect in {numeral}{form}{figbass}")
    else:
        tpcs[chord_interval] = new_val          # default case
johentsch commented 4 years ago

I am also confused that 7 resolves upward??

The 7 as a change occurs most frequently as a retardation of the octave (e.g. I(974) I. See the issue for one of the rare exceptions.