lilypond-user
[Top][All Lists]
Advanced

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

Re: print bass staff not always


From: David Kastrup
Subject: Re: print bass staff not always
Date: Mon, 21 Jan 2019 22:33:02 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

Gianmaria Lari <address@hidden> writes:

> On Mon, 21 Jan 2019 at 14:57, Gianmaria Lari <address@hidden>
> wrote:
>
>>
>>
>> On Mon, 21 Jan 2019 at 13:02, Valentin Villenave <address@hidden>
>> wrote:
>>
>>> On 1/21/19, Andrew Bernard <address@hidden> wrote:
>>> > Not sure how to do it with PianoStaff.
>>>
>>> That’s because of the Keep_alive_together engraver. Your layout block
>>> should look like:
>>>
>>> \layout {
>>>     \context {
>>>       \PianoStaff
>>>       \RemoveEmptyStaves
>>>       \remove "Keep_alive_together_engraver"
>>>       \override VerticalAxisGroup.remove-first = ##t
>>>     }
>>> }
>>>
>>> That being said, I have never seen a piano part where only one of the
>>> hands is printed when the other doesn’t play. (Vibraphone and marimba
>>> parts, maybe.) That’s why we added this feature in the first place.
>>>
>> [...]
>
> Valentin, your solution works well if the staff is made of rests (r) or
> skips (s). Is it possible to print the staff if it contains rests but avoid
> to print it if it contains skip?

[NR:]

A.20 Context modification identifiers
=====================================

The following commands are defined for use as context modifications
within a ‘\layout’ or ‘\with’ block.

‘RemoveAllEmptyStaves’
     Remove staves which are considered to be empty according to the
     list of interfaces set by ‘keepAliveInterfaces’, including those in
     the first system.
        • Sets grob property ‘remove-empty’ in ‘*note
          (lilypond-internals)VerticalAxisGroup::’ to ‘#t’.
        • Sets grob property ‘remove-first’ in ‘*note
          (lilypond-internals)VerticalAxisGroup::’ to ‘#t’.

‘RemoveEmptyStaves’
     Remove staves which are considered to be empty according to the
     list of interfaces set by ‘keepAliveInterfaces’.
        • Sets grob property ‘remove-empty’ in ‘*note
          (lilypond-internals)VerticalAxisGroup::’ to ‘#t’.

[IR:]

2.2.5 Axis_group_engraver
-------------------------

Group all objects created in this context in a ‘VerticalAxisGroup’
spanner.

   Properties (read)

     ‘currentCommandColumn’ (graphical (layout) object)
          Grob that is X-parent to all current breakable (clef, key
          signature, etc.)  items.

     ‘hasAxisGroup’ (boolean)
          True if the current context is contained in an axis group.

     ‘keepAliveInterfaces’ (list)
          A list of symbols, signifying grob interfaces that are worth
          keeping a staff with ‘remove-empty’ set around for.

   Properties (write)

     ‘hasAxisGroup’ (boolean)
          True if the current context is contained in an axis group.

   This engraver creates the following layout object(s):

   *note VerticalAxisGroup::.

   ‘Axis_group_engraver’ is part of the following context(s): *note
ChordNames::, *note DrumStaff::, *note Dynamics::, *note FiguredBass::,
*note FretBoards::, *note GregorianTranscriptionStaff::, *note
KievanStaff::, *note Lyrics::, *note MensuralStaff::, *note NoteNames::,
*note OneStaff::, *note PetrucciStaff::, *note RhythmicStaff::, *note
Staff::, *note TabStaff:: and *note VaticanaStaff::.

[ly/engraver-init.ly in definition of Score]

  keepAliveInterfaces = #'(
    bass-figure-interface
    chord-name-interface
    cluster-beacon-interface
    fret-diagram-interface
    lyric-syllable-interface
    note-head-interface
    tab-note-head-interface
    lyric-interface
    percent-repeat-item-interface
    percent-repeat-interface

    ;; need this, as stanza numbers are items, and appear only once.
    stanza-number-interface
  )

So probably you likely want to add the rest-interface to that list of
interfaces, probably in Staff context.

-- 
David Kastrup



reply via email to

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