stringsync / vexml

MusicXML to Vexflow
MIT License
18 stars 5 forks source link

Prevent lyric collisions #216

Open jaredjj3 opened 6 months ago

jaredjj3 commented 6 months ago

Expected behavior Lyrics don't collide with musical symbols on the bottom of the stave.

Actual behavior Lyrics collide with musical symbols on the bottom of the stave.

Screenshot

image

Hints

jaredjj3 commented 4 months ago

Today I tried fixing this, but I ended up fighting the vexflow formatting in undesirable ways. Specifically, the vertical justification code prevents me from positioning lyrics independently of the note they're attached to.

I also thought that the lyrics rendering relative to their note was a bug (like in measure 10 in the first comment of this issue). However, the vexflow annotation tests suggest that it is working as intended.

image

I could use drawables.Text to work around this, but then I'd inherit all of the complexity formatting it. I could also hack annotation rendering with vexflow.GhostNotes positioned anywhere, but that will add complexity and performance overhead that I don't think is worth it.

I'll wait for https://github.com/vexflow/vexflow/issues/176#issuecomment-1999303991 to be addressed before pursuing this again.