Skip to content

harmony.functional

Urs Liska edited this page Jul 5, 2020 · 6 revisions

analysis.harmony.functional

Discussion of features and implementation

This is a discussion of the features initially available in the analysis.harmony.functional module (Open as PDF).

preview

Questions/suggestions:

  • Row 1:
  • Row 3:
    • The strikethrough should be made configurable
    • functions not actually appearing (like intermediate dominants which aren't resolved or chords that can only be related to something that doesn't happen) can currently be visualized by square brackets or by (grey) coloring.
      • Should there be other forms of parenthesizing (e.g. curly braces {} or angled brackets <>?
      • Should it be possible to move such a "phantom" function to a (smaller?) subscript position?
    • v, N, and n are currently hardcoded. Should it be possible to place arbitrary text there?
  • Row 4:
    • Currently there is support for three layers of numbers. Is that sufficient?
    • Will "functional" people want to have sharps and flats instead of < and >? If so do we need the optionally before/after the number?
    • Entries centered above/below the function can currently hold numbers only. Should it be possible to write arbitrary text there?
    • Is it necessary to support more than one layer above/below the function?
    • If so, should there be something like a separating line?

General feature requests

Forward Arrows

Bracketed/parenthesized functions should be able to print a forward arrow indicating intermediate functions. These arrows should either have a fixed length or be drawn to the consecutive function.

Drones ("Orgelpunkt")

\function \with {
  start-drone = \markup \circle Es
}

This should start a spanner drawing a (styled?) line below the function and the given markup below. At intermediate and ending points arbitrary markup should also be possible, but usually one will only use the start.

Annotations

\function \with {
  annotate-below = \markup \bold \with-color #red "Es?"
}

This should print a (short) line below the function and the markup below that. It should be configurable to draw either a centered horizontal or a diagonal line somewhat shifted right or left.

Resolutions

Step resolutione (4 - 3) should be possible with a proper hyphen printed centered between the numbers. I see three different approaches:

  • encode two functions and indicate (somehow) that there's this continuation between them
  • encode one function and indicate that (after a certain time) a resolution should be printed
  • encode one function and immediately print both numbers as part of the markup.
  1. and 2) may be interdependent if the function differs too.