Export to GitHub

lilypond - issue #1083

subdivideBeams fails at the beginning of a pattern


Posted on May 10, 2010 by Happy Camel

http://lists.gnu.org/archive/html/bug-lilypond/2010-05/msg00107.html

% workaround: use \overrideBeamSettings

\version "2.13.20"

\relative c' { \set beatLength = #(ly:make-moment 1 8) \set subdivideBeams = ##t \repeat unfold 16 { c32 d } }

% EOF

Attachments

Comment #1

Posted on May 11, 2010 by Happy Camel

This behavior broke between 2.10 and 2.12, so it will block 2.14.

Comment #2

Posted on May 13, 2010 by Grumpy Panda

See also http://lists.gnu.org/archive/html/lilypond-user/2010-05/msg00122.html

Comment #3

Posted on Jun 19, 2010 by Happy Bird

Actually, this has nothing to do with subdivideBeams, but rather with beatLength (and, AFAICT, with the way that beaming properties work in general). In 4/4 time, the default is to break beams every beat, but this is stored in beam-settings.scm as '(1 1 1 1). When beatLength is 1/8, the beam endings get transformed by ending-moments (in auto-beam.scm) to '(1/8 1/4 3/8 1/2), which means that there are no places to split beams in the second half of the bar.

Comment #4

Posted on Jun 19, 2010 by Grumpy Panda

This is fixed by the new autobeam patch. As soon as it's accepted, I'll mark this as fixed.

Comment #5

Posted on Jun 19, 2010 by Grumpy Panda

(No comment was entered for this change.)

Comment #6

Posted on Jul 18, 2010 by Grumpy Panda

(No comment was entered for this change.)

Comment #7

Posted on Aug 9, 2010 by Happy Bird

2.13.29 says:

warning: cannot find property type-check for `beatLength' (translation-type?). perhaps a typing error? warning: doing assignment anyway

Some things should be documented? (I guess i am ok to verify this issue, but i would like to know whether to open another issue or not before closing this one).

Thanks.

Comment #8

Posted on Aug 9, 2010 by Grumpy Dog

Carl's patch changed the syntax. Instead of beatLength we must now use baseMoment. If you convert the minimal example with convert-ly you should get:

\relative c' { \set baseMoment = #(ly:make-moment 1 8) \set subdivideBeams = ##t \repeat unfold 16 { c32 d } }

, which works. But make sure convert-ly converts the example correctly before verifying any fix that causes a syntax change (I didn't do this).

Trevor

Comment #9

Posted on Aug 9, 2010 by Happy Rhino

IIRC this is a non-convert-ly'd syntax change. Running convert-ly on an old file should produce a warning, but it will not update the syntax for you. (since this is a change to an override, we relax the normal syntax change guidelines slightly)

Comment #10

Posted on Aug 9, 2010 by Happy Bird

Thank you.

convert-ly produces:

[...] Not smart enough to convert beatLength. Use baseMoment and beatStructure. Please refer to the manual for details, and update manually. [...]

Documentation looks to be updated too, great.

Status: Verified

Labels:
Type-Defect Priority-Critical Regression fixed_2_13_29