Hi,

I've been trying to make a bracket to indicate a change of manuals for an
organ piece, and have succeeded in getting Lilypond to generate what I want
(code below) for a particular instance. However, I have three questions:

1) Why does this particular format work? I'm not understanding why removing
the tweak from manualBracketUpper, for example, makes the bracket not
cross-staff.

2) How do I set Arpeggio.positions to be relative to the staves? I tried to
insert a let function to define the position pair but did not do it
properly.

3) Is it possible to create this bracket in a single context and have it
ignore staff collisions? I tried drawing a bracket to go in the Dynamics
context, but everything I tried maintained avoiding collisions.

I have an extremely basic knowledge of Scheme but am happy to learn more.
Thank you!
-David

---

manualChange =
#(define-music-function
 (spacer text)
 (ly:music? markup?)
 #{
  #spacer -\markup { \hspace #-5 \normal-text \fontsize #-1 #text }
 #})

manualBracketUpper =
#(define-music-function
 (note)
 (ly:music?)
 #{
  #note
-\tweak Arpeggio.positions #'(0 . 0)
\arpeggio
 #})

manualBracketLower =
#(define-music-function
 (note)
 (ly:music?)
 #{
\override PianoStaff.Arpeggio.positions = #'(-13 . 3)
  #note
\arpeggio
 #})

\new PianoStaff <<
\set PianoStaff.connectArpeggios = ##t
\override PianoStaff.Arpeggio.stencil = #ly:arpeggio::brew-chord-bracket

\new Staff { \manualBracketUpper c''4 }
\new Dynamics { \manualChange 8 "Ch." }
\new Staff { \manualBracketLower c'4 }
>>

---

Reply via email to