igneus / gly

flexible Gregorian notation format compiling to canonical gabc
6 stars 1 forks source link

Line type autodetection and adiastematic neumes #4

Open igneus opened 6 years ago

igneus commented 6 years ago

Unless a line or block is explicitly annotated as music or lyrics (using the \music or \lyrics keyword), gly detects it's meaning. The autodetection currently fails for music lines containing adiastematic neumes. They fall through music detection and are handled as lyric lines.

This should be changed. As a result of this change, not only the explicit music line annotation should not be necessary any more in test example nabc.gly, but also music lines with more complex adiastematic neumes should be autodetected correctly. E.g. this gly

c4
c|talsi8lsm9 d|vi ixdh'!iv|pelss3`vihglsl3 h.|ta ,
GAu -- de -- á -- mus *

should produce gabc like this

%%
(c4) GAu(c|talsi8lsm9)de(d|vi)á(ixdh'!iv|pelss3`vihglsl3)mus(h.|ta) *(,)

(Source of the example gabc)

Note: each change of the gly parser must be documented by at least one test case which fails before and passes after the change. Test cases of gly syntax features usually have the form of a pair of gly file in tests/examples/gly/given and a resulting gabc file in tests/examples/gly/expected.