@tgrp is mainly intended for polyphonic situations where elements like notes/chords/rests as well as augmentation dots and accidentals need to be shifted to avoid collisions and/or to achieve a sensible alignment or a sensible accidental stacking.
This attribute takes inspiration from @vgrp. It is evaluated on a timestamp-by-timestamp basis. The implied default value is 0. The elements are ordered in ascending order of their @tgrp value from left to right. This means especially, if @tgrp is negative, elements occur left of the timestamp onset.
By its current definition, @ho is essentially an application specific attribute (without knowing the application).
It specifies an offset using vertical units. How far symbols need to be shifted may however change depending on the font used (especially how wide noteheads are).
Suggested operating principle
If an element has no @tgrp attribute, the rendering application is free to decide where to place it, even if other elements at the same timestamp have @tgrp attributes. The encoder is however advised to either give all the elements of the same staff, timestamp and category a @tgrp attribute, or none of them at all (this means, when giving one accidental in staff 1, layer 1, @tstamp="1" a @tgrp attribute, then all accidentals in all layers on this staff at @tstamp="1" should be given a @tgrp attribute).
There are 3 basic categories of elements that can have a @tgrp attribute:
notes, chords, rests
dots
accidentals
The rendering application may decide how to kern the elements (e.g. based on the used font), as long as the horizontal order of elements is retained and collisions are avoided.
If elements of different categories (e.g. notes and accidentals) are in the same @tgrp, this signals to the rendering application to align elements of the same category and kern both categories closely. In the following example all the lower accidentals (natural, sharp, double sharp) may be in the same @tgrp as their respective chord, even though the bottom accidentals have different dimensions and one could say the natural is further right then the left note while the sharp precisely aligns and the double flat is left of it.
Each staff has its own independent @tgrp context. This is to avoid unintended interferences between differently aligned groups in different staffs in situation like this:
@tgrp
is mainly intended for polyphonic situations where elements like notes/chords/rests as well as augmentation dots and accidentals need to be shifted to avoid collisions and/or to achieve a sensible alignment or a sensible accidental stacking.This attribute takes inspiration from
@vgrp
. It is evaluated on a timestamp-by-timestamp basis. The implied default value is 0. The elements are ordered in ascending order of their@tgrp
value from left to right. This means especially, if@tgrp
is negative, elements occur left of the timestamp onset.Why not
@ho
?I fully agree with @zolaemil that the definition and usefulness of
@ho
are questionable "for 'programatically-determined position' is practically an undefined position". There is a related discussion here that was closed without really reaching a conclusion.Disadvantages of
@ho
are:@ho
is essentially an application specific attribute (without knowing the application).Suggested operating principle
If an element has no
@tgrp
attribute, the rendering application is free to decide where to place it, even if other elements at the same timestamp have@tgrp
attributes. The encoder is however advised to either give all the elements of the same staff, timestamp and category a@tgrp
attribute, or none of them at all (this means, when giving one accidental in staff 1, layer 1,@tstamp="1"
a@tgrp
attribute, then all accidentals in all layers on this staff at@tstamp="1"
should be given a@tgrp
attribute).There are 3 basic categories of elements that can have a
@tgrp
attribute:The rendering application may decide how to kern the elements (e.g. based on the used font), as long as the horizontal order of elements is retained and collisions are avoided.
If elements of different categories (e.g. notes and accidentals) are in the same
@tgrp
, this signals to the rendering application to align elements of the same category and kern both categories closely. In the following example all the lower accidentals (natural, sharp, double sharp) may be in the same@tgrp
as their respective chord, even though the bottom accidentals have different dimensions and one could say the natural is further right then the left note while the sharp precisely aligns and the double flat is left of it.Each staff has its own independent
@tgrp
context. This is to avoid unintended interferences between differently aligned groups in different staffs in situation like this:Examples with encoding suggestions
Example 1
Example 2
Encoding of first beat:
Example 3
Encoding of first beat:
Example 4
Encoding of first eighth:
Example 5a
Engraving example by Karl Hader:
Example 5b
Same example with Sibelius' default accidental arrangement: