\version "2.19.15" %{
Thanks to everyone who suggested looking at LSR-753 for the "Jazz style" multi-measure rest. That is substantially what I want. In attempts to add parenthesis in the staff around the number within the staff, I ran into several problems. I first tried adding parenthesis as text to the multi-measure rest, as described in http://www.lilypond.org/doc/v2.18/Documentation/snippets/text#text-multi_002dmeasure-rest-markup since it claims to center text. Which it does: %} #(define (white-under grob) (grob-interpret-markup grob (markup #:vcenter #:whiteout #:pad-x 1 (ly:grob-property grob 'text)))) setInlineMMRN = { \set Score.skipBars = ##t \override Score.MultiMeasureRest.expand-limit = 1 \override Score.MultiMeasureRest.minimum-length = #30 } inlineMMRN = { \once \override MultiMeasureRest.layer = #-2 \once \override MultiMeasureRestNumber.layer = #-1 \once \override MultiMeasureRestNumber.Y-offset = #0 \once \override MultiMeasureRestNumber.stencil = #white-under } timeParens = \markup { \huge "(" \magnify #1.4 " " \huge ")" } { \setInlineMMRN \inlineMMRN R1*4^\markup { \timeParens } } %{ But I could not get it to move down onto the staff. As described in http://www.lilypond.org/doc/v2.19/Documentation/notation/formatting-text#text-alignment "Vertical alignment is a bit more complex. As stated above, markup objects can be moved as a whole; however, it is also possible to move specific elements inside a markup block." It took me a while to realize this meant that the techniques using raise, lower, translate, general-align and translate-scaled will NOT affect the "markup object moved as a whole", but rather affect the relative position of objects within the markup object. I also learned that these techniques, in addition to never placing text on the staff, will not place text to the left of the anchor point. Perhaps this section should include a comment to the effect of: "The commands raise, lower, translate, general-align and translate-scaled used within a markup block are limited to printing text outside the staff and to the right of the anchor point." %} { % % An example of a failed attempt to translate text within a markup block % % The translated object will not move to the left, even if it does not collide with anything: d'1^\markup { Acte I \translate #'(-30 . 4) "Scène 1" } 1 1 % It seems the translated object is positioned relative to the first text object % and the entire markup is positioned above the staff. % Here, the lowered second object has the effect of pushing the first object higher up. 1^\markup { Acte I \translate #'(0 . -4) "Scène 1" } 1 1 d'1^\markup { Acte I \translate #'(0 . 4) "Scène 1" } % The documentation for moving objects suggests using extra-offset. % http://lilypond.org/doc/v2.19/Documentation/learning/moving-objects % Likewise, this does not work on the multi-measure rest. \setInlineMMRN \inlineMMRN \once \override TextScript #'extra-offset = #'(0 . -3.7) R1*8^\timeParens } % What did allow me to place text in the staff was attaching it to an empty chord. wideTimeParens = \markup { \magnify #11.5 " " \huge "(" \magnify #1.4 " " \huge ")" } inlineMMRN = { \once \override MultiMeasureRest.layer = #-2 \once \override MultiMeasureRestNumber.layer = #-1 \once \override MultiMeasureRestNumber.Y-offset = #0 \once \override MultiMeasureRestNumber.stencil = #white-under \once \override TextScript #'extra-offset = #'(0 . -3.7) <>^\wideTimeParens } { \setInlineMMRN \inlineMMRN R1*4 } % But then I lost the auto-centered-ness of attaching it to the multi-measure rest. { \setInlineMMRN \inlineMMRN R1*44 \inlineMMRN R1*8 \inlineMMRN R1*12 } % So I can tweak these into submission. inlineMMRN = { \once \override MultiMeasureRest.layer = #-2 \once \override MultiMeasureRestNumber.layer = #-1 \once \override MultiMeasureRestNumber.Y-offset = #0 \once \override MultiMeasureRestNumber.stencil = #white-under \once \override TextScript #'extra-offset = #'(0 . -3.7) } { \setInlineMMRN \inlineMMRN <>^\markup { \magnify #10.4 " " \huge "(" \magnify #4 " " \huge ")" } R1*44 \inlineMMRN <>^\markup { \magnify #13.1 " " \huge "(" \magnify #1.9 " " \huge ")" } R1*8 \inlineMMRN <>^\markup { \magnify #12 " " \huge "(" \magnify #3.9 " " \huge ")" } R1*12 } %{ Finally, here is the real point of my post: It would be nice to have a function that could take these arguments: duration, number of measures, X-tweak, Y-tweak. I've done music functions before music and text, but not with numbers. My template for a music function that takes numbers comes from http://lilypond.org/doc/v2.18/Documentation/notation/substitution-function-examples padText = #(define-music-function (parser location padding) (number?) #{ \once \override TextScript.padding = #padding #}) \relative c'' { c4^"piu mosso" b a b \padText #1.8 c4^"piu mosso" b a b \padText #2.6 c4^"piu mosso" b a b } So, here is my attempt. Does anyone have any hints for how to get such a function to work? It especially doesn't like the expressions ##xTweak, ##yTweak and R$measureLength*#howManyMeasures, but I don't understand how this syntax works. %} playTime = #(define-music-function (parser location measureLength howManyMeasures xTweak yTweak) (ly:duration? number? number? number?) #{ <>^\markup { \magnify ##xTweak " " \huge "(" \magnify ##yTweak " " \huge ")" } R$measureLength*#howManyMeasures #}) { \setInlineMMRN \playTime 1 #44 #10.4 #4 \playTime 1 #8 #13.1 #1.9 \playTime 1 #12 #12.0 #3.9 } % Thanks for any advice! David Elaine Alt 415 . 341 .4954 "*Confusion is highly underrated*" ela...@flaminghakama.com self-immolation.info skype: flaming_hakama Producer ~ Composer ~ Instrumentalist -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user