denigma 4.0.0
Loading...
Searching...
No Matches
denigma::classify::dynamics::Composition Struct Reference

Structural decomposition of a dynamic marking. More...

#include <dynamics.h>

Public Attributes

Reinforcement reinforcement { Reinforcement::None }
 Leading reinforcement syllable, if any.
 
Level level { Level::None }
 The sounding level, e.g. Level::f for "sfzp".
 
bool forzato {}
 Whether the marking carries the forzato "z", as in "fz", "sfz", "sffz", "rfz".
 
Level subsequent { Level::None }
 The level after the attack, e.g.
 

Detailed Description

Structural decomposition of a dynamic marking.

A dynamic marking is built from an optional reinforcement syllable, a sounding level, an optional forzato "z", and an optional level the passage settles to after the attack. A plain level such as "ff" decomposes to itself with no affixes.

A marking decomposes whether or not it is one of the spellings Dynamic enumerates. "sffffffz" has no Dynamic of its own and classifies as Dynamic::Other, but it still decomposes to a sforzando reinforcement, a level of "ffffff", and a forzato.

The affixes are reported even when the level itself cannot be named. "sffffffffz" yields a sforzando reinforcement and a forzato with level of Level::Other, so a consumer can still act on the structure it does have and take the level from dynamics::Mark::glyphs.

A default-constructed Composition means the marking has no structure the classifier recognizes. level is therefore Level::None only in that empty Composition; a marking that decomposes at all has a level, even if that level can only be reported as Level::Other.

Member Data Documentation

◆ subsequent

Level denigma::classify::dynamics::Composition::subsequent { Level::None }

The level after the attack, e.g.

Level::p for "sfzp". Level::None if the marking does not fall back to another level.


The documentation for this struct was generated from the following file: