-
Notifications
You must be signed in to change notification settings - Fork 5
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
[BUG] (v0.0.0): Prelude_No._1_BWV_846_in_C_Major.mxl #207
Comments
@rvilarl thanks for the bug report and good luck with your move! |
Looking at this now. |
I thought I could make @rvilarl, @infojunkie, and @sschmidTU, do you have any advice for handling |
For now, this is what I'm planning to do when iterating through a
|
Looks like a complex specification indeed. And of course, it is complex because of all the cases of annotations that exist in real-word scores. My reading of the
At this moment, I don't fully understand which direction types need to be associated with notes, versus which don't. Maybe it's just a function of where they occur in the bar, but that would need clarification. Maybe you can ask a question in the musicxml discussion forum although the new maintainer of the format has not been very responsive. You may have better luck at StackExchange Music. Happy to continue digging if you feel this is useful to you. |
@jaredjj3 I also do not see like @infojunkie why we have to associate directions to notes. Probably the abstraction can be improved in VexFlow, for example, Coda & Segno are StaveModifiers but pedal is not. |
@infojunkie, thank you, this is an excellent summarization (even better than ChatGPT).
Ah, of course! This is where I went wrong — the current Here's the snippet I was dealing with (the full score is in #207 (comment)):
The Thanks for illuminating the |
I think this is a shortcoming of the MusicXML spec. It's very confusing to have directives that maybe associate Ultimately, yes I agree if The more I work with const stave1 = Stave({
label: Text('part1', { offset: Vector.fromOrigin(-5, 0) }),
entries: [
// A StaveEntry is like a vertical stack of elements.
StaveEntry([Barline({ label: Text('1') })]),
StaveEntry([KeySignature('C')]),
StaveEntry([Clef('G')]),
StaveEntry([TimeSignature('4/4')]),
StaveEntry([Note('C', { duration: 'h' })]),
StaveEntry([Chord([Note('C'), Note('D')])]),
StaveEntry([Barline()])
]
});
const stave2 = Stave(); // empty for now
const system = System({ staves: [stave1, stave2] });
system.format().draw(); or maybe you have helpful instance methods: const stave = Stave();
// This would merge into the internal structures of the stave.
stave.insert(StaveEntry([Note('C', duration: 'q')]), { at: Fraction(3, 4) }); This would be a different goal than I'm not sure how adaptable this is to |
You have a low opinion of humans and a high opinion of technology 😱 |
I'm waiting on 0xfe/vexflow#1611 before I resume this. |
Expected behavior
Render correctly.
Actual behavior
Exception and wrong rendering.
Screenshot
Hints
The more you provide, the faster we can fix it.
vexml
code references where the bug may be.The text was updated successfully, but these errors were encountered: