lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Spacing grobs with an invisible object between them (hack)


From: Paolo Prete
Subject: Spacing grobs with an invisible object between them (hack)
Date: Thu, 6 Feb 2020 01:47:49 +0100

Hello,

I just had this idea about a *new* method of spacing.
Maybe this is nuts, and it's almost a hack, but I'm seeing that it could work, so, please, leave me a feedback.
The idea is create an invisible "obstacle", with a length set in staff-space units, between grobs.
Then, assign a position to each grob.

The obstacle has a grey color in the following example, but you can use white color as well.

Here is the example:

%%%%%%%%%%%%%%%%%%%%%%%%

#(define (SpaceBeforePos1 length)  #{ \tweak TextScript.outside-staff-priority 100 ^\markup{ \draw-line #(cons 0 length)} #})
#(define (SpaceBeforePos2 length)  #{ \tweak TextScript.outside-staff-priority 200 ^\markup{ \draw-line #(cons 0 length)} #})
#(define (SpaceBeforePos3 length)  #{ \tweak TextScript.outside-staff-priority 300 ^\markup{ \draw-line #(cons 0 length)} #})
#(define (SpaceBeforePos4 length)  #{ \tweak TextScript.outside-staff-priority 400 ^\markup{ \draw-line #(cons 0 length)} #})

#(define DynamicTextAtPos1 #{ \once \override DynamicLineSpanner.outside-staff-priority = 110 #})
#(define DynamicTextAtPos2 #{ \once \override DynamicLineSpanner.outside-staff-priority = 210 #})
#(define DynamicTextAtPos3 #{ \once \override DynamicLineSpanner.outside-staff-priority = 310 #})
#(define DynamicTextAtPos4 #{ \once \override DynamicLineSpanner.outside-staff-priority = 410 #})

#(define ScriptAtPos1 #{ \once \override Script.outside-staff-priority = 110 #})
#(define ScriptAtPos2 #{ \once \override Script.outside-staff-priority = 210 #})
#(define ScriptAtPos3 #{ \once \override Script.outside-staff-priority = 310 #})
#(define ScriptAtPos4 #{ \once \override Script.outside-staff-priority = 410 #})

#(define TupletBracketAtPos1 #{ \once \override TupletBracket.outside-staff-priority = 110 #})
#(define TupletBracketAtPos2 #{ \once \override TupletBracket.outside-staff-priority = 210 #})
#(define TupletBracketAtPos3 #{ \once \override TupletBracket.outside-staff-priority = 310 #})
#(define TupletBracketAtPos4 #{ \once \override TupletBracket.outside-staff-priority = 410 #})

#(define OttavaBracketAtPos1 #{ \once \override Staff.OttavaBracket.outside-staff-priority = 110 #})
#(define OttavaBracketAtPos2 #{ \once \override Staff.OttavaBracket.outside-staff-priority = 210 #})
#(define OttavaBracketAtPos3 #{ \once \override Staff.OttavaBracket.outside-staff-priority = 310 #})
#(define OttavaBracketAtPos4 #{ \once \override Staff.OttavaBracket.outside-staff-priority = 410 #})

{

\time 2/4

% assign a position to each grob

$TupletBracketAtPos1
$OttavaBracketAtPos2
$DynamicTextAtPos3
$ScriptAtPos4

% We want 4 staff spaces before position 1, 2 staff spaces before position 2, 3 staff-spaces before position 3 and 4 staff-spaces before position 4

\once \override TupletBracket.direction = #UP
\once \override TextScript.color = #grey
\tuplet 3/2 { \ottava #1 c'''-#(SpaceBeforePos1 4) -#(SpaceBeforePos2 2)  -#(SpaceBeforePos3 3) ^\mf -#(SpaceBeforePos4 4) ^>  c''' c''' \ottava #0 }

r2

% change the position of the grobs

$OttavaBracketAtPos1
$TupletBracketAtPos2
$ScriptAtPos3
$DynamicTextAtPos4

\once \override TupletBracket.direction = #UP
\once \override TextScript.color = #grey
\tuplet 3/2 { \ottava #1 c'''-#(SpaceBeforePos1 4) -#(SpaceBeforePos2 2)  -#(SpaceBeforePos3 3) ^\mf -#(SpaceBeforePos4 4) ^>  c''' c''' \ottava #0 }

}

reply via email to

[Prev in Thread] Current Thread [Next in Thread]