ssb22 / jianpu-ly

Jianpu in Lilypond
http://ssb22.user.srcf.net/mwrhome/jianpu-ly.html
Apache License 2.0
77 stars 19 forks source link

Anacrusis and KeepLength #31

Closed suntong closed 1 year ago

suntong commented 1 year ago

Trying to use KeepLength and 弱起拍 (anacrusis, pick-up) together, and I found this is not working:

4/4,4

KeepLength

c5,   1. q1 c1 3

Error: Final bar of score 1 does not make up for anacrusis bar. Set j2ly_sloppy_bars environment variable if you really want to break the rules.

whereas this is OK:

4/4

KeepLength

c5,   1. q1 c1 % 3

Am I doing something wrong?

PS. https://www.jitakong.com/jianpu/36528.html is what I'm trying to do.

ssb22 commented 1 year ago

Hi, the error message is correct because you put 4 beats in the final bar. The final bar of the source material is 1 - - which is only 3 beats. The rule is that however many beats you put in the pickup must be removed from the final bar (unless you set j2ly_sloppy_bars to let you break that rule). Maybe the wording of the error message needs to be clearer. Actually I wonder if I should make a Chinese translation of all the messages (if I can detect when the system is set to Chinese .. it'll be harder on Windows). This message will be hard to translate though: if someone doesn't already know the anacrusis rule in music theory, it's not easy to explain in a short message....

suntong commented 1 year ago

Oh, now I understand it. Thanks for the detailed explanation.

Hmm, about translating error messages into Chinese, maybe a simpler (and more manageable) approach is to put a table somewhere that explained what the cryptic error messages actually means. IE you don't need to change the code, and it's more easy to amend the contents, and people would have a much clearer understanding when they see the error messages. If so, I'd suggest to put them in the wiki here.