+1.3.79.jcn4
+===========
+
+* Coriolan fixes.
+
+* Slur attachment fix for chords where case slurdir != stemdir.
+
1.3.79.jcn3
===========
* Improved design and implementation: Complete rewrite of the
internals: LilyPond is smaller, cleaner, more flexible, etc.
- - More pervasive GUILE integration resulting in
+ - More pervasive GUILE integration resulting in:
- - Improved speed, with comparable memory footprint
+ - Improved speed (undone for now, by .73 + .74),
+ with comparable memory footprint
- Improved robustness: Lily almost never crashes.
* Typography: More elegant slurs, aligned dynamics, text crescendos,
+* Nice lyrics placement: Automagical phrasing and melisma alignment.
+
+* Part combining for orchestral scores and hymns: Automagical combining
+ and separating of two voices, with Solo/`a2 indications as appropriate.
+
* Chordnames are now configurable in every respect
* Included extensive glossary
MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=79
-MY_PATCH_LEVEL=jcn3
+MY_PATCH_LEVEL=jcn4
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
--- /dev/null
+\score{
+ <
+ \context Staff = flauti <
+ \context Voice=one \partcombine Voice
+ \context Thread=one \notes\relative c''
+ {
+ %c1
+ c2 c2
+ }
+ \context Thread=two \notes\relative c''
+ {
+ }
+ >
+ >
+ \paper{
+
+ }
+}
-
-%% Chord gurus, is this ok now??
-
-monstrous= \chords{
- \property Score.chordInversion = "1"
-
- % /c is/was missing:
- bes:6/+c
-
- % Cdim7
- c:dim7
-}
-
-\score{
- <
- \context ChordNames \monstrous
- \context Staff \monstrous
- >
- \paper{
- linelength=-1.0\mm;
- }
-}
-
- \score {
- \notes \relative c' {
- c2( c \break c c c c \break c
-}}
--- /dev/null
+
+%% Chord gurus, is this ok now??
+
+monstrous= \chords{
+ \property Score.chordInversion = ##t
+
+ % /c is/was missing:
+ bes:6/+c
+
+ % Cdim7
+ c:dim7
+}
+
+\score{
+ <
+ \context ChordNames \monstrous
+ \context Staff \monstrous
+ >
+ \paper{
+ linelength=-1.0\mm;
+ }
+}
--- /dev/null
+\score{
+ <
+ \context VoiceCombineStaff = flauti <
+ \time 4/4;
+
+ \context VoiceCombineThread=one \skip 1*9;
+ \context VoiceCombineThread=two \skip 1*9;
+
+ \context VoiceCombineVoice=one \partcombine VoiceCombineVoice
+ \context VoiceCombineThread=one \notes\relative c''
+ {
+ c4 d e f
+ b,4 d c d
+ r2 e4 f
+ \break
+ c4 d e f
+ c4 r e f
+ c4 r e f
+ \break
+ c4 r a r
+ a a r a
+ a2 \property VoiceCombineThread.soloADue = ##f a
+ }
+ \context VoiceCombineThread=two \notes\relative c''
+ {
+ g4 b d f
+ r2 c4 d
+ a c c d
+ a4. b8 c4 d
+ c r e r
+ r2 s2
+ a,4 r a r
+ a r r a
+ a2 \property VoiceCombineThread.soloADue = ##f a
+ }
+ >
+ \context PianoStaff <
+ \context StaffCombineStaff=one \skip 1*9;
+ \context StaffCombineStaff=two \skip 1*9;
+ \context StaffCombineStaff=one \partcombine StaffCombineStaff
+ \context StaffCombineThread=one \notes\relative c''
+ {
+ c4 d e f
+ c d e f
+ c d e f
+ c d e f
+ c d e f
+ c d e f
+ c4 d e f
+ a8 a a a
+ b b b b
+ d1
+ }
+ \context StaffCombineThread=two \notes\relative c''
+ {
+ c4 d e f
+ c d e f
+ c d e f
+ c2 e2
+ c4 d e f
+ c2 e2
+ c,4 d e f
+ a8 a a a
+ b b b b
+ b1
+ }
+ >
+ >
+ \paper{
+ %
+ % The Voice combine hierarchy
+ %
+ \translator{
+ \ThreadContext
+ \name "VoiceCombineThread";
+ \consists "Rest_engraver";
+ }
+ \translator{
+ \VoiceContext
+ \name "VoiceCombineVoice";
+ \remove "Rest_engraver";
+ \accepts "VoiceCombineThread";
+ }
+ \translator{
+ \HaraKiriStaffContext
+ \consists "Mark_engraver";
+ \name "VoiceCombineStaff";
+ \accepts "VoiceCombineVoice";
+ }
+
+ %
+ % The Staff combine hierarchy
+ %
+ \translator{
+ \ThreadContext
+ \name "StaffCombineThread";
+%%
+%% \remove "A2_devnull_engraver";
+%% \remove "Note_heads_engraver";
+ }
+ \translator{
+ \VoiceContext
+ \name "StaffCombineVoice";
+ \accepts "StaffCombineThread";
+
+ \remove "Rest_engraver";
+ \remove "Dot_column_engraver";
+ \remove "Stem_engraver";
+ \remove "Beam_engraver";
+ \remove "Auto_beam_engraver";
+ %\include "auto-beam-settings.ly";
+
+ \remove "Chord_tremolo_engraver";
+ \remove "Melisma_engraver";
+ \remove "Text_engraver";
+ \remove "A2_engraver";
+
+ \remove "Piano_pedal_engraver";
+ \remove "Script_engraver";
+ \remove "Script_column_engraver";
+ \remove "Rhythmic_column_engraver";
+ \remove "Slur_engraver";
+ \remove "Tie_engraver";
+
+%% \consists "A2_devnull_engraver";
+%% \consists "Note_heads_engraver";
+ }
+ \translator {
+ \HaraKiriStaffContext
+ \name "StaffCombineStaff";
+ \accepts "StaffCombineVoice";
+
+ \consists "Rest_engraver";
+ \consists "Dot_column_engraver";
+ \consists "Stem_engraver";
+ \consists "Beam_engraver";
+ \consists "Auto_beam_engraver";
+ \include "auto-beam-settings.ly";
+
+ \consists "Chord_tremolo_engraver";
+ \consists "Melisma_engraver";
+ \consists "Text_engraver";
+ \consists "A2_engraver";
+
+ soloADue = ##f
+ %soloADue = ##t
+
+ \consists "Piano_pedal_engraver";
+ \consists "Script_engraver";
+ \consists "Script_column_engraver";
+ \consists "Rhythmic_column_engraver";
+ \consists "Slur_engraver";
+ \consists "Tie_engraver";
+ }
+ \translator {
+ \StaffGroupContext
+ \accepts "VoiceCombineStaff";
+ \accepts "StaffCombineStaff";
+ }
+ \translator {
+ \ScoreContext
+ \accepts "VoiceCombineStaff";
+ \accepts "StaffCombineStaff";
+ }
+% linewidth = 40.\mm;
+ }
+
+ \midi{
+ \tempo 4 = 150;
+
+ \translator {
+ \ThreadContext
+ \name "VoiceCombineThread";
+ }
+ \translator {
+ \VoiceContext
+ \name "VoiceCombineVoice";
+ \accepts "VoiceCombineThread";
+ }
+ \translator {
+ \StaffContext
+ \name "VoiceCombineStaff";
+ \accepts "VoiceCombineVoice";
+ }
+
+ \translator {
+ \ThreadContext
+ \name "StaffCombineThread";
+ }
+ \translator {
+ \VoiceContext
+ \name "StaffCombineVoice";
+ \accepts "StaffCombineThread";
+ }
+ \translator {
+ \StaffContext
+ \name "StaffCombineStaff";
+ \accepts "StaffCombineVoice";
+ }
+ \translator {
+ \ScoreContext
+ \accepts "VoiceCombineStaff";
+ \accepts "StaffCombineStaff";
+ }
+ }
+}
protected:
virtual void acknowledge_element (Score_element_info);
+ virtual bool do_try_music (Music *);
};
ADD_THIS_TRANSLATOR (A2_devnull_engraver);
+/*
+ Maybe this is too crude.
+ It would probably be better to have a devnull engraver in StaffContext,
+ that acknowledges stuff and suicides it.
+ */
+bool
+A2_devnull_engraver::do_try_music (Music *m)
+{
+ if (daddy_trans_l_->id_str_ == "two"
+ && (to_boolean (get_property ("unison"))
+ || to_boolean (get_property ("unisilence"))))
+ {
+ /*
+ We mustn't junk Rest requests
+ */
+ if (Span_req *s = dynamic_cast <Span_req *> (m))
+ {
+ if (s->span_type_str_ == "slur"
+ || s->span_type_str_ == "beam"
+ || s->span_type_str_ == "crescendo"
+ || s->span_type_str_ == "decrescendo")
+ {
+ return true;
+ }
+ return false;
+ }
+ else if (Tie_req *t = dynamic_cast<Tie_req*> (m))
+ {
+ return true;
+ }
+ else if (Text_script_req *d = dynamic_cast <Text_script_req*> (m))
+ {
+ return true;
+ }
+ }
+ return false;
+}
void
A2_devnull_engraver::acknowledge_element (Score_element_info i)
{"consists", CONSISTS},
{"consistsend", CONSISTSEND},
{"context", CONTEXT},
+ {"denies", DENIES},
{"duration", DURATION},
{"font", FONT},
{"grace", GRACE},
%token SEQUENTIAL
%token SIMULTANEOUS
%token CONSISTSEND
+%token DENIES
%token DURATION
%token EXTENDER
%token FONT
| translator_spec_body ACCEPTS STRING semicolon {
dynamic_cast<Translator_group*> ($$)-> set_acceptor (ly_scm2string ($3), true);
}
+ | translator_spec_body DENIES STRING semicolon {
+ dynamic_cast<Translator_group*> ($$)-> set_acceptor (ly_scm2string ($3), false);
+ }
| translator_spec_body REMOVE STRING semicolon {
dynamic_cast<Translator_group*> ($$)-> set_element (ly_scm2string ($3), false);
}
if (str == "head")
{
- o = Offset (0, Stem::chord_start_f (stem));
+ o = Offset (0, Stem::head_positions (stem)
+ [Directional_element_interface (me).get ()] * hs);
/*
Default position is centered in X, on outer side of head Y
*/
span_p->set_bound(LEFT,bounds[LEFT]);
span_p->set_bound(RIGHT,bounds[RIGHT]);
-
+#if 0
assert (bounds[LEFT]->line_l () ==
bounds[RIGHT]->line_l ());
bounds[LEFT]->line_l ()->typeset_element (span_p);
broken_into_l_arr_.push (span_p);
+#else
+
+ if (bounds[LEFT]->line_l () != bounds[RIGHT]->line_l ())
+ {
+ programming_error ("bounds[LEFT]->line_l () != bounds[RIGHT]->line_l ()");
+#if 0
+ /*
+ lily crashes upon displaying this ...
+
+ */
+
+ gh_display (ly_str02scm ("\nspanner:mutable_property_alist_\n"));
+ gh_display (mutable_property_alist_);
+ gh_display (ly_str02scm ("\nspanner:immutable_property_alist_\n"));
+ gh_display (immutable_property_alist_);
+ gh_newline ();
+#endif
+ span_p->suicide ();
+ }
+ else
+ {
+ bounds[LEFT]->line_l ()->typeset_element (span_p);
+ broken_into_l_arr_.push (span_p);
+ }
+#endif
+
}
}
broken_into_l_arr_.sort (Spanner::compare);
\consists "Text_engraver";
\consists "A2_engraver";
-
startSustain = #"Ped."
stopSustain = #"*"
stopStartSustain = #"*Ped."
};
\translator { \VoiceContext }
-GraceContext = \translator {
+ThreadContext = \translator {
\type "Performer_group_performer";
\name Thread;
\consists "Note_performer";
\consists "Tie_performer";
};
-\translator { \GraceContext }
+\translator { \ThreadContext }
\translator {
\type "Grace_performer_group";
\include "violoncello.ly"
\include "contrabasso.ly"
-bassiGroup = \context GrandStaff = bassi_group <
- \context Staff=one {
+bassiGroup = \context PianoStaff = bassi_group <
+ \context StaffCombineStaff=one {
\clef "bass";
- \context Voice
- \property Voice.soloADue = ##f
\skip 1*314;
\bar "|.";
}
- \context Staff=two {
+ \context StaffCombineStaff=two {
\clef "bass";
- \context Voice
- \property Voice.soloADue = ##f
\skip 1*314;
\bar "|.";
}
- \context Staff=one \partcombine Staff
- \context Thread=one \violoncello
- \context Thread=two \contrabasso
->
-%\include "coriolan-part-paper.ly"
-\include "coriolan-part-combine-paper.ly"
+ \context StaffCombineStaff=one \partcombine StaffCombineStaff
+ \context StaffCombineThread=one \violoncello
+ \context StaffCombineThread=two \contrabasso
+>
\score{
\bassiGroup
- \paper{
- \translator { \HaraKiriStaffContext }
- \translator {
- \StaffContext
- \consists "Slur_engraver";
- \consists "Rest_engraver";
- \consists "Tie_engraver";
- }
- \translator{
- \VoiceContext
- \remove "Rest_engraver";
- \remove "Slur_engraver";
- \remove "Tie_engraver";
- }
- }
+ \include "coriolan-part-combine-paper.ly"
\include "coriolan-midi.ly"
}
\midi{
\tempo 4 = 150;
+
+ \translator {
+ \ThreadContext
+ \name "VoiceCombineThread";
+ }
\translator {
\VoiceContext
- \name "VoiceOne";
+ \name "VoiceCombineVoice";
+ \accepts "VoiceCombineThread";
+ }
+ \translator {
+ \StaffContext
+ \name "VoiceCombineStaff";
+ \accepts "VoiceCombineVoice";
+ }
+
+ \translator {
+ \ThreadContext
+ \name "StaffCombineThread";
}
\translator {
\VoiceContext
- \name "VoiceTwo";
- %\remove "Span_dynamic_engraver";
- %\remove "Dynamic_engraver";
+ \name "StaffCombineVoice";
+ \accepts "StaffCombineThread";
}
\translator {
\StaffContext
- \accepts "VoiceOne";
- \accepts "VoiceTwo";
+ \name "StaffCombineStaff";
+ \accepts "StaffCombineVoice";
+ }
+ \translator {
+ \ScoreContext
+ \accepts "VoiceCombineStaff";
+ \accepts "StaffCombineStaff";
}
}
textheight = 295.0\mm;
linewidth = 180.0\mm;
- % slurs are never beautiful (no steep slurs)
- slur_beautiful = 0.0;
-
- \translator {
+ \translator{ \HaraKiriStaffContext }
+ %
+ % The Voice combine hierarchy
+ %
+ \translator{
+ \ThreadContext
+ \name "VoiceCombineThread";
+ \consists "Rest_engraver";
+ }
+ \translator{
\VoiceContext
- dynamicPadding = #2 % urg, in \pt
- dynamicMinimumSpace = #6 % urg, in \pt
- \remove Rest_engraver;
- \remove Slur_engraver;
- \remove Tie_engraver;
+ \name "VoiceCombineVoice";
+ soloText = #"I."
+ soloIIText = #"II."
+ \remove "Rest_engraver";
+ \accepts "VoiceCombineThread";
+ \consists "A2_devnull_engraver";
}
- \translator {
- \StaffContext
-% \consists Slur_engraver;
- \consists Tie_engraver;
+ \translator{
+ \HaraKiriStaffContext
+%% \consists "Mark_engraver";
+ \name "VoiceCombineStaff";
+ \accepts "VoiceCombineVoice";
}
- \translator {
+
+ %
+ % The Staff combine hierarchy
+ %
+ \translator{
+ \ThreadContext
+ \name "StaffCombineThread";
+ \remove "A2_devnull_engraver";
+%% \remove "Note_heads_engraver";
+ }
+ \translator{
\VoiceContext
- \name "VoiceOne";
+ \name "StaffCombineVoice";
+ \accepts "StaffCombineThread";
+
+ \remove "Rest_engraver";
+ \remove "Dot_column_engraver";
+ \remove "Stem_engraver";
+ \remove "Beam_engraver";
+ \remove "Auto_beam_engraver";
+ %\include "auto-beam-settings.ly";
+
+ \remove "Chord_tremolo_engraver";
+ \remove "Melisma_engraver";
+ \remove "Text_engraver";
+ \remove "A2_engraver";
- dynamicPadding = #2 % urg, in \pt
- dynamicMinimumSpace = #6 % urg, in \pt
+ \remove "Piano_pedal_engraver";
+ \remove "Script_engraver";
+ \remove "Script_column_engraver";
+ \remove "Rhythmic_column_engraver";
+ \remove "Slur_engraver";
+ \remove "Tie_engraver";
- %%\consists "Line_number_engraver";
- verticalDirection = #1
- stemVerticalDirection = #1
- %dynamicDirection = #-1
- dynamicDirection = #1
+ \consists "A2_devnull_engraver";
}
\translator {
- \VoiceContext
- \name "VoiceTwo";
- %%\consists "Line_number_engraver";
- verticalDirection = #-1
- stemVerticalDirection = #-1
- \remove "Dynamic_engraver";
- %% Aargh: absulute dynamics:
- \remove "Text_engraver";
+ \HaraKiriStaffContext
+ \name "StaffCombineStaff";
+ \accepts "StaffCombineVoice";
+
+ \consists "Rest_engraver";
+ \consists "Dot_column_engraver";
+ \consists "Stem_engraver";
+ \consists "Beam_engraver";
+ \consists "Auto_beam_engraver";
+ \include "auto-beam-settings.ly";
+
+ \consists "Chord_tremolo_engraver";
+ \consists "Melisma_engraver";
+ \consists "Text_engraver";
+ \consists "A2_engraver";
+
+ soloADue = ##f
+
+ \consists "Piano_pedal_engraver";
+ \consists "Script_engraver";
+ \consists "Script_column_engraver";
+ \consists "Rhythmic_column_engraver";
+ \consists "Slur_engraver";
+ \consists "Tie_engraver";
+ \consists "A2_devnull_engraver";
}
- \translator {
- \HaraKiriStaffContext
- \accepts "VoiceOne";
- \accepts "VoiceTwo";
+ \translator {
+ \StaffGroupContext
+ \accepts "VoiceCombineStaff";
+ \accepts "StaffCombineStaff";
}
- \translator {
- \OrchestralScoreContext
+ \translator {
+ %\ScoreContext
+ %\consists "Mark_engraver";
+ \OrchestralScoreContext
+ \accepts "VoiceCombineStaff";
+ \accepts "StaffCombineStaff";
+
+ barScriptPadding = #2.0 % dimension \pt
+ markScriptPadding = #4.0
+
%% urg: in pt?
barNumberScriptPadding = #15
%% URG: this changes dynamics too
%%textStyle = #"italic"
timeSignatureStyle = #"C"
instrumentScriptPadding = #55 %% urg, this is in pt
- instrScriptPadding = #35 %% urg, this is in pt
+ instrScriptPadding = #40 %% urg, this is in pt
marginScriptHorizontalAlignment = #1
maximumRestCount = #1
}
textheight = 295.0\mm;
linewidth = 180.0\mm;
- % slurs are never beautiful (no steep slurs)
- slur_beautiful = 0.0;
+ \translator{ \HaraKiriStaffContext }
+ %
+ % The Voice combine hierarchy
+ %
+ \translator{
+ \ThreadContext
+ \name "VoiceCombineThread";
+ \consists "Rest_engraver";
+ }
+ \translator{
+ \VoiceContext
+ \name "VoiceCombineVoice";
+ soloText = #"I."
+ soloIIText = #"II."
+ \remove "Rest_engraver";
+ \accepts "VoiceCombineThread";
+ \consists "A2_devnull_engraver";
+ }
+ \translator{
+ \HaraKiriStaffContext
+ \consists "Mark_engraver";
+ \name "VoiceCombineStaff";
+ \accepts "VoiceCombineVoice";
+ }
- \translator {
+ %
+ % The Staff combine hierarchy
+ %
+ \translator{
\ThreadContext
- \consists Rest_engraver;
+ \name "StaffCombineThread";
+%%
+ \remove "A2_devnull_engraver";
+%% \remove "Note_heads_engraver";
}
- \translator {
+ \translator{
\VoiceContext
- \remove Rest_engraver;
- \remove Slur_engraver;
- \remove Tie_engraver;
+ \name "StaffCombineVoice";
+ \accepts "StaffCombineThread";
+
+ \remove "Rest_engraver";
+ \remove "Dot_column_engraver";
+ \remove "Stem_engraver";
+ \remove "Beam_engraver";
+ \remove "Auto_beam_engraver";
+ %\include "auto-beam-settings.ly";
+
+ \remove "Chord_tremolo_engraver";
+ \remove "Melisma_engraver";
+ \remove "Text_engraver";
+ \remove "A2_engraver";
+
+ \remove "Piano_pedal_engraver";
+ \remove "Script_engraver";
+ \remove "Script_column_engraver";
+ \remove "Rhythmic_column_engraver";
+ \remove "Slur_engraver";
+ \remove "Tie_engraver";
+
+ \consists "A2_devnull_engraver";
}
\translator {
- \StaffContext
-% \consists Slur_engraver;
- \consists Tie_engraver;
+ \HaraKiriStaffContext
+ \name "StaffCombineStaff";
+ \accepts "StaffCombineVoice";
+
+ \consists "Rest_engraver";
+ \consists "Dot_column_engraver";
+ \consists "Stem_engraver";
+ \consists "Beam_engraver";
+ \consists "Auto_beam_engraver";
+ \include "auto-beam-settings.ly";
+
+ \consists "Chord_tremolo_engraver";
+ \consists "Melisma_engraver";
+ \consists "Text_engraver";
+ \consists "A2_engraver";
+
+ soloADue = ##f
+ %soloADue = ##t
+
+ \consists "Piano_pedal_engraver";
+ \consists "Script_engraver";
+ \consists "Script_column_engraver";
+ \consists "Rhythmic_column_engraver";
+ \consists "Slur_engraver";
+ \consists "Tie_engraver";
+
+ \consists "A2_devnull_engraver";
}
- \translator {
- \ScoreContext skipBars = ##t
+ \translator {
+ \StaffGroupContext
+ \accepts "VoiceCombineStaff";
+ \accepts "StaffCombineStaff";
+ }
+ \translator {
+ \ScoreContext
+ \accepts "VoiceCombineStaff";
+ \accepts "StaffCombineStaff";
+ skipBars = ##t
+
+ barScriptPadding = #2.0 % dimension \pt
+ markScriptPadding = #4.0
+
%% urg: in pt?
barNumberScriptPadding = #15
%% URG: this changes dynamics too
textheight = 295.0\mm;
linewidth = 180.0\mm;
- % slurs are never beautiful (no steep slurs)
- slur_beautiful = 0.0;
+ \translator{ \HaraKiriStaffContext }
\translator {
- \VoiceContext
- %dynamicPadding = #5 % urg, in \pt
- %dynamicMinimumSpace = #10 % urg, in \pt
- \remove Rest_engraver;
- \remove Slur_engraver;
- \remove Tie_engraver;
- }
- \translator {
- \StaffContext
-% \consists Slur_engraver;
- \consists Tie_engraver;
- }
- \translator {
- \VoiceContext
- \name "VoiceOne";
- %%\consists "Line_number_engraver";
- verticalDirection = #1
- stemVerticalDirection = #1
- %dynamicDirection = #-1
- dynamicDirection = #1
- }
- \translator {
- \VoiceContext
- \name "VoiceTwo";
- %%\consists "Line_number_engraver";
- verticalDirection = #-1
- stemVerticalDirection = #-1
- \remove "Dynamic_engraver";
- %% Aargh: absulute dynamics:
- \remove "Text_engraver";
- }
- \translator {
- \OrchestralPartStaffContext
- \accepts "VoiceOne";
- \accepts "VoiceTwo";
- }
- \translator {
- \ScoreContext skipBars = ##t
+ \ScoreContext
+ skipBars = ##t
+
+ barScriptPadding = #2.0 % dimension \pt
+ markScriptPadding = #4.0
%% urg: in pt?
barNumberScriptPadding = #15
%% URG: this changes dynamics too
\violinoIIStaff
>
-violiGroup = \context GrandStaff = violi_group <
- \context Staff=one {
+violiGroup = \context PianoStaff = violi_group <
+ \context StaffCombineStaff=one {
\clef "alto";
- \context Voice
- \property Voice.soloADue = ##f
\skip 1*314;
\bar "|.";
}
- \context Staff=two {
+ \context StaffCombineStaff=two {
\clef "alto";
- \context Voice
- \property Voice.soloADue = ##f
\skip 1*314;
\bar "|.";
}
- \context Staff=one \partcombine Staff
- \context Thread=one \violaI
- \context Thread=two \violaII
+
+ \context StaffCombineStaff=one \partcombine StaffCombineStaff
+ \context StaffCombineThread=one \violaI
+ \context StaffCombineThread=two \violaII
>
-bassiGroup = \context GrandStaff = bassi_group <
- \context Staff=one {
+bassiGroup = \context PianoStaff = bassi_group <
+ \context StaffCombineStaff=one {
\clef "bass";
- \context Voice
- \property Voice.soloADue = ##f
\skip 1*314;
\bar "|.";
}
- \context Staff=two {
+ \context StaffCombineStaff=two {
\clef "bass";
- \context Voice
- \property Voice.soloADue = ##f
\skip 1*314;
\bar "|.";
}
- \context Staff=one \partcombine Staff
- \context Thread=one \violoncello
- \context Thread=two \contrabasso
+
+ \context StaffCombineStaff=one \partcombine StaffCombineStaff
+ \context StaffCombineThread=one \violoncello
+ \context StaffCombineThread=two \contrabasso
>
+
archiGroup = \context StaffGroup = archi_group <
\violiniGroup
\violiGroup
c4\pp r r2 |
c4 r r2 |
c4 r r2 |
- \skip 1*10;
}
%%% urg
c4\pp r r2 |
c4 r r2 |
c4 r r2 |
- \skip 1*10;
}
\include "viola-1.ly"
\include "viola-2.ly"
-violiGroup = \context GrandStaff = violi_group <
- \context Staff=one {
+violiGroup = \context PianoStaff = violi_group <
+ \context StaffCombineStaff=one {
\clef "alto";
- \context Voice
- \property Voice.soloADue = ##f
\skip 1*314;
\bar "|.";
}
- \context Staff=two {
+ \context StaffCombineStaff=two {
\clef "alto";
- \context Voice
- \property Voice.soloADue = ##f
\skip 1*314;
\bar "|.";
}
- \context Staff=one \partcombine Staff
- \context Thread=one \violaI
- \context Thread=two \violaII
->
-%\include "coriolan-part-paper.ly"
-\include "coriolan-part-combine-paper.ly"
+ \context StaffCombineStaff=one \partcombine StaffCombineStaff
+ \context StaffCombineThread=one \violaI
+ \context StaffCombineThread=two \violaII
+>
\score{
\violiGroup
- \paper{
- \translator { \HaraKiriStaffContext }
- \translator {
- \StaffContext
- \consists "Slur_engraver";
- \consists "Rest_engraver";
- \consists "Tie_engraver";
- }
- \translator{
- \VoiceContext
- soloADue = ##f
- \remove "Rest_engraver";
- \remove "Slur_engraver";
- \remove "Tie_engraver";
- }
- }
+ \include "coriolan-part-combine-paper.ly"
\include "coriolan-midi.ly"
}
((loose-end -1 1) . (-4 . 0))
((loose-end -1 -1) . (-4 . 0))
+ ((loose-end 1 1) . (-0.4 . 0))
+ ((loose-end 1 -1) . (-0.4 . 0))
))