dit(code(abbrev)) Set length for tremolo to be used if no length is
explicitly specified.
-GONE dit(code(markScriptPadding)) Determines the extra space added between
+dit(code(tupletDirection)) Determines the direction of triplets and
+other tuplets. Set to code(\down) to force them below the staff,
+code(\up) to force them above, or code(\free) to let LilyPond decide.
+
+dit(code(tupletVisibility)) Determines whether tuplets of notes are
+labelled. Setting to 0 shows nothing; setting to 1 shows a number;
+setting to 2 shows a number and a bracket if there is no beam; setting
+to 3 shows a number, and if there is no beam it adds a bracket;
+setting to 4 shows both a number and a bracket unconditionally. The
+code(pletoff) and code(pleton) identifiers set the property to 0 and 3,
+respectively.
+
+dit(code(markScriptPadding)) Determines the extra space added between
the mark and the closest staff line or note.
-GONE dit(code(markDirection)) Determines if marks should be printed above
+dit(code(markDirection)) Determines if marks should be printed above
or below the staff. Set to code(\up) to print marks above the staff;
set to code(\down) to print marks below the staff.
+dit(code(articulationScriptPadding)) Determines the extra space added
+between articulation marks, such as staccato, tenuto, trill, up/down
+bow or fermata, and the closest staff line or note.
)
subsubsubsect(Staff properties)
+pl 46.mb2
+ - Reintroduced the tupletVisibility property. Same values as
+ the old version (pletvisibility), see the Reference Manual.
+ Note: does not work correctly with automatic beams.
+ - Added a tupletDirection property.
+
+pl 46.uu1
+ - bf: {} in texts.
+
+pl 45.hwn2
+ - more doc updates.
+
+
+pl 46.mb1
+ - Added property articulationScriptPadding
+ - N.W.Gade: layout fixes
+
+*********
+
pl 45.hwn1
- Audio broadcast & acknowledge.
- more advanced spacing for prefatory matter
- tuplet appearance tweaking
-
+ - bf: ChoirStaff
pl 45.uu1
- glossary fixes (thanks Dirk).
markScriptPadding = "4.0";
markHangOn = "Bar";
markHangDepth = "1";
-% markDirection = \diown;
+% markDirection = \down;
}
}
}
--- /dev/null
+\property Voice.textEmptyDimension = 1
+\property Voice.textScriptPadding = 10
+\property Voice.tupletVisibility = 0
+\times2/3{c'4^"tupletVisibility = 0" d e} \times2/3{[f8 g a]}
+ \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 1
+\times2/3{c,4^"tupletVisibility = 1" d e} \times2/3{[f8 g a]}
+ \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 2
+\times2/3{c,4^"tupletVisibility = 2" d e} \times2/3{[f8 g a]}
+ \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 3
+\times2/3{c,4^"tupletVisibility = 3" d e} \times2/3{[f8 g a]}
+ \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 4
+\times2/3{c,4^"tupletVisibility = 4" d e} \times2/3{[f8 g a]}
+ \times2/3{b16 c d} c8 | \break
+
+\property Voice.tupletDirection = \down
+\property Voice.tupletVisibility = 0
+\times2/3{c,4^"tupletDirection = \\textbackslash{}down" d e}
+ \times2/3{[[f8 g a]]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 1
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 2
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 3
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 4
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |\break
+
+\property Voice.tupletDirection = \up
+\property Voice.tupletVisibility = 0
+\times2/3{c,4^"tupletDirection = \\textbackslash{}up" d e}
+ \times2/3{[[f8 g a]]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 1
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 2
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 3
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 4
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
DECLARE_LY_SYMBOL(transparent);
DECLARE_LY_SYMBOL(tuplet);
DECLARE_LY_SYMBOL(tuplet_thick);
+DECLARE_LY_SYMBOL(tuplet_visibility);
DECLARE_LY_SYMBOL(visibility_lambda);
DECLARE_LY_SYMBOL(volta);
DECLARE_LY_SYMBOL(volta_thick);
String number_str_;
- /*
- junk us.
- */
- bool bracket_visibility_b_;
- bool num_visibility_b_;
+ bool parallel_beam_b_;
protected:
Link_array<Beam> beam_l_arr_;
void
Tuplet_engraver::do_process_requests ()
{
+ int dir = 0;
+ Scalar prop = get_property ("tupletDirection", 0);
+ if (prop.isnum_b())
+ dir = (int)prop;
+ int visibility = 3;
+ prop = get_property ("tupletVisibility", 0);
+ if (prop.isnum_b())
+ visibility = (int)prop;
+
for (int i= started_span_p_arr_.size ();
i < time_scaled_music_arr_.size (); i++)
{
Tuplet_spanner* glep = new Tuplet_spanner;
started_span_p_arr_.push (glep);
glep->number_str_ = to_str (time_scaled_music_arr_[i]->den_i_);
+ glep->set_elt_property(tuplet_visibility_scm_sym,
+ gh_int2scm (visibility));
+ if (dir != 0)
+ glep->set_elt_property(dir_forced_scm_sym, gh_int2scm (dir));
announce_element (Score_element_info (glep, time_scaled_music_arr_ [i]));
}
}
Tuplet_spanner::Tuplet_spanner ()
{
- bracket_visibility_b_ = true;
- num_visibility_b_ = true;
+ parallel_beam_b_ = false;
}
/*
{
Molecule* mol_p = new Molecule;
+ // Default behaviour: number always, bracket when no beam!
+ bool bracket_visibility = !parallel_beam_b_;
+ bool number_visibility = true;
+ SCM visibility_sym =get_elt_property (tuplet_visibility_scm_sym);
+ if (visibility_sym != SCM_BOOL_F)
+ {
+ /* Property values:
+ 0 show nothing
+ 1 show number
+ 2 show (number and bracket)-if-no-beam
+ 3 show number, and bracket-if-no-beam
+ 4 show number, and bracket
+ */
+ int value = gh_scm2int (SCM_CDR(visibility_sym));
+ bracket_visibility = (value == 4 || (value > 1 && !parallel_beam_b_));
+ number_visibility = (value > 2 || value == 1 ||
+ (value == 2 && !parallel_beam_b_));
+ }
+
if (column_arr_.size ()){
Real ncw = column_arr_.top ()->extent (X_AXIS).length ();
+ Real w = extent (X_AXIS).length () + ncw;
Molecule num (lookup_l ()->text ("italic",
number_str_));
num.align_to (X_AXIS, CENTER);
+ num.translate_axis (w/2, X_AXIS);
Real interline = paper_l ()->get_realvar (interline_scm_sym);
+ Real dy = column_arr_.top ()->extent (Y_AXIS) [dir_]
+ - column_arr_[0]->extent (Y_AXIS) [dir_];
+ num.align_to (Y_AXIS, CENTER);
+ num.translate_axis (dir_ * interline, Y_AXIS);
+
+ num.translate_axis (dy/2, Y_AXIS);
+
- if (beam_l_arr_.size () == 1 && !bracket_visibility_b_)
+ /* if (beam_l_arr_.size () == 1 && !bracket_visibility)
{
- Beam *beam_l = beam_l_arr_[0];
- Directional_spanner* ds = dynamic_cast<Directional_spanner*>(beam_l);
-
num.translate_axis (dir_ * interline, Y_AXIS);
- num.translate (ds->center ());
- num.translate_axis (ncw, X_AXIS);
}
-
- if (bracket_visibility_b_)
+ */
+ if (bracket_visibility)
{
- Real dy = column_arr_.top ()->extent (Y_AXIS) [dir_]
- - column_arr_[0]->extent (Y_AXIS) [dir_];
- Real w = extent (X_AXIS).length () + ncw;
- num.align_to (Y_AXIS, CENTER);
- num.translate_axis (dir_ * interline, Y_AXIS);
-
- num.translate (Offset (w/2, dy/2));
mol_p->add_molecule (lookup_l ()->plet (dy, w, dir_));
}
- if (num_visibility_b_)
+ if (number_visibility)
{
mol_p->add_molecule (num);
}
if (!broken_b ()
&& spanned_drul_[LEFT]->column_l () == beam_l->spanned_drul_[LEFT]->column_l ()
&& spanned_drul_[RIGHT]->column_l () == beam_l->spanned_drul_[RIGHT]->column_l ())
- bracket_visibility_b_ = false;
+ parallel_beam_b_ = true;
}
- if (column_arr_.size () == 1)
- bracket_visibility_b_ = false;
+ // if (column_arr_.size () == 1)
+ // bracket_visibility_b_ = false;
}
void
Tuplet_spanner::get_default_dir () const
{
Direction d = UP;
+ SCM dir_sym =get_elt_property (dir_forced_scm_sym);
+ if (dir_sym != SCM_BOOL_F) {
+ d= (Direction) gh_scm2int (SCM_CDR(dir_sym));
+ if (d != CENTER)
+ return d;
+ }
+
for (int i=0; i < column_arr_.size (); i ++)
{
if (column_arr_[i]->dir () < 0)
%{
for grace note hack, see input/test/grace.ly
%}
-pletoff = {
- \property Voice.pletvisibility = 0
+tupletoff = {
+ \property Voice.tupletVisibility = 0
}
-pleton = {
- \property Voice.pletvisibility = 3
+tupleton = {
+ \property Voice.tupletVisibility = 3
}
tiny = {
\property Voice.fontSize= "-2"
- \pletoff %urg
+ \tupletoff %urg
}
small = {
normalsize = {
\property Voice.fontSize= "0"
- \pleton %urg
+ \tupleton %urg
}
%{
\tiny
% it would be so cool not to have to specify these factors each time...
% :-(
- \property Voice.pletvisibility = 0
+ \property Voice.tupletVisibility = 0
\[1/16
}
graceat = \melodic {
\normalsize
- \property Voice.pletvisibility = 0
+ \property Voice.tupletVisibility = 0
\] \[31/32
}
ecarg = \melodic {
- \property Voice.pletvisibility = 0
+ \property Voice.tupletVisibility = 0
\]
- \property Voice.pletvisibility = 3
+ \property Voice.tupletVisibility = 3
}
%}
[g,8. a16 g8. a16 \! g8. ) a16 ] |
g4 r r |
R2. |
-r4 r^\fermata r8^\fermata r |
+r4 r r8 r |
R2*8 |
d'8-. \pp r c-. r |
d r c g |
) e'4 r8 g,8 ( |
) c4 r |
R2 |
-e4 \fz r^\fermata
+e4 \fz r
}
corIhelp=\notes\relative c''' {
\tiny
s2.*32 |
-s2*33 |
+s2*33 | \stemup
r4 r8 [g16^"oboe" \p ( a ] |
[ ) g8-. fis16 ( g ][ ) fis8-. f16 ( g ] |
-[ ) f8-. e16 ( f ] ) e8-. s |
+[ ) f8-. e16 ( f ] ) e8-. s | \stemboth
s2*66 |
[f,,16^"Vlc." ( g f g][f g f8 ] |
) e4 r |
R2. |
[g8. ( a16 g8. a16 g8. a16] |
[g8._"dim." a16 ] g4. a8 |
-[g8. a16] ) g4^\fermata \pp r8^\fermata r |
+[g8. a16] ) g4 \pp r8 r |
R2*8 |
g8-. \pp r c,-. r |
g'-. r c,-. r |
) c,4 r8 g'8 ( |
) e4 r |
R2 |
-c'4-. \fz r^\fermata
+c'4-. \fz r
}
trpI=\notes\relative c'' {
[d8. ( \f e16 ] ) d2 |
R2.*30 |
-r4 r^\fermata r8 ^\fermata r |
+r4 r r8 r |
R2*12 |
g,2 \f ~ |
g4 r |
d-. r |
g, r |
R2 |
-g4 \fz r^\fermata
+g4 \fz r
}
trpIhelp=\notes\relative c'' {
s2.*32 |
s2*9 |
-r4 r8 c-.^"Clar. I" |
+r4^"Clar. I" r8 c-. |
[bes-. a-. g-. f-. ] |
[e-. d-. c-. ] r8 |
s2*23 |
-r4 r8 g''8^"Cor. I" ( |
+r4^"Cor. I" r8 g''8 ( |
) g,4. g8 ( |
[) d' d16 ( e ] )d8 s |
s2*75 |
-r4 r8 c-.^"Clar. I" |
+r4^"Clar. I" r8 c-. |
[bes-. a-. g-. f-. ] |
[e-. d-. c-. ] s8 |
s2*25
-r4 r8 a''^"Oboe" |
+r4^"Oboe" r8 a'' |
a-. [ gis-. gis-. \< g-.] |
[g-. fis-. \! fis-. f-. ] |
s2*53 |
-r4 r8 [c'16^"Flauto" ( d] |
+r4^"Flauto" r8 [c'16 ( d] |
) c8 [b16 ( c ] ) b8 [bes16 ( c ] |
)bes8 [a16 ( bes ] ) a8 [c16 ( d] |
) c8 [b16 ( c ] ) b8 [bes16 ( c ] |
s2.*32 |
s2*9 |
-r4 r8 c-.^"Clar. I" |
+r4^"Clar. I" r8 c-. |
[bes-. a-. g-. f-. ] |
[e-. d-. c-. ] r8 |
s2*23 |
-r4 r8 g''8^"Cor. I" ( |
+r4^"Cor. I" r8 g''8 ( |
) g,4. g8 ( |
[) d' d16 ( e ] )d8 s |
s2*75 |
-r4 r8 c-.^"Clar. I" |
+r4^"Clar. I" r8 c-. |
[bes-. a-. g-. f-. ] |
[e-. d-. c-. ] s8 |
s2*28
-r4 g'8^"Trp. I" \f r |
+r4^"Trp. I" g'8 \f r |
[d'-. d16 ( e ] ) d8 r |
s2*51 |
-r4 r8 [c'16^"Flauto" ( d] |
+r4^"Flauto" r8 [c'16 ( d] |
) c8 [b16 ( c ] ) b8 [bes16 ( c ] |
)bes8 [a16 ( bes ] ) a8 [c16 ( d] |
) c8 [b16 ( c ] ) b8 [bes16 ( c ] |
\property Staff."midiInstrument" = "trumpet"
R2.*31 |
-r4 r^\fermata r8 ^\fermata r |
+r4 r r8 r |
R2*12 |
g2 \f ~ |
g4 r |
g-. r |
g r |
R2 |
-g4 \fz r^\fermata
+g4 \fz r
}
timpani=\notes\relative c, {
c2.:32 |
c2.:32 |
c4 r r |
-r r^\fermata r8^\fermata r |
+r r r8 r |
R2*12 |
f,2:32 \f ~ |
f4 r |
f8 r r4 |
R2*14 |
\context Staff <{\voiceone \clef "treble";
- r4^"Tri." r8 e''' |
+ r4^"Trg." r8 e''' |
[e e e e ] |
[e e e g,, ] | % In reality: e e e e | e
g r r4 |
c'4 \fz r |
R2*10 |
\context Staff <{\voiceone \clef "treble";
- r4^"Tri." r8 e'' |
+ r4^"Trg." r8 e'' |
[e e e e ] |
[e e e g,, ] | % In reality: e e e e | e4
g4 r4 |
f2:32 ~ |
f8 r r4 |
r2 |
-f4 \fz r^\fermata
+f4 \fz r
}
timphelp=\notes\relative c' {
[c8. ( d16] ) c2 |
s2.*30 |
s2*9 |
-r4 r8 \clef "treble"; c'-.^"Clar. I" |
+r4^"Clar. I" r8 \clef "treble"; c'-. |
[bes-. a-. g-. f-. ] |
[e-. d-. c-. ] r8 \clef "bass"; |
s2*24 |
%[ ) g8-. fis16 ( g ][ ) fis8-. f16 ( g ] |
%[ ) f8-. e16 ( f ] ) e8-. \clef "bass"; s |
s2*77 |
-r4 r8 \clef "treble"; c'-.^"Clar. I" |
+r4^"Clar. I" r8 \clef "treble"; c'-. |
[bes-. a-. g-. f-. ] |
[e-. d-. c-. ] r8 \clef "bass"; |
s2*28
-%r4 r8 \clef "treble"; a''^"Oboe" |
+%r4^"Oboe" r8 \clef "treble"; a'' |
%a-. [ gis-. gis-. \< g-.] |
%[g-. fis-. \! fis-. ] \clef "bass"; s8 |
s2*57 |
-r4 r8 \clef "treble"; bes'^"Vi. I" ( |
+r4^"Vi. I" r8 \clef "treble"; bes' ( |
) bes'4. d,8 ( |
) d'4. c,8 ( |
) c'4. e,8 ( |
globalNoKey=\notes {
\time 3/4;
\skip 2.*31;
-s2 s8 \bar "||"; \break
+s4 s4^\fermata s8^\fermata \bar "||"; \break
s8
\time 2/4;
-\skip 2*225;
+\skip 2*224;
+s4 s4^\fermata
\bar "|.";
}
% Modified from lilypond/tex/headers.tex:
\advance\topmargin-5mm
\advance\headsep-4mm
-\addtolength{\textheight}{12mm}
+\addtolength{\textheight}{17mm}
\advance\footskip-3mm
\usepackage{fancyheadings}
% Modified from lilypond/tex/titledefs.tex:
\def\makelilytitle{%
+ \vspace*{-10mm}%
\begin{center}
\bfseries
\ifx\mudelanull\thetitle\else\sethuge{\thetitle}\\ \fi
% {\flushleft\setLarge{\normalfont\scshape\thepiece}}
{\flushleft\setLarge{\textbf\thepiece}}
\leavevmode
+ \enlargethispage*{5mm}
}
\score{ <
\context StaffGroup = wood <
- \context Staff = flauto <
+ \context Voice = flauto <
\property Staff.instrument = "Flauto"
\property Staff.instr = "Fl."
\global
\marks
\flauto
>
- \context Staff = oboe <
+ \context Voice = oboe <
\property Staff.instrument = "Oboe"
\property Staff.instr = "Ob."
\global
\oboe
>
- \context Staff = clarI <
+ \context Voice = clarI <
\property Staff.instrument = "Clarinetto I"
\property Staff.instr = "Cl. I"
\globalNoKey
\clarI
>
- \context Staff = clarII <
+ \context Voice = clarII <
\property Staff.instrument = "Clarinetto II"
\property Staff.instr = "Cl. II"
\globalNoKey
\clarII
>
- \context Staff = fagotto <
+ \context Voice = fagotto <
\property Staff.instrument = "Fagotto"
\property Staff.instr = "Fg."
\global
>
\context StaffGroup = brass <
\context Staff = cor <
- \globalNoKey
\property Staff.instrument = "2 Corni in F"
\property Staff.instr = "Cor."
- \context Voice = corI { \stemup \corI }
- \context Voice = corII { \stemdown \corII }
+ \context Voice = corI <
+ \globalNoKey
+ \stemup \property Voice.dynamicDir = \up
+ \corI
+ >
+ \context Voice = corII {
+ \stemdown \property Voice.dynamicDir = \down
+ \corII
+ }
>
\context Staff = trp <
- \globalNoKey
\property Staff.instrument = "2 Trp. in B\\textflat "
\property Staff.instr = "Trp."
- \context Voice = trpI { \stemup \trpI }
- \context Voice = trpII { \stemdown \trpII }
+ \context Voice = trpI <
+ \globalNoKey
+ \stemup \property Voice.dynamicDir = \up
+ \trpI
+ >
+ \context Voice = trpII {
+ \stemdown \property Voice.dynamicDir = \down
+ \trpII
+ }
>
>
- \context StaffGroup = percussion <\context Staff = timpani <
+ \context StaffGroup = percussion <\context Voice = timpani <
\property Staff.instrument = "Timp. \& Triang."
- \property Staff.instr = "Timp. \& Triang."
+ \property Staff.instr = "Tmp \& Trg"
\global
\timpani
>
>
\context StaffGroup = strings <
\context GrandStaff = violins <
- \context Staff = viI <
+ \context Voice = viI <
\property Staff.instrument = "Violin I"
\property Staff.instr = "Vi. I"
\global
\viI
>
- \context Staff = viII <
+ \context Voice = viII <
\property Staff.instrument = "Violin II"
\property Staff.instr = "Vi. II"
\global
\viII
>
>
- \context Staff = vla <
+ \context Voice = vla <
\property Staff.instrument = "Viola"
\property Staff.instr = "Vla."
\global
\vla
>
- \context Staff = vlc <
+ \context Voice = vlc <
\property Staff.instrument = "Violoncello"
\property Staff.instr = "Vlc"
\global
\vlc
>
- \context Staff = cb <
+ \context Voice = cb <
\property Staff.instrument = "Contrabasso"
\property Staff.instr = "C.B."
\global
\translator {
\OrchestralScoreContext
minVerticalAlign = 2.5*\staffheight;
+ barNumberScriptPadding = "12.0";
}
\translator { \StaffContext
\consists "Staff_margin_engraver";
textstyle = "italic";
textScriptPadding = 5.0;
textEmptyDimension = 1;
-% oldTieBehavior = 1;
- }
- \translator { \VoiceContext
- oldTieBehavior = 1;
}
}
}