From 8c5613d1b437614afe6dc88712a49aaa9fa21c61 Mon Sep 17 00:00:00 2001 From: fred Date: Tue, 26 Mar 2002 23:55:59 +0000 Subject: [PATCH] lilypond-1.3.89 --- VERSION | 2 +- input/test/beam-cross-staff.ly | 8 - input/test/part-combine-score.ly | 51 ++- lily/align-interface.cc | 6 +- lily/align-note-column-engraver.cc | 6 +- lily/bar-number-engraver.cc | 20 -- lily/bar.cc | 4 - lily/beam.cc | 5 +- lily/break-align-item.cc | 2 +- lily/crescendo.cc | 33 +- lily/cross-staff.cc | 8 +- lily/dynamic-engraver.cc | 6 +- lily/grace-align-item.cc | 6 +- lily/include/align-interface.hh | 34 +- lily/include/beam.hh | 6 +- lily/include/part-combine-music-iterator.hh | 5 + lily/include/slur-bezier-bow.hh | 2 +- lily/include/slur.hh | 12 +- lily/line-of-score.cc | 2 +- lily/music-wrapper-iterator.cc | 19 +- lily/part-combine-music-iterator.cc | 364 ++++++++++++-------- lily/script.cc | 2 +- lily/sequential-music-iterator.cc | 142 +++++--- lily/slur-bezier-bow.cc | 6 +- lily/slur.cc | 42 ++- lily/system-start-delimiter-engraver.cc | 2 +- lily/tie.cc | 19 +- lily/vertical-align-engraver.cc | 3 +- lilypond-mode.el | 4 +- ly/declarations.ly | 2 +- ly/engraver.ly | 102 +++--- ly/paper-as9.ly | 7 +- ly/params.ly | 78 +---- mutopia/Coriolan/bassi-part.ly | 24 +- mutopia/Coriolan/bassi.ly | 41 +++ mutopia/Coriolan/contrabasso.ly | 89 +++-- mutopia/Coriolan/coriolan.ly | 45 +-- mutopia/Coriolan/viola-1.ly | 75 ++-- mutopia/Coriolan/viola-2.ly | 60 ++-- mutopia/Coriolan/violi-part.ly | 23 +- mutopia/Coriolan/violi.ly | 39 +++ mutopia/Coriolan/violoncello.ly | 70 ++-- scm/basic-properties.scm | 3 +- scm/generic-property.scm | 11 + scripts/as2text.scm | 7 +- 45 files changed, 820 insertions(+), 677 deletions(-) create mode 100644 mutopia/Coriolan/bassi.ly create mode 100644 mutopia/Coriolan/violi.ly diff --git a/VERSION b/VERSION index b283fed4ca..23eb5f64a8 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=88 +PATCH_LEVEL=89 MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a diff --git a/input/test/beam-cross-staff.ly b/input/test/beam-cross-staff.ly index fd96d8c81c..08e442157f 100644 --- a/input/test/beam-cross-staff.ly +++ b/input/test/beam-cross-staff.ly @@ -20,14 +20,6 @@ s1 } > - \paper{ - \translator{ - \PianoStaffContext - minVerticalAlign = 3.0*\staffheight; - maxVerticalAlign = 3.0*\staffheight; - } -% linewidth=-1.; - } } \version "1.3.59"; diff --git a/input/test/part-combine-score.ly b/input/test/part-combine-score.ly index 17244b7d77..59f4bf94eb 100644 --- a/input/test/part-combine-score.ly +++ b/input/test/part-combine-score.ly @@ -34,12 +34,11 @@ 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 StaffCombineVoice=one \notes\relative c'' - %\context StaffCombineThread=one \notes\relative c'' + \context PianoStaff = violi < + \context StaffCombineStaff=oneVioli { \clef alto; \skip 1*9;} + \context StaffCombineStaff=twoVioli { \clef alto; \skip 1*9;} + \context StaffCombineStaff=oneVioli \partcombine StaffCombineStaff + \context StaffCombineVoice=one \notes\relative c' { c4 d e f c d e f @@ -48,12 +47,10 @@ c d e f c d e f c4 d e f - a8 a a a - b b b b + a8 a a a b b b b d1 } - \context StaffCombineVoice=two \notes\relative c'' - %\context StaffCombineThread=two \notes\relative c'' + \context StaffCombineVoice=two \notes\relative c' { c4 d e f c d e f @@ -62,11 +59,41 @@ c4 d e f c2 e2 c,4 d e f - a8 a a a - b b b b + a8 a a a b b b b b1 } > + \context PianoStaff = lower < + \context StaffCombineStaff=oneBassi { \clef bass; \skip 1*9;} + \context StaffCombineStaff=twoBassi { \clef bass; \skip 1*9;} + \context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff + \context StaffCombineVoice=oneB \notes\relative c + { + \clef bass; + c1 + d + e + f + c + d + e + f + c + } + \context StaffCombineVoice=twoB \notes\relative c + { + \clef bass; + c1 + d4 e d e + e1 + f4 g f g + c1 + d4 e d e + e + f4 g f g + c1 + } + > > \paper { diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 4527bbf41b..621c691203 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -12,6 +12,7 @@ #include "score-element.hh" #include "group-interface.hh" #include "axis-group-interface.hh" +#include "paper-def.hh" /* This callback is set in the children of the align element. It does @@ -98,8 +99,9 @@ Align_interface::do_side_processing (Score_element * me, Axis a) SCM thr = me->get_elt_property ("threshold"); if (gh_pair_p (thr)) { - threshold[SMALLER] = gh_scm2double (gh_car (thr)); - threshold[BIGGER] = gh_scm2double (gh_cdr (thr)); + Real ss = me->paper_l ()-> get_var ("staffspace"); + threshold[SMALLER] = ss *gh_scm2double (gh_car (thr)); + threshold[BIGGER] = ss * gh_scm2double (gh_cdr (thr)); } Real where_f=0; diff --git a/lily/align-note-column-engraver.cc b/lily/align-note-column-engraver.cc index 162d74441c..f8adafad7d 100644 --- a/lily/align-note-column-engraver.cc +++ b/lily/align-note-column-engraver.cc @@ -15,6 +15,7 @@ #include "directional-element-interface.hh" #include "side-position-interface.hh" #include "local-key-item.hh" +#include "paper-def.hh" /** Catch notes, and put them in a row. Used for aligning grace notes. @@ -96,14 +97,15 @@ Align_note_column_engraver::process_acknowledged () UGH UGH: separate note-spacing into separate class, and use that to space grace notes. */ - SCM grsp = get_property ("graceAccidentalSpace"); + SCM grsp = get_property ("graceAccidentalSpace") ; if (gh_number_p(grsp)) { /* ugh. */ Real extra_space = gh_scm2double(grsp); - SCM e = gh_cons (gh_double2scm (-extra_space), gh_double2scm (0.0)); + SCM e = gh_cons (gh_double2scm (-extra_space * paper_l ()->get_var ("staffspace")), + gh_double2scm (0.0)); now_column_l_->set_elt_property ("extra-space", e); } } diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc index 4fe7d7172f..8c698b6e12 100644 --- a/lily/bar-number-engraver.cc +++ b/lily/bar-number-engraver.cc @@ -115,26 +115,6 @@ Bar_number_engraver::create_items () text_p_ = new Item (b); Side_position::set_axis(text_p_,Y_AXIS); - SCM prop = get_property ("barNumberDirection"); - if (!isdir_b (prop)) - { - prop = gh_int2scm (UP); - } - text_p_->set_elt_property ("direction", prop); - - SCM padding = get_property ("barNumberScriptPadding"); - if (gh_number_p(padding)) - { - text_p_->set_elt_property ("padding", padding); - } - else - { - text_p_ - ->set_elt_property ("padding", - gh_double2scm(paper_l ()->get_var ("interline"))); - } - - announce_element (text_p_, 0); } diff --git a/lily/bar.cc b/lily/bar.cc index 5419f3fa4b..721c807da4 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -68,10 +68,6 @@ Bar::compound_barline (Score_element*me, String str, Real h) { return me->lookup_l ()->blank (Box (Interval(0, 0), Interval (-h/2, h/2))); } - if (str == "scorepostbreak") - { - return simple_barline (me, me->paper_l ()->get_var ("barthick_score"), h); - } else if (str == "|") { return thin; diff --git a/lily/beam.cc b/lily/beam.cc index f619e04b9c..124dc7f9c0 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -403,10 +403,11 @@ Beam::suspect_slope_b (Score_element*me, Real y, Real dy) /* steep slope running against lengthened stem is suspect */ + Real ss = me->paper_l ()->get_var ("staffspace"); Real first_ideal = Stem::calc_stem_info (first_visible_stem (me)).idealy_f_; Real last_ideal = Stem::calc_stem_info (last_visible_stem (me)).idealy_f_; - Real lengthened = me->paper_l ()->get_var ("beam_lengthened"); - Real steep = me->paper_l ()->get_var ("beam_steep_slope"); + Real lengthened = gh_scm2double (me->get_elt_property ("outer-stem-length-limit")) * ss; + Real steep = gh_scm2double (me->get_elt_property ("slope-limit")); // ugh -> use commonx Real dx = last_visible_stem (me)->relative_coordinate (0, X_AXIS) - first_visible_stem (me)->relative_coordinate (0, X_AXIS); diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index c325aa1aa3..91ea3fea3e 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -66,7 +66,7 @@ Break_align_item::do_alignment (Score_element *me) me->add_offset_callback (Align_interface::center_on_element, X_AXIS); } - Real interline= me->paper_l ()->get_var ("interline"); + Real interline= me->paper_l ()->get_var ("staffspace"); Link_array elems; Link_array all_elems = Pointer_group_interface__extract_elements (me, (Score_element*)0, diff --git a/lily/crescendo.cc b/lily/crescendo.cc index c21897faca..35177fac01 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -24,12 +24,31 @@ Crescendo::set_interface (Score_element*s) MAKE_SCHEME_CALLBACK(Crescendo,brew_molecule); + +/* + + TODO: + + * should span the crescendo on any dynamic-text items, and + calculate their dimensions to determine shortening; junk shortening + code and related elt props. + + * separate the dashed-line version and the hairpin version into two + brew_molecule functions. + + * generalise dashed-line into generic text spanner, for ottava, accelerando, etc. + + +*/ SCM Crescendo::brew_molecule (SCM smob) { Score_element *me= unsmob_element (smob); Spanner * sp = dynamic_cast(me); - Real absdyn_dim = me->paper_l ()-> get_var ("crescendo_shorten"); + Real ss = me->paper_l ()->get_var ("staffspace"); + Real sl = me->paper_l ()->get_var ("stafflinethickness"); + + Real absdyn_dim = gh_scm2double (me->get_elt_property ("shorten-for-letter")); Real extra_left = sp->get_broken_left_end_align (); SCM dir = me->get_elt_property("grow-direction"); @@ -87,7 +106,7 @@ Crescendo::brew_molecule (SCM smob) me->paper_l ())); m.add_molecule (start_text); - pad = me->paper_l ()->get_var ("interline") / 2; + pad = me->paper_l ()->get_var ("staffspace") / 2; // ugh. width -= start_text.extent (X_AXIS).length (); width -= pad; @@ -97,10 +116,12 @@ Crescendo::brew_molecule (SCM smob) SCM at; s =me->get_elt_property ("spanner"); Real height; + if (gh_string_p (s) && ly_scm2string (s) == "dashed-line") { - Real thick = me->paper_l ()->get_var ("crescendo_dash_thickness"); - Real dash = me->paper_l ()->get_var ("crescendo_dash"); + Real thick = gh_scm2double (me->get_elt_property ("dash-thickness")) * sl ; + Real dash = gh_scm2double (me->get_elt_property ("dash-length")) * ss; + height = thick; at = gh_list (ly_symbol2scm (ly_scm2string (s).ch_C ()), gh_double2scm (thick), @@ -111,8 +132,8 @@ Crescendo::brew_molecule (SCM smob) else { bool continued = broken[Direction (-gd)]; - height = me->paper_l()->get_var ("crescendo_height"); - Real thick = me->paper_l ()->get_var ("crescendo_thickness"); + height = ss * gh_scm2double (me->get_elt_property ("height")); + Real thick = sl * gh_scm2double (me->get_elt_property ("thickness")); const char* hairpin = (gd < 0)? "decrescendo" : "crescendo"; diff --git a/lily/cross-staff.cc b/lily/cross-staff.cc index 68a18a9de4..ccd424ce8e 100644 --- a/lily/cross-staff.cc +++ b/lily/cross-staff.cc @@ -3,7 +3,7 @@ #include "align-interface.hh" #include "spanner.hh" #include "warn.hh" - +#include "paper-def.hh" /* JUNKME */ @@ -21,9 +21,11 @@ calc_interstaff_dist (Item *item, Spanner *span) || !scm_equal_p (gh_car (threshold), gh_cdr (threshold))) warning (_ ("minVerticalAlign != maxVerticalAlign: cross staff spanners may be broken")); - interstaff = 0.0; + + + interstaff = item->paper_l ()->get_var ("staffspace"); if (gh_pair_p (threshold)) - interstaff = gh_scm2double (gh_car (threshold)); + interstaff = gh_scm2double (gh_car (threshold)) * interstaff; Score_element * span_refpoint = span; while (span_refpoint->parent_l (Y_AXIS) != common) diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index a2da4e1b2b..8b2df51acd 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -268,7 +268,10 @@ Dynamic_engraver::do_process_music () { index_set_cell (cresc_p_->get_elt_property ("dynamic-drul"), LEFT, text_p_->self_scm ()); - if (finished_cresc_p_) + + if (finished_cresc_p_ + // I don't see why, but we need this check + && gh_pair_p (finished_cresc_p_->get_elt_property ("dynamic-drul"))) index_set_cell (finished_cresc_p_->get_elt_property ("dynamic-drul"), RIGHT, text_p_->self_scm ()); } @@ -302,6 +305,7 @@ Dynamic_engraver::do_removal_processing () { current_cresc_req_->origin ()->warning (_ ("unterminated (de)crescendo")); cresc_p_->suicide (); + cresc_p_ = 0; } } diff --git a/lily/grace-align-item.cc b/lily/grace-align-item.cc index d58bd8e7b3..fb11733906 100644 --- a/lily/grace-align-item.cc +++ b/lily/grace-align-item.cc @@ -20,11 +20,9 @@ Grace_align_item::before_line_breaking (SCM smob) Score_element*me = unsmob_element (smob); SCM space = me->get_elt_property ("horizontal-space"); - Real ss = me->paper_l ()->get_var ("staffspace"); - me->set_elt_property ("threshold", - gh_cons (gh_double2scm (ss *gh_scm2double (space)), - gh_double2scm (infinity_f))); + gh_cons (space, + gh_double2scm (infinity_f))); dynamic_cast(me)->column_l ()->set_elt_property ("contains-grace", SCM_BOOL_T); return SCM_UNSPECIFIED; diff --git a/lily/include/align-interface.hh b/lily/include/align-interface.hh index d17392f3b3..f570a60509 100644 --- a/lily/include/align-interface.hh +++ b/lily/include/align-interface.hh @@ -14,25 +14,39 @@ #include "lily-proto.hh" /* - TODO: rewrite this comment. - + Order elements top to bottom/left to right/right to left etc. + + + ******* - Order elements top to bottom/left to right/right to left etc.. + element properties + + stacking-dir -- stack contents of elements in which direction ? - TODO: implement padding. + align-dir -- Which side to align? -1: left side, 0: centered (around + center_l_ if not nil, or around center of width), 1: right side - document usage of this. + threshold -- (cons MIN MAX), where MIN and MAX are dimensions in + staffspace + alignment-done -- boolean to administrate whether we've done the alignment already (to ensure that the process is done only once) + group-center-element -- element which will be at the center of the group + after aligning (when using Align_interface::center_on_element) + elements -- to be aligned elements + + axes -- list of axis numbers. Should contain only one number. + ******* - element properties + Reads the following from its elements + + + minimum-space -- (cons LEFT RIGHT) - stacking-dir - - Which side to align? -1: left side, 0: centered (around - center_l_ if not nil, or around center of width), 1: right side + extra-space -- (cons LEFT RIGHT) + */ struct Align_interface { static Real alignment_callback (Score_element *,Axis); diff --git a/lily/include/beam.hh b/lily/include/beam.hh index 2310752807..cd917f8d60 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -39,7 +39,11 @@ damping -- damping factor (real). - + outer-stem-length-limit -- catch suspect beam slopes, set slope to zero if + outer stem is lengthened more than this (in staffspace) + + slope-limit -- set slope to zero if slope is running away steeper than this. + */ class Beam { diff --git a/lily/include/part-combine-music-iterator.hh b/lily/include/part-combine-music-iterator.hh index 4400e458ee..32a6bc951c 100644 --- a/lily/include/part-combine-music-iterator.hh +++ b/lily/include/part-combine-music-iterator.hh @@ -18,6 +18,8 @@ public: VIRTUAL_COPY_CONS (Music_iterator); Part_combine_music_iterator (); + enum State { UNKNOWN, UNRELATED=1, SOLO1=2, SOLO2=4, UNIRHYTHM=8, UNISON=16, UNISILENCE=32, SPLIT_INTERVAL=64 }; + protected: virtual ~Part_combine_music_iterator (); @@ -30,11 +32,14 @@ protected: private: void change_to (Music_iterator*, String, String); + int get_state (Moment m); Music_iterator * first_iter_p_; Music_iterator * second_iter_p_; Moment first_until_; Moment second_until_; + int state_; + String suffix_; }; #endif /* PART_COMBINE_MUSIC_ITERATOR_HH */ diff --git a/lily/include/slur-bezier-bow.hh b/lily/include/slur-bezier-bow.hh index 96b6cd0420..a899dc46f6 100644 --- a/lily/include/slur-bezier-bow.hh +++ b/lily/include/slur-bezier-bow.hh @@ -34,7 +34,7 @@ public: Real hinf, Real r0); Bezier get_bezier () const; - void minimise_enclosed_area (Paper_def* paper_l); + void minimise_enclosed_area (Paper_def* paper_l, Real beauty); Real fit_factor () const; void blow_fit (); Real enclosed_area_f () const; diff --git a/lily/include/slur.hh b/lily/include/slur.hh index 001c8fa19f..349b549dad 100644 --- a/lily/include/slur.hh +++ b/lily/include/slur.hh @@ -17,7 +17,17 @@ valid areas for the middle control points. Used in de_uglyfy. They are a bit empirical. - + details -- alist containing contaning a few magic constants. + + note-columns -- list of elt pointers to note columns. + + attachment -- cons of symbols, '(LEFT-TYPE . RIGHT-TYPE), where + both types may be alongside-stem, stem, head or loose-end + + direction -- up or down? + + y-free -- ? + */ class Slur { diff --git a/lily/line-of-score.cc b/lily/line-of-score.cc index 9af28cc404..bc70174dbc 100644 --- a/lily/line-of-score.cc +++ b/lily/line-of-score.cc @@ -322,7 +322,7 @@ Line_of_score::post_processing (bool last_line) gh_double2scm (height), SCM_UNDEFINED)); - Real il = paper_l ()->get_var ("interline"); + Real il = paper_l ()->get_var ("staffspace"); /* all elements. diff --git a/lily/music-wrapper-iterator.cc b/lily/music-wrapper-iterator.cc index 834494c88d..132ba004d4 100644 --- a/lily/music-wrapper-iterator.cc +++ b/lily/music-wrapper-iterator.cc @@ -18,7 +18,10 @@ Music_wrapper_iterator::Music_wrapper_iterator () Music_wrapper_iterator::Music_wrapper_iterator (Music_wrapper_iterator const &src) : Music_iterator (src) { - child_iter_p_ = src.child_iter_p_->clone (); + if (src.child_iter_p_) + child_iter_p_ = src.child_iter_p_->clone (); + else + child_iter_p_ = 0; } Music_wrapper_iterator::~Music_wrapper_iterator () @@ -39,6 +42,20 @@ Music_wrapper_iterator::ok () const { return child_iter_p_ && child_iter_p_->ok (); } +void +Music_wrapper_iterator::skip (Moment m) +{ + /* + FIXME: should make sure that the initial try_music () is skipped as + well, if you would do + + iter = get_iterator (Side_effect_music); // eg. property setting + iter->skip (1/2) + iter->process () + + */ + child_iter_p_->skip (m); +} void Music_wrapper_iterator::process (Moment m) diff --git a/lily/part-combine-music-iterator.cc b/lily/part-combine-music-iterator.cc index 9fa9bd7fe3..754b1023bb 100644 --- a/lily/part-combine-music-iterator.cc +++ b/lily/part-combine-music-iterator.cc @@ -43,7 +43,6 @@ Part_combine_music_iterator::pending_moment () const bool Part_combine_music_iterator::ok () const { - //hmm return first_iter_p_->ok () || second_iter_p_->ok (); } @@ -107,170 +106,257 @@ Part_combine_music_iterator::change_to (Music_iterator *it, String to_type, error (_f ("none of these in my family: `%s'", to_id.ch_C ())); } -void -Part_combine_music_iterator::process (Moment m) -{ - /* - TODO: - - Use three named contexts (be it Thread or Voice): one, two, solo. - Let user pre-set (pushproperty) stem direction, remove - dynamic-engraver, and such. - - staff-combiner must switch only on per-measure basis (maybe even on - per-line-basis, but that's not feasible). Maybe set minimum lengths - of matching rhythm for combine/split? - */ - - Part_combine_music const * p = dynamic_cast (music_l_); - - Moment now = pending_moment (); - - Array first_pitches; - Array first_durations; - if (first_iter_p_->ok ()) +static void +get_music_info (Moment m, Music_iterator* iter, Array *pitches, Array *durations) +{ + if (iter->ok ()) { - /* get_music () also performs next, modifying iterator */ - Music_iterator *mi = first_iter_p_->clone (); - for (SCM i = mi->get_music (now); gh_pair_p (i); i = gh_cdr (i)) + for (SCM i = iter->get_music (m); gh_pair_p (i); i = gh_cdr (i)) { Music *m = unsmob_music (gh_car (i)); if (Melodic_req *r = dynamic_cast (m)) - first_pitches.push (r->pitch_); + pitches->push (r->pitch_); if (Rhythmic_req *r = dynamic_cast (m)) - first_durations.push (r->duration_); + durations->push (r->duration_); } - delete mi; } +} - Array second_pitches; - Array second_durations; - if (second_iter_p_->ok ()) - { - Music_iterator *mi = second_iter_p_->clone (); - for (SCM i = mi->get_music (now); gh_pair_p (i); i = gh_cdr (i)) - { - Music *m = unsmob_music (gh_car (i)); - if (Melodic_req *r = dynamic_cast (m)) - second_pitches.push (r->pitch_); - if (Rhythmic_req *r = dynamic_cast (m)) - second_durations.push (r->duration_); - } - delete mi; - } +int +Part_combine_music_iterator::get_state (Moment) +{ + int state = UNKNOWN; + Part_combine_music const *p = dynamic_cast (music_l_); + Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "one" + suffix_); + + SCM s = first_translator->get_property (ly_symbol2scm ("changeMoment")); + if (!gh_pair_p (s)) + return state; + + Moment change_mom = *unsmob_moment (gh_car (s)); + Moment diff_mom = *unsmob_moment (gh_cdr (s)); - SCM interval = SCM_BOOL_F; - if (first_pitches.size () && second_pitches.size ()) - { - first_pitches.sort (Musical_pitch::compare); - second_pitches.sort (Musical_pitch::compare); - interval = gh_int2scm (first_pitches.top ().steps () - - second_pitches[0].steps ()); - } - if (first_durations.size ()) - { - first_durations.sort (Duration::compare); - Moment new_until = now + first_durations.top ().length_mom (); - if (new_until > first_until_) - first_until_ = new_until; - } + Moment now = pending_moment (); - if (second_durations.size ()) + if (!now.mod_rat (change_mom)) { - second_durations.sort (Duration::compare); - Moment new_until = now + second_durations.top ().length_mom (); - if (new_until > second_until_) - second_until_ = new_until; + SCM interval = SCM_BOOL_F; + if (first_until_ < now) + first_until_ = now; + if (second_until_ < now) + second_until_ = now; + + Moment first_mom = first_until_; + Moment second_mom = second_until_; + Moment diff_until = diff_mom + now; + + bool first = true; + Music_iterator *first_iter = first_iter_p_->clone (); + Music_iterator *second_iter = second_iter_p_->clone (); + + Moment last_pending (-1); + Moment pending = now; + while (now < diff_until + && (first_iter->ok () || second_iter->ok ()) + + // urg, this is a hack, haven't caught this case yet + && (pending != last_pending)) + { + if (!second_iter->ok ()) + pending = first_iter->pending_moment (); + else if (!first_iter->ok ()) + pending = second_iter->pending_moment (); + else + pending = first_iter->pending_moment () pending_moment (); + last_pending = pending; + + Array first_pitches; + Array first_durations; + get_music_info (pending, first_iter, &first_pitches, &first_durations); + + Array second_pitches; + Array second_durations; + get_music_info (pending, second_iter, &second_pitches, &second_durations); + + if (first_pitches.size () && second_pitches.size ()) + { + first_pitches.sort (Musical_pitch::compare); + second_pitches.sort (Musical_pitch::compare); + interval = gh_int2scm (first_pitches.top ().steps () + - second_pitches[0].steps ()); + } + if (first_durations.size ()) + { + first_durations.sort (Duration::compare); + first_mom += first_durations.top ().length_mom (); + } + + if (second_durations.size ()) + { + second_durations.sort (Duration::compare); + second_mom += second_durations.top ().length_mom (); + } + + if (!first_pitches.empty () && second_pitches.empty () + && !(second_until_ > now)) + { + state |= UNRELATED; + state &= ~UNISILENCE; + if (!(state & ~(UNRELATED | SOLO1 | UNISILENCE))) + state |= SOLO1; + } + else + state &= ~SOLO1; + + if (first_pitches.empty () && !second_pitches.empty () + && !(first_until_ > now)) + { + state |= UNRELATED; + state &= ~UNISILENCE; + if (!(state & ~(UNRELATED | SOLO2 | UNISILENCE))) + state |= SOLO2; + } + else + state &= ~SOLO2; + + if (!compare (&first_durations, &second_durations)) + { + state &= ~UNISILENCE; + if (!(state & ~(UNIRHYTHM | UNISON))) + state |= UNIRHYTHM; + } + else + state &= ~(UNIRHYTHM | UNISILENCE); + + if (!first_pitches.empty () + &&!compare (&first_pitches, &second_pitches)) + { + state &= ~UNISILENCE; + if (!(state & ~(UNIRHYTHM | UNISON))) + state |= UNISON; + } + else + state &= ~(UNISON); + + if (first_pitches.empty () && second_pitches.empty ()) + { + if (!(state & ~(UNIRHYTHM | UNISILENCE))) + state |= UNISILENCE; + } + else if (!state) + state |= UNRELATED; + else + state &= ~(UNISILENCE); + + if (gh_number_p (interval)) + { + SCM s = first_translator->get_property (ly_symbol2scm ("splitInterval")); + int i = gh_scm2int (interval); + if (gh_pair_p (s) + && gh_number_p (gh_car (s)) + && gh_number_p (gh_cdr (s)) + && i >= gh_scm2int (gh_car (s)) + && i <= gh_scm2int (gh_cdr (s))) + { + if (!(state & ~(SPLIT_INTERVAL | UNIRHYTHM | UNISON))) + state |= SPLIT_INTERVAL; + } + else + state &= ~(SPLIT_INTERVAL); + } + + if (first && !first_pitches.empty ()) + first_until_ = first_mom; + if (first && !second_pitches.empty ()) + second_until_ = second_mom; + first = false; + + if (first_iter->ok ()) + first_iter->skip (pending); + if (second_iter->ok ()) + second_iter->skip (pending); + now = pending; + } + delete first_iter; + delete second_iter; } + return state; +} -#if 0 /* DEBUG */ - printf ("now: %s\n", now.str ().ch_C ()); - printf ("first: "); - for (int i = 0; i < first_pitches.size (); i++) - { - printf ("%s, ", first_pitches[i].str ().ch_C ()); - } - printf ("\nsecond: "); - for (int i = 0; i < second_pitches.size (); i++) - { - printf ("%s, ", second_pitches[i].str ().ch_C ()); - } - printf ("\n"); -#endif +void +Part_combine_music_iterator::process (Moment m) +{ - Translator_group * fir = first_iter_p_->report_to_l (); - Translator_group * sir = second_iter_p_->report_to_l (); + /* + TODO: + - Use three named contexts (be it Thread or Voice): one, two, solo. + Let user pre-set (pushproperty) stem direction, remove + dynamic-engraver, and such. - bool solo_b = (first_pitches.empty () != second_pitches.empty ()) - && !(first_until_ > now && second_until_ > now); + **** Tried this, but won't work: - bool unirhythm_b = !solo_b && !compare (&first_durations, &second_durations); - bool unison_b = unirhythm_b && !first_pitches.empty () - &&!compare (&first_pitches, &second_pitches); - bool unisilence_b = unirhythm_b && first_pitches.empty (); + Consider thread switching: threads "one", "two" and "both". + User can't pre-set the (most important) stem direction at + thread level! + */ + + if (suffix_.empty_b ()) + suffix_ = first_iter_p_->report_to_l ()->daddy_trans_l_->id_str_.cut_str (3, INT_MAX); - Translator_group * fd = fir->find_create_translator_l (p->what_str_, "one"); - Translator_group * sd = sir->find_create_translator_l (p->what_str_, "two"); + int state = get_state (m); + if (state) + state_ = state; + else + state = state_; + + Part_combine_music const *p = dynamic_cast (music_l_); - bool split_interval_b = false; - if (gh_number_p (interval)) - { - SCM s = fd->get_property (ly_symbol2scm ("splitInterval")); - int i = gh_scm2int (interval); - if (gh_pair_p (s) - && gh_number_p (gh_car (s)) - && gh_number_p (gh_cdr (s)) - && i >= gh_scm2int (gh_car (s)) - && i <= gh_scm2int (gh_cdr (s))) - split_interval_b = true; - } - bool combined_b = first_iter_p_->report_to_l ()->daddy_trans_l_ + bool previously_combined_b = first_iter_p_->report_to_l ()->daddy_trans_l_ == second_iter_p_->report_to_l ()->daddy_trans_l_; - String to_id = combined_b ? "one" : "two"; - if ((!unirhythm_b && combined_b) - || (split_interval_b && combined_b) - || (solo_b && combined_b) - /*|| (unisilence_b && combined_b) */ - || ((unirhythm_b || unison_b || unisilence_b) - && !combined_b && !split_interval_b && !solo_b)) - { - combined_b = !combined_b; - to_id = combined_b ? "one" : "two"; - change_to (second_iter_p_, p->what_str_, to_id); - } - - if (!combined_b) - sir = second_iter_p_->report_to_l (); + bool combine_b = previously_combined_b; - SCM b = unirhythm_b ? SCM_BOOL_T : SCM_BOOL_F; - fd->set_property ("unirhythm", b); - sd->set_property ("unirhythm", b); + if (!(state & UNIRHYTHM) + || (state & SPLIT_INTERVAL) + || (state & (SOLO1 | SOLO2))) + combine_b = false; + else if (state & (UNIRHYTHM | UNISILENCE)) + combine_b = true; - b = split_interval_b ? SCM_BOOL_T : SCM_BOOL_F; - fd->set_property ("split-interval", b); - sd->set_property ("split-interval", b); + if (combine_b != previously_combined_b) + change_to (second_iter_p_, p->what_str_, (combine_b ? "one" : "two") + + suffix_); - b = unisilence_b ? SCM_BOOL_T : SCM_BOOL_F; - fd->set_property ("unisilence", b); - sd->set_property ("unisilence", b); + Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "one" + suffix_); + Translator_group *second_translator = second_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "two" + suffix_); - b = unison_b ? SCM_BOOL_T : SCM_BOOL_F; - fd->set_property ("unison", b); - sd->set_property ("unison", b); - - b = solo_b ? SCM_BOOL_T : SCM_BOOL_F; - if (first_pitches.size ()) - { - fd->set_property ("solo", b); - sd->set_property ("solo", SCM_BOOL_F); - } - - if (second_pitches.size ()) - { - fd->set_property ("solo", SCM_BOOL_F); - sd->set_property ("solo", b); - } + /* + hmm + */ + SCM b = (state & UNIRHYTHM) ? SCM_BOOL_T : SCM_BOOL_F; + first_translator->set_property ("unirhythm", b); + second_translator->set_property ("unirhythm", b); + + b = (state & SPLIT_INTERVAL) ? SCM_BOOL_T : SCM_BOOL_F; + first_translator->set_property ("split-interval", b); + second_translator->set_property ("split-interval", b); + + b = (state & UNISILENCE) ? SCM_BOOL_T : SCM_BOOL_F; + first_translator->set_property ("unisilence", b); + second_translator->set_property ("unisilence", b); + + // difference in definition... + //b = ((state & UNISON) ? SCM_BOOL_T : SCM_BOOL_F; + b = ((state & UNISON) && (state & UNIRHYTHM)) ? SCM_BOOL_T : SCM_BOOL_F; + first_translator->set_property ("unison", b); + second_translator->set_property ("unison", b); + + SCM b1 = (state & SOLO1) ? SCM_BOOL_T : SCM_BOOL_F; + SCM b2 = (state & SOLO2) ? SCM_BOOL_T : SCM_BOOL_F; + first_translator->set_property ("solo", b1); + second_translator->set_property ("solo", b2); if (first_iter_p_->ok ()) first_iter_p_->process (m); diff --git a/lily/script.cc b/lily/script.cc index c4c875f563..333593a2d8 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -28,7 +28,7 @@ Script::get_molecule(Score_element * me, Direction d) } else if (key == ly_symbol2scm ("accordion")) { - return me->lookup_l ()->accordion (gh_cdr (s), me->paper_l()->get_var("interline")); + return me->lookup_l ()->accordion (gh_cdr (s), me->paper_l()->get_var("staffspace")); } else assert (false); diff --git a/lily/sequential-music-iterator.cc b/lily/sequential-music-iterator.cc index 975f460187..bfeb3cd925 100644 --- a/lily/sequential-music-iterator.cc +++ b/lily/sequential-music-iterator.cc @@ -24,22 +24,24 @@ Sequential_music_iterator::Sequential_music_iterator (Sequential_music_iterator { cursor_ = src.cursor_; here_mom_ = src.here_mom_; - iter_p_ = src.iter_p_->clone (); + if (src.iter_p_) + iter_p_ = src.iter_p_->clone (); + else + iter_p_ = 0; } Sequential_music_iterator::~Sequential_music_iterator() { if (iter_p_) { - /* if (iter_p_->ok () ) +#if 0 + if (iter_p_->ok () ) music_l_->origin ()->warning (_ ("Must stop before this music ends")); - */ +#endif delete iter_p_; - iter_p_ = 0; } } - void Sequential_music_iterator::construct_children() { @@ -47,39 +49,28 @@ Sequential_music_iterator::construct_children() while (gh_pair_p (cursor_ )) { - start_next_element(); - if (!iter_p_->ok()) - { - leave_element(); - } - else + iter_p_ = get_iterator_p (unsmob_music (gh_car (cursor_))); + + if (iter_p_->ok()) { - set_sequential_music_translator(); - break; + descend_to_child (); + return; } - } -} - -void -Sequential_music_iterator::leave_element() -{ - delete iter_p_; - iter_p_ =0; - Moment elt_time = unsmob_music (gh_car (cursor_))->length_mom (); - here_mom_ += elt_time; - cursor_ =gh_cdr (cursor_); -} -void -Sequential_music_iterator::start_next_element() -{ - assert (!iter_p_); - iter_p_ = get_iterator_p (unsmob_music (gh_car (cursor_))); + delete iter_p_ ; + iter_p_ =0; + cursor_ = gh_cdr (cursor_); + } } + /* + move to context of child iterator if it is deeper down in the + hierarchy. + */ void -Sequential_music_iterator::set_sequential_music_translator() +Sequential_music_iterator::descend_to_child () { + Translator_group * child_report = child_report = iter_p_->report_to_l (); if (dynamic_cast (iter_p_)) child_report = child_report->daddy_trans_l_; @@ -88,8 +79,9 @@ Sequential_music_iterator::set_sequential_music_translator() set_translator (child_report); } + /* - [todo: translate] + Hier staat in feite: haal alle muziek op (startend op tijd HERE) tot je iets met lengte L > 0 tegenkomt. Aangezien de preconditie is dat @@ -114,6 +106,9 @@ SCM Sequential_music_iterator::get_music (Moment until)const { SCM s = SCM_EOL; + if (until < pending_moment ()) + return s; + SCM curs = cursor_; Music_iterator * iter = iter_p_->clone (); while (1) @@ -138,36 +133,71 @@ Sequential_music_iterator::get_music (Moment until)const } return s; } - +/* + Skip events till UNTIL. We don't do any other side effects (such as + moving descending to child iterator contexts, because they might + depend on \context specs and \translator changes being executed + + */ +void +Sequential_music_iterator::skip (Moment until) +{ + SCM curs = cursor_; + while (1) + { + Moment l =iter_p_->music_length_mom (); + if (l >= until - here_mom_) + iter_p_->skip (until - here_mom_); + + if (iter_p_->ok ()) + return ; + + here_mom_ = here_mom_ + l; + delete iter_p_; + iter_p_ =0; + + curs = gh_cdr (curs); + + if (!gh_pair_p (curs)) + return ; + else + iter_p_ = get_iterator_p (unsmob_music (gh_car (curs))); + } +} + void Sequential_music_iterator::process (Moment until) { - if (ok ()) + while (1) { - while (1) - { - Moment local_until = until - here_mom_; - while (iter_p_->ok ()) - { - Moment here = iter_p_->pending_moment (); - if (here != local_until) - return ; - - iter_p_->process (local_until); - } + iter_p_->process (until - here_mom_); + + /* + if the iter is still OK, there must be events left that have + + TIME > LEFT - if (!iter_p_->ok ()) - { - set_sequential_music_translator (); - leave_element (); - - if (gh_pair_p (cursor_)) - start_next_element (); - else - return ; - } - } + */ + if (iter_p_->ok ()) + return ; + + here_mom_ += iter_p_->music_length_mom (); + + descend_to_child (); + delete iter_p_; + iter_p_ =0; + + cursor_ = gh_cdr (cursor_); + + if (!gh_pair_p (cursor_)) + return ; + else + { + delete iter_p_; + iter_p_ = get_iterator_p (unsmob_music (gh_car (cursor_))); + } } + } Moment diff --git a/lily/slur-bezier-bow.cc b/lily/slur-bezier-bow.cc index e23f528a24..0240e99f87 100644 --- a/lily/slur-bezier-bow.cc +++ b/lily/slur-bezier-bow.cc @@ -144,12 +144,10 @@ Slur_bezier_bow::area_x_gradients_array (Real area) algorithm, instead of this homebrew. */ void -Slur_bezier_bow::minimise_enclosed_area (Paper_def* paper_l) +Slur_bezier_bow::minimise_enclosed_area (Paper_def* paper_l, Real beauty) { Real length = curve_.control_[3][X_AXIS]; - - Real sb = paper_l->get_var ("slur_beautiful"); - Real beautiful = sb * length * slur_height (length, h_inf_, r_0_); + Real beautiful = beauty * length * slur_height (length, h_inf_, r_0_); DEBUG_OUT << to_str ("Beautiful: %f\n", beautiful); DEBUG_OUT << to_str ("Length: %f\n", length); diff --git a/lily/slur.cc b/lily/slur.cc index ca200b2b24..0ef9b48299 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -135,6 +135,8 @@ Slur::set_extremities (Score_element*me) { // for (SCM s = get_elt_property ("slur-extremity-rules"); s != SCM_EOL; s = gh_cdr (s)) + + // FIXME: global GUILE scope used! for (SCM s = scm_eval2 (ly_symbol2scm ("slur-extremity-rules"), SCM_EOL); s != SCM_EOL; s = gh_cdr (s)) @@ -190,9 +192,9 @@ Slur::broken_trend_offset (Score_element *me, Direction dir) Offset o; if (Spanner *mother = dynamic_cast (me->original_l_)) { - for (int i = dir == LEFT ? 0 : mother->broken_into_l_arr_.size (); - dir == LEFT ? i < mother->broken_into_l_arr_.size () : i; - dir == LEFT ? i++ : --i) + for (int i = dir == LEFT ? 0 : mother->broken_into_l_arr_.size () - 1; + dir == LEFT ? i < mother->broken_into_l_arr_.size () : i > 0; + dir == LEFT ? i++ : i--) { if (mother->broken_into_l_arr_[i - dir] == me) { @@ -286,7 +288,9 @@ Slur::get_attachment (Score_element*me,Direction dir, } } - + + + // FIXME SCM l = scm_assoc (scm_listify (a, gh_int2scm (stem ? Stem::get_direction (stem) : 1 * dir), @@ -353,7 +357,8 @@ Slur::encompass_offset (Score_element*me, /* leave a gap: slur mustn't touch head/stem */ - o[Y_AXIS] += dir * me->paper_l ()->get_var ("slur_y_free"); + o[Y_AXIS] += dir * gh_scm2double (me->get_elt_property ("y-free")) * + me->paper_l ()->get_var ("staffspace"); return o; } @@ -478,10 +483,14 @@ Slur::brew_molecule (SCM smob) void Slur::set_control_points (Score_element*me) { - Real staff_space = Staff_symbol_referencer::staff_space ((Score_element*)me); - Real h_inf = me->paper_l ()->get_var ("slur_height_limit_factor") * - staff_space; - Real r_0 = me->paper_l ()->get_var ("slur_ratio"); + Real staff_space = Staff_symbol_referencer::staff_space ((Score_element*)me); + + SCM details = me->get_elt_property ("details"); + SCM h_inf_scm = scm_assq (ly_symbol2scm ("height-limit"), details); + SCM r_0_scm = scm_assq (ly_symbol2scm ("ratio"), details); + + Real r_0 = gh_scm2double (gh_cdr (r_0_scm)); + Real h_inf = staff_space * gh_scm2double (gh_cdr (h_inf_scm)); Slur_bezier_bow bb (get_encompass_offset_arr (me), Directional_element_interface::get (me), @@ -491,14 +500,21 @@ Slur::set_control_points (Score_element*me) { Real length = bb.curve_.control_[3][X_AXIS]; Real default_height = slur_height (length, h_inf, r_0); - bb.minimise_enclosed_area (me->paper_l()); - - Real bff = me->paper_l ()->get_var ("slur_force_blowfit"); + + SCM ssb = scm_assq (ly_symbol2scm ("beautiful"), details); + Real sb =gh_scm2double (gh_cdr (ssb)); + + bb.minimise_enclosed_area (me->paper_l(), sb); + SCM sbf = scm_assq (ly_symbol2scm ("force-blowfit"), details); + Real bff = 1.0; + if (gh_pair_p (sbf) && gh_number_p (gh_cdr (sbf))) + bff = gh_scm2double (gh_cdr (sbf)); + bb.curve_.control_[1][Y_AXIS] *= bff; bb.curve_.control_[2][Y_AXIS] *= bff; bb.blow_fit (); - Real sb = me->paper_l ()->get_var ("slur_beautiful"); + Real beautiful = length * default_height * sb; Real area = bb.enclosed_area_f (); diff --git a/lily/system-start-delimiter-engraver.cc b/lily/system-start-delimiter-engraver.cc index 35189db939..493be5a667 100644 --- a/lily/system-start-delimiter-engraver.cc +++ b/lily/system-start-delimiter-engraver.cc @@ -52,7 +52,7 @@ System_start_delimiter_engraver::acknowledge_element (Score_element_info inf) */ if (gh_symbol_p (gl) && gl == ly_symbol2scm ("brace") && gh_symbol_p (my_gl) && my_gl == ly_symbol2scm ("bracket")) - inf.elem_l_->translate_axis ( -paper_l ()->get_var ("interline"), X_AXIS); // ugh + inf.elem_l_->translate_axis ( -paper_l ()->get_var ("staffspace"), X_AXIS); // ugh } } diff --git a/lily/tie.cc b/lily/tie.cc index d40b0c3369..645f04b9b2 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -127,7 +127,7 @@ Tie::get_control_points (SCM smob) Real staff_space = Staff_symbol_referencer::staff_space (me); - Real x_gap_f = me->paper_l ()->get_var ("tie_x_gap"); + Real x_gap_f = gh_scm2double (me->get_elt_property ("x-gap")); Score_element* commonx = me->common_refpoint (me->get_bound (LEFT), X_AXIS); commonx = me->common_refpoint (me->get_bound (RIGHT), X_AXIS); @@ -167,10 +167,14 @@ Tie::get_control_points (SCM smob) } Direction dir = Directional_element_interface::get(me); - - Real h_inf = me->paper_l ()->get_var ("tie_height_limit_factor") * staff_space; - Real r_0 = me->paper_l ()->get_var ("tie_ratio"); + SCM details = me->get_elt_property ("details"); + + SCM lim // groetjes aan de chirurgendochter. + = scm_assq (ly_symbol2scm ("height-limit"),details); + + Real h_inf = gh_scm2double (gh_cdr (lim)) * staff_space; + Real r_0 = gh_scm2double (gh_cdr (scm_assq (ly_symbol2scm ("ratio"),details))); Bezier b = slur_shape (width, h_inf, r_0); @@ -224,8 +228,11 @@ Tie::get_control_points (SCM smob) Real ry = rint (y/staff_space) * staff_space; Real diff = ry - y; Real newy = y; - if (fabs (y) <= Staff_symbol_referencer::staff_radius (me) - && fabs (diff) < me->paper_l ()->get_var ("tie_staffline_clearance")) + + Real clear = staff_space * gh_scm2double (me->get_elt_property ("staffline-clearance")); + + if (fabs (y) <= Staff_symbol_referencer::staff_radius (me) + && fabs (diff) < clear) { newy = ry - 0.5 * staff_space * sign (diff) ; } diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc index 40eba8acf7..fa4d80f0a8 100644 --- a/lily/vertical-align-engraver.cc +++ b/lily/vertical-align-engraver.cc @@ -34,7 +34,7 @@ Vertical_align_engraver::Vertical_align_engraver() void Vertical_align_engraver::do_creation_processing() { - valign_p_ =new Spanner (SCM_EOL); // todo -> basic props + valign_p_ =new Spanner (get_property ("basicVerticalAlignmentProperties")); Align_interface::set_interface (valign_p_); Align_interface::set_axis (valign_p_,Y_AXIS); valign_p_->set_elt_property ("stacking-dir", @@ -58,6 +58,7 @@ Vertical_align_engraver::do_removal_processing() valign_p_->set_elt_property ("threshold", gh_cons (min,max)); } + valign_p_->set_bound(RIGHT,unsmob_element (get_property ("currentCommandColumn"))); typeset_element (valign_p_); valign_p_ =0; diff --git a/lilypond-mode.el b/lilypond-mode.el index 237f0a347d..65e7b340b0 100644 --- a/lilypond-mode.el +++ b/lilypond-mode.el @@ -79,8 +79,8 @@ (mapcar (function (lambda (x) (modify-syntax-entry (car x) (cdr x) lily-mode-syntax-table))) - '(( ?\( . "." ) ( ?\) . "." ) - ( ?\[ . "." ) ( ?\] . "." ) + '(( ?\( . "()" ) ( ?\) . ")(" ) ; need matching parens for inline lisp + ( ?\[ . "." ) ( ?\] . "." ) ( ?\{ . "(}" ) ( ?\} . "){" ) ( ?\< . "(>" )( ?\> . ")>") ( ?\$ . "." ) ( ?\% . "." ) ( ?\& . "." ) diff --git a/ly/declarations.ly b/ly/declarations.ly index a5af61a2c0..452bc2b2ca 100644 --- a/ly/declarations.ly +++ b/ly/declarations.ly @@ -37,7 +37,7 @@ melismaEnd = \property Staff.melismaBusy = ##f papersize = "a4" - +\include "engraver.ly" \include "generic-paper.ly" \include "paper20.ly" diff --git a/ly/engraver.ly b/ly/engraver.ly index 0fdd838bea..f41e94da6f 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -43,10 +43,9 @@ StaffContext=\translator { \accepts "Voice"; -}; +} -\translator{\StaffContext } -\translator { +ChoirStaffContext = \translator { \type "Engraver_group_engraver"; \name ChoirStaff; alignmentReference = \center; @@ -69,13 +68,11 @@ RhythmicStaffContext=\translator{ \consists "Output_property_engraver"; Generic_property_list = #generic-staff-properties - - barSize = 4.0 * \staffspace ; % JUNKME \consists "Pitch_squash_engraver"; \consists "Separating_line_group_engraver"; \name RhythmicStaff; - + basicBarProperties \push #'bar-size = #4 basicVoltaSpannerProperties \push #'minimum-space = #15 % urg, in \pt basicVoltaSpannerProperties \push #'padding = #5 % urg, in \pt basicStaffSymbolProperties \push #'line-count = #1 @@ -86,8 +83,8 @@ RhythmicStaffContext=\translator{ \consists "Staff_symbol_engraver"; \consistsend "Axis_group_engraver"; \accepts "Voice"; -}; -\translator{\RhythmicStaffContext} +} + VoiceContext = \translator { \type "Engraver_group_engraver"; @@ -133,7 +130,7 @@ VoiceContext = \translator { \consists "Skip_req_swallow_translator"; \accepts Thread; % bug if you leave out this! \accepts Grace; -}; +} GraceContext=\translator { \type "Grace_engraver_group"; @@ -174,11 +171,8 @@ GraceContext=\translator { basicBeamProperties \push #'beam-space-function = #(lambda (x) 0.5) weAreGraceContext = ##t - graceAccidentalSpace= 1.5 * \staffspace; % JUNKME -}; - -\translator{\GraceContext} -\translator {\VoiceContext} + graceAccidentalSpace= 1.5 ; % in staff space +} ThreadContext = \translator{ \type Engraver_group_engraver; @@ -188,9 +182,8 @@ ThreadContext = \translator{ Generic_property_list = #generic-thread-properties \consists "Property_engraver"; \name Thread; -}; +} -\translator{\ThreadContext} GrandStaffContext=\translator{ \type "Engraver_group_engraver"; \name GrandStaff; @@ -201,23 +194,19 @@ GrandStaffContext=\translator{ \consists "Property_engraver"; Generic_property_list = #generic-grand-staff-properties \accepts "Staff"; -}; -\translator{\GrandStaffContext} +} PianoStaffContext = \translator{\GrandStaffContext alignmentReference = \center; \consists "Vertical_align_engraver"; - % JUNKME - minVerticalAlign = 3.0*\staffheight; - maxVerticalAlign = 3.0*\staffheight; + basicVerticalAlignmentProperties \push #'threshold = #'(12 . 12) % \consistsend "Axis_group_engraver"; \name "PianoStaff"; - -}; -\translator{\PianoStaffContext} +} + StaffGroupContext= \translator { \type "Engraver_group_engraver"; \consists "Span_bar_engraver"; @@ -237,9 +226,8 @@ StaffGroupContext= \translator { \accepts "Lyrics"; \accepts "ChordNames"; -}; +} -\translator { \StaffGroupContext } % UGH! JUNKME LyricsVoiceContext= \translator{ @@ -255,8 +243,14 @@ LyricsVoiceContext= \translator{ \consists "Stanza_number_engraver"; phrasingPunctuation = #".,;:!?\"" -}; -\translator{ \LyricsVoiceContext } +} +NoteNamesContext = \translator { + \type "Engraver_group_engraver"; + \name NoteNames; + \consistsend "Axis_group_engraver"; + \consists "Note_name_engraver"; + \consists "Separating_line_group_engraver"; +} LyricsContext = \translator { \type "Engraver_group_engraver"; @@ -267,8 +261,7 @@ LyricsContext = \translator { \consistsend "Axis_group_engraver"; \accepts "LyricVoice"; -}; -\translator { \LyricsContext } +} ChordNameVoiceContext = \translator { \type "Engraver_group_engraver"; @@ -278,9 +271,7 @@ ChordNameVoiceContext = \translator { \consistsend "Axis_group_engraver"; \consists "Separating_line_group_engraver"; \consists "Chord_name_engraver"; -}; -\translator {\ChordNameVoiceContext} - +} ChordNameContext = \translator { \type "Engraver_group_engraver"; \name ChordNames; @@ -290,8 +281,7 @@ ChordNameContext = \translator { \consists "Output_property_engraver"; \accepts "ChordNameVoice"; \consistsend "Axis_group_engraver"; - }; -\translator { \ChordNameContext } + } ScoreWithNumbers = \translator { @@ -299,20 +289,20 @@ ScoreWithNumbers = \translator { % uncomment to bar numbers on a whole system. \consists "Bar_number_engraver"; -}; +} StupidScore = \translator { \type "Score_engraver"; \name Score; \consists "Note_heads_engraver"; -}; +} BarNumberingStaffContext = \translator { \StaffContext \consists "Mark_engraver"; -}; +} HaraKiriStaffContext = \translator { \StaffContext @@ -320,7 +310,7 @@ HaraKiriStaffContext = \translator { \consistsend "Hara_kiri_engraver"; \consists "Instrument_name_engraver"; \accepts "Voice"; -}; +} %{ The HaraKiriStaffContexts doesn't override \name, so it is still named `Staff'. @@ -331,7 +321,7 @@ HaraKiriStaffContext = \translator { OrchestralPartStaffContext = \translator { \StaffContext \consists "Mark_engraver"; -}; +} ScoreContext = \translator { \type Score_engraver; @@ -366,6 +356,7 @@ ScoreContext = \translator { aDueText = #"\\`a2" soloADue = ##t splitInterval = #'(0 . 1) + changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512)) defaultClef = #"treble" @@ -456,6 +447,8 @@ ScoreContext = \translator { (breakable . #t) (visibility-lambda . ,begin-of-line-visible) (name . "barnumber") + (padding . 1.0) + (direction . 1) ) basicBeamProperties = #basic-beam-properties @@ -503,6 +496,11 @@ ScoreContext = \translator { basicCrescendoProperties = #`( (molecule-callback . ,Crescendo::brew_molecule) (interfaces . (crescendo-interface dynamic-interface)) + (thickness . 1.0) + (shorten-for-letter . 4.0) + (height . 0.6666) + (dash-thickness . 1.2) + (dash-length . 4.0) (name . "crescendo") ) basicDotColumnProperties = #`( @@ -678,6 +676,8 @@ ScoreContext = \translator { (after-line-breaking-callback . ,Slur::after_line_breaking) (de-uglify-parameters . ( 1.5 0.8 -2.0)) + (details . ((height-limit . 2.0) (ratio . 0.333) (force-blowfit . 0.5) (beautiful . 0.5))) + (y-free . 0.75) (name . "slur") ) basicSpacingSpannerProperties =#`( @@ -745,7 +745,10 @@ ScoreContext = \translator { (interfaces . (tie-interface)) (molecule-callback . ,Tie::brew_molecule) (spacing-procedure . ,Tie::set_spacing_rods) + (staffline-clearance . 0.24) + (details . ((ratio . 0.333) (height-limit . 1.0))) (thickness . 1.2) + (x-gap . 0.2) (minimum-length . 2.5) (name . "tie") ) @@ -829,24 +832,19 @@ ScoreContext = \translator { (minimum-space . 25) (name . "volta brace") ) + basicVerticalAlignmentProperties = #`( + (axes 1) + (interfaces . (align-interface axis-group-interface)) + (name . "vertical alignment") + ) basicVerticalAxisGroupProperties = #`( (axes 1) (interfaces . (axis-group-interface)) (name . "Y-axis group") ) -}; - -\translator { \ScoreContext } +} OrchestralScoreContext= \translator { \ScoreContext - -}; - -\translator { - \type "Engraver_group_engraver"; - \name NoteNames; - \consistsend "Axis_group_engraver"; - \consists "Note_name_engraver"; - \consists "Separating_line_group_engraver"; } + diff --git a/ly/paper-as9.ly b/ly/paper-as9.ly index ba07ca8832..2c1fdb044e 100644 --- a/ly/paper-as9.ly +++ b/ly/paper-as9.ly @@ -5,8 +5,11 @@ paper_as_nine = \paper { staffheight = 9.\char; - font_large = 4.; - font_Large = 4.; +% font_large = 4.; +% font_Large = 4.; +% font_normal = 4.; + font_large = 1.; + font_Large = 1.; font_normal = 4.; font_script = 1.; diff --git a/ly/params.ly b/ly/params.ly index 85661e39d6..640a603464 100644 --- a/ly/params.ly +++ b/ly/params.ly @@ -7,9 +7,8 @@ TODO: * cleanup * use elt properties, iso. paper variables. -%} - +%} paperfile = \papersize + ".ly"; % paperfile = "a4.ly"; @@ -19,9 +18,6 @@ paperfile = \papersize + ".ly"; staffspace = \staffheight / 4.0; stafflinethickness = \staffspace / 10.0; -% deprecated -interline = \staffspace; - %{ The space taken by a note is determined by the formula @@ -69,43 +65,6 @@ arithmetic_multiplier = 0.9 * 1.32 * \staffspace ; arithmetic_basicspace = 2.0; -% -% UGH; junk these! -% - -% catch suspect beam slopes, set slope to zero if -% outer stem is lengthened more than -beam_lengthened = 0.2 * \staffspace; -% and slope is running away steeper than -beam_steep_slope = 0.2 / 1.0; - - - -%{ - Slur parameters. - - See Documentation/programmer/fonts.doc - - TODO: -> elt-properties. -%} -% Height-limit (h_inf) = factor * staff_space -slur_height_limit_factor = 2.0; -slur_ratio = 1.0 / 3.0; - -slur_thickness = 1.2 * \stafflinethickness; - -slur_force_blowfit = 0.5; -slur_beautiful = 0.5; - - -%{ -Horizontal space between centre of notehead and slur. -%} -% OSU: suggested gap = ss / 5; -slur_x_gap = \staffspace / 5.0; -slur_y_gap = 0.25 * \staffspace; -slur_y_free = 0.75 * \staffspace; -slur_x_minimum = 1.5 * \staffspace; % URG: the magic constants for area asymmetry bezier_pct_c0 = -0.2; @@ -115,27 +74,9 @@ bezier_pct_in_max = 1.2; bezier_area_steps = 1.0; -%{ - Tie parameters -%} - -tie_height_limit_factor = 1.0 ; -tie_ratio = \slur_ratio; - -% OSU: tie gap == slur gap -tie_x_gap = 0.2 * \staffspace; -tie_staffline_clearance = 2.0 *\slur_thickness; - % vertical space between lines of text. line_kern = \staffspace; -% chop off this much when next to pp / ff sign. -crescendo_shorten = 4.0 * \staffspace; -crescendo_thickness = \stafflinethickness; -crescendo_height = 0.666 * \staffspace; -crescendo_dash_thickness = 1.2*\stafflinethickness; -crescendo_dash = 4.0*\staffspace; - % optical correction amount. stemSpacingCorrection = 0.5*\staffspace; @@ -175,10 +116,23 @@ will cause scores to be set looser compression_energy_factor = 0.6; +\translator { \NoteNamesContext } +\translator { \ScoreContext } +\translator { \ChoirStaffContext} +\translator { \GraceContext} +\translator { \RhythmicStaffContext} +\translator { \StaffContext } +\translator { \VoiceContext} +\translator { \StaffGroupContext } +\translator { \ChordNameContext } +\translator { \ChordNameVoiceContext} +\translator { \GrandStaffContext} +\translator { \LyricsContext } +\translator { \ThreadContext} +\translator { \PianoStaffContext} +\translator { \LyricsVoiceContext } -\include "engraver.ly"; - diff --git a/mutopia/Coriolan/bassi-part.ly b/mutopia/Coriolan/bassi-part.ly index ab28f5de68..00184d02d0 100644 --- a/mutopia/Coriolan/bassi-part.ly +++ b/mutopia/Coriolan/bassi-part.ly @@ -9,29 +9,7 @@ copyright = "public domain"; \version "1.3.59"; -\include "global.ly" -\include "violoncello.ly" -\include "contrabasso.ly" - -bassiGroup = \context PianoStaff = bassi_group \notes < - %\global - \context StaffCombineStaff=one { - \clef "bass"; - \key es \major; - \skip 1*314; - \bar "|."; - } - \context StaffCombineStaff=two { - \clef "bass"; - \key es \major; - \skip 1*314; - \bar "|."; - } - - \context StaffCombineStaff=one \partcombine StaffCombineStaff - \context StaffCombineVoice=one \violoncello - \context StaffCombineVoice=two \contrabasso -> +\include "bassi.ly" \score{ \bassiGroup diff --git a/mutopia/Coriolan/bassi.ly b/mutopia/Coriolan/bassi.ly new file mode 100644 index 0000000000..785c8405dd --- /dev/null +++ b/mutopia/Coriolan/bassi.ly @@ -0,0 +1,41 @@ +\header{ +filename = "bassi.ly"; +% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62"; +description = ""; +composer = "Ludwig van Beethoven (1770-1827)"; +enteredby = "JCN"; +copyright = "public domain"; +} + +\version "1.3.59"; + +\include "global.ly" +\include "violoncello.ly" +\include "contrabasso.ly" + +bassiGroup = \context PianoStaff = bassi_group \notes < + %\global + \context StaffCombineStaff=oneBassi { + \property StaffCombineStaff.midiInstrument = #"cello" + \property StaffCombineStaff.instrument = #"Violoncello\ne\nContrabasso" + \property StaffCombineStaff.instr = #"Vc." + \clef "bass"; + \key es \major; + \skip 1*314; + \bar "|."; + } + \context StaffCombineStaff=twoBassi { + \property StaffCombineStaff.midiInstrument = #"contrabass" + \property StaffCombineStaff.instrument = #"Contrabasso" + \property StaffCombineStaff.instr = #"Cb." +% \property StaffCombineStaff.transposing = #-12 + \clef "bass"; + \key es \major; + \skip 1*314; + \bar "|."; + } + + \context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff + \context StaffCombineVoice=one \violoncello + \context StaffCombineVoice=two \contrabasso +> diff --git a/mutopia/Coriolan/contrabasso.ly b/mutopia/Coriolan/contrabasso.ly index 1e8f4c1a24..77544490e5 100644 --- a/mutopia/Coriolan/contrabasso.ly +++ b/mutopia/Coriolan/contrabasso.ly @@ -18,7 +18,6 @@ contrabasso = \notes \relative c { c'1\ff ~ | c | f,4-. r r2 | - \property Staff.instr = #"Vc.\nCb." r1 | c'1\ff ~ | c | @@ -30,8 +29,8 @@ contrabasso = \notes \relative c { c4 r4 r2 | c4 r4 r2 | r1 | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" c'4.\< c8 bes4. bes8 | %20 @@ -46,8 +45,8 @@ contrabasso = \notes \relative c { % copied 14 from cello - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" bes'4.\< bes8 as4. as8 | g4 \!g4-.\f r2 | R1 @@ -82,8 +81,8 @@ contrabasso = \notes \relative c { )as,4 r r r8 as(| )g4 r r r8 g(| )d'4 r r r8 d(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )es4\< r r r8 es(| )as,4 r r r8 as(| )g4 r r r8 g(| @@ -98,15 +97,15 @@ contrabasso = \notes \relative c { )bes4 r r r8 bes(| )as4 r r r8 as(| )e4 r r r8 e(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )f4\< r r r8 f(| )bes4 r r r8 bes(| %70 \!)as2\ff g | fis d' | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" g,4\p\< r r r8 g(| )c4 r r r8 c(| % ) { s2 s4 \!s8}> | @@ -119,8 +118,8 @@ contrabasso = \notes \relative c { d4\pp r d r | d r d r | %80 - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" d r d\< r | d r d r | d r d r | @@ -196,6 +195,7 @@ contrabasso = \notes \relative c { f | b,2\sf r | b2\sf r | + %160 R1*3 | bes2\ff r | bes2\sf r | @@ -216,8 +216,8 @@ contrabasso = \notes \relative c { %180 )e4 r r r8 e(| )b'4 r r r8 b(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )c4\< r r r8 c(| )f,4 r r r8 f(| )e4 r r r8 e'(| @@ -232,8 +232,8 @@ contrabasso = \notes \relative c { )g,4 r r r8 g(| )f4 r r r8 f(| )cis'4 r r r8 cis(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )d4\< r r r8 d(| %195 @@ -242,40 +242,40 @@ contrabasso = \notes \relative c { dis b | es4\p r r r8 es(| )a,4 r r r8 a(| + )g1 | %200 - )g1 | f | % copied 18 from cello - [f8(g f g][f g f)g] | - es!4\fp r e r | + es'!4\fp r e r | f r g r | - - %205 as r g r | f r fis r | + + %205 g r g r | g r g r | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" g r g\< r | + g r g r | %210 g r g r | g r g r | - g r g r | \!f2.\ff()es4 | d( c d )c | + f2.\ff()es4 | %215 - f2.\ff()es4 | d( c d )c | bes2.\ff()as4 | g( f g )f | bes2.\ff()as4 | + g( f g )f | %220 - f'4 r r2 | + f4 r r2 | f'4 r r2 | f4 r r2 | f4 r r2 | @@ -288,7 +288,7 @@ contrabasso = \notes \relative c { %230 f4 r8 f g4 r8 g | - c,4\p r r2 | + c4\p r r2 | r2 r4 r8 b\f | c4 r r2 | r2 r4 r8 b\f | @@ -297,7 +297,7 @@ contrabasso = \notes \relative c { R1*3 | %copied 59 from cello - [c,8\f e g as][bes, d fis g]| + [c8\f e g as][bes, d fis g]| %240 [as, c e f!][g, bes d es]| @@ -315,8 +315,8 @@ contrabasso = \notes \relative c { %250 )es4 r r r8 es(| )b4 r r r8 b(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )c4\< r r r8 c(| )f4 r r r8 f,(| )es1 | @@ -329,8 +329,8 @@ contrabasso = \notes \relative c { bes\f | %260 - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" as4.\p\< as'8 g4. g8 | f4. f8 es4. es8 | as4. as8 g4. g8 | @@ -373,8 +373,8 @@ contrabasso = \notes \relative c { f,4-. g-. r2 | %290 - \property Voice.decrescendoText = "dim." - \property Voice.decrescendoSpanner = "dashed-line" + \property StaffCombineVoice.decrescendoText = "dim." + \property StaffCombineVoice.decrescendoSpanner = "dashed-line" as4\> r b r | R1 | \!c4\p r r2| @@ -387,30 +387,23 @@ contrabasso = \notes \relative c { r2 r4 f, | c' r r2 | r2 r4 f, | + + %300 c' r r2 | R1 | f,4 r r2 | R1 | c'4 r r2 | + + %305 R1 | f,4 r r2 | R1*3 | + + %310 c'4\pp r r2 | R1 | c4 r r2 | c4 r r2 | c4 r r2 | } - -%%%contrabassoStaff = \context Staff = contrabasso < -%%% \property Staff.midiInstrument = #"contrabass" -%%% \property Staff.instrument = #"Contrabasso" -%%% \property Staff.instr = #"Cb." -%%% \property Staff.transposing = #-12 -%%% \clef "bass"; -%%% \notes \context Voice=one< -%%% \global -%%% \contrabasso -%%% > -%%%> - diff --git a/mutopia/Coriolan/coriolan.ly b/mutopia/Coriolan/coriolan.ly index ea8f927ad3..0c9a454a81 100644 --- a/mutopia/Coriolan/coriolan.ly +++ b/mutopia/Coriolan/coriolan.ly @@ -13,7 +13,7 @@ copyright = "public domain"; \include "global.ly" \include "paper16.ly" -\include "contrabasso.ly" +\include "bassi.ly" \include "clarinetti.ly" \include "corni.ly" \include "fagotti.ly" @@ -21,11 +21,9 @@ copyright = "public domain"; \include "oboi.ly" \include "timpani.ly" \include "trombe.ly" -\include "viola-1.ly" -\include "viola-2.ly" +\include "violi.ly" \include "violino-1.ly" \include "violino-2.ly" -\include "violoncello.ly" legniGroup = \context StaffGroup = legni_group < @@ -51,45 +49,6 @@ violiniGroup = \context GrandStaff = violini_group < \violinoIIStaff > -violiGroup = \context PianoStaff = violi_group \notes < - \context StaffCombineStaff=one { - \clef "alto"; - \key es \major; - \skip 1*314; - \bar "|."; - } - \context StaffCombineStaff=two { - \clef "alto"; - \key es \major; - \skip 1*314; - \bar "|."; - } - - \context StaffCombineStaff=one \partcombine StaffCombineStaff - \context StaffCombineVoice=one \violaI - \context StaffCombineVoice=two \violaII -> - -bassiGroup = \context PianoStaff = bassi_group \notes < - \context StaffCombineStaff=one { - \clef "bass"; - \key es \major; - \skip 1*314; - \bar "|."; - } - \context StaffCombineStaff=two { - \clef "bass"; - \key es \major; - \skip 1*314; - \bar "|."; - } - - \context StaffCombineStaff=one \partcombine StaffCombineStaff - \context StaffCombineVoice=one \violoncello - \context StaffCombineVoice=two \contrabasso -> - - archiGroup = \context StaffGroup = archi_group < \violiniGroup \violiGroup diff --git a/mutopia/Coriolan/viola-1.ly b/mutopia/Coriolan/viola-1.ly index 3649bdd732..03ffeb7e1b 100644 --- a/mutopia/Coriolan/viola-1.ly +++ b/mutopia/Coriolan/viola-1.ly @@ -32,8 +32,8 @@ violaI = \notes \relative c { [c,8-. es-.] [es()d] [d-. g-.] g4-"ten." | [c,8-. es-.] [es()d] [d-. as'-.] [as()g] | [g8-. c-.] [c()b] [b-. f'-.] [f()es] | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" es4.\< es8 d4. d8 | %20 c4. c8 \!b4\f r4 | @@ -43,15 +43,15 @@ violaI = \notes \relative c { r4 [des8\p()c][c-. ges'-.][ges()f] | %25 [f-. bes-.][bes()a][a-. es'-.][es()des] | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" des4.\< des8 c4. c8 | bes4 \!bes4-.\f r2 | R1 % same rhythm as violins... r8 c-.\p c4. c8-. c4~ | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [c8\< c-.]c2.~ | %30 [c8 c-.]c2.~ | @@ -84,8 +84,8 @@ violaI = \notes \relative c { )g4 r r r8 g(| %55 )d4 r r r8 d(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )es4 r\< r r8 es(| )as4 r r r8 as(| )g4 r r r8 g(| @@ -100,15 +100,15 @@ violaI = \notes \relative c { )bes4 r r r8 bes(| )as4 r r r8 as(| )e4 r r r8 e(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )f4\< r r r8 f(| )bes4 r r r8 bes | %70 \!c2:\ff bes: | a: fis: | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" g4\p\< r r r8 g(| )c,4 r r r8 c | [\!f8\sf(\>as f as][f g d)\!g] | @@ -119,8 +119,8 @@ violaI = \notes \relative c { [d,-.\pp d'-.] es4. es8-. d4 ~ | [d8 d-.] es4. es8-. d4 ~ | %80 - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [d8\< d-.] es4. es8-. d4 ~ | [d8 d-.] es4. es8-. d4 ~ | [d8 d-.] es4. es8-. d4 ~ | @@ -187,8 +187,8 @@ violaI = \notes \relative c { [e g b c][des c g e]| [f as c des][c des as f]| [g bes d es][d es bes g]| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [as\< c d es][f es c as]| %131 [g bes d es][f es bes g]| @@ -211,8 +211,8 @@ violaI = \notes \relative c { [g,: bes: c: des:][f,: bes: c: des:]| [e,: g: bes: des:][c,: e: g: c:]| %shared with cello from here on - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [f,8\p\< as c des][es, g b c]| [des, f a bes][c, es g as]| % uhuh, still 'same as cello'; @@ -268,8 +268,8 @@ violaI = \notes \relative c { %180 )e4 r r r8 e8(| )b'4 r r r8 b8(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )c4 r\< r r8 c,8(| % copied )f4 r r r8 f8(| @@ -284,8 +284,8 @@ violaI = \notes \relative c { d,4\p r r r8 d8(| )g4 r r r8 g8(| )f4 r r r8 f8(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )cis4\< r r r8 cis8(| )d4 r r r8 d8(| %195 @@ -306,8 +306,8 @@ violaI = \notes \relative c { r[c\p(as)c]r[c(a)c] | [b-. g'-.] as4. as8-. g4 ~ | [g8 g-.] as4. as8-. g4 ~ | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [g8 g-.\<] as4. as8-. g4 ~ | [g8 g-.] as4. as8-. g4 ~ | %210 @@ -350,8 +350,8 @@ violaI = \notes \relative c { %240 f,4 r r2 | R1*11 | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" c'4\p\< r r r8 c8(| )f4 r r r8 f,8(| )es1 | @@ -364,8 +364,8 @@ violaI = \notes \relative c { e'2:16\f e: | %260 - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [as,8\p\< f']f4. es8 es4 ~ | [es8 as]as4. g8 g4 ~ | [g8 f]f4. es8 es4 ~ | @@ -400,8 +400,8 @@ violaI = \notes \relative c { es4-. e-. r2 | f4-. g-. r2 | %290 - \property Voice.decrescendoText = "dim." - \property Voice.decrescendoSpanner = "dashed-line" + \property StaffCombineVoice.decrescendoText = "dim." + \property StaffCombineVoice.decrescendoSpanner = "dashed-line" as4\> r g r | R1 | \!c4\p r r2 | @@ -414,18 +414,3 @@ violaI = \notes \relative c { c4 r r2 | c4 r r2 | } - -%%% urg -%%%\include "viola-2.ly"; -%%% -%%%violaIStaff = \context Staff = violai < -%%% \property Staff.midiInstrument = #"viola" -%%% \property Staff.instrument = #"Viola" -%%% \property Staff.instr = #"Vla." -%%% \clef "alto"; -%%% \notes \context Voice=one < -%%% \global -%%% \violaI -%%% > -%%%> - diff --git a/mutopia/Coriolan/viola-2.ly b/mutopia/Coriolan/viola-2.ly index 05b75c0f8e..b7f3effbd6 100644 --- a/mutopia/Coriolan/viola-2.ly +++ b/mutopia/Coriolan/viola-2.ly @@ -32,8 +32,8 @@ violaII = \notes \relative c { [c,8-. es-.] [es()d] [d-. g-.] g4-"ten." | [c,8-. es-.] [es()d] [d-. as'-.] [as()g] | [g8-. c-.] [c()b] [b-. f'-.] [f()es] | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" es4.\< es8 d4. d8 | %20 c4. c8 \!b4\f r4 | @@ -43,15 +43,15 @@ violaII = \notes \relative c { r4 [des8\p()c][c-. ges'-.][ges()f] | %25 [f-. bes-.][bes()a][a-. es'-.][es()des] | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" des4.\< des8 c4. c8 | bes4 \!bes4-.\f r2 | R1 % same rhythm as violins... r8 c,-.\p c4. c8-. c4~ | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [c8\< c-.]c2.~ | %30 [c8 c-.]c2.~ | @@ -84,8 +84,8 @@ violaII = \notes \relative c { )g4 r r r8 g(| %55 )d4 r r r8 d(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )es4 r\< r r8 es(| )as4 r r r8 as(| )g4 r r r8 g(| @@ -100,15 +100,15 @@ violaII = \notes \relative c { )bes4 r r r8 bes(| )as4 r r r8 as(| )e4 r r r8 e(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )f4\< r r r8 f(| )bes4 r r r8 bes | %70 \!as2:\ff g: | fis: d: | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" g4\p\< r r r8 g(| )c,4 r r r8 c | [\!f8\sf(\>as f as][f g d)\!g] | @@ -119,8 +119,8 @@ violaII = \notes \relative c { [d-.\pp d'-.] es4. es8-. d4 ~ | [d8 d-.] es4. es8-. d4 ~ | %80 - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [d8\< d-.] es4. es8-. d4 ~ | [d8 d-.] es4. es8-. d4 ~ | [d8 d-.] es4. es8-. d4 ~ | @@ -187,8 +187,8 @@ violaII = \notes \relative c { [e g b c][des c g e]| [f as c des][c des as f]| [g bes d es][d es bes g]| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [as\< c d es][f es c as]| %131 [g bes d es][f es bes g]| @@ -211,8 +211,8 @@ violaII = \notes \relative c { [g,: bes: c: des:][f,: bes: c: des:]| [e,: g: bes: des:][c,: e: g: c:]| %shared with cello from here on - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [f,8\p\< as c des][es, g b c]| [des, f a bes][c, es g as]| % uhuh, still 'same as cello'; @@ -268,8 +268,8 @@ violaII = \notes \relative c { %180 )e4 r r r8 e8(| )b'4 r r r8 b8(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )c4 r\< r r8 c,8(| % copied )f4 r r r8 f8(| @@ -284,8 +284,8 @@ violaII = \notes \relative c { d,4\p r r r8 d8(| )g4 r r r8 g8(| )f4 r r r8 f8(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )cis4\< r r r8 cis8(| )d4 r r r8 d8(| %195 @@ -306,8 +306,8 @@ violaII = \notes \relative c { r[as\p(d,)as']r[a(es)a] | [g-. g'-.] as4. as8-. g4 ~ | [g8 g-.] as4. as8-. g4 ~ | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [g8 g-.\<] as4. as8-. g4 ~ | [g8 g-.] as4. as8-. g4 ~ | %210 @@ -350,8 +350,8 @@ violaII = \notes \relative c { %240 f,4 r r2 | R1*11 | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" c'4\p\< r r r8 c8(| )f4 r r r8 f,8(| )es1| @@ -364,8 +364,8 @@ violaII = \notes \relative c { bes2:16\f bes: | %260 - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [as8\p\< f']f4. es8 es4 ~ | [es8 as]as4. g8 g4 ~ | [g8 f]f4. es8 es4 ~ | @@ -400,8 +400,8 @@ violaII = \notes \relative c { es4-. e-. r2 | f4-. g-. r2 | %290 - \property Voice.decrescendoText = "dim." - \property Voice.decrescendoSpanner = "dashed-line" + \property StaffCombineVoice.decrescendoText = "dim." + \property StaffCombineVoice.decrescendoSpanner = "dashed-line" as4\> r g r | R1 | \!c4\p r r2 | diff --git a/mutopia/Coriolan/violi-part.ly b/mutopia/Coriolan/violi-part.ly index ffb79d3d95..0116a65afb 100644 --- a/mutopia/Coriolan/violi-part.ly +++ b/mutopia/Coriolan/violi-part.ly @@ -9,28 +9,7 @@ copyright = "public domain"; \version "1.3.59"; -\include "global.ly" -\include "viola-1.ly" -\include "viola-2.ly" - -violiGroup = \context PianoStaff = violi_group \notes < - \context StaffCombineStaff=one { - \clef "alto"; - \key es \major; - \skip 1*314; - \bar "|."; - } - \context StaffCombineStaff=two { - \clef "alto"; - \key es \major; - \skip 1*314; - \bar "|."; - } - - \context StaffCombineStaff=one \partcombine StaffCombineStaff - \context StaffCombineVoice=one \violaI - \context StaffCombineVoice=two \violaII -> +\include "violi.ly" \score{ \violiGroup diff --git a/mutopia/Coriolan/violi.ly b/mutopia/Coriolan/violi.ly new file mode 100644 index 0000000000..ac753a8485 --- /dev/null +++ b/mutopia/Coriolan/violi.ly @@ -0,0 +1,39 @@ +\header{ +filename = "violi.ly"; +% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62"; +description = ""; +composer = "Ludwig van Beethoven (1770-1827)"; +enteredby = "JCN"; +copyright = "public domain"; +} + +\version "1.3.59"; + +\include "global.ly" +\include "viola-1.ly" +\include "viola-2.ly" + +violiGroup = \context PianoStaff = violi_group \notes < + \context StaffCombineStaff=oneVioli { + \property StaffCombineStaff.midiInstrument = #"viola" + \property StaffCombineStaff.instrument = #"Viola" + \property StaffCombineStaff.instr = #"Vla." + \clef "alto"; + \key es \major; + \skip 1*314; + \bar "|."; + } + \context StaffCombineStaff=twoVioli { + \property StaffCombineStaff.midiInstrument = #"viola" + \property StaffCombineStaff.instrument = #"Viola II" + \property StaffCombineStaff.instr = #"Vla. II" + \clef "alto"; + \key es \major; + \skip 1*314; + \bar "|."; + } + + \context StaffCombineStaff=oneVioli \partcombine StaffCombineStaff + \context StaffCombineVoice=one \violaI + \context StaffCombineVoice=two \violaII +> diff --git a/mutopia/Coriolan/violoncello.ly b/mutopia/Coriolan/violoncello.ly index 1a07ac60e4..7877ef4c1f 100644 --- a/mutopia/Coriolan/violoncello.ly +++ b/mutopia/Coriolan/violoncello.ly @@ -17,7 +17,7 @@ violoncello = \notes \relative c { c'1\ff ~ | c | f,4-. r r2 | - \property Staff.instr = #"Vc.\nCb." + \property StaffCombineStaff.instr = #"Vc.\nCb." r1 | c'1\ff ~ | c | @@ -29,8 +29,8 @@ violoncello = \notes \relative c { c4 r4 r2 | c4 r4 r2 | r1 | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" c'4.\< c8 bes4. bes8 | %20 @@ -43,8 +43,8 @@ violoncello = \notes \relative c { %25 [f-. bes-.][bes()a][a-. es'-.][es()des]| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" bes4.\< bes8 as4. as8 | g4 \!g4-.\f r2 | R1 @@ -85,8 +85,8 @@ violoncello = \notes \relative c { %55 [bes(as'f as][bes as f)bes,~] | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [bes\<(g'es g][bes g es)bes~] | [bes(f'd f][bes f d)bes~] | [bes(g'es g][bes g es)bes~] | @@ -107,8 +107,8 @@ violoncello = \notes \relative c { %70 as2\ff g | fis d | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [g8\p\<(bes' g bes][d bes g)d~] | [d8(a' fis a][d a fis)d] | [\!f!8\sf\>(as f as][f g d)g] | @@ -121,8 +121,8 @@ violoncello = \notes \relative c { r4 r8 d d4. d8 | %80 - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" r4 r8 d d4.\< d8 | r4 r8 d d4. d8 | r4 r8 d d4. d8 | @@ -198,8 +198,8 @@ violoncello = \notes \relative c { [e g b c][des c g e]| [f as c des][c des as f]| [g bes d es][d es bes g]| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [as\< c d es][f es c as]| %131 @@ -223,8 +223,8 @@ violoncello = \notes \relative c { [g,: bes: c: des:][f,: bes: c: des:]| [e,: g: bes: des:][c: e: g: c:]| %shared with cello from here on - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [f,8\p\< as c des][es, g b c]| [des, f a bes][c, es g as]| % uhuh, still 'same as cello'; @@ -284,8 +284,8 @@ violoncello = \notes \relative c { %180 [g(e' c d][g e c )g~] | [g(f' d f][g f d )g,~] | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [g\<(e' c d][g e c )g~] | [g(d' b d][g d b )g~] | @@ -304,8 +304,8 @@ violoncello = \notes \relative c { [a( g' e g][a g e )a,!~] | %195 - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" [a8\<( f' d f][a f d )a!~] | [a( e' cis e][a e c )g] | \!f2\ff e | @@ -324,8 +324,8 @@ violoncello = \notes \relative c { f r fis r | g r g r | g r g r | - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" g r g\< r | %210 @@ -386,8 +386,8 @@ violoncello = \notes \relative c { %250 )es4 r r r8 es(| )b4 r r r8 b(| - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" )c4\< r r r8 c(| )f4 r r r8 f,(| )es1 | @@ -400,8 +400,8 @@ violoncello = \notes \relative c { bes\f | %260 - \property Voice.crescendoText = "cresc." - \property Voice.crescendoSpanner = "dashed-line" + \property StaffCombineVoice.crescendoText = "cresc." + \property StaffCombineVoice.crescendoSpanner = "dashed-line" as4.\p\< as'8 g4. g8 | f4. f8 es4. es8 | as4. as8 g4. g8 | @@ -444,8 +444,8 @@ violoncello = \notes \relative c { f,4-. g-. r2 | %290 - \property Voice.decrescendoText = "dim." - \property Voice.decrescendoSpanner = "dashed-line" + \property StaffCombineVoice.decrescendoText = "dim." + \property StaffCombineVoice.decrescendoSpanner = "dashed-line" as4\> r b r | R1 | \!c4\p r r2| @@ -457,8 +457,8 @@ violoncello = \notes \relative c { c4 r r2 | [c8-.-"arco" es-.][es()d][d-. as'-.][as()g] | R1 - \property Voice.decrescendoText = "sempre pi\\`u piano" - \property Voice.decrescendoSpanner = "" + \property StaffCombineVoice.decrescendoText = "sempre pi\\`u piano" + \property StaffCombineVoice.decrescendoSpanner = "" \times 2/3 { c,4\> ( es c ~ } \times 2/3 { c as' )g } | %300 @@ -482,15 +482,3 @@ violoncello = \notes \relative c { c4 r r2 | c4 r r2 | } - -%%%violoncelloStaff = \context Staff = violoncello < -%%% \property Staff.midiInstrument = #"cello" -%%% \property Staff.instrument = #"Violoncello\ne\nContrabasso" -%%% \property Staff.instr = #"Vc." -%%% \clef "bass"; -%%% \notes \context Voice=one< -%%% \global -%%% \violoncello -%%% > -%%%> - diff --git a/scm/basic-properties.scm b/scm/basic-properties.scm index 28c1bec72b..469cc1e3fe 100644 --- a/scm/basic-properties.scm +++ b/scm/basic-properties.scm @@ -42,7 +42,8 @@ (before-line-breaking-callback . ,Beam::before_line_breaking) (after-line-breaking-callback . ,Beam::after_line_breaking) (default-neutral-direction . 1) - + (outer-stem-length-limit . 0.2) + (slope-limit . 0.2) (beam-flag-width-function . ,default-beam-flag-width-function) (beam-space-function . ,default-beam-space-function) (damping . 1) diff --git a/scm/generic-property.scm b/scm/generic-property.scm index befcda71bc..6de6407461 100644 --- a/scm/generic-property.scm +++ b/scm/generic-property.scm @@ -120,6 +120,17 @@ ) ) +(define generic-bar-number-properties + (cons 'bar-number-interface + (list + (list 'barNumberScriptPadding number? 'padding) + (list 'barNumberDirection dir? 'direction) + ) + + ) + ) + + ; don't do this yet. Depends on whennn the staff is really announced (define generic-staff-symbol-properties (cons 'staff-symbol-interface diff --git a/scripts/as2text.scm b/scripts/as2text.scm index b322842de8..e4e80e262d 100644 --- a/scripts/as2text.scm +++ b/scripts/as2text.scm @@ -237,7 +237,7 @@ Options: (define (get-font name) ;; urg - (if (equal? name "as-dummy") + (if (equal? (substring name 0 (min (string-length name) 8)) "as-dummy") (get-font "default") (let ((entry (assoc name fonts))) (if entry @@ -334,7 +334,7 @@ Options: (define (load-font name mag) ;; urg: don't load dummy font - (if (not (equal? name "as-dummy")) + (if (not (equal? (substring name 0 (min (string-length name) 8)) "as-dummy")) (let ((text (af-gulp-file (string-append name ".af")))) (if (< 0 (string-length text)) (let* ((char-list (cdr @@ -375,7 +375,8 @@ Options: (begin (set! fonts (cons (cons "default" (generate-default-font)) fonts)) (display "\n" (current-error-port)) - (if (defined? 'mudelapaperlinewidth) + (if (and (defined? 'mudelapaperlinewidth) + (> (string->number mudelapaperlinewidth) 0)) (set! canvas-width (inexact->exact (string->number mudelapaperlinewidth)))))) (set! canvas-height height) -- 2.39.5