Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gladiolus Rag fixes #223

Merged
merged 15 commits into from
May 31, 2024
Merged

Gladiolus Rag fixes #223

merged 15 commits into from
May 31, 2024

Conversation

jaredjj3
Copy link
Collaborator

@jaredjj3 jaredjj3 commented May 28, 2024

This PR addresses some issues rendering Gladiolus Rag by Joplin in #78, but does not completely fix it.

  • Ensure that the top of a rendering is present.
  • Prevent ties from rendering across systems.
  • Investigate increasing StaveTie height, part distance, or both.
  • Render repeats.

This PR adds basic support for rendering repeat barlines. I'll address alternative endings in lilypond 45b-RepeatWithAlternatives.xml.

Before

vexml_dev_0_0_0 (1)

After

vexml_dev_0_0_0

@jaredjj3 jaredjj3 self-assigned this May 28, 2024
@jaredjj3 jaredjj3 marked this pull request as ready for review May 31, 2024 00:59
@jaredjj3 jaredjj3 merged commit b859966 into master May 31, 2024
1 check passed
@jaredjj3 jaredjj3 deleted the fixes branch May 31, 2024 00:59
@rvilarl
Copy link
Collaborator

rvilarl commented Jun 9, 2024

wow! This looks so good!

@rvilarl
Copy link
Collaborator

rvilarl commented Jun 9, 2024

The cross tab elements are missing.

image

@jaredjj3
Copy link
Collaborator Author

jaredjj3 commented Jun 9, 2024

Thanks for calling this out — this part is very tricky. The next step is to make a small vexml integration test case reproducing that.

I have a theory on what's broken.

Beams assume that they will see all their notes before starting another beam. I know this because they are not keyed by anything in their underlying SpannerMap. There's currently no mechanism to have multiple beams open at the same time.

So far, I can think of doing one of the following solutions:

  1. Figure out a key for the beam's SpannerMap. Maybe we can infer one from the note's Address. The thing is that I'd have to be very careful with further assumptions about beams (e.g. can beams traverse measure boundaries?).
  2. When providing SpannerData (code), include data from all staves. Then, Beam should be responsible for searching other staves for notes that also belong to a given beam opening.

@rvilarl
Copy link
Collaborator

rvilarl commented Jun 9, 2024

I believed not, but...

image

@jaredjj3
Copy link
Collaborator Author

jaredjj3 commented Jun 9, 2024

I'm glad you found this! Music notation is full of wonderful edge cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants