From e2321f60fb73e9843d07ed9072cdef872ce28f2a Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Sun, 20 Aug 2000 16:56:11 +0200 Subject: [PATCH] patch::: 1.3.79.jcn4 1.3.79.jcn4 =========== * Coriolan fixes. * Slur attachment fix for chords where case slurdir != stemdir. --- CHANGES | 7 + NEWS | 10 +- VERSION | 2 +- input/bugs/hang.ly | 18 ++ input/bugs/monstrous.ly | 22 -- input/bugs/slur.ly | 5 - input/test/monstrous.ly | 22 ++ input/test/part-combine-score.ly | 206 ++++++++++++++++++ lily/a2-devnull-engraver.cc | 38 ++++ lily/my-lily-lexer.cc | 1 + lily/parser.yy | 4 + lily/slur.cc | 3 +- lily/spanner.cc | 28 ++- ly/engraver.ly | 1 - ly/performer.ly | 4 +- mutopia/Coriolan/bassi-part.ly | 36 +-- mutopia/Coriolan/coriolan-midi.ly | 32 ++- mutopia/Coriolan/coriolan-paper.ly | 130 +++++++---- .../Coriolan/coriolan-part-combine-paper.ly | 110 ++++++++-- mutopia/Coriolan/coriolan-part-paper.ly | 46 +--- mutopia/Coriolan/coriolan.ly | 35 ++- mutopia/Coriolan/viola-1.ly | 1 - mutopia/Coriolan/viola-2.ly | 1 - mutopia/Coriolan/violi-part.ly | 37 +--- scm/slur.scm | 2 + 25 files changed, 591 insertions(+), 210 deletions(-) create mode 100644 input/bugs/hang.ly create mode 100644 input/test/monstrous.ly create mode 100644 input/test/part-combine-score.ly diff --git a/CHANGES b/CHANGES index 0e3fcdf388..1234b55c6e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,10 @@ +1.3.79.jcn4 +=========== + +* Coriolan fixes. + +* Slur attachment fix for chords where case slurdir != stemdir. + 1.3.79.jcn3 =========== diff --git a/NEWS b/NEWS index 9297c95a40..90f069c6f7 100644 --- a/NEWS +++ b/NEWS @@ -5,9 +5,10 @@ * 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. @@ -17,6 +18,11 @@ internals: LilyPond is smaller, cleaner, more flexible, etc. * 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 diff --git a/VERSION b/VERSION index 648c53e1ae..b864025dbd 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond 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. diff --git a/input/bugs/hang.ly b/input/bugs/hang.ly new file mode 100644 index 0000000000..efcd426500 --- /dev/null +++ b/input/bugs/hang.ly @@ -0,0 +1,18 @@ +\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{ + + } +} diff --git a/input/bugs/monstrous.ly b/input/bugs/monstrous.ly index e25ea236e5..e69de29bb2 100644 --- a/input/bugs/monstrous.ly +++ b/input/bugs/monstrous.ly @@ -1,22 +0,0 @@ - -%% 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; - } -} diff --git a/input/bugs/slur.ly b/input/bugs/slur.ly index c2a8552d1d..e69de29bb2 100644 --- a/input/bugs/slur.ly +++ b/input/bugs/slur.ly @@ -1,5 +0,0 @@ - - \score { - \notes \relative c' { - c2( c \break c c c c \break c -}} diff --git a/input/test/monstrous.ly b/input/test/monstrous.ly new file mode 100644 index 0000000000..d9c8dbf47e --- /dev/null +++ b/input/test/monstrous.ly @@ -0,0 +1,22 @@ + +%% 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; + } +} diff --git a/input/test/part-combine-score.ly b/input/test/part-combine-score.ly new file mode 100644 index 0000000000..c674bd4416 --- /dev/null +++ b/input/test/part-combine-score.ly @@ -0,0 +1,206 @@ +\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"; + } + } +} diff --git a/lily/a2-devnull-engraver.cc b/lily/a2-devnull-engraver.cc index e57502a083..4d957c01cc 100644 --- a/lily/a2-devnull-engraver.cc +++ b/lily/a2-devnull-engraver.cc @@ -18,9 +18,47 @@ public: 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 (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 (m)) + { + return true; + } + else if (Text_script_req *d = dynamic_cast (m)) + { + return true; + } + } + return false; +} void A2_devnull_engraver::acknowledge_element (Score_element_info i) diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc index 4bd5a30495..7bc2a0b54b 100644 --- a/lily/my-lily-lexer.cc +++ b/lily/my-lily-lexer.cc @@ -40,6 +40,7 @@ static Keyword_ent the_key_tab[]={ {"consists", CONSISTS}, {"consistsend", CONSISTSEND}, {"context", CONTEXT}, + {"denies", DENIES}, {"duration", DURATION}, {"font", FONT}, {"grace", GRACE}, diff --git a/lily/parser.yy b/lily/parser.yy index 215dd69394..03ecf130d1 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -142,6 +142,7 @@ yylex (YYSTYPE *s, void * v_l) %token SEQUENTIAL %token SIMULTANEOUS %token CONSISTSEND +%token DENIES %token DURATION %token EXTENDER %token FONT @@ -459,6 +460,9 @@ translator_spec_body: | translator_spec_body ACCEPTS STRING semicolon { dynamic_cast ($$)-> set_acceptor (ly_scm2string ($3), true); } + | translator_spec_body DENIES STRING semicolon { + dynamic_cast ($$)-> set_acceptor (ly_scm2string ($3), false); + } | translator_spec_body REMOVE STRING semicolon { dynamic_cast ($$)-> set_element (ly_scm2string ($3), false); } diff --git a/lily/slur.cc b/lily/slur.cc index a2228c73ce..6a3d31eaed 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -218,7 +218,8 @@ Slur::get_attachment (Score_element*me,Direction dir, 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 */ diff --git a/lily/spanner.cc b/lily/spanner.cc index 04387ef9f7..3328d26636 100644 --- a/lily/spanner.cc +++ b/lily/spanner.cc @@ -104,12 +104,38 @@ Spanner::do_break_processing () 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); diff --git a/ly/engraver.ly b/ly/engraver.ly index 6c7ab190c5..1a9bb26eab 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -147,7 +147,6 @@ VoiceContext = \translator { \consists "Text_engraver"; \consists "A2_engraver"; - startSustain = #"Ped." stopSustain = #"*" stopStartSustain = #"*Ped." diff --git a/ly/performer.ly b/ly/performer.ly index 90eddae484..4529859e7c 100644 --- a/ly/performer.ly +++ b/ly/performer.ly @@ -35,13 +35,13 @@ VoiceContext = \translator { }; \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"; diff --git a/mutopia/Coriolan/bassi-part.ly b/mutopia/Coriolan/bassi-part.ly index 58cdb55370..7f011a363a 100644 --- a/mutopia/Coriolan/bassi-part.ly +++ b/mutopia/Coriolan/bassi-part.ly @@ -13,46 +13,26 @@ copyright = "public domain"; \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" } diff --git a/mutopia/Coriolan/coriolan-midi.ly b/mutopia/Coriolan/coriolan-midi.ly index ba81ffaf75..544e817be3 100644 --- a/mutopia/Coriolan/coriolan-midi.ly +++ b/mutopia/Coriolan/coriolan-midi.ly @@ -1,18 +1,38 @@ \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"; } } diff --git a/mutopia/Coriolan/coriolan-paper.ly b/mutopia/Coriolan/coriolan-paper.ly index ea63eb4cd2..6dde56b9bd 100644 --- a/mutopia/Coriolan/coriolan-paper.ly +++ b/mutopia/Coriolan/coriolan-paper.ly @@ -3,59 +3,115 @@ 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 } diff --git a/mutopia/Coriolan/coriolan-part-combine-paper.ly b/mutopia/Coriolan/coriolan-part-combine-paper.ly index 4dcda1e47c..3aa73c157a 100644 --- a/mutopia/Coriolan/coriolan-part-combine-paper.ly +++ b/mutopia/Coriolan/coriolan-part-combine-paper.ly @@ -2,26 +2,110 @@ 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 diff --git a/mutopia/Coriolan/coriolan-part-paper.ly b/mutopia/Coriolan/coriolan-part-paper.ly index a4d113f51d..da6d84ab9a 100644 --- a/mutopia/Coriolan/coriolan-part-paper.ly +++ b/mutopia/Coriolan/coriolan-part-paper.ly @@ -2,48 +2,14 @@ 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 diff --git a/mutopia/Coriolan/coriolan.ly b/mutopia/Coriolan/coriolan.ly index 06cff3bac7..05aebee900 100644 --- a/mutopia/Coriolan/coriolan.ly +++ b/mutopia/Coriolan/coriolan.ly @@ -51,46 +51,41 @@ violiniGroup = \context GrandStaff = violini_group < \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 diff --git a/mutopia/Coriolan/viola-1.ly b/mutopia/Coriolan/viola-1.ly index cfa67d6dcb..3649bdd732 100644 --- a/mutopia/Coriolan/viola-1.ly +++ b/mutopia/Coriolan/viola-1.ly @@ -413,7 +413,6 @@ violaI = \notes \relative c { c4\pp r r2 | c4 r r2 | c4 r r2 | - \skip 1*10; } %%% urg diff --git a/mutopia/Coriolan/viola-2.ly b/mutopia/Coriolan/viola-2.ly index 88dc525e14..05b75c0f8e 100644 --- a/mutopia/Coriolan/viola-2.ly +++ b/mutopia/Coriolan/viola-2.ly @@ -413,5 +413,4 @@ violaII = \notes \relative c { c4\pp r r2 | c4 r r2 | c4 r r2 | - \skip 1*10; } diff --git a/mutopia/Coriolan/violi-part.ly b/mutopia/Coriolan/violi-part.ly index 3ebf7f8591..ae9ac83b2b 100644 --- a/mutopia/Coriolan/violi-part.ly +++ b/mutopia/Coriolan/violi-part.ly @@ -13,47 +13,26 @@ copyright = "public domain"; \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" } diff --git a/scm/slur.scm b/scm/slur.scm index 1f4d9132e0..2574afd619 100644 --- a/scm/slur.scm +++ b/scm/slur.scm @@ -95,4 +95,6 @@ ((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)) )) -- 2.39.5