Symbol Interpretation Graph (SIG)
Relation
A Relation instance formalizes a relationship between a source Inter
instance and a (separate) target Inter
instance.
There are 3 kinds of relation:
-
A positive relation represents a mutual support between two
Inter
instances.
Here we have a typical example: a filled head interpretation and a stem interpretation nearby with a suitable HeadStemRelation between them, shown as a “HeadStem“-labelled green segment (the “Relation” suffix is always omitted in relation name display).
Support relations increase the contextual grade of their linkedInter
instances. In this way, even rather low-quality interpretations, when well combined through supporting relations, may end up with acceptable contextual grade. -
A negative relation represents a mutual exclusion between two
Inter
instances. Typically, two different interpretations for the same underlying glyph will compete with one another and will thus be linked by an Exclusion relation.
An exclusion tells the engine that the twoInter
instances cannot coexist in the final configuration, so at least one of them will be discarded at some point in the transcription process. -
A neutral relation is neither positive nor negative, it just conveys information between two
Inter
instances.
For example a head-chord is an ensemble composed of one or several heads and often one stem. There is one Containment relation between the chord ensemble and each of its heads members. If the chord has a stem, there is a ChordStemRelation between chord and stem (along with a supporting HeadStemRelation between each head and the stem).
The image below shows a higher level of relation:
- We can see two
Inter
instances (a treble clef followed by a 2-flat key) linked by a supporting ClefKeyRelation instance. - This ClefKeyRelation exists because the vertical positions (pitches) of the flat signs configuration in this key (B then E) are compatible with a treble clef.
- If ever there was a competing bass clef candidate, there would be of course an Exclusion between the two competing clef candidates, plus another Exclusion between the bass clef and this key (because the vertical positions of this key are not compatible with a bass clef).
SIG
A Symbol Interpretation Graph (SIG), is simply a graph with Inter
instances as vertices and Relation instances as edges.
The SIG plays a central role in Audiveris V5. Its main purpose is to host all candidate Interpretations and to formalize and manage the Relations (mutual exclusions, supporting relations) within the population of candidate interpretations.
There is one SIG per system, and at precise points in the OMR engine pipeline (the REDUCTION step and the LINKS step), each SIG is reduced so that all exclusions are resolved and no Inter
with weak contextual grade remains in its graph.