From 105fd7580334c8f42838ac62504c5f290f3428c5 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 20 Sep 2000 00:59:45 +0200 Subject: [PATCH] release: 1.3.88 =========== * Sequential_iterator::get_music (), part combiner now works. * Changed paper variables into elt properties: Beam: - beam-space-function, Removed Paper_def::interbeam_f(), Smaller beams for grace notes. - beam-flag-width-function to Beam. Grace_align_item: - horizontal-space: spacing of is configurable Volta_spanner: - height - thickness Multi_measure_rest: - expand-limit - minimum-width - padding Lyric_extender: - height Stem - thickness Collision - note-width to Collision * removed various obsolete variables from params.ly * added input/test/bagpipe.ly 1.3 --- CHANGES | 39 +++++-- Documentation/header.html.in | 13 ++- Documentation/topdocs/index.tely | 4 +- VERSION | 4 +- input/test/bagpipe.ly | 103 ++++++++++++++++++ input/test/{extender.ly => lyric-extender.ly} | 0 input/test/{hyphen.ly => lyric-hyphen.ly} | 0 lily/align-note-column-engraver.cc | 3 + lily/beam.cc | 37 ++++--- lily/collision.cc | 5 +- lily/grace-align-item.cc | 10 +- lily/include/beam.hh | 16 +++ lily/include/collision.hh | 2 + lily/include/grace-align-item.hh | 4 + lily/include/lyric-extender.hh | 9 ++ lily/include/multi-measure-rest.hh | 8 +- lily/include/music-iterator.hh | 8 +- lily/include/paper-def.hh | 4 - lily/include/simple-music-iterator.hh | 3 +- lily/include/slur.hh | 8 ++ lily/include/volta-spanner.hh | 4 + lily/lyric-engraver.cc | 5 +- lily/lyric-extender.cc | 3 +- lily/multi-measure-rest.cc | 9 +- lily/music-iterator.cc | 6 - lily/paper-def.cc | 12 -- lily/request-chord-iterator.cc | 7 +- lily/sequential-music-iterator.cc | 73 ++++++++----- lily/simple-music-iterator.cc | 13 +-- lily/slur.cc | 9 +- lily/stem-tremolo.cc | 6 +- lily/stem.cc | 12 +- lily/tuplet-spanner.cc | 3 +- lily/volta-spanner.cc | 5 +- ly/declarations.ly | 24 ++-- ly/engraver.ly | 45 ++++---- ly/paper-as5.ly | 3 - ly/paper-as9.ly | 3 - ly/paper11.ly | 3 - ly/paper13.ly | 4 - ly/paper16.ly | 5 - ly/paper20.ly | 4 - ly/paper23.ly | 4 - ly/paper26.ly | 4 - ly/params-as.ly | 53 --------- ly/params.ly | 60 +--------- make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 4 +- scm/basic-properties.scm | 51 +++++++++ scm/lily.scm | 12 -- 50 files changed, 416 insertions(+), 318 deletions(-) create mode 100644 input/test/bagpipe.ly rename input/test/{extender.ly => lyric-extender.ly} (100%) rename input/test/{hyphen.ly => lyric-hyphen.ly} (100%) create mode 100644 scm/basic-properties.scm diff --git a/CHANGES b/CHANGES index 79a11c4078..0ceb0ebc13 100644 --- a/CHANGES +++ b/CHANGES @@ -1,23 +1,42 @@ -1.3.87.jcn2 +1.3.87.hwn1 =========== -* Added skip (M) to music-iterator which fixes ugly non-const hack - of get-music (M). +* Sequential_iterator::get_music (), part combiner now works. -1.3.87.jcn1 -=========== +* Changed paper variables into elt properties: + Beam: + - beam-space-function, Removed Paper_def::interbeam_f(), Smaller + beams for grace notes. + - beam-flag-width-function to Beam. + + Grace_align_item: + - horizontal-space: spacing of is configurable + + Volta_spanner: + - height + - thickness + + Multi_measure_rest: + - expand-limit + - minimum-width + - padding -* Made bugfix in Simple-music-iterator copy constructor. + Lyric_extender: + - height -* Fixed get_music for sequential-music-iterator and request-chord-iterator. + Stem + - thickness + Collision + - note-width to Collision + +* removed various obsolete variables from params.ly + +* added input/test/bagpipe.ly 1.3.87 ====== -1.3.86.jcn2 -================ - * Made fixes to part-combine examples and Coriolan. * Bugfix: don't dump core on unterminated (de)crescendo. diff --git a/Documentation/header.html.in b/Documentation/header.html.in index 20bb08ced6..1d72d57683 100644 --- a/Documentation/header.html.in +++ b/Documentation/header.html.in @@ -38,7 +38,7 @@ which substitutes some @AT_VARIABLES@ as well. Home Development
- Hacking
+ Hacking
GNU Project
Translations
LilyPond dot org
@@ -53,7 +53,7 @@ which substitutes some @AT_VARIABLES@ as well. FAQ
User manual
Features
- Todo
+ Todo

@@ -73,7 +73,7 @@ which substitutes some @AT_VARIABLES@ as well. Debian i386
Debian PowerPC
Windows Stable
- Windows Testing
+ Windows Testing

@@ -92,9 +92,10 @@ which substitutes some @AT_VARIABLES@ as well. Mailing Lists - Discussion
- Help
- Bugs
+ Discussion
+ Help
+ Bugs
+ Announcements

