lilypond-devel
[Top][All Lists]
Advanced

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

Re: [patch] first-clef property


From: Karl Hammar
Subject: Re: [patch] first-clef property
Date: Sat, 2 Feb 2008 15:25:16 +0100 (CET)

Nicolas Sceaux:
...
> \tag does not solve the first-clef detection problem, but the two  
> editions problem, about which the proposed patch is not about.
> I know about \tag,
...

I also find \tag messy and there is no "else" part either.

> > Anyway, wouldn't it be nicer to have some kind of scheme macro that  
> > expands to code that prints an incipit?  Your "first clef" could  
> > then be just part of the incipit that the macro creates.  And maybe  
> > the clef's name either could passed as argument to the scheme  
> > macro.  Or, alternatively, you set an, say, "original-clef" property  
> > that the macro recognizes and accordingly acts upon.
> 
> As I understand it, incipits are hackingly achieved using the
> instrument name. I want instrument names to be defined separately
> from incipit (they are not the same thing, there is no serious
> reason to bind them, beside purely technical ones):
> 
> \new Staff <<
>    \global
>    \set Staff . instrumentName = \markup { The instrument name }
>    \clef "xyz" %% automagically set the incipit clef
>    { ... the notes ... }
>  >>
> 
> How could you make the mix of the two?
> 
> Now, seeing the incipt examples, I realize that my patch is a hack
> too, for it would be nice to have also the time and key signatures,
> not only the ancient clef.

For the time and key signatures you can have to varialbles like

mensural = {
  \override Accidental  #'style = #'mensural
  \override NoteHead  #'style = #'petrucci
  \override Rest  #'style = #'neomensural
  \override Staff.TimeSignature  #'style = #'mensural
  \override Stem #'flag-style = #'mensural
  \override Stem #'thickness = #0.8
  \set timing = ##f
  \set Staff.defaultBarType = ""
  #(set-accidental-style 'forget)
}
normal = {
  \override Accidental  #'style = #'default
  \override NoteHead  #'style = #'default
  \override Rest  #'style = #'default
  \override TimeSignature  #'style = #'default
  \override NoteHead #'font-size = #'0
  \override Stem #'flag-style = #'default
  \override Stem #'thickness = #1.9 % 
default
  \override TimeSignature #'style = #'default
  #(set-accidental-style 'default)
}

and use them like

 \new Staff { \normal   \relative c' { ... } }
 \new Staff { \mensural \relative c' { ... } }

For the clefs I use

 %clefcs = { \clef "petrucci-c2" }
 %clefct = { \clef "petrucci-c4" }
 %clefcb = { \clef "petrucci-f" }
 clefcs = { \clef "treble" }
 clefct = { \clef "treble_8" }
 clefcb = { \clef "bass" }

What I think would be useful is either a setting

 \override Clef = #'style = #'petrucci % e.g "alto" -> "petrucci-c3"
 \override Clef = #'style = #'modern   % e.g "petrucci-c3" -> "alto"
 \override Clef = #'style = #'lazysinger % e.g "petrucci-c3" -> "treble"

 so I can include them in the variable above

or a function like 

 % always keep as close to source as possible
 aa = \relative c { \clef "petrucci-f" \time 2/2 c\breve d\longa ... }

 \makeThisMensural { \aa } % no change?
 \makeThisModern   { \aa } % "petrucci-f" -> "bass", c\breve -> c1 ...
 \makeThisIncipit  { \aa } % mensural but only first breve or semiminima

> Maybe creating an incipit engraver, reading new context properties,
> like incipitKeySignature, incipitTimeSignature, etc, and creating a

In some instances it would be useful to be able to append \score's on 
the same line, somewhat like if you used { \startStaff s1 \stopStaff }.

Regards,
/Karl






reply via email to

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