lilypond-user
[Top][All Lists]
Advanced

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

Re: Having shortInstrumentName appear at start of score (instead of inst


From: Nathan Ho
Subject: Re: Having shortInstrumentName appear at start of score (instead of instrumentName)?
Date: Tue, 31 Mar 2015 13:23:40 -0700

On Tue, Mar 31, 2015 at 12:46 PM, Trevor Bača <address@hidden> wrote:
Hi,

Let's say that I have a stylesheet that sets instrumentName values and shortInstrumentName values for a bunch of contexts in the normal way:

    \context {
        \Staff
        ...
        instrumentName = \markup { Flute }
        shortInstrumentName = \markup { Fl. }
    }
    \context {
        \Staff
        ...
        instrumentName = \markup { Oboe }
        shortInstrumentName = \markup { Ob. }
    }
    ...

QUESTION: is there a way to have the shortInstrumentName values appear at the start of the score (meaning that the instrumentName values will never appear)?

The question looks pathological. (Why would you set a value for instrumentName if you don't want instrumentName to appear in the score?) But the motivation is as follows. I have a complex score that I've broken into multiple chunks (meaning separate LilyPond files with separate score blocks). All chunks \include the same stylesheet. But I want instrumentName to appear at the start of only chunk 1 (because chunk 1 is the start of the actual sore). For chunks 2, 3, ... I'd like shortInstrumentName to appear at the start of each "score" (because each non-first "score" is actually modeling subsequent parts of the one actual score).

I can't imagine that there would be a setting for this. But is there some sort of Scheme wizardry that can be put at the beginning of each of the non-first score chunks to say "set instrumentName to the value of shortInstrumentName"?

This is pretty nasty but it does what you're trying to accomplish.

shortInstrAsInstr = #(lambda (context)

                       (ly:context-set-property! context

                         'instrumentName (ly:context-property context 'shortInstrumentName)) '())


\new Staff \with {

  instrumentName = "Viola"

  shortInstrumentName = "Vla."

  \consists \shortInstrAsInstr

} {

  c1 c1 \break c1 c1

}


Regards,

Nathan


reply via email to

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