diff --git a/Documentation/topdocs/index.tely b/Documentation/topdocs/index.tely index 91e850230a..c67e55cf87 100644 --- a/Documentation/topdocs/index.tely +++ b/Documentation/topdocs/index.tely @@ -122,7 +122,7 @@ Debian GNU/Linux i386} @uref{ftp://ftp.debian.org/debian/dists/unstable/main/binary-powerpc/tex, Debian GNU/Linux PowerPC} @item @uref{http://home.austin.rr.com/jbr/jeff/lilypond/, Windows Stable} -@item @uref{http://appel.dyndns.org/lilypond/gnu-windows, Windows +@item @uref{http://appel.lilypond.org/lilypond/gnu-windows, Windows Testing} @end itemize @@ -143,7 +143,7 @@ is a low-volume list for information on the GNU Music project. This list is moderated; ask @email{drl@@gnu.org, David R. Linn} or @email{hanwen@@cs.uu.nl, Han-Wen} to send announcements for this list. -@item @uref{http://mail.gnu.org/mailman/listinfo/help-gnu-music,@samp{help-gnu-music@@gnu.org}} +@item @uref{http://mail.gnu.org/mailman/listinfo/help-gnu-music,help-gnu-music@@gnu.org} For help with using LilyPond. @item @uref{http://mail.gnu.org/mailman/listinfo/bug-gnu-music,bug-gnu-music@@gnu.org} If you have bugreports, you should send them to this list. diff --git a/VERSION b/VERSION index 4055f6ef3f..b283fed4ca 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=87 -MY_PATCH_LEVEL=jcn2 +PATCH_LEVEL=88 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/test/bagpipe.ly b/input/test/bagpipe.ly new file mode 100644 index 0000000000..25afad8feb --- /dev/null +++ b/input/test/bagpipe.ly @@ -0,0 +1,103 @@ +% bagpipe music. + +\header +{ + title="Flower of Scotland"; +} + +\paper { + linewidth = 14.0 \cm; + indent = 0.0 \cm; + \translator { + \GraceContext + + basicNoteHeadProperties \push #'font-size = #-2 + basicNoteHeadProperties \push #'font-size = #-2 + basicStemProperties \push #'flag-style = ##f + % The following determines the length of stems without beams + % default is between 2.8 and 4.0 depending on the number of flags + basicStemProperties \push #'length = #6 + basicStemProperties \push #'font-size = #-2 + basicGraceAlignItemProperties \push #'horizontal-space = #1 + basicStemProperties \push #'flag-style = #"" + + } + \translator { \StaffContext + basicTimeSignatureProperties \push #'style = #"C4/4" + basicTimeSignatureProperties \push #'visibility-function = #begin-of-line-visible + } +} + + +\notenames #'( + (g . ( 0 4 0 )) + (a . ( 0 5 0 )) + (b . ( 0 6 0 )) + (c . ( 1 0 0 )) + (d . ( 1 1 0 )) + (e . ( 1 2 0 )) + (f . ( 1 3 0 )) +) + + + +taor = \notes{ \grace { [g32 d g e]}} +grip = \notes{ \grace { [g32 b g ]}} +thrd = \notes{ \grace { [g32 d c] }} +birl = \notes{ \grace { [g32 a g] }} +gstd = \notes{ \grace { [g'32 d g] }} + lgg = \notes{ \grace { g32 }} + lag = \notes{ \grace { a32 }} + fgg = \notes{ \grace { [f32 g'32] }} +dblb = \notes{ \grace { [g'32 b d] }} +dblc = \notes{ \grace { [g'32 c d] }} +dble = \notes{ \grace { [g'32 e f] }} +dblf = \notes{ \grace { [g'32 f g'] }} +dblg = \notes{ \grace { [g'32 f] }} +dbla = \notes{ \grace { [a'32 g'] }} +cg = \notes{ \grace { c32 }} +eg = \notes{ \grace { e32 }} +gg = \notes{ \grace { g'32 }} +dg = \notes{ \grace { d32 }} +hag = \notes{ \grace { a'32 }} +gefg = \notes{ \grace { [g'32 e f] }} +efg = \notes{ \grace { [e32 f] }} +gdcg = \notes{ \grace { [g'32 d c]}} +gcdg = \notes{ \grace { [g'32 c d]}} + + + +% +\score { + \notes { \time 6/8; \partial 4; + \property Voice.tieVerticalDirection = \up + \slurup +f4 | +\gg f4 e8 \thrd d4. | +\eg a4.()a4 d8 | +\gg d4 f8 \dble e4. ( | \nobreak +)e8 d4 \gg d4 e8 | + +\break +\time 9/8; +\dblf f2.( )f4 d8 | +\time 6/8; +\dblg g'4 a'8 \gg a'4. | +\thrd d4.( )d4 \eg a8 | +\time 9/8; +\dble e4 \lag e8 \gg [e16 d8. e8] \gg f4 g'8 | + +\break +\time 6/8; +\gg f4 e8 \thrd d4. | +\eg a4.( )a4 d8 | +\dblg g'4 a'8 \gg a'4. | +\thrd d4.( )d4 f8 | + +\break +\dblg g'4 e4 \dblf [f8. e16] | +\thrd d4.( )d4 \cg d8 | +\gg c4 e8 \thrd d4.( | +)d4. \gdcg d4. + } +} diff --git a/input/test/extender.ly b/input/test/lyric-extender.ly similarity index 100% rename from input/test/extender.ly rename to input/test/lyric-extender.ly diff --git a/input/test/hyphen.ly b/input/test/lyric-hyphen.ly similarity index 100% rename from input/test/hyphen.ly rename to input/test/lyric-hyphen.ly diff --git a/lily/align-note-column-engraver.cc b/lily/align-note-column-engraver.cc index d29bc1d78c..162d74441c 100644 --- a/lily/align-note-column-engraver.cc +++ b/lily/align-note-column-engraver.cc @@ -92,6 +92,9 @@ Align_note_column_engraver::process_acknowledged () B. it has no pscore_l_ field. + + UGH UGH: separate note-spacing into separate class, and + use that to space grace notes. */ SCM grsp = get_property ("graceAccidentalSpace"); if (gh_number_p(grsp)) diff --git a/lily/beam.cc b/lily/beam.cc index ad90e51814..f619e04b9c 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -446,13 +446,17 @@ Beam::calc_slope_damping_f (Score_element*me,Real dy) Real Beam::calc_stem_y_f (Score_element*me,Item* s, Real y, Real dy) { - Real thick = gh_scm2double (me->get_elt_property ("beam-thickness")); - thick *= me->paper_l ()->get_var ("staffspace"); - int beam_multiplicity = get_multiplicity (me); int stem_multiplicity = (Stem::flag_i (s) - 2) >? 0; - Real interbeam_f = me->paper_l ()->interbeam_f (beam_multiplicity); + Real staffspace = me->paper_l ()->get_var ("staffspace"); + + SCM space_proc = me->get_elt_property ("beam-space-function"); + SCM space = gh_call1 (space_proc, gh_int2scm (beam_multiplicity)); + + Real thick = gh_scm2double (me->get_elt_property ("beam-thickness")) *staffspace; + Real interbeam_f = gh_scm2double (space) * staffspace; + // ugh -> use commonx Real x0 = first_visible_stem (me)->relative_coordinate (0, X_AXIS); Real dx = last_visible_stem (me)->relative_coordinate (0, X_AXIS) - x0; @@ -643,11 +647,13 @@ Beam::stem_beams (Score_element*me,Item *here, Item *next, Item *prev) Real staffline_f = me->paper_l ()->get_var ("stafflinethickness"); int multiplicity = get_multiplicity (me); + Real staffspace =me->paper_l ()->get_var ("staffspace"); + SCM space_proc = me->get_elt_property ("beam-space-function"); + SCM space = gh_call1 (space_proc, gh_int2scm (multiplicity)); - Real interbeam_f = me->paper_l ()->interbeam_f (multiplicity); - Real thick = gh_scm2double (me->get_elt_property ("beam-thickness")); - thick *= me->paper_l ()->get_var ("staffspace"); + Real thick = gh_scm2double (me->get_elt_property ("beam-thickness")) *staffspace; + Real interbeam_f = gh_scm2double (space) * staffspace; Real bdy = interbeam_f; Real stemdx = staffline_f; @@ -662,16 +668,19 @@ Beam::stem_beams (Score_element*me,Item *here, Item *next, Item *prev) Molecule leftbeams; Molecule rightbeams; - // UGH + /* + UGH: make a property of this. + */ Real nw_f; if (!Stem::first_head (here)) nw_f = 0; - else if (Stem::type_i (here)== 1) - nw_f = me->paper_l ()->get_var ("wholewidth"); - else if (Stem::type_i (here) == 2) - nw_f = me->paper_l ()->get_var ("notewidth") * 0.8; - else - nw_f = me->paper_l ()->get_var ("quartwidth"); + else { + int t = Stem::type_i (here); + + SCM proc = me->get_elt_property ("beam-flag-width-function"); + SCM result = gh_call1 (proc, gh_int2scm (t)); + nw_f = gh_scm2double (result) * staffspace; + } Direction dir = Directional_element_interface::get (me); diff --git a/lily/collision.cc b/lily/collision.cc index c0bec3356d..728ffbb933 100644 --- a/lily/collision.cc +++ b/lily/collision.cc @@ -50,7 +50,10 @@ Collision::do_shifts(Score_element* me) Link_array done; - Real wid = me->paper_l ()->get_var ("collision_note_width"); // elt prop + Real wid + = gh_scm2double (me->get_elt_property ("note-width")) + * me->paper_l ()->get_var ("staffspace"); + for (; gh_pair_p (hand); hand =gh_cdr (hand)) { Score_element * s = unsmob_element (gh_caar (hand)); diff --git a/lily/grace-align-item.cc b/lily/grace-align-item.cc index d37bdb4d77..d58bd8e7b3 100644 --- a/lily/grace-align-item.cc +++ b/lily/grace-align-item.cc @@ -13,19 +13,17 @@ #include "paper-column.hh" #include "paper-def.hh" -/* - TODO: cfg-able - */ MAKE_SCHEME_CALLBACK(Grace_align_item,before_line_breaking); SCM Grace_align_item::before_line_breaking (SCM smob) { Score_element*me = unsmob_element (smob); - Real nhw = // lookup_l ()->notehead (2, "")..extent (X_AXIS).length(); - me->paper_l ()->get_var ("quartwidth"); + + 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 (nhw* 1.5), + gh_cons (gh_double2scm (ss *gh_scm2double (space)), gh_double2scm (infinity_f))); dynamic_cast(me)->column_l ()->set_elt_property ("contains-grace", SCM_BOOL_T); diff --git a/lily/include/beam.hh b/lily/include/beam.hh index 5a434fd9ed..2310752807 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -24,6 +24,22 @@ damping -- amount of beam slope damping. (int) should beam slope be damped? 0: no, 1: yes, 100000: horizontal beams + + + molecule-callback -- + + beam-thickness -- weight of beams, in staffspace + + beam-space-function -- function of type multiplicity -> real (in staffspace) + + default-neutral-direction -- which direction to choose if we're in + the middle of the staff + + after-line-breaking-callback -- + + damping -- damping factor (real). + + */ class Beam { diff --git a/lily/include/collision.hh b/lily/include/collision.hh index 10c5397a6e..650a80f14f 100644 --- a/lily/include/collision.hh +++ b/lily/include/collision.hh @@ -34,6 +34,8 @@ force-hshift -- amount of collision_note_width that overides automatic collision settings. Read and removed from elements. + + note-width -- unit for horizontal translation, measured in staff-space. */ class Collision // interface diff --git a/lily/include/grace-align-item.hh b/lily/include/grace-align-item.hh index 74cc870a29..3e446295e3 100644 --- a/lily/include/grace-align-item.hh +++ b/lily/include/grace-align-item.hh @@ -14,6 +14,10 @@ #include "lily-guile.hh" #include "lily-proto.hh" +/* + horizontal-space -- amount of space to add after a note (in staff-space) + */ + class Grace_align_item { public: diff --git a/lily/include/lyric-extender.hh b/lily/include/lyric-extender.hh index 8f0c746b86..1a71a1e7cb 100644 --- a/lily/include/lyric-extender.hh +++ b/lily/include/lyric-extender.hh @@ -27,6 +27,15 @@ with the left side of the last note of the melissima, and not extend beond, lasting the whole duration of the melissima (as in MUP, urg). + + Properties: + + word-space -- + + height -- in stafflinethickness + + right-trim-amount -- + */ class Lyric_extender // interface { diff --git a/lily/include/multi-measure-rest.hh b/lily/include/multi-measure-rest.hh index 4803ce3437..ba805eadd0 100644 --- a/lily/include/multi-measure-rest.hh +++ b/lily/include/multi-measure-rest.hh @@ -17,7 +17,13 @@ properties: columns -- list of paper-columns - */ + + expand-limit -- int : max number of measures expanded in church rests + + minimum-width -- Real in staffspace + + padding -- staffspace +*/ class Multi_measure_rest { public: diff --git a/lily/include/music-iterator.hh b/lily/include/music-iterator.hh index 25d099eccc..2f9c6cf7cc 100644 --- a/lily/include/music-iterator.hh +++ b/lily/include/music-iterator.hh @@ -35,10 +35,13 @@ thus changing the state of the interpretation context. get_music (M) -- return all events starting at M (pre: no events - before M). + before M). Side effects: - skip (M) -- remove all events at M from the pending queue. + * This removes all events at M from the pending queue. + Because next (M) is rolled into process () as a side effect, + we need to roll next (M) into get_music too. Urg. + */ class Music_iterator { @@ -72,7 +75,6 @@ public: virtual bool ok () const; virtual SCM get_music (Moment until)const; virtual void process (Moment until); - virtual void skip (Moment until); /** Construct sub-iterators, and set the translator to diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh index 94bf6dd94f..3898a1ae18 100644 --- a/lily/include/paper-def.hh +++ b/lily/include/paper-def.hh @@ -65,10 +65,6 @@ public: void set_lookup (int, SCM lookup_smob); Paper_def (Paper_def const&); - /** The distance between beams of multiplicity_i - JUNKME - */ - Real interbeam_f (int multiplicity_i) const; Interval line_dimensions_int (int) const; void print () const; Lookup const * lookup_l (int sz) const; // TODO naming diff --git a/lily/include/simple-music-iterator.hh b/lily/include/simple-music-iterator.hh index c9b861dce3..6d86c1c35c 100644 --- a/lily/include/simple-music-iterator.hh +++ b/lily/include/simple-music-iterator.hh @@ -21,8 +21,7 @@ public: Simple_music_iterator (); Simple_music_iterator (Simple_music_iterator const &); virtual void process (Moment); - virtual bool ok ()const; - virtual void skip (Moment); + virtual bool ok()const; virtual Moment pending_moment ()const; virtual void construct_children (); }; diff --git a/lily/include/slur.hh b/lily/include/slur.hh index abc1b55b33..001c8fa19f 100644 --- a/lily/include/slur.hh +++ b/lily/include/slur.hh @@ -11,6 +11,14 @@ #include "lily-proto.hh" #include "rod.hh" +/** + + de-uglify-parameters -- list of 3 real constants. They define the + valid areas for the middle control points. Used in de_uglyfy. + They are a bit empirical. + + + */ class Slur { public: diff --git a/lily/include/volta-spanner.hh b/lily/include/volta-spanner.hh index 4697b8d8b6..8955f1b247 100644 --- a/lily/include/volta-spanner.hh +++ b/lily/include/volta-spanner.hh @@ -16,6 +16,10 @@ properties: bars -- list of barline ptrs. +thickness -- in stafflinethickness + +height -- in staffspace + */ class Volta_spanner diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc index e31edb6950..3f9da4327d 100644 --- a/lily/lyric-engraver.cc +++ b/lily/lyric-engraver.cc @@ -51,8 +51,11 @@ Lyric_engraver::do_process_music() /* We can't reach the notehead where we're centered from here. So we kludge. + + (UGH UGH, pulled amount of space out of thin air value ) */ - text_p_->translate_axis (paper_l()->get_var ("quartwidth")/2, X_AXIS); + + text_p_->translate_axis (paper_l()->get_var ("staffspace")*0.66, X_AXIS); announce_element (text_p_, req_l_); } diff --git a/lily/lyric-extender.cc b/lily/lyric-extender.cc index 43230acfc6..456f8a5317 100644 --- a/lily/lyric-extender.cc +++ b/lily/lyric-extender.cc @@ -24,6 +24,7 @@ Lyric_extender::brew_molecule (SCM smob) Real leftext = sp->get_bound (LEFT)->extent (X_AXIS).length (); Real ss = sp->paper_l ()->get_var ("staffspace"); + Real sl = sp->paper_l ()->get_var ("stafflinethickness"); Real righttrim = 0.5; // default to half a staffspace gap on the right SCM righttrim_scm = sp->get_elt_property("right-trim-amount"); if (gh_number_p (righttrim_scm)) { @@ -37,7 +38,7 @@ Lyric_extender::brew_molecule (SCM smob) } Real w = sp->spanner_length () - leftext - righttrim*ss; - Real h = sp->paper_l ()->get_var ("extender_height"); + Real h = sl * gh_scm2double (sp->get_elt_property ("height")); Molecule mol (sp->lookup_l ()->filledbox ( Box (Interval (0,w), Interval (0,h)))); mol.translate (Offset (leftext, 0)); return mol.create_scheme(); diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc index 5f86f849c1..7655ed74a8 100644 --- a/lily/multi-measure-rest.cc +++ b/lily/multi-measure-rest.cc @@ -82,7 +82,8 @@ Multi_measure_rest::brew_molecule (SCM smob) } - if (measures <= me->paper_l() ->get_var ("multi_measure_rest_expand_limit")) + SCM limit = me->get_elt_property ("expand-limit"); + if (measures <= gh_scm2int (limit)) { /* Build a rest from smaller parts. Distances inbetween are @@ -109,8 +110,8 @@ Multi_measure_rest::brew_molecule (SCM smob) } Real pad = s.empty_b () - ? 0.0 : me->paper_l ()->get_var ("multi_measure_rest_padding"); - + ? 0.0 : gh_scm2double (me->get_elt_property ("padding")) * staff_space; + Molecule r (me->lookup_l ()->afm_find ("rests-" + to_str (k))); if (k == 0) r.translate_axis (staff_space, Y_AXIS); @@ -189,7 +190,7 @@ Multi_measure_rest::set_spacing_rods (SCM smob) should do something more advanced. */ rod.distance_f_ = l->extent (X_AXIS)[BIGGER] - r->extent (X_AXIS)[SMALLER] - + me->paper_l ()->get_var ("multi_measure_rest_x_minimum"); + + gh_scm2double (me->get_elt_property ("minimum-width")); rod.add_to_cols (); } diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index 3806c4e7f7..51ae61f1ce 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -85,12 +85,6 @@ Music_iterator::pending_moment () const } -void -Music_iterator::skip (Moment) -{ - assert (0); -} - void Music_iterator::process (Moment) { diff --git a/lily/paper-def.cc b/lily/paper-def.cc index 698daf4585..fb01b67785 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -94,18 +94,6 @@ Paper_def::set_lookup (int i, SCM l) } -/* - junkme. - */ -Real -Paper_def::interbeam_f (int multiplicity_i) const -{ - if (multiplicity_i <= 3) - return get_var ("interbeam"); - else - return get_var ("interbeam4"); -} - void Paper_def::print () const diff --git a/lily/request-chord-iterator.cc b/lily/request-chord-iterator.cc index 080240a8b5..f463190a34 100644 --- a/lily/request-chord-iterator.cc +++ b/lily/request-chord-iterator.cc @@ -45,8 +45,9 @@ Request_chord_iterator::elt_l () const return (Request_chord*) music_l_; } + SCM -Request_chord_iterator::get_music (Moment) const +Request_chord_iterator::get_music (Moment)const { SCM s = SCM_EOL; if (music_l_) @@ -64,6 +65,7 @@ Request_chord_iterator::get_music (Moment) const void Request_chord_iterator::process (Moment m) { + last_processed_mom_ = m; if (music_l_) { for (SCM s = dynamic_cast (music_l_)->music_list (); @@ -81,6 +83,7 @@ Request_chord_iterator::process (Moment m) mus->origin ()->warning (_f ("Huh? Not a Request: `%s'", classname (mus))); } + + music_l_ =0; } - skip (m); } diff --git a/lily/sequential-music-iterator.cc b/lily/sequential-music-iterator.cc index 18d9a4915a..975f460187 100644 --- a/lily/sequential-music-iterator.cc +++ b/lily/sequential-music-iterator.cc @@ -88,40 +88,57 @@ 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 + UNTIL het eerstvolgende event is, weet je (per definitie) + + L >= (UNTIL - HERE) + + en iets wat hierna komt (op tijd T) komt dus na tijd + + HERE + L >= HERE + (UNTIL - HERE) = UNTIL + + Dus als je een L>0 tegenkomt, wil je de rest niet meer. Aangezien + alles wat tot nu toe hebt gespaard op HERE begint, is dat precies wat + je nodig hebt. + + Misschien kan je deze comment erbij stoppen, en moeten we de + eigenschappen van het muziek datatype wat formaliseren, zodat deze + redenering helderder is. +*/ SCM -Sequential_music_iterator::get_music (Moment until) const +Sequential_music_iterator::get_music (Moment until)const { - Sequential_music_iterator* i = dynamic_cast (this->clone ()); SCM s = SCM_EOL; - while (1) - { - Moment local_until = until - i->here_mom_; - while (i->iter_p_->ok ()) - { - Moment here = i->iter_p_->pending_moment (); - if (here != local_until) - goto finalise; - - s = gh_append2 (i->iter_p_->get_music (local_until), s); - i->iter_p_->skip (local_until); - } - - if (!i->iter_p_->ok ()) - { - i->leave_element (); - - if (gh_pair_p (i->cursor_)) - i->start_next_element (); - else - goto finalise; - } - } - finalise: - delete i; + SCM curs = cursor_; + Music_iterator * iter = iter_p_->clone (); + while (1) + { + SCM nm = iter->get_music (until - here_mom_); + s = gh_append2 (nm, s); + + Moment m = 0; + for (SCM i = nm; gh_pair_p(i); i = gh_cdr (i)) + m = m >? unsmob_music (gh_car (i))->length_mom (); + + delete iter; + + curs = gh_cdr (curs); + + if (!gh_pair_p (curs) || m > Moment (0)) + return s; + else + { + iter = get_iterator_p (unsmob_music (gh_car (curs))); + } + } return s; } - + void Sequential_music_iterator::process (Moment until) { diff --git a/lily/simple-music-iterator.cc b/lily/simple-music-iterator.cc index b185f8ac24..a25147d4e9 100644 --- a/lily/simple-music-iterator.cc +++ b/lily/simple-music-iterator.cc @@ -20,8 +20,7 @@ Simple_music_iterator::Simple_music_iterator () Simple_music_iterator::Simple_music_iterator (Simple_music_iterator const &src) : Music_iterator (src) { - last_processed_mom_ = src.last_processed_mom_; - length_mom_ = src.length_mom_; + last_processed_mom_ = -1; } void @@ -45,13 +44,6 @@ Simple_music_iterator::pending_moment ()const return length_mom_; } -void -Simple_music_iterator::skip (Moment m) -{ - music_l_ = 0; - last_processed_mom_ = m; -} - void Simple_music_iterator::process (Moment m) { @@ -67,5 +59,6 @@ Simple_music_iterator::process (Moment m) classname (music_l_))); } #endif - skip (m); + music_l_ = 0; + last_processed_mom_ = m; } diff --git a/lily/slur.cc b/lily/slur.cc index 5be17a25d6..ca200b2b24 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -67,9 +67,12 @@ Slur::de_uglyfy (Score_element*me, Slur_bezier_bow* bb, Real default_height) Real h = bb->curve_.control_[i][Y_AXIS] * ff / length; Real f = default_height / length; - Real c1 = me->paper_l ()->get_var ("bezier_control1"); - Real c2 = me->paper_l ()->get_var ("bezier_control2"); - Real c3 = me->paper_l ()->get_var ("bezier_control3"); + SCM up = me->get_elt_property ("de-uglify-parameters"); + + Real c1 = gh_scm2double (gh_car (up)); + Real c2 = gh_scm2double (gh_cadr (up)); + Real c3 = gh_scm2double (gh_caddr (up)); + if (h > c1 * f) { h = c1 * f; diff --git a/lily/stem-tremolo.cc b/lily/stem-tremolo.cc index e2cd5c6b2c..2bfd4dfcbe 100644 --- a/lily/stem-tremolo.cc +++ b/lily/stem-tremolo.cc @@ -78,7 +78,11 @@ Stem_tremolo::brew_molecule (SCM smob) tremolo_flags = 1; int mult = beam ? Beam::get_multiplicity (beam) : 0; - Real interbeam_f = me->paper_l ()->interbeam_f (mult); + SCM space_proc = me->get_elt_property ("beam-space-function"); + SCM space = gh_call1 (space_proc, gh_int2scm (mult)); + Real interbeam_f = gh_scm2double (space) * ss; + + Molecule mol; for (int i = 0; i < tremolo_flags; i++) { diff --git a/lily/stem.cc b/lily/stem.cc index b64f89bafa..68c93dad18 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -472,7 +472,7 @@ Stem::brew_molecule (SCM smob) if (!invisible_b (me)) { - Real stem_width = me->paper_l ()->get_var ("stemthickness"); + Real stem_width = gh_scm2double (me->get_elt_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness"); Molecule ss =me->lookup_l ()->filledbox (Box (Interval (-stem_width/2, stem_width/2), Interval (stem_y[DOWN]*dy, stem_y[UP]*dy))); mol.add_molecule (ss); @@ -499,7 +499,7 @@ Stem::off_callback (Score_element * me, Axis) if (to_boolean (me->get_elt_property ("stem-centered"))) return head_wid.center (); - Real rule_thick = me->paper_l ()->get_var ("stemthickness"); + Real rule_thick = gh_scm2double (me->get_elt_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness"); Direction d = get_direction (me); r = head_wid[d] - d * rule_thick ; } @@ -532,10 +532,14 @@ Stem::calc_stem_info (Score_element*me) Real staff_space = Staff_symbol_referencer::staff_space (me); Real half_space = staff_space / 2; - Real interbeam_f = me->paper_l ()->interbeam_f (Beam::get_multiplicity (beam)); - Real thick = gh_scm2double (beam->get_elt_property ("beam-thickness")); int multiplicity = Beam::get_multiplicity (beam); + + SCM space_proc = beam->get_elt_property ("beam-space-function"); + SCM space = gh_call1 (space_proc, gh_int2scm (multiplicity)); + Real interbeam_f = gh_scm2double (space) * staff_space; + + Real thick = gh_scm2double (beam->get_elt_property ("beam-thickness")); Stem_info info; info.idealy_f_ = chord_start_f (me); diff --git a/lily/tuplet-spanner.cc b/lily/tuplet-spanner.cc index 4600df3e2d..f154c010e5 100644 --- a/lily/tuplet-spanner.cc +++ b/lily/tuplet-spanner.cc @@ -22,11 +22,10 @@ #include "directional-element-interface.hh" #include "spanner.hh" - - void Tuplet_spanner::set_interface (Score_element*me) { + me->set_interface (ly_symbol2scm ("tuplet-bracket")); } /* diff --git a/lily/volta-spanner.cc b/lily/volta-spanner.cc index c2d6c7511b..e244e6ad7c 100644 --- a/lily/volta-spanner.cc +++ b/lily/volta-spanner.cc @@ -64,11 +64,12 @@ Volta_spanner::brew_molecule (SCM smob) #endif Real staff_space = me->paper_l ()->get_var ("interline"); + Real staff_thick = me->paper_l ()->get_var ("stafflinethickness"); Real half_space = staff_space / 2; Real left = dynamic_cast(me)->get_broken_left_end_align (); Real w = dynamic_cast(me)->spanner_length () - left - half_space; - Real h = me->paper_l()->get_var ("volta_spanner_height"); - Real t = me->paper_l ()->get_var ("volta_thick"); + Real h = staff_space * gh_scm2double (me->get_elt_property ("height")); + Real t = staff_thick * gh_scm2double (me->get_elt_property ("thickness")); /* ugh: should build from line segments. diff --git a/ly/declarations.ly b/ly/declarations.ly index 408a512e26..a5af61a2c0 100644 --- a/ly/declarations.ly +++ b/ly/declarations.ly @@ -1,29 +1,18 @@ -#(gc) - breve = \duration #'( -1 0) longa = \duration #'( -2 0 ) maxima = \duration #'( -3 0 ) -#(gc) -#(eval-string (ly-gulp-file "generic-property.scm")) - -#(gc) - -% urg, move to basic property? -#(eval-string (ly-gulp-file "slur.scm")) - -#(gc) +#(begin + (eval-string (ly-gulp-file "slur.scm")) + (eval-string (ly-gulp-file "generic-property.scm")) + (eval-string (ly-gulp-file "basic-properties.scm")) + ) \include "nederlands.ly" % dutch - -#(gc) - \include "chord-modifiers.ly" -#(gc) - \include "script.ly" -#(gc) + % declarations for standard directions @@ -48,6 +37,7 @@ melismaEnd = \property Staff.melismaBusy = ##f papersize = "a4" + \include "generic-paper.ly" \include "paper20.ly" diff --git a/ly/engraver.ly b/ly/engraver.ly index b21a4d5f43..0fdd838bea 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -64,13 +64,13 @@ StaffContext=\translator { RhythmicStaffContext=\translator{ \type "Engraver_group_engraver"; - numberOfStaffLines = #1 + \consists "Property_engraver"; \consists "Output_property_engraver"; Generic_property_list = #generic-staff-properties - barSize = 4.0 * \staffspace ; % urg: pt + barSize = 4.0 * \staffspace ; % JUNKME \consists "Pitch_squash_engraver"; \consists "Separating_line_group_engraver"; @@ -78,8 +78,7 @@ RhythmicStaffContext=\translator{ basicVoltaSpannerProperties \push #'minimum-space = #15 % urg, in \pt basicVoltaSpannerProperties \push #'padding = #5 % urg, in \pt - - + basicStaffSymbolProperties \push #'line-count = #1 \consists "Repeat_engraver"; \consists "Bar_engraver"; @@ -171,9 +170,11 @@ GraceContext=\translator { basicTextScriptProperties \push #'font-size = #-1 basicSlurProperties \push #'font-size = #-1 basicLocalKeyProperties \push #'font-size = #-1 - - weAreGraceContext = ##t - graceAccidentalSpace= 1.5 * \staffspace; + basicBeamProperties \push #'beam-thickness = #0.3 + basicBeamProperties \push #'beam-space-function = #(lambda (x) 0.5) + + weAreGraceContext = ##t + graceAccidentalSpace= 1.5 * \staffspace; % JUNKME }; \translator{\GraceContext} @@ -207,6 +208,8 @@ PianoStaffContext = \translator{\GrandStaffContext alignmentReference = \center; \consists "Vertical_align_engraver"; + + % JUNKME minVerticalAlign = 3.0*\staffheight; maxVerticalAlign = 3.0*\staffheight; @@ -455,17 +458,7 @@ ScoreContext = \translator { (name . "barnumber") ) - basicBeamProperties = #`( - (molecule-callback . ,Beam::brew_molecule) - (beam-thickness . 0.42) ; staff-space - (before-line-breaking-callback . ,Beam::before_line_breaking) - (after-line-breaking-callback . ,Beam::after_line_breaking) - (default-neutral-direction . 1) - (interfaces . (beam-interface)) - (damping . 1) - (name . "beam") - ) - + basicBeamProperties = #basic-beam-properties basicBreakAlignProperties = #`( (breakable . #t) (interfaces . (break-align-interface)) @@ -504,6 +497,7 @@ ScoreContext = \translator { basicCollisionProperties = #`( (axes 0 1) (interfaces . (collision-interface)) + (note-width . 1.65) (name . "note collision") ) basicCrescendoProperties = #`( @@ -545,8 +539,10 @@ ScoreContext = \translator { (name . "left edge") ) basicGraceAlignItemProperties = #`( - (axes . (0)) (interfaces . (axis-group-interface align-interface)) + (axes . (0)) + (horizontal-space . 1.2) + (padding . 1.0) (before-line-breaking-callback . ,Grace_align_item::before_line_breaking) (name . "grace alignment") ) @@ -593,6 +589,7 @@ ScoreContext = \translator { basicLyricExtenderProperties = #`( (interfaces . (lyric-extender-interface)) (molecule-callback . ,Lyric_extender::brew_molecule) + (height . 0.8) ; stafflinethickness; (right-trim-amount . 0.5) (name . "extender line") ) @@ -616,6 +613,10 @@ ScoreContext = \translator { (spacing-procedure . ,Multi_measure_rest::set_spacing_rods) (molecule-callback . ,Multi_measure_rest::brew_molecule) (staff-position . 0) + (expand-limit . 10) + (padding . 2.0) ; staffspace + (minimum-width . 12.5) ; staffspace + (name . "multi-measure rest") ) basicNoteColumnProperties = #`( @@ -675,6 +676,8 @@ ScoreContext = \translator { (spacing-procedure . ,Slur::set_spacing_rods) (minimum-length . 1.5) (after-line-breaking-callback . ,Slur::after_line_breaking) + + (de-uglify-parameters . ( 1.5 0.8 -2.0)) (name . "slur") ) basicSpacingSpannerProperties =#`( @@ -779,12 +782,14 @@ ScoreContext = \translator { (molecule-callback . ,Stem_tremolo::brew_molecule) (beam-width . 2.0) ; staff-space (beam-thickness . 0.42) ; staff-space + (beam-space-function . ,default-beam-space-function) (name . "stem tremolo") ) basicStemProperties = #`( (interfaces . (stem-interface)) (before-line-breaking-callback . ,Stem::before_line_breaking) (molecule-callback . ,Stem::brew_molecule) + (thickness . 0.8) ; if stem is on middle line, choose this direction. (default-neutral-direction . 1) @@ -819,6 +824,8 @@ ScoreContext = \translator { (interfaces . (volta-spanner-interface side-position-interface)) (direction . 1) (padding . 5) + (thickness . 1.6) ; stafflinethickness + (height . 2.0) ; staffspace; (minimum-space . 25) (name . "volta brace") ) diff --git a/ly/paper-as5.ly b/ly/paper-as5.ly index 60e4168474..0e956f669a 100644 --- a/ly/paper-as5.ly +++ b/ly/paper-as5.ly @@ -23,9 +23,6 @@ paper_as_five = \paper { % Ugh magnification_dynamic = 2.; - % ugh see table20 for sizes - quartwidth = 3.\char; - wholewidth = 3.\char; -2 = \font "as5" -1 = \font "as5" diff --git a/ly/paper-as9.ly b/ly/paper-as9.ly index 4f34c73c75..ba07ca8832 100644 --- a/ly/paper-as9.ly +++ b/ly/paper-as9.ly @@ -23,9 +23,6 @@ paper_as_nine = \paper { % Ugh magnification_dynamic = 2.; - % ugh see table20 for sizes - quartwidth = 3.\char; - wholewidth = 3.\char; -2 = \font "as9" -1 = \font "as9" diff --git a/ly/paper11.ly b/ly/paper11.ly index 1920524ca4..321b7b6e85 100644 --- a/ly/paper11.ly +++ b/ly/paper11.ly @@ -5,9 +5,6 @@ paper_eleven = \paper { staffheight = 11.0\pt; - % ugh see table11 for sizes - quartwidth = 3.63 \pt; - wholewidth = 5.45 \pt; font_Large = 8.; font_large = 6.; diff --git a/ly/paper13.ly b/ly/paper13.ly index 19891aa063..bd3855fcef 100644 --- a/ly/paper13.ly +++ b/ly/paper13.ly @@ -5,10 +5,6 @@ paper_thirteen = \paper { staffheight = 13.0\pt; - % ugh see table13 for sizes - quartwidth = 4.29\pt; - wholewidth = 6.44\pt; - font_Large = 8.; font_large = 6.; diff --git a/ly/paper16.ly b/ly/paper16.ly index 5ffce3b97c..6cb1bdaedc 100644 --- a/ly/paper16.ly +++ b/ly/paper16.ly @@ -6,11 +6,6 @@ paper_sixteen = \paper { staffheight = 16.0\pt; - - % ugh, see table16 for sizes - quartwidth = 5.28\pt; - wholewidth = 7.92\pt; - font_Large = 12.; font_large = 10.; font_normal = 8.; diff --git a/ly/paper20.ly b/ly/paper20.ly index 8e12496d46..40fe2f2067 100644 --- a/ly/paper20.ly +++ b/ly/paper20.ly @@ -26,10 +26,6 @@ paper_twenty = \paper { % Ugh magnification_dynamic = 2.; - % ugh see table20 for sizes - quartwidth = 6.61\pt; - wholewidth = 9.90\pt; - 0 = \font "feta20" -1 = \font "feta16" -2 = \font "feta13" diff --git a/ly/paper23.ly b/ly/paper23.ly index 07493d853d..61889b9c0f 100644 --- a/ly/paper23.ly +++ b/ly/paper23.ly @@ -18,10 +18,6 @@ paper_twentythree = \paper { % Ugh magnification_dynamic = 3.; - - % ugh see table20 for sizes - quartwidth = 6.61\pt; - wholewidth = 9.90\pt; -2 = \font "feta16" -1 = \font "feta20" diff --git a/ly/paper26.ly b/ly/paper26.ly index fd8fc94792..484042d996 100644 --- a/ly/paper26.ly +++ b/ly/paper26.ly @@ -4,10 +4,6 @@ paper_twentysix = \paper { staffheight = 26.0\pt; - - quartwidth = 8.59\pt; - wholewidth = 12.87\pt; - font_Large = 17.; font_large = 14.; font_normal = 12.; diff --git a/ly/params-as.ly b/ly/params-as.ly index 01e44e8281..58ab2b6bd2 100644 --- a/ly/params-as.ly +++ b/ly/params-as.ly @@ -15,15 +15,6 @@ indent = 8.0\char; staffspace = (\staffheight - 1.0 ) / 4.0; stafflinethickness = \staffspace / 2.0; -% deprecated -interline = \staffspace; - -% urg, need grace_ versions of these too? -beam_thickness = 0.52 * (\staffspace - \stafflinethickness); - -interbeam = (2.0 * \staffspace + \stafflinethickness - \beam_thickness) / 2.0; -interbeam4 = (3.0 * \staffspace - \beam_thickness) / 3.0; - %{ The space taken by a note is determined by the formula @@ -103,11 +94,6 @@ tie_y_gap = 0.25 * \staffspace; % length of a tie that's a staffspace high tie_staffspace_length = 4.0 * \staffspace; -% ugh: rename to bow (in bezier.cc and fonts.doc too...) - -% used to be 1.4 . -slur_thickness = 1.2 * \stafflinethickness; -tie_thickness = 1.2 * \stafflinethickness; %{ Specifies the maximum height of slurs. @@ -128,51 +114,15 @@ slur_clip_height = 3.0 * \staffheight; slur_clip_angle = 100.0; slur_rc_factor = 2.4; -% ugh -notewidth = 3.0\char; - -gourlay_energybound = 100000.; -%{ -Maximum number of measures per line to try when using Gourlay -method. -%} -gourlay_maxmeasures = 10.; - % vertical space between lines. line_kern = \staffspace; -volta_thick = 1.0\char; -volta_spanner_height = 1.0\char; - -% relative thickness of thin lines 1.6 : 1 : 0.8 -stemthickness = 1.0\char; -rulethickness = 1.0\char; - - -extender_height = 0.8*\stafflinethickness; - -hyphen_thickness = 0.05*\font_normal; -hyphen_height = 0.2*\font_normal; -hyphen_minimum_length = 0.25*\font_normal; - -% Multi-measure rests -multi_measure_rest_x_minimum = 2.5*\staffheight; -multi_measure_rest_padding = 2.0 *\staffspace; -multi_measure_rest_expand_limit = 10.0; % chop off this much when next to pp / ff sign. crescendo_shorten = 4.0 * \staffspace; crescendo_thickness = \stafflinethickness; crescendo_height = 0.666 * \staffspace; -% in internote. -restcollision_minimum_dist = 3.0; -restcollision_minimum_beamdist = 1.5; - - -% unit for note collision resolving -collision_note_width = \notewidth; %ugh. - % deprecated! postBreakPadding = 0.0; @@ -217,9 +167,6 @@ compression_energy_factor = 0.6; % if stem is on middle line, choose this direction. stem_default_neutral_direction = 1.0; -% in staffspace -articulation_script_padding_default = 1.0; - % Backward compatibility -- has no function; Gourlay = 0.0; Wordwrap =0.0; diff --git a/ly/params.ly b/ly/params.ly index e864388366..85661e39d6 100644 --- a/ly/params.ly +++ b/ly/params.ly @@ -22,15 +22,6 @@ stafflinethickness = \staffspace / 10.0; % deprecated interline = \staffspace; - -% urg, need grace_ versions of these too? -beam_thickness = 0.52 * (\staffspace - \stafflinethickness); - - - -interbeam = (2.0 * \staffspace + \stafflinethickness - \beam_thickness) / 2.0; -interbeam4 = (3.0 * \staffspace - \beam_thickness) / 3.0; - %{ The space taken by a note is determined by the formula @@ -72,8 +63,9 @@ If you want to space your music wider, use something like: %} % We use 0.9*\quartwidth, because 1.0 seems to wide. +% quartwidth == 1.32 * staffspace % We don't adjust arithmetic_basicspace accordingly (why not?) -arithmetic_multiplier = 0.9 * \quartwidth ; +arithmetic_multiplier = 0.9 * 1.32 * \staffspace ; arithmetic_basicspace = 2.0; @@ -93,6 +85,8 @@ 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; @@ -113,13 +107,6 @@ slur_y_gap = 0.25 * \staffspace; slur_y_free = 0.75 * \staffspace; slur_x_minimum = 1.5 * \staffspace; - -% The constants that define the valid areas for the middle control points -% Used in de_uglyfy. Bit empirical. -bezier_control1 = 1.5; -bezier_control2 = 0.8; -bezier_control3 = -2.0; - % URG: the magic constants for area asymmetry bezier_pct_c0 = -0.2; bezier_pct_c3 = 0.000006; @@ -136,40 +123,12 @@ tie_height_limit_factor = 1.0 ; tie_ratio = \slur_ratio; % OSU: tie gap == slur gap -tie_x_gap = \slur_x_gap; - +tie_x_gap = 0.2 * \staffspace; tie_staffline_clearance = 2.0 *\slur_thickness; - -% ugh -notewidth = (\quartwidth + \wholewidth) / 2.0; - -gourlay_energybound = 100000.; -%{ -Maximum number of measures per line to try when using Gourlay -method. -%} -gourlay_maxmeasures = 10.; - -% vertical space between lines. +% vertical space between lines of text. line_kern = \staffspace; -volta_thick = 1.6*\stafflinethickness; -volta_spanner_height = 2.0 *\staffspace; - -% relative thickness of thin lines 1.6 : 1 : 0.8 -stemthickness = 0.8*\stafflinethickness; -rulethickness = \stafflinethickness; - - -extender_height = 0.8*\stafflinethickness; - - -% Multi-measure rests -multi_measure_rest_x_minimum = 2.5*\staffheight; -multi_measure_rest_padding = 2.0 *\staffspace; -multi_measure_rest_expand_limit = 10.0; - % chop off this much when next to pp / ff sign. crescendo_shorten = 4.0 * \staffspace; crescendo_thickness = \stafflinethickness; @@ -177,11 +136,6 @@ crescendo_height = 0.666 * \staffspace; crescendo_dash_thickness = 1.2*\stafflinethickness; crescendo_dash = 4.0*\staffspace; -% in internote. - - -% unit for note collision resolving -collision_note_width = \notewidth; %ugh. % optical correction amount. stemSpacingCorrection = 0.5*\staffspace; @@ -221,8 +175,6 @@ will cause scores to be set looser compression_energy_factor = 0.6; -% in staffspace -articulation_script_padding_default = 1.0; \include "engraver.ly"; diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 584f3fd32b..bf81c2fc7d 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.3.87 -Entered-date: 18SEP00 +Version: 1.3.88 +Entered-date: 20SEP00 Description: Keywords: music notation typesetting midi fonts engraving Author: hanwen@cs.uu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 1000k lilypond-1.3.87.tar.gz + 1000k lilypond-1.3.88.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.3.87.tar.gz + 1000k lilypond-1.3.88.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index a087e0f695..479bbe52b2 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 1.3.87 +Version: 1.3.88 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.87.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.88.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond # Icon: lilypond-icon.gif diff --git a/scm/basic-properties.scm b/scm/basic-properties.scm new file mode 100644 index 0000000000..28c1bec72b --- /dev/null +++ b/scm/basic-properties.scm @@ -0,0 +1,51 @@ +; Definition of backend properties (aka. element properties). + +;; See documentation of Item::visibility_lambda_ +(define (begin-of-line-visible d) (if (= d 1) '(#f . #f) '(#t . #t))) +(define (spanbar-begin-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f))) +(define (all-visible d) '(#f . #f)) +(define (all-invisible d) '(#t . #t)) +(define (begin-of-line-invisible d) (if (= d 1) '(#t . #t) '(#f . #f))) +(define (end-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f))) + + +(define mark-visibility end-of-line-invisible) + +; ugh: should calculate from beam-thickness. +; result in staff-space + +;beam_thickness = 0.52 * (\staffspace - \stafflinethickness); +;interbeam = (2.0 * \staffspace + \stafflinethickness - \beam_thickness) / 2.0; +;interbeam4 = (3.0 * \staffspace - \beam_thickness) / 3.0; + + +(define (default-beam-space-function multiplicity) + (if (<= multiplicity 3) 0.816 0.844) + ) + +; +; width in staff space. +; +(define (default-beam-flag-width-function type) + (cond + ((eq? type 1) 1.98) + ((eq? type 1) 1.65) + (else 1.32) + )) + + +(define basic-beam-properties + `( + (interfaces . (beam-interface)) + (molecule-callback . ,Beam::brew_molecule) + (beam-thickness . 0.42) ; staff-space, should use stafflinethick? + (before-line-breaking-callback . ,Beam::before_line_breaking) + (after-line-breaking-callback . ,Beam::after_line_breaking) + (default-neutral-direction . 1) + + (beam-flag-width-function . ,default-beam-flag-width-function) + (beam-space-function . ,default-beam-space-function) + (damping . 1) + (name . "beam") + ) + ) diff --git a/scm/lily.scm b/scm/lily.scm index 147f5b5850..e4385c0eef 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -85,18 +85,6 @@ (define security-paranoia #f) - -;; See documentation of Item::visibility_lambda_ -(define (begin-of-line-visible d) (if (= d 1) '(#f . #f) '(#t . #t))) -(define (spanbar-begin-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f))) -(define (all-visible d) '(#f . #f)) -(define (all-invisible d) '(#t . #t)) -(define (begin-of-line-invisible d) (if (= d 1) '(#t . #t) '(#f . #f))) -(define (end-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f))) - - -(define mark-visibility end-of-line-invisible) - ;; Spacing constants for prefatory matter. ;; ;; rules for this spacing are much more complicated than this. See [Wanske] page 126 -- 134, [Ross] pg 143 -- 147 -- 2.39.5