Closed johentsch closed 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
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
#
and b
and thus redundantI am also confused that 7
resolves upward??
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
tpcs
is a list of tonal pitch classes reflecting the local key such that tpcs[0]
is the Roman numeral's scale degree (e.g. for changes applied to IV, tpcs[0] == -1
).added
: True if change is preceded by a +
acc
: accidentalschord_interval
: the interval - 1(False, '', 3)
new_val
holds the tonal pitch class representing the interval.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.
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.: \ 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 (≙ TPCs4, 1, 7
) but is not a correct analysis (this is not a secondary dominant ofii
). Ideally, this would be analysed as a suspension ofV2
, but in the notationV2(6#4)
both6
and#4
replace the fifth (TPCs-1, 1, 5, 7
) when the6
actually withholds the seven (correct TPCs:4, 1, 5, 7
). A possible solution could be to introduce^
as inV2(^6#4)
.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 (TPCs2, -1, 6, 1, 5
). Once again, this would be more correctly analysed as a retardation ofi6
but without a new symbol, the2
ini6(#42)
would be understood as replacing the root (TPCs-3, 6, 2
) rather than replacing the bass note (TPCs2, 6, 0
). This could be remedied by writingi6(#4^2)
.And here another case, where 2 replaces 3 rather than 1: \ 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 interval7
is analysed as2
(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.: K333-3 m. 178. Although the7
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: 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.