[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Having shortInstrumentName appear at start of score (instead of inst
From: |
Thomas Morley |
Subject: |
Re: Having shortInstrumentName appear at start of score (instead of instrumentName)? |
Date: |
Wed, 1 Apr 2015 00:54:06 +0200 |
2015-03-31 22:23 GMT+02:00 Nathan Ho <address@hidden>:
> 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
Less nasty:
\version "2.19.17"
\layout {
\context {
\Staff
\override InstrumentName.after-line-breaking =
#(lambda (grob)
(ly:grob-set-property! grob 'long-text
(ly:grob-property grob 'text)))
}
}
\new Staff
\with {
instrumentName = "Flute"
shortInstrumentName = "Fl."
}
{ c''1 }
\new Staff
\with {
instrumentName = "Oboe"
shortInstrumentName = "Ob."
}
{ d''1 }
HTH,
Harm