Features
Every chorale is analyzed once when it's loaded, producing several parallel Humdrum spines. Each spine is a feature you can use as the driving feature or reference from any pattern position:
| Feature | Description | Driving feature |
|---|---|---|
kern | The notes themselves (rhythm + pitch) | yes |
deg | Scale degree relative to the local key | yes |
mint | Melodic interval from the previous note | yes |
fb | Figured-bass harmony above the bass | yes |
metweight | Metric weight / beat strength ("strong"/"half-strong"/"weak"/"unclassified") | yes |
hint-<pair> | Harmonic interval between one specific pair of voices | yes |
duration | Rhythmic value (Humdrum recip, tied notes combined, e.g. "4", "8") | no |
fermata | Whether the note carries a fermata ("true"/"false") | no |
phrase | Whether the note opens ("start") or ends ("end") a phrase | no |
duration, fermata and phrase are read directly off the underlying **kern token for
whichever line a driving-feature onset lands on. They aren't independent spines,
so they can only appear as extra constraints inside a pattern position (see
Checking several features at
once), never as feature
itself.
Phrases are delimited by fermatas. "end" is the note that carries a fermata,
and "start" is the first sounding note after a fermata, so a rest in between
is skipped. The first sounding note of a voice counts as a start too, because it
opens the first phrase. A note in the middle of
a phrase is neither, so it is asked for with a negation:
{ "!phrase": ["start", "end"] }.
Each spine-backed feature has its own page with the exact token format and how
to write pattern values against it. hint works a bit differently from the
others: there isn't a single hint spine, but one per voice pair (hint-12,
hint-13, … hint-34), plus a hint-<voice> shorthand; see its own page for
the key naming rules.