0xfe / vexflow

A JavaScript library for rendering music notation and guitar tablature.
http://www.vexflow.com
Other
3.87k stars 660 forks source link

Default Style Audit - Bach Minuet in G #441

Open Silverwolf90 opened 8 years ago

Silverwolf90 commented 8 years ago

@0xfe has been working on a simple full-score example in VexFlow. Even though it's still in progress I thought this was a great opportunity to assess VexFlow's default style. Almost everything in the example consists of defaults except for the slurs' (ie Curve) control points, which are manually set.

Bach Minuet in G

Stylistic Issues:

  1. Key signature too far away from the clef
  2. Time signature too far away from key signature
  3. Time signature numbers are too small
  4. Fingering 2 not centered over notehead (Bar 6)
  5. Gracenote is a bit too far away from the note (Bar 8)
  6. Left modifiers increase spacing between objects when not needed (Bar 1, 7, 9, 15) or by too much (Bar 8)
  7. Beam sitting between staff lines (Bar 11) (https://github.com/0xfe/vexflow/issues/432)
  8. Beam angles are too aggressive
  9. Beams feel a bit thin
  10. Metronome mark too close to tempo text
  11. Too much spacing between beamed inner notes. (Bar 14)
  12. Too much spacing between last two notes (Bar 15)
  13. Slurs are too thick
  14. Slurs endpoints should be centered over the notehead if on the notehead-side
  15. Slur endpoints shouldn't start on staff lines
  16. Slur endpoints should go above staccato dots
  17. Augmentation dots are a bit close to notehead
  18. The thin/thick repeat barlines are too close to each other
  19. Repeat barline dots too close to barline
  20. Notes before/after repeat are too close to the barline

Disclaimer: This is naturally a bit opinionated, but I don't think I've said anything too controversial.

mscuthbert commented 8 years ago

Fantastic.

M. 8 -- the "grace" note should not have a slash through it -- it's an appogiatura. (B-quarter note + A half note).

0xfe commented 8 years ago

Thanks for the audit, Cyril. This is exactly what I was hoping to get from the demo. Do you mind numbering them, so it's easier to refer to them in comments?

Silverwolf90 commented 8 years ago

Done!

Silverwolf90 commented 8 years ago

I'm changing:

Left modifiers increasing initial stave padding by too much (Bar 9, Bar 15)

to

Left modifiers increase spacing between objects when not needed (Bar 1, 7, 9, 15) or by too much (Bar 8)

rvilarl commented 1 year ago

@ronyeh @mscuthbert @sschmidTU @AaronDavidNewman @0xfe @Silverwolf90 once #1519 is merged we will get the image below. I think that it is now the right time:

Bravura pptr-Bach_Demo Minuet_1 Bravura svg_current Gonville pptr-Bach_Demo Minuet_1 Gonville svg_current

mscuthbert commented 1 year ago

Will think of other test pieces soon. There's a tradition of including Trio no 1 from the Mozart Clarinet Quintet in music notation projects. It'd be good to have a piece with texts, and also to show that Vexflow is for all people, some music not by white-male-Europeans. I have an Amy Beach score in musicxml that I use as a Vexflow demo, but it requires music21j etc. -- I haven't ever coded a whole work directly in Vexflow.

One thing that I've always wanted to PR on, but always forget is that the grace note in m8 should not have a slash through it (and often without a flag). It's a quarter note appogiatura (subtracts one beat from the dotted half note.) Oh, and the minuet isn't by Bach; it's by Christian Petzold. :-) https://en.wikipedia.org/wiki/Minuets_in_G_major_and_G_minor

ronyeh commented 1 year ago

Nice.

For VexFlow 5, we should rename this to "Demo - Petzold".... then we can add other standard demos to our test suite, including "Demo - Beach", "Demo - Joplin", etc....

mscuthbert commented 1 year ago

Joplin is always a good choice -- out of copyright, fun, diverse, and often introduces cross-staff problems.

ronyeh commented 1 year ago

One thing that I've always wanted to PR on, but always forget is that the grace note in m8 should not have a slash through it (and often without a flag). It's a quarter note appogiatura (subtracts one beat from the dotted half note.)

Thanks for pointing it out. :-) I stole your PR with this fix: https://github.com/0xfe/vexflow/pull/1521/files

rvilarl commented 1 year ago

Joplin is always a good choice -- out of copyright, fun, diverse, and often introduces cross-staff problems.

@ronyeh @mscuthbert @jaredjj3 I will go for Gladiolus Rag. @sschmidTU the cross-staffs are not handled in OSMD, right?

sschmidTU commented 1 year ago

@rvilarl If you mean cross-staff beams, no, they're not handled in OSMD, because they weren't supported in Vexflow 1.2.93. (if you're talking about Gladiolus Rag specifically, please provide a link to the MusicXML) Would be great to implement them though with Vexflow 4+, looking forward to that!

rvilarl commented 1 year ago

(if you're talking about Gladiolus Rag specifically, please provide a link to the MusicXML)

https://musescore.com/user/58480/scores/1749906

sschmidTU commented 1 year ago

@rvilarl thanks! Unfortunately I can't download the MusicXML because I don't have a Musescore subscription, though I guess I don't need it for now.

By the way, actually OSMD has a lot of cross-beam support internally (data model), because we support it in our mobile app which has its own renderer, from which OSMD's code is derived. We just never activated/adapted much of the graphical code in OSMD because Vexflow didn't have cross-stave beam support.

rvilarl commented 1 year ago

@sschmidTU the score is public domain and I downloaded it with a free subscription. Should I make a PR to include it in your test set?

sschmidTU commented 1 year ago

Ah, thanks, it can be downloaded just by logging in with a free account. No, I don't see the value for the test set before we have cross stave beams, and it's quite big, but thanks!

rvilarl commented 1 year ago

FYI getting there with Joplin

https://jsfiddle.net/v53kesbp/2/