From: Han-Wen Nienhuys Date: Thu, 2 Mar 2000 18:13:13 +0000 (+0100) Subject: release: 1.3.29 X-Git-Tag: release/1.3.29 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=ffe548cfbb3c3b37c8969f49b5aba04ef998d080;p=lilypond.git release: 1.3.29 =========== * Moved Slur-specific code from Bezier_bow to Slur and Slur_bezier_bow. Slurs are now calculated just once. 1.3.28.j --- diff --git a/CHANGES b/CHANGES index cab708ae46..d992a22dfa 100644 --- a/CHANGES +++ b/CHANGES @@ -1,10 +1,44 @@ -1.3.28.jcn1 +1.3.28.jcn4 =========== +* Moved Slur-specific code from Bezier_bow to Slur and Slur_bezier_bow. + Slurs are now calculated just once. + +1.3.28.jcn3 +=========== + +* Bezier_bow gets constants from paper. Still no sensible solution for + magic asymmetry gradient step constants. + +* Reinstantiated tangent-controls, more flexible than ever. You can choose + between area asymmetry and tangent-controls. My guess is, tangent controls + will be junked in 1.3.30. + +1.3.28.jcn2 +=========== + +* Slur area: only look at x-gradient. + +* Added credits for some symbols of as5/9 fonts. + * Bugfix: don't make almost flat slurs, change in de-uglyfy slur. * Bugfix: midi2ly put out recent version (ugh). +1.3.28.hwn2 +=========== + +* Bugfix: don't forget to process staffSpace and numberOfStaffLines +properties. + +* Removed Gade score. To appear (shortly?) on Mutopia. + +* Make Bar_script_engraver look for typeVisibilityFunction (eg +property barNumberVisibilityFunction). Changed the names of the Scheme +functions to be understandable. See input/test/bar-script-visibility.ly + +* rewrite of class Molecule. It has now reached the ultimate quality +plateau. All molecule data is now shared. 1.3.28 ====== diff --git a/Documentation/index.texi b/Documentation/index.texi index da0c1053fb..4d38ca8c4d 100644 --- a/Documentation/index.texi +++ b/Documentation/index.texi @@ -30,7 +30,8 @@ integrating text and music in LaTeX and texinfo; also available in @uref{../user/out-www/mudela-book.ps.gz,Postscript} @item @uref{../programmer/out-www/index.html,Programmer documentation} @item @uref{../bibliography/out-www/index.html,Bibliography} -@item @uref{../misc/out-www/index.html,Miscellaneous texts} +@item @uref{../misc/out-www/index.html,Miscellaneous texts}: +announcements and change logs for old versions; background information. @end itemize diff --git a/Documentation/topdocs/index.tely b/Documentation/topdocs/index.tely index e1211293a7..c3aff45b14 100644 --- a/Documentation/topdocs/index.tely +++ b/Documentation/topdocs/index.tely @@ -99,7 +99,7 @@ in PostScript, and LilyPond input. Others use LilyPond too. @uref{http://www.geocities.com/Vienna/Studio/1714/harpsichord.html,John Sankey}, harpsichordist to the internet, is typesetting the complete -@uref{http://www.geocities.com/Vienna/Studio/1714/scarlattidwn.html/,sonatas +@uref{http://www.geocities.com/Vienna/Studio/1714/scarlattidwn.html,sonatas by Scarlatti}. Jeff Covey, guitar player and overall nice guy, is putting @uref{http://www4.smart.net/~jcovey/scores/,guitar music} on the net. The @uref{http://sca.uwaterloo.ca/Mutopia/,Mutopia project} is a @@ -168,9 +168,17 @@ Frequently Asked Questions} first.) @item bug-gnu-music@@gnu.org If you have bugreports, you should send them to this list. If you -want to know about bugs, subscribe: send mail with subject "subscribe" to +want to know about bugs, subscribe: send mail with subject "subscribe" +to @email{bug-gnu-music-request@@gnu.org}. The archive is at @uref{http://www.mail-archive.com/bug-gnu-music@@gnu.org} + + Please include in your bugreport the version of LilyPond that +you experience the problem with, a description of your system and sample +input to reproduce the problem. Do not send output files over the list, +they tend to be very big and don't help with describing the problem. + + @item gnu-music-discuss@@gnu.org, For discussions concerning LilyPond, to subscribe: send mail with subject "subscribe" to diff --git a/TODO b/TODO index f5a11cecd9..259faaf8af 100644 --- a/TODO +++ b/TODO @@ -10,6 +10,8 @@ Grep -i for TODO, FIXME and ugh/ugr/urg. .* TODO . * use hash tabs iso. alist_ for elt property? +. * unhardcode stuff in bezier-bow: all sizes other than 20pt are + broken . * control paper-size/-file from commandline ? lilypond --paper=paper16 foo.ly lilypond --paper=paper20 foo.ly @@ -17,6 +19,22 @@ Grep -i for TODO, FIXME and ugh/ugr/urg. . * entangle ly/* paper-params papersize stuff . * fix tremolos. . * change ) c4 to c4-) +. * automated marks. +. * There should be no pagebreak below the title of the movement!! +. * tempo: + +> - Tempo Indications: +> * \tempo 4 = 60 should be printed +> * There should be commands like \alloegro that also do something +> sensible in midi. +> +. * - It should be possible to have Bar numbers on every bar. + +. * dynamics: +> * Notes should be spaced out for crescendos (had to use c^" ") +> * something like c-.->\ff looks ugly. The dynamc indication should +> appear left of the marks +> . * There's insufficient leading between lines of lyrics, so risers like `l' and 'b' collide with the bottom of the line above. diff --git a/VERSION b/VERSION index dfcdb19883..8d61b7e43a 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=28 -MY_PATCH_LEVEL=jcn1 +PATCH_LEVEL=29 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/test/bar-script-visibility.ly b/input/test/bar-script-visibility.ly new file mode 100644 index 0000000000..48b2479172 --- /dev/null +++ b/input/test/bar-script-visibility.ly @@ -0,0 +1,13 @@ + +\score { +\notes { c1 c1 \break c1 c1 } +\paper { + +\translator{ + \StaffContext + \consists Bar_number_engraver; + barNumberVisibilityFunction = #end-of-line-invisible +} +} +} + diff --git a/input/test/sleur.ly b/input/test/sleur.ly index 0b69da1a7b..66d3d96948 100644 --- a/input/test/sleur.ly +++ b/input/test/sleur.ly @@ -1,8 +1,8 @@ \header{ -title = "sleur"; -subtitle = "test slurs."; enteredby = "jcn"; copyright = "public domain"; +TestedFeatures = "This file tests Feta embedded slurs" + + "(Feta definitively is not an abbreviation of Font-En-TjA)"; } \version "1.3.5"; @@ -167,7 +167,7 @@ clipping = \notes\transpose c'{ } \score{ - \notes{ + \context Staff \notes{ % \property Voice.pletvisibility = 0; % use blend for fast check \blend diff --git a/input/test/slur-area.fly b/input/test/slur-area.fly deleted file mode 100644 index 14705f7d23..0000000000 --- a/input/test/slur-area.fly +++ /dev/null @@ -1,10 +0,0 @@ -\property Voice.slurVerticalDirection = #1 -\property Voice.stemVerticalDirection = #-1 -a''(a' a,)a -a(a a')a, -a(d a)a -a8(d a a a a a)a -a(a a a a a d)a - -c,(g' c e f d b)g -c,(g' c e f d b)g diff --git a/input/test/slur-area.ly b/input/test/slur-area.ly new file mode 100644 index 0000000000..f16bb43838 --- /dev/null +++ b/input/test/slur-area.ly @@ -0,0 +1,26 @@ +\score{ +\notes\relative c''{ + +\property Voice.slurVerticalDirection = #1 +\property Voice.stemVerticalDirection = #-1 +a(a' a,)a +a(a a')a, +a(d a)a +a(a d)a + +e'8(e e e e e e)e +a,8(d a a a a a)a +a(a a a a a d)a + +c,(g' c e f d b)g +c,(g' c e f d b)g + +\property Voice.noAutoBeaming = ##t +\property Voice.stemVerticalDirection = #1 +a8(a a a a a a)a + +} +\paper{ +indent=0.0\mm; +} +} diff --git a/lily/all-font-metrics.cc b/lily/all-font-metrics.cc index 88f46c07a9..81a4133430 100644 --- a/lily/all-font-metrics.cc +++ b/lily/all-font-metrics.cc @@ -147,6 +147,3 @@ All_font_metrics::font_descriptions () const } - -#include "ly-smobs.icc" -IMPLEMENT_SMOBS(Font_metric); diff --git a/lily/atom.cc b/lily/atom.cc index 9dd82bc754..f44d4d2c4e 100644 --- a/lily/atom.cc +++ b/lily/atom.cc @@ -29,7 +29,7 @@ SCM translate_atom (Offset o, SCM func) { return gh_list (ly_symbol2scm ("translate-atom"), - ly_quote_scm (ly_offset2scm (o)), + ly_quote_scm (to_scm (o)), func, SCM_UNDEFINED); } @@ -41,7 +41,7 @@ translate_atom_axis (Real r, Axis a, SCM func) Offset o ; o[a] = r; return gh_list (ly_symbol2scm ("translate-atom"), - ly_quote_scm (ly_offset2scm (o)), + ly_quote_scm (to_scm (o)), func, SCM_UNDEFINED); } diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc index bf22b44c61..b5f20c5235 100644 --- a/lily/bar-number-engraver.cc +++ b/lily/bar-number-engraver.cc @@ -17,10 +17,10 @@ Bar_number_engraver::Bar_number_engraver() { axis_ = Y_AXIS; type_ = "barNumber"; - visibility_lambda_ - = ly_eval_str ("postbreak-only-visibility"); } + + void Bar_number_engraver::do_process_requests () { diff --git a/lily/bar-script-engraver.cc b/lily/bar-script-engraver.cc index 98d4c92fdf..689ecea2bc 100644 --- a/lily/bar-script-engraver.cc +++ b/lily/bar-script-engraver.cc @@ -24,15 +24,19 @@ Bar_script_engraver::Bar_script_engraver () { axis_ = Y_AXIS; text_p_ =0; - visibility_lambda_ - = ly_eval_str ("non-postbreak-visibility"); } void Bar_script_engraver::do_creation_processing () { + String t = type_ + "VisibilityFunction"; + SCM proc = get_property (t, 0); + + if (gh_procedure_p (proc)) + visibility_lambda_ = proc; } + /* Some interesting item came across. Lets attach the text and the positioner to the item. @@ -142,9 +146,10 @@ Bar_script_engraver::create_items (Request *rq) ->set_elt_property ("padding", gh_double2scm(paper_l ()->get_var ("interline"))); } - - text_p_->set_elt_property ("visibility-lambda", - visibility_lambda_); + + if (gh_procedure_p (visibility_lambda_)) + text_p_->set_elt_property ("visibility-lambda", + visibility_lambda_); announce_element (Score_element_info (text_p_, rq)); } diff --git a/lily/bar.cc b/lily/bar.cc index 90de71251c..e4f66f1d35 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -29,14 +29,11 @@ Bar::get_bar_size () const } -Molecule* -Bar::do_brew_molecule_p () const +Molecule +Bar::do_brew_molecule () const { String s = ly_scm2string (get_elt_property ("glyph")); - Molecule *output - = new Molecule (lookup_l ()->bar (s, get_bar_size (), paper_l ())); - - return output; + return lookup_l ()->bar (s, get_bar_size (), paper_l ()); } diff --git a/lily/base-span-bar-engraver.cc b/lily/base-span-bar-engraver.cc index 4636f957fa..0c7177017f 100644 --- a/lily/base-span-bar-engraver.cc +++ b/lily/base-span-bar-engraver.cc @@ -51,6 +51,11 @@ Base_span_bar_engraver::acknowledge_element (Score_element_info i) { spanbar_p_ = get_span_bar_p(); spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS); + + /* + UGH. UGH UUHGK GUHG G + (ly_eval_str ??) + */ String visnam = String(name()) + "-visibility"; spanbar_p_->set_elt_property ("visibility-lambda", diff --git a/lily/beam.cc b/lily/beam.cc index 33f354eb26..d96e15a637 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -708,12 +708,12 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const } -Molecule* -Beam::do_brew_molecule_p () const +Molecule +Beam::do_brew_molecule () const { - Molecule *mol_p = new Molecule; + Molecule mol; if (!stem_count ()) - return mol_p; + return mol; Real x0,dx; if (visible_stem_count ()) { @@ -739,12 +739,12 @@ Beam::do_brew_molecule_p () const Molecule sb = stem_beams (i, next, prev); Real x = i->hpos_f ()-x0; sb.translate (Offset (x, x * dydx + y)); - mol_p->add_molecule (sb); + mol.add_molecule (sb); } - mol_p->translate_axis (x0 + mol.translate_axis (x0 - spanned_drul_[LEFT]->relative_coordinate (0, X_AXIS), X_AXIS); - return mol_p; + return mol; } int diff --git a/lily/bezier-bow.cc b/lily/bezier-bow.cc index aa276f3043..0a51f93614 100644 --- a/lily/bezier-bow.cc +++ b/lily/bezier-bow.cc @@ -15,250 +15,19 @@ #include "debug.hh" #include "main.hh" #include "lily-guile.hh" +#include "paper-def.hh" -void -flipy (Array &c) -{ - for (int i = c.size (); i--;) - c[i][Y_AXIS] = - c[i][Y_AXIS]; -} -void -rotate (Array &c, Real phi) -{ - Offset rot (complex_exp (Offset (0, phi))); - for (int i = 0; i < c.size (); i++) - c[i] = complex_multiply (rot, c[i]); -} - -void -translate (Array &c, Offset o) -{ - for (int i = 0; i < c.size (); i++) - c[i] += o; -} - - -Bezier_bow::Bezier_bow (Array points, Direction dir) +Bezier_bow::Bezier_bow (Array encompass, Direction dir) { + alpha_ = 0; dir_ = dir; - encompass_ = points; - to_canonic_form (); - - rc_factor_ = 1.0; - height_limit_ = 1.0; - ratio_ = 1.0; -} - -static Real -default_height (Real len) -{ - // assume 20pt staff - // see fonts.doc - Real staff_space = 5.0; - Real h_inf = 2.0* staff_space; - Real r_0 = 0.33; - return h_inf * 2.0 / M_PI * atan ( M_PI * r_0 / (2.0 * h_inf) * len); -} - -void -Bezier_bow::blow_fit () -{ - Real len = curve_.control_[3][X_AXIS]; - Real h = curve_.control_[1][Y_AXIS] * fit_factor () / len; - curve_.control_[1][Y_AXIS] = h * len; - curve_.control_[2][Y_AXIS] = h * len; - curve_.check_sanity (); -} - -void -Bezier_bow::de_uglyfy () -{ - Real len = curve_.control_[3][X_AXIS] ; - Real ff = fit_factor (); - for (int i = 1; i < 3; i++) - { - Real ind = abs (curve_.control_[(i-1)*3][X_AXIS] - - curve_.control_[i][X_AXIS]) / len; - Real h = curve_.control_[i][Y_AXIS] * ff / len; - - // ugh. Unhardcode this - Real f = default_height (len) / len; - if (h > 2.0 * f) - { - h = 2.0 * f; - } - else if (h > 0.8 + -2 * ind) - { - h = 0.8 - 2 *ind; - } - - curve_.control_[i][Y_AXIS] = h * len; - } - - curve_.check_sanity (); -} - -Real -Bezier_bow::calc_enclosed_area_f () const -{ - Real a = 0; - for (int i=0; i < encompass_.size (); i++) - { - Interval x; - Interval y; - if (i == 0) - { - x = Interval (0, encompass_[1][X_AXIS] / 2); - y = Interval (0, - curve_.get_other_coordinate (X_AXIS, - encompass_[1][X_AXIS] - / 2)); - } - else if (i == encompass_.size () - 1) - { - x = Interval ((encompass_[i-1][X_AXIS] + encompass_[i][X_AXIS])/2, - encompass_[i][X_AXIS]); - y = Interval (0, - (curve_.get_other_coordinate (X_AXIS, - (x[MIN] + x[MAX]) / 2))); - } - else - { - x = Interval ((encompass_[i-1][X_AXIS] + encompass_[i][X_AXIS]) / 2, - (encompass_[i][X_AXIS] + encompass_[i+1][X_AXIS]) / 2); - y = Interval (encompass_[i][Y_AXIS], - (curve_.get_other_coordinate (X_AXIS, x[MIN]) - + curve_.get_other_coordinate (X_AXIS, - (x[MIN] + x[MAX]) / 2) - + curve_.get_other_coordinate (X_AXIS, x[MAX])) / 3); - } - - Real da = x.length () * y.length (); - a += da; - } - return a; -} - -Array -Bezier_bow::area_gradient_offset_arr () -{ - Real len = curve_.control_[3][X_AXIS]; - Real area = calc_enclosed_area_f (); - - Real grow = len / 10.0; - Array da (2); - for (int i=1; i < 3; i++) - { - for (Axis a=X_AXIS; a < NO_AXES; incr (a)) - { - Real r = curve_.control_[i][a]; - curve_.control_[i][a] += grow; - da[i-1][a] = (calc_enclosed_area_f () - area) / grow; - - curve_.control_[i][a] = r; - } - } - return da; -} - -void -Bezier_bow::minimise_enclosed_area () -{ - Real len = curve_.control_[3][X_AXIS]; - Real beautiful = len * default_height (len) / 2.0; - - DEBUG_OUT << to_str ("Beautiful: %f\n", beautiful); - DEBUG_OUT << to_str ("Length: %f\n", len); - int steps=2; - for (int i=0; i < steps; i++) - { - Real ff = fit_factor (); - if (!ff) - break; - - DEBUG_OUT << to_str ("FitFac: %f\n", ff); - - // slur must be higher at every point - if (ff > 1.01) - { - blow_fit (); - DEBUG_OUT << to_str ("Blown area: %f\n", calc_enclosed_area_f ()); - } - else - DEBUG_OUT << to_str ("Init area: %f\n", calc_enclosed_area_f ()); - - Real area = calc_enclosed_area_f (); - - - if (area <= beautiful) - break; - - Array da = area_gradient_offset_arr (); - - /* - Urg: empiric cs - Small slurs are easily too asymmetric, - while big slurs are too symmetric - - This makes short slurs strictly x-bound, - long slurs become y-bound. - */ - Real ypct = 0.50; - //Real xpct = (0.07 * len * len / 1000.0) 1.5) - blow_fit (); - - DEBUG_OUT << to_str ("Exarea: %f\n", calc_enclosed_area_f ()); - Real area = calc_enclosed_area_f (); - /* - Slurs that fit beautifully are not ugly - */ - if (area > beautiful) - { - DEBUG_OUT << "DE-UGLYFY\n"; - de_uglyfy (); - } - -} - -void -Bezier_bow::calculate () -{ - calc_default (); - if (fit_factor () > 1.0) - { - // calc_tangent_controls (); - // blow_fit (); - minimise_enclosed_area (); - } + encompass_ = encompass; + to_canonical_form (); } - - Bezier -Bezier_bow::get_curve ()const +Bezier_bow::get_bezier () const { Bezier rv = curve_; if (dir_ == DOWN) @@ -272,191 +41,81 @@ Bezier_bow::get_curve ()const return rv; } -static Real const FUDGE = 1e-8; - -/* - This function calculates 2 center control points, - based on lines through c_0 --> left disturbing - and c_3--> right disturbing encompass points. - - See Documentation/fonts.tex - */ -void -Bezier_bow::calc_tangent_controls () -{ - Real b = curve_.control_[3][X_AXIS]; - Real h = curve_.control_[1][Y_AXIS]; - - - Drul_array disturb; - Drul_array maxtan; - maxtan[LEFT] = maxtan[RIGHT] = h/(b/2); - disturb[LEFT] = disturb[RIGHT] = Offset (b / 2, h); - - for (int i = 1; i < encompass_.size () -1; i++) - { - Real y= encompass_[i][Y_AXIS]; - if (y> 0) - { - Real x = encompass_[i][X_AXIS]; - - Direction d = LEFT; - do - { - // 1 if d == LEFT - int k = (1 - d)/2; - Real tan = y / ((1-k)* b - d * x); - - if (tan > maxtan[d]) - { - maxtan[d] = tan; - disturb[d] = Offset (x,y); - } - } - while (flip (&d)!=LEFT); - } - } - - for (int i = 0; i < encompass_.size (); i++ ) - h = h >? encompass_[i][Y_AXIS]; - - /* - The curve will always be under line between curve_.control_0 -> curve_.control_1, so - make it extra steep by slur_rc_factor - */ - - - Drul_array angles; - Direction d = LEFT; - do - { - maxtan[d] *= -d * rc_factor_; - angles[d] = atan (maxtan[d]); - } - while (flip(&d) != LEFT); - - Real rc3 = 0.0; - - /* - if we have two disturbing points, have line through those... - in order to get a sane line, make sure points are reasonably far apart - X distance must be reasonably(!) big (division) - */ - if (abs (disturb[LEFT][X_AXIS] - disturb[RIGHT][X_AXIS]) > FUDGE) - rc3 = (disturb[RIGHT][Y_AXIS] - disturb[LEFT][Y_AXIS]) / (disturb[RIGHT][X_AXIS] - disturb[LEFT][X_AXIS]); - - else - rc3 = tan ((angles[LEFT] - angles[RIGHT]) / 2); - - - // ugh: be less steep - rc3 /= 2*rc_factor_; - - - Real c2 = -maxtan[RIGHT] * curve_.control_[3][X_AXIS]; - - // use highest because rc3 is damped. - Real maxy = disturb[LEFT][Y_AXIS] >? disturb[RIGHT][Y_AXIS]; - Real c3 = disturb[LEFT][Y_AXIS] > disturb[RIGHT][Y_AXIS] ? - maxy - rc3 * disturb[LEFT][X_AXIS] : - maxy - rc3 * disturb[RIGHT][X_AXIS]; - - curve_.control_[1][X_AXIS] = c3 / (maxtan[LEFT] - rc3); - curve_.control_[1][Y_AXIS] = maxtan[LEFT] * curve_.control_[1][X_AXIS]; - - curve_.control_[2][X_AXIS] = (c3 - c2) / (maxtan[RIGHT] - rc3); - curve_.control_[2][Y_AXIS] = maxtan[RIGHT] * curve_.control_[2][X_AXIS] + c2; - - - curve_.check_sanity(); -} - -/* - max ( encompass.y / curve.y ) - - */ -Real -Bezier_bow::fit_factor () const -{ - Real x1 = encompass_[0][X_AXIS]; - Real x2 = encompass_.top ()[X_AXIS]; - - Real factor = 0.0; - for (int i=1; i < encompass_.size ()-1; i++) - { - if (encompass_[i][X_AXIS] > x1 && encompass_[i][X_AXIS] < x2) - { - Real y = curve_.get_other_coordinate (X_AXIS, encompass_[i][X_AXIS]); - if (y>0) - { - Real f = encompass_[i][Y_AXIS] / y; - factor = factor >? f; - } - } - } - - - return factor; -} - - - - void -Bezier_bow::to_canonic_form () +Bezier_bow::to_canonical_form () { origin_ = encompass_[0]; - translate (encompass_,-origin_); + translate (&encompass_, -origin_); Offset delta = encompass_.top () - encompass_[0]; alpha_ = delta.arg (); - rotate (encompass_, -alpha_); + rotate (&encompass_, -alpha_); if (dir_ == DOWN) { - flipy (encompass_); + flip (&encompass_, Y_AXIS); } while (encompass_.size () > 1 && encompass_[1][X_AXIS] <= 0.0) { - programming_error ("Degenerate slur: infinite steepness reqd"); + programming_error ("Degenerate bow: infinite steepness reqd"); encompass_.del (1); } Real l = encompass_.top ()[X_AXIS]; while (encompass_.size () > 1 && encompass_.top (1)[X_AXIS] >= l) { - programming_error ("Degenerate slur: infinite steepness reqd"); + programming_error ("Degenerate bow: infinite steepness reqd"); encompass_.del (encompass_.size ()-2); } } - +void +Bezier_bow::set_default_bezier (Real h_inf, Real r_0) +{ + curve_ = get_default_bezier (h_inf, r_0); +} /* - See Documentation/fonts.tex + See Documentation/programmer/fonts.doc */ -void -Bezier_bow::calc_default () +Bezier +Bezier_bow::get_default_bezier (Real h_inf, Real r_0) const { - Real pi = M_PI; - - Real alpha = height_limit_ * 2.0 / pi; - Real beta = pi * ratio_ / (2.0 * height_limit_); - - Offset delta (encompass_.top ()[X_AXIS] - - encompass_[0][X_AXIS], 0); - + Offset delta (encompass_.top ()[X_AXIS] - encompass_[0][X_AXIS], 0); Real b = delta.length (); - Real indent = alpha * atan (beta * b); - Real height = indent; - - curve_.control_ [0] = Offset (0, 0); - curve_.control_ [1] = Offset (indent, height); - curve_.control_ [2] = Offset (b - indent, height); - curve_.control_ [3] = Offset (b, 0); -} + Real height = get_default_height (h_inf, r_0, b); + // urg: scmify this? + Real indent = height; + Bezier curve; + curve.control_[0] = Offset (0, 0); + curve.control_[1] = Offset (indent, height); + curve.control_[2] = Offset (b - indent, height); + curve.control_[3] = Offset (b, 0); + return curve; +} +/* + See Documentation/programmer/fonts.doc + */ +Real +Bezier_bow::get_default_height (Real h_inf, Real r_0, Real b) const +{ +#if 0 + Real pi = M_PI; + Real alpha = 2.0 * h_inf / pi; + Real beta = pi * r_0 / (2.0 * h_inf); + return alpha * atan (beta * b); +#else + SCM h = scm_eval (scm_listify (ly_symbol2scm ("slur-default-height"), + gh_double2scm (h_inf), + gh_double2scm (r_0), + gh_double2scm (b), + SCM_UNDEFINED)); + return gh_scm2double (h); +#endif +} + diff --git a/lily/bezier.cc b/lily/bezier.cc index 28634b473c..6b388e1d8f 100644 --- a/lily/bezier.cc +++ b/lily/bezier.cc @@ -10,6 +10,45 @@ #include "bezier.hh" #include "polynomial.hh" +Real +binomial_coefficient (Real over , int under) +{ + Real x = 1.0; + + while (under) + { + x *= over / Real (under); + + over -= 1.0; + under --; + } + return x; +} + +void +flip (Array* arr_p, Axis a) +{ + // huh? + // for (int i = c.size (); i--;) + for (int i = 0; i < arr_p->size (); i++) + (*arr_p)[i][a] = - (*arr_p)[i][a]; +} + +void +rotate (Array* arr_p, Real phi) +{ + Offset rot (complex_exp (Offset (0, phi))); + for (int i = 0; i < arr_p->size (); i++) + (*arr_p)[i] = complex_multiply (rot, (*arr_p)[i]); +} + +void +translate (Array* arr_p, Offset o) +{ + for (int i = 0; i < arr_p->size (); i++) + (*arr_p)[i] += o; +} + /* Formula of the bezier 3-spline @@ -18,6 +57,7 @@ */ Bezier::Bezier () + : control_ (CONTROL_COUNT) { } @@ -33,20 +73,6 @@ Bezier::get_other_coordinate (Axis a, Real x) const return c[other]; } -Real -binomial_coefficient (Real over , int under) -{ - Real x = 1.0; - - while (under) - { - x *= over / Real (under); - - over -= 1.0; - under --; - } - return x; -} Offset Bezier::curve_point (Real t)const @@ -151,27 +177,23 @@ Bezier::extent (Axis a)const void Bezier::flip (Axis a) { - for (int i = CONTROL_COUNT; i--;) - control_[i][a] = - control_[i][a]; + ::flip (&control_, a); } void Bezier::rotate (Real phi) { - Offset rot (complex_exp (Offset (0, phi))); - for (int i = 0; i < CONTROL_COUNT; i++) - control_[i] = complex_multiply (rot, control_[i]); + ::rotate (&control_, phi); } void Bezier::translate (Offset o) { - for (int i = 0; i < CONTROL_COUNT; i++) - control_[i] += o; + ::translate (&control_, o); } void -Bezier::check_sanity () const +Bezier::assert_sanity () const { for (int i=0; i < CONTROL_COUNT; i++) assert (!isnan (control_[i].length ()) diff --git a/lily/breathing-sign.cc b/lily/breathing-sign.cc index f6672d2059..54120930f3 100644 --- a/lily/breathing-sign.cc +++ b/lily/breathing-sign.cc @@ -26,8 +26,8 @@ Breathing_sign::Breathing_sign () set_elt_property ("breakable", SCM_BOOL_T); } -Molecule* -Breathing_sign::do_brew_molecule_p () const +Molecule +Breathing_sign::do_brew_molecule () const { Staff_symbol_referencer_interface si (this); @@ -35,9 +35,7 @@ Breathing_sign::do_brew_molecule_p () const Interval i1(0, space / 6), i2(-space / 2, space / 2); Box b(i1, i2); - Molecule *output = new Molecule (lookup_l()->filledbox(b)); - - return output; + return lookup_l()->filledbox(b); } void diff --git a/lily/chord-name.cc b/lily/chord-name.cc index ba971322fc..e395663bd1 100644 --- a/lily/chord-name.cc +++ b/lily/chord-name.cc @@ -221,8 +221,8 @@ Chord_name::banter (Array pitch_arr, Chord_mol* name_p) const TODO: fix silly to-and-fro scm conversions */ -Molecule* -Chord_name::do_brew_molecule_p () const +Molecule +Chord_name::do_brew_molecule () const { Array pitch_arr; scm_to_array (get_elt_property ("pitches"), &pitch_arr); @@ -286,16 +286,16 @@ Chord_name::do_brew_molecule_p () const if (!name.addition_mol.empty_b ()) name.addition_mol.translate (Offset (0, super_y)); - Molecule* mol_p = new Molecule; - mol_p->add_at_edge (X_AXIS, RIGHT, name.tonic_mol, 0); + Molecule mol; + mol.add_at_edge (X_AXIS, RIGHT, name.tonic_mol, 0); // huh? if (!name.modifier_mol.empty_b ()) - mol_p->add_at_edge (X_AXIS, RIGHT, name.modifier_mol, 0); + mol.add_at_edge (X_AXIS, RIGHT, name.modifier_mol, 0); if (!name.addition_mol.empty_b ()) - mol_p->add_at_edge (X_AXIS, RIGHT, name.addition_mol, 0); + mol.add_at_edge (X_AXIS, RIGHT, name.addition_mol, 0); if (!name.inversion_mol.empty_b ()) - mol_p->add_at_edge (X_AXIS, RIGHT, name.inversion_mol, 0); + mol.add_at_edge (X_AXIS, RIGHT, name.inversion_mol, 0); if (!name.bass_mol.empty_b ()) - mol_p->add_at_edge (X_AXIS, RIGHT, name.bass_mol, 0); - return mol_p; + mol.add_at_edge (X_AXIS, RIGHT, name.bass_mol, 0); + return mol; } diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index 4dd5889831..e0c167b87f 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -199,7 +199,7 @@ Clef_engraver::do_pre_move_processing() { if(to_boolean (clef_p_->remove_elt_property("non-default"))) clef_p_->set_elt_property("visibility-lambda", - ly_eval_str ("all-visibility")); + ly_eval_str ("all-visible")); typeset_element (clef_p_); clef_p_ =0; diff --git a/lily/crescendo.cc b/lily/crescendo.cc index 481d30bca7..3f0f16b637 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -22,8 +22,8 @@ Crescendo::Crescendo () -Molecule* -Crescendo::do_brew_molecule_p () const +Molecule +Crescendo::do_brew_molecule () const { Real absdyn_dim = paper_l ()-> get_var ("crescendo_shorten"); Real extra_left = get_broken_left_end_align (); @@ -33,9 +33,11 @@ Crescendo::do_brew_molecule_p () const if (!isdir_b (dir) || !gh_pair_p (dyns)) { -Crescendo * me = (Crescendo*)this; + Crescendo * me = (Crescendo*)this; me->set_elt_property ("transparent", SCM_BOOL_T); - return new Molecule; + Molecule m; + + return m; } Direction gd = to_dir (dir); @@ -78,10 +80,9 @@ Crescendo * me = (Crescendo*)this; Real thick = paper_l ()->get_var ("crescendo_thickness"); const char* hairpin = (gd < 0)? "decrescendo" : "crescendo"; - Molecule * m - = new Molecule; - m->dim_.x () = Interval (0, width); - m->dim_.y () = Interval (-2*height, 2*height); + + Box b (Interval (0, width), + Interval (-2*height, 2*height)); SCM at = gh_list (ly_symbol2scm (hairpin), gh_double2scm (thick), @@ -90,8 +91,9 @@ Crescendo * me = (Crescendo*)this; gh_double2scm (continued ? height/2 : 0.0), SCM_UNDEFINED); - m->add_atom (at); - m->translate_axis (extra_left, X_AXIS); + Molecule m (b, at); + + m.translate_axis (extra_left, X_AXIS); return m; } diff --git a/lily/dots.cc b/lily/dots.cc index 36e0a34844..f63f77ddae 100644 --- a/lily/dots.cc +++ b/lily/dots.cc @@ -39,14 +39,11 @@ Dots::do_post_processing () si.set_position (p + directional_element (this).get ()); } } -Molecule* -Dots::do_brew_molecule_p () const +Molecule +Dots::do_brew_molecule () const { - Molecule *out = new Molecule; - Molecule fill = lookup_l ()->fill (Box (Interval (0,0), - Interval (0,0))); - out->add_molecule (fill); - + Molecule mol (lookup_l ()->fill (Box (Interval (0,0), + Interval (0,0)))); Molecule d = lookup_l ()->afm_find (String ("dots-dot")); Real dw = d.dim_[X_AXIS].length (); @@ -56,10 +53,10 @@ Dots::do_brew_molecule_p () const for (int i = gh_scm2int (get_elt_property ("dot-count")); i--; ) { d.translate_axis (2*dw,X_AXIS); - out->add_molecule (d); + mol.add_molecule (d); } - return out; + return mol; } diff --git a/lily/extender-spanner.cc b/lily/extender-spanner.cc index e70e848035..ff02c16d92 100644 --- a/lily/extender-spanner.cc +++ b/lily/extender-spanner.cc @@ -30,10 +30,10 @@ Extender_spanner::Extender_spanner () -Molecule* -Extender_spanner::do_brew_molecule_p () const +Molecule +Extender_spanner::do_brew_molecule () const { - Molecule* mol_p = new Molecule; + Molecule mol; Real w = spanner_length (); @@ -42,9 +42,9 @@ Extender_spanner::do_brew_molecule_p () const Molecule a = lookup_l ()->filledbox ( Box (Interval (0,w), Interval (0,h))); a.translate (Offset (dx_f_drul_[LEFT], 0)); - mol_p->add_molecule (a); + mol.add_molecule (a); - return mol_p; + return mol; } diff --git a/lily/font-metric.cc b/lily/font-metric.cc index c872d5b8d9..ef615ae0a9 100644 --- a/lily/font-metric.cc +++ b/lily/font-metric.cc @@ -126,3 +126,5 @@ Font_metric::print_smob (SCM s, SCM port, scm_print_state * ) } IMPLEMENT_UNSMOB(Font_metric, metrics); +IMPLEMENT_SMOBS(Font_metric); + diff --git a/lily/hyphen-spanner.cc b/lily/hyphen-spanner.cc index be36b99bf6..65470ea81c 100644 --- a/lily/hyphen-spanner.cc +++ b/lily/hyphen-spanner.cc @@ -30,10 +30,10 @@ Hyphen_spanner::Hyphen_spanner () dim_cache_[Y_AXIS]->set_callback (Dimension_cache::point_dimension_callback); } -Molecule* -Hyphen_spanner::do_brew_molecule_p () const +Molecule +Hyphen_spanner::do_brew_molecule () const { - Molecule* mol_p = new Molecule; + Molecule mol; Real w = spanner_length (); @@ -50,9 +50,9 @@ Hyphen_spanner::do_brew_molecule_p () const Molecule a = lookup_l ()->filledbox ( Box (Interval ((w-l)/2,(w+l)/2), Interval (h,h+th))); a.translate (Offset (dx_f_drul_[LEFT], 0)); - mol_p->add_molecule (a); + mol.add_molecule (a); - return mol_p; + return mol; } diff --git a/lily/include/atom.hh b/lily/include/atom.hh index 10b6fcb364..c2fb413312 100644 --- a/lily/include/atom.hh +++ b/lily/include/atom.hh @@ -13,8 +13,6 @@ #include "box.hh" #include "lily-guile.hh" -SCM translate_atom (Offset, SCM); -SCM translate_atom_axis (Real, Axis,SCM); SCM fontify_atom (Font_metric*, SCM atom); #endif diff --git a/lily/include/bar.hh b/lily/include/bar.hh index 21ee05890c..1e4f8c539a 100644 --- a/lily/include/bar.hh +++ b/lily/include/bar.hh @@ -17,7 +17,7 @@ public: Bar(); protected: virtual void do_pre_processing (); - virtual Molecule* do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; virtual Real get_bar_size () const; }; #endif // BAR_HH diff --git a/lily/include/beam.hh b/lily/include/beam.hh index 966f3f08e8..aff606c7a9 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -47,7 +47,7 @@ protected: virtual void do_pre_processing (); virtual void do_post_processing (); - virtual Molecule*do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; Molecule stem_beams (Stem *here, Stem *next, Stem *prev) const; private: diff --git a/lily/include/bezier-bow.hh b/lily/include/bezier-bow.hh index d442124a5c..4c2ea55fc9 100644 --- a/lily/include/bezier-bow.hh +++ b/lily/include/bezier-bow.hh @@ -19,36 +19,27 @@ from bow paratime_signatures. */ class Bezier_bow { - Bezier curve_; - Array encompass_; - - void blow_fit (); - void de_uglyfy (); - void calc_default (); - void to_canonic_form (); - void calc_tangent_controls (); - Real calc_enclosed_area_f () const; - void minimise_enclosed_area (); - Array area_gradient_offset_arr (); +public: + Bezier_bow (Array encompass, Direction dir); - Real fit_factor () const; + Bezier get_bezier () const; + Bezier get_default_bezier (Real h_inf, Real r_0) const; + Real get_default_height (Real h_inf, Real r_0, Real length) const; + void set_default_bezier (Real h_inf, Real r_0); + /** + The canonical bezier. + */ + Bezier curve_; - Paper_def* paper_l_; +protected: + Array encompass_; + +private: + void to_canonical_form (); Direction dir_; Real alpha_; Offset origin_; -public: - Real rc_factor_; - Real height_limit_; - Real ratio_; - - - Real vertical_offset_needed () const; - - Bezier_bow (Array points, Direction dir); - void calculate (); - Bezier get_curve () const; }; diff --git a/lily/include/bezier.hh b/lily/include/bezier.hh index 47890afca2..3ac97b7170 100644 --- a/lily/include/bezier.hh +++ b/lily/include/bezier.hh @@ -24,10 +24,12 @@ class Bezier public: Bezier (); + void assert_sanity () const; + void flip (Axis); + void reverse (); void rotate (Real); void translate (Offset); - void flip (Axis); - void check_sanity () const; + Real get_other_coordinate (Axis a, Real x) const; Array solve_point (Axis, Real coordinate) const; Array solve_derivative (Offset) const; @@ -35,12 +37,13 @@ public: Polynomial polynomial (Axis)const; Offset curve_point (Real t) const; - void reverse (); - static const int CONTROL_COUNT = 4; - Offset control_[CONTROL_COUNT]; + Array control_; }; +void flip (Array* arr_p, Axis a); +void rotate (Array* arr_p, Real phi); +void translate (Array* arr_p, Offset o); #endif // BEZIER_HH diff --git a/lily/include/breathing-sign.hh b/lily/include/breathing-sign.hh index bda300aaa0..83cf87e5e8 100644 --- a/lily/include/breathing-sign.hh +++ b/lily/include/breathing-sign.hh @@ -20,7 +20,7 @@ public: Breathing_sign (); protected: virtual void do_post_processing (); - virtual Molecule* do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; }; diff --git a/lily/include/chord-name.hh b/lily/include/chord-name.hh index dc49f205c2..ae1ddc0500 100644 --- a/lily/include/chord-name.hh +++ b/lily/include/chord-name.hh @@ -40,7 +40,7 @@ public: void banter (Array pitch_arr, Chord_mol* name_p) const; protected: - virtual Molecule* do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; }; #endif // CHORD_NAME_HH diff --git a/lily/include/crescendo.hh b/lily/include/crescendo.hh index ef7b6f3310..115b98b9fd 100644 --- a/lily/include/crescendo.hh +++ b/lily/include/crescendo.hh @@ -21,7 +21,7 @@ public: Crescendo(); protected: VIRTUAL_COPY_CONS(Score_element); - virtual Molecule*do_brew_molecule_p() const; + virtual Molecule do_brew_molecule() const; private: Molecule get_symbol() const; diff --git a/lily/include/dots.hh b/lily/include/dots.hh index 647a125513..6a36c9ef06 100644 --- a/lily/include/dots.hh +++ b/lily/include/dots.hh @@ -21,7 +21,7 @@ class Dots : public Item { protected: - virtual Molecule * do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; virtual void do_post_processing (); public: diff --git a/lily/include/extender-spanner.hh b/lily/include/extender-spanner.hh index cb24e42ded..0fa11e6f57 100644 --- a/lily/include/extender-spanner.hh +++ b/lily/include/extender-spanner.hh @@ -34,7 +34,7 @@ public: void set_textitem (Direction, Item*); protected: - virtual Molecule* do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; void do_post_processing (); VIRTUAL_COPY_CONS (Score_element); diff --git a/lily/include/hyphen-spanner.hh b/lily/include/hyphen-spanner.hh index 3086facc32..2530a5e116 100644 --- a/lily/include/hyphen-spanner.hh +++ b/lily/include/hyphen-spanner.hh @@ -25,7 +25,7 @@ Hyphen_spanner (); void set_textitem (Direction, Item*); protected: - virtual Molecule* do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; Interval do_height () const; void do_post_processing (); diff --git a/lily/include/key-item.hh b/lily/include/key-item.hh index 6c78e9f29e..55f320c9c9 100644 --- a/lily/include/key-item.hh +++ b/lily/include/key-item.hh @@ -36,7 +36,7 @@ public: int calculate_position(int p, int a) const; protected: - virtual Molecule* do_brew_molecule_p() const; + virtual Molecule do_brew_molecule() const; }; #endif // KEYITEM_HH diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 8d808ac403..b79ffbf895 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -20,8 +20,6 @@ SCM ly_eval_str (String s); SCM ly_symbol2scm (char const *); String ly_symbol2string (SCM); -SCM ly_offset2scm (Offset o); -Offset ly_scm2offset (SCM s); SCM ly_eval (SCM a); SCM ly_parse_scm (char const* s, int* n); SCM ly_quote_scm (SCM s); @@ -54,6 +52,9 @@ int scm_to (SCM s, int* i); SCM to_scm (Real r); Real scm_to (SCM s, Real* r); +SCM to_scm (Offset o); +Offset scm_to (SCM s, Offset* o); + /* snarfing. */ diff --git a/lily/include/local-key-item.hh b/lily/include/local-key-item.hh index b1d20b3ac4..3e2063167b 100644 --- a/lily/include/local-key-item.hh +++ b/lily/include/local-key-item.hh @@ -50,7 +50,7 @@ public: void add_pitch (Musical_pitch, bool cautionary, bool natural); protected: virtual void do_pre_processing(); - virtual Molecule* do_brew_molecule_p() const; + virtual Molecule do_brew_molecule() const; }; #endif // LOCALKEYITEM_HH diff --git a/lily/include/ly-smobs.icc b/lily/include/ly-smobs.icc index 97da61e6d0..10e9b03f30 100644 --- a/lily/include/ly-smobs.icc +++ b/lily/include/ly-smobs.icc @@ -18,7 +18,18 @@ unsmob_ ## name ( SCM s) \ return SMOB_TO_TYPE(CL, s); \ else \ return 0; \ -} +}\ +SCM smobify (CL *cl)\ +{\ + SCM s; \ + \ + SCM_NEWCELL(s); \ + SCM_SETCAR(s,CL::smob_tag_); \ + void * me_p = cl; \ + SCM_SETCDR(s,me_p); \ +return s;\ +}\ + #define IMPLEMENT_SMOBS(CL)\ @@ -55,14 +66,8 @@ CL::smobify_self () \ This is local. We don't assign to self_scm_ directly, to assure \ that S isn't GC-ed from under us. \ */ \ - SCM s; \ - \ - SCM_NEWCELL(s); \ + SCM s = smobify (this); \ self_scm_ = s; \ - \ - SCM_SETCAR(s,smob_tag_); \ - void * me_p = this; \ - SCM_SETCDR(s,me_p); \ scm_protect_object (s); \ \ /* no scm_done_malloc() ! */ \ diff --git a/lily/include/molecule.hh b/lily/include/molecule.hh index f5e94ef60a..7342d0d406 100644 --- a/lily/include/molecule.hh +++ b/lily/include/molecule.hh @@ -8,45 +8,51 @@ #ifndef MOLECULE_HH #define MOLECULE_HH +#include // size_t #include "lily-proto.hh" #include "box.hh" #include "axes.hh" #include "direction.hh" -#include "cons.hh" -#include "protected-scm.hh" - -//#define ATOM_SMOB +#include "lily-guile.hh" /** a group of individually translated symbols. You can add molecules to the top, to the right, etc. + It is implemented as a "tree" of scheme expressions, as in + + Expr = combine Expr Expr + | translate Offset Expr + | SCHEME + ; + + SCHEME is a Scheme expression that --when eval'd-- produces the + desired output. + + + Because of the way that Molecule is implemented, it is the most + efficient to add "fresh" molecules to what you're going to build. + Dimension behavior: Empty molecules have empty dimensions. If add_at_edge is used to init the molecule, we assume that DIMENSIONS = (Interval(0,0),Interval(0,0) - + */ class Molecule { - Protected_scm atom_list_; - - friend class Paper_outputter; - + /// can't alloc on heap. + void * operator new (size_t s); public: Box dim_; - + SCM expr_; + + Molecule (Box, SCM s); Molecule(); - ~Molecule(); /** Set dimensions to empty, or to (Interval(0,0),Interval(0,0) */ void set_empty (bool); void add_at_edge (Axis a, Direction d, const Molecule &m, Real padding); - - /** - Add an atom. The molecule assumes responsibility for cleaning. - */ - void add_atom (SCM as); void add_molecule (Molecule const &m); void translate (Offset); @@ -62,13 +68,10 @@ public: void translate_axis (Real,Axis); + /// how big is #this#? Box extent() const; Interval extent (Axis) const; - - Molecule (const Molecule&s); - - void operator=(const Molecule&); bool empty_b() const; void print ()const; }; diff --git a/lily/include/multi-measure-rest.hh b/lily/include/multi-measure-rest.hh index b86e566146..527e93fcd6 100644 --- a/lily/include/multi-measure-rest.hh +++ b/lily/include/multi-measure-rest.hh @@ -21,7 +21,7 @@ public: void add_column (Item*); Molecule compound_rest (int)const; protected: - virtual Molecule *do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; VIRTUAL_COPY_CONS (Score_element); virtual void do_add_processing (); diff --git a/lily/include/note-head.hh b/lily/include/note-head.hh index 25fdda52b4..fbebc0a404 100644 --- a/lily/include/note-head.hh +++ b/lily/include/note-head.hh @@ -24,7 +24,7 @@ public: protected: virtual void do_pre_processing(); - virtual Molecule* do_brew_molecule_p() const; + virtual Molecule do_brew_molecule() const; }; #endif // NOTEHEAD_HH diff --git a/lily/include/paper-outputter.hh b/lily/include/paper-outputter.hh index 09e8f58bdd..3a1d343c27 100644 --- a/lily/include/paper-outputter.hh +++ b/lily/include/paper-outputter.hh @@ -16,6 +16,7 @@ #include "lily-guile.hh" #include "protected-scm.hh" +// huh? #ifdef __powerpc__ #include "protected-scm.hh" #endif @@ -31,8 +32,6 @@ public: Paper_outputter (); void dump_onto (Paper_stream *); - - void output_int_def (String k, int v); void output_Real_def (String k, Real v); void output_String_def (String k, String v); @@ -41,7 +40,7 @@ public: void output_font_def (int i, String str); void output_font_switch (int i); void output_header (); - void output_molecule (Molecule const *, Offset, char const *); + void output_molecule (SCM expr, Offset, char const *); void output_comment (String s); void output_scheme (SCM scm); diff --git a/lily/include/rest.hh b/lily/include/rest.hh index ce95e6396b..56b13441a6 100644 --- a/lily/include/rest.hh +++ b/lily/include/rest.hh @@ -16,6 +16,6 @@ class Rest : public Rhythmic_head { protected: virtual void do_post_processing (); - virtual Molecule * do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; }; #endif // REST_HH diff --git a/lily/include/score-element.hh b/lily/include/score-element.hh index 2a962607fd..e3bec466ef 100644 --- a/lily/include/score-element.hh +++ b/lily/include/score-element.hh @@ -62,7 +62,7 @@ public: int status_i_; Paper_score *pscore_l_; - Molecule * output_p_; + Score_element (); Score_element (Score_element const&); virtual void print () const; @@ -137,7 +137,7 @@ protected: /// do printing of derived info. virtual void do_print () const; /// generate the molecule - virtual Molecule* do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; ///executed directly after the item is added to the Paper_score virtual void do_add_processing (); /// do calculations before determining horizontal spacing diff --git a/lily/include/script.hh b/lily/include/script.hh index 8902a94bbf..b9c0be1238 100644 --- a/lily/include/script.hh +++ b/lily/include/script.hh @@ -26,7 +26,7 @@ public: protected: virtual void do_pre_processing (); virtual void do_post_processing (); - Molecule* do_brew_molecule_p () const; + Molecule do_brew_molecule () const; }; #endif /* Stem_SCRIPT_HH */ diff --git a/lily/include/slur.hh b/lily/include/slur.hh index 2fc37f1df8..4f14512047 100644 --- a/lily/include/slur.hh +++ b/lily/include/slur.hh @@ -15,8 +15,6 @@ */ class Slur : public Spanner { - int cross_staff_count () const; - Offset encompass_offset (Note_column const* )const; public: Slur (); VIRTUAL_COPY_CONS(Score_element); @@ -25,7 +23,7 @@ public: protected: - virtual Molecule* do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; virtual Array get_encompass_offset_arr () const; Bezier get_curve () const; Drul_array dy_f_drul_; @@ -35,6 +33,13 @@ protected: virtual void do_post_processing (); virtual void do_add_processing (); Array get_rods () const; + +private: + void de_uglyfy (class Slur_bezier_bow* bb, Real default_height); + void set_extremities (); + void set_control_points (); + int cross_staff_count () const; + Offset encompass_offset (Note_column const* )const; }; #endif // SLUR_HH diff --git a/lily/include/span-bar.hh b/lily/include/span-bar.hh index 77b6429fe3..8100bbafed 100644 --- a/lily/include/span-bar.hh +++ b/lily/include/span-bar.hh @@ -38,7 +38,7 @@ protected: virtual void do_pre_processing(); virtual void do_post_processing(); - virtual Molecule * do_brew_molecule_p() const; + virtual Molecule do_brew_molecule() const; }; #endif // SPAN_BAR_HH diff --git a/lily/include/staff-symbol.hh b/lily/include/staff-symbol.hh index ea6a408653..88821052fe 100644 --- a/lily/include/staff-symbol.hh +++ b/lily/include/staff-symbol.hh @@ -23,6 +23,6 @@ public: int line_count () const; protected: VIRTUAL_COPY_CONS(Score_element); - virtual Molecule* do_brew_molecule_p() const; + virtual Molecule do_brew_molecule() const; }; #endif // STAFFSYM_HH diff --git a/lily/include/stem-tremolo.hh b/lily/include/stem-tremolo.hh index 9ef3b06829..2e963007e2 100644 --- a/lily/include/stem-tremolo.hh +++ b/lily/include/stem-tremolo.hh @@ -16,7 +16,7 @@ class Stem_tremolo : public Item { protected: Stem * stem_l () const; - virtual Molecule *do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; static Interval dim_callback (Dimension_cache const*); public: diff --git a/lily/include/stem.hh b/lily/include/stem.hh index 2f8298c4d8..b31627019f 100644 --- a/lily/include/stem.hh +++ b/lily/include/stem.hh @@ -91,7 +91,7 @@ protected: virtual void do_pre_processing(); static Interval dim_callback (Dimension_cache const*); - virtual Molecule* do_brew_molecule_p() const; + virtual Molecule do_brew_molecule() const; void set_spacing_hints () ; }; diff --git a/lily/include/text-item.hh b/lily/include/text-item.hh index e3c7a89c33..f6aaa02928 100644 --- a/lily/include/text-item.hh +++ b/lily/include/text-item.hh @@ -20,7 +20,7 @@ class Text_item : public Item public: VIRTUAL_COPY_CONS (Score_element); protected: - virtual Molecule *do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; }; #endif /* Text_ITEM_HH */ diff --git a/lily/include/tie.hh b/lily/include/tie.hh index 5e07334424..53dc0733ec 100644 --- a/lily/include/tie.hh +++ b/lily/include/tie.hh @@ -29,7 +29,7 @@ public: virtual Direction get_default_dir() const; protected: - virtual Molecule* do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; virtual Array get_encompass_offset_arr () const; Bezier get_curve () const; diff --git a/lily/include/time-signature.hh b/lily/include/time-signature.hh index 4d02f04693..3bdc1208e1 100644 --- a/lily/include/time-signature.hh +++ b/lily/include/time-signature.hh @@ -24,7 +24,7 @@ class Time_signature: public Item Molecule time_signature (int, int)const; protected: - virtual Molecule*do_brew_molecule_p() const; + virtual Molecule do_brew_molecule() const; public: Time_signature () ; diff --git a/lily/include/tuplet-spanner.hh b/lily/include/tuplet-spanner.hh index e201413197..a38a9dcb4c 100644 --- a/lily/include/tuplet-spanner.hh +++ b/lily/include/tuplet-spanner.hh @@ -28,7 +28,7 @@ protected: void calc_dy (Real *) const; void calc_position_and_height (Real*,Real *dy)const; - virtual Molecule* do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; VIRTUAL_COPY_CONS(Score_element); virtual void do_add_processing (); virtual void do_post_processing (); diff --git a/lily/include/volta-spanner.hh b/lily/include/volta-spanner.hh index a4f32c0354..bdc42ffdf4 100644 --- a/lily/include/volta-spanner.hh +++ b/lily/include/volta-spanner.hh @@ -22,7 +22,7 @@ public: void add_bar (Bar*); protected: - virtual Molecule* do_brew_molecule_p () const; + virtual Molecule do_brew_molecule () const; VIRTUAL_COPY_CONS (Score_element); virtual void do_add_processing (); diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc index c94b17811b..40b9bd4bfd 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -99,7 +99,7 @@ Key_engraver::acknowledge_element (Score_element_info info) if (!def) { item_p_->set_elt_property ("visibility-lambda", - ly_eval_str ("all-visibility")); + ly_eval_str ("all-visible")); } } diff --git a/lily/key-item.cc b/lily/key-item.cc index 56ab8a0506..55c594c01c 100644 --- a/lily/key-item.cc +++ b/lily/key-item.cc @@ -93,10 +93,10 @@ Key_item::calculate_position(int p, int a) const - space the `natural' signs wider - dehair this */ -Molecule* -Key_item::do_brew_molecule_p() const +Molecule +Key_item::do_brew_molecule() const { - Molecule*output = new Molecule; + Molecule mol; Staff_symbol_referencer_interface si (this); Real inter = si.staff_space ()/2.0; @@ -118,7 +118,7 @@ Key_item::do_brew_molecule_p() const Molecule m =lookup_l ()->afm_find ("accidentals-0"); m.translate_axis (calculate_position(old_pitch_arr_[i], old_acc_arr_[i]) * inter, Y_AXIS); - output->add_at_edge (X_AXIS, RIGHT, m,0); + mol.add_at_edge (X_AXIS, RIGHT, m,0); } } @@ -130,17 +130,17 @@ Key_item::do_brew_molecule_p() const Interval x(0, inter); Interval y(0,0); - output->add_at_edge (X_AXIS, RIGHT, lookup_l()->fill (Box(x,y)),0); + mol.add_at_edge (X_AXIS, RIGHT, lookup_l()->fill (Box(x,y)),0); } for (int i =0; i < pitch_arr_.size(); i++) { Molecule m = lookup_l ()->afm_find ("accidentals-" + to_str (acc_arr_[i])); m.translate_axis (calculate_position(pitch_arr_[i], acc_arr_[i]) * inter, Y_AXIS); - output->add_at_edge (X_AXIS, RIGHT, m, 0); + mol.add_at_edge (X_AXIS, RIGHT, m, 0); } - return output; + return mol; } diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index 0ed09ec2de..ccca3060e9 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -328,13 +328,13 @@ appendable_list_append (SCM l, SCM elt) SCM -ly_offset2scm (Offset o) +to_scm (Offset o) { return gh_cons (gh_double2scm (o[X_AXIS]), gh_double2scm(o[Y_AXIS])); } Offset -ly_scm2offset (SCM s) +scm_to (SCM s, Offset*) { return Offset (gh_scm2double (gh_car (s)), gh_scm2double (gh_cdr (s))); diff --git a/lily/local-key-item.cc b/lily/local-key-item.cc index d18824b443..249abd0743 100644 --- a/lily/local-key-item.cc +++ b/lily/local-key-item.cc @@ -58,13 +58,17 @@ Local_key_item::accidental (int j, bool cautionary, bool natural) const return m; } -Molecule* -Local_key_item::do_brew_molecule_p() const +/* + UGH. clean me up + */ +Molecule +Local_key_item::do_brew_molecule() const { - Molecule*output = new Molecule; + Molecule mol; Staff_symbol_referencer_interface si (this); Real note_distance = si.staff_space ()/2; - Molecule *octave_mol_p = 0; + Molecule octave_mol; + bool oct_b = false; int lastoct = -100; for (int i = 0; i < accidental_arr_.size(); i++) @@ -73,14 +77,14 @@ Local_key_item::do_brew_molecule_p() const // do one octave if (p.octave_i_ != lastoct) { - if (octave_mol_p) + if (oct_b) { Real dy =lastoct*7* note_distance; - octave_mol_p->translate_axis (dy, Y_AXIS); - output->add_molecule (*octave_mol_p); - delete octave_mol_p; + octave_mol.translate_axis (dy, Y_AXIS); + mol.add_molecule (octave_mol); + octave_mol = Molecule (); } - octave_mol_p= new Molecule; + oct_b = true; } lastoct = p.octave_i_; @@ -94,15 +98,15 @@ Local_key_item::do_brew_molecule_p() const accidental_arr_[i].natural_b_)); m.translate_axis (dy, Y_AXIS); - octave_mol_p->add_at_edge (X_AXIS, RIGHT, m, 0); + octave_mol.add_at_edge (X_AXIS, RIGHT, m, 0); } - if (octave_mol_p) + if (oct_b) { Real dy =lastoct*7*note_distance; - octave_mol_p->translate_axis (dy, Y_AXIS); - output->add_molecule (*octave_mol_p); - delete octave_mol_p; + octave_mol.translate_axis (dy, Y_AXIS); + mol.add_molecule (octave_mol); + octave_mol = Molecule (); } if (accidental_arr_.size()) @@ -123,10 +127,10 @@ Local_key_item::do_brew_molecule_p() const Box b(Interval (0, gh_scm2double (pads[d]) * note_distance), Interval (0,0)); Molecule m (lookup_l ()->fill (b)); - output->add_at_edge (X_AXIS, d, m, 0); + mol.add_at_edge (X_AXIS, d, m, 0); } while ( flip (&d)!= LEFT); } - return output; + return mol; } diff --git a/lily/lookup.cc b/lily/lookup.cc index 28a50a073e..f1d1189b24 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -59,9 +59,10 @@ Lookup::afm_find (String s, bool warn) const } } AFM_CharMetricInfo const *cm = afm_l_->find_char_metric (s, warn); - Molecule m; + if (!cm) { + Molecule m; m.set_empty (false); return m; } @@ -71,9 +72,7 @@ Lookup::afm_find (String s, bool warn) const SCM_UNDEFINED)); at= fontify_atom (afm_l_,at); - m.dim_ = afm_bbox_to_box (cm->charBBox); - m.add_atom (at); - return m; + return Molecule ( afm_bbox_to_box (cm->charBBox), at); } Molecule @@ -177,19 +176,17 @@ Lookup::beam (Real slope, Real width, Real thick) Real max_y = (0 >? height) + thick/2; - Molecule m; - m.dim_[X_AXIS] = Interval (0, width); - m.dim_[Y_AXIS] = Interval (min_y, max_y); - - SCM at = (gh_list (ly_symbol2scm ("beam"), - gh_double2scm (width), - gh_double2scm (slope), - gh_double2scm (thick), - SCM_UNDEFINED)); + Box b( Interval (0, width), + Interval (min_y, max_y)); - m.add_atom (at); - return m; + + SCM at = gh_list (ly_symbol2scm ("beam"), + gh_double2scm (width), + gh_double2scm (slope), + gh_double2scm (thick), + SCM_UNDEFINED); + return Molecule (b, at); } @@ -198,9 +195,10 @@ Molecule Lookup::dashed_slur (Bezier b, Real thick, Real dash) { SCM l = SCM_EOL; + // this is silly, we have array_to_scm for (int i= 4; i -- ;) { - l = gh_cons (ly_offset2scm (b.control_[i]), l); + l = gh_cons (to_scm (b.control_[i]), l); } SCM at = (gh_list (ly_symbol2scm ("dashed-slur"), @@ -208,9 +206,9 @@ Lookup::dashed_slur (Bezier b, Real thick, Real dash) gh_double2scm (dash), ly_quote_scm (l), SCM_UNDEFINED)); - Molecule m; - m.add_atom (at); - return m; + + Box box (Interval(0,0),Interval( 0,0)); + return Molecule (box, at); } @@ -228,8 +226,6 @@ Lookup::fill (Box b) Molecule Lookup::filledbox (Box b ) { - Molecule m; - SCM at = (gh_list (ly_symbol2scm ("filledbox"), gh_double2scm (-b[X_AXIS][LEFT]), gh_double2scm (b[X_AXIS][RIGHT]), @@ -237,9 +233,7 @@ Lookup::filledbox (Box b ) gh_double2scm (b[Y_AXIS][UP]), SCM_UNDEFINED)); - m.dim_ = b; - m.add_atom (at); - return m; + return Molecule ( b,at); } Molecule @@ -320,7 +314,6 @@ sanitise_PS_string (String t) Molecule Lookup::text (String style, String text, Paper_def *paper_l) { - Molecule m; if (style.empty_b ()) style = "roman"; @@ -361,15 +354,14 @@ Lookup::text (String style, String text, Paper_def *paper_l) else if (output_global_ch == "ps") text = sanitise_PS_string (text); - m.dim_ = metric_l->text_dimension (text); + SCM at = (gh_list (ly_symbol2scm ("text"), ly_str02scm (text.ch_C()), SCM_UNDEFINED)); at = fontify_atom (metric_l,at); - - m.add_atom (at); - return m; + return Molecule ( metric_l->text_dimension (text), + at); } @@ -377,8 +369,6 @@ Lookup::text (String style, String text, Paper_def *paper_l) Molecule Lookup::staff_brace (Real y, int staff_size) { - Molecule m; - // URG Real step = 1.0; int minht = 2 * staff_size; @@ -396,10 +386,9 @@ Lookup::staff_brace (Real y, int staff_size) at = fontify_atom (all_fonts_global_p->find_font (nm), at); - m.dim_[Y_AXIS] = Interval (-y/2,y/2); - m.dim_[X_AXIS] = Interval (0,0); - m.add_atom (at); - return m; + Box b ( Interval (-y/2,y/2), + Interval (0,0)); + return Molecule(b, at); } @@ -417,10 +406,11 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick) back.control_[2] += curvethick * complex_exp (Offset (0, alpha + M_PI/2)); SCM scontrols[8]; + // this is silly, we have array_to_scm for (int i=4; i--;) - scontrols[ i ] = ly_offset2scm (back.control_[i]); + scontrols[ i ] = to_scm (back.control_[i]); for (int i=4 ; i--;) - scontrols[i+4] = ly_offset2scm (curve.control_[i]); + scontrols[i+4] = to_scm (curve.control_[i]); /* Need the weird order b.o. the way PS want its arguments @@ -438,17 +428,13 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick) gh_double2scm (linethick), SCM_UNDEFINED)); - Molecule m; - m.dim_[X_AXIS] = curve.extent (X_AXIS); - m.dim_[Y_AXIS] = curve.extent (Y_AXIS); - m.add_atom (at); - return m; + Box b ( curve.extent (X_AXIS), curve.extent (Y_AXIS)); + return Molecule (b, at); } Molecule Lookup::staff_bracket (Real height, Paper_def* paper_l) { - Molecule m; SCM at = ( gh_list (ly_symbol2scm ("bracket"), gh_double2scm (paper_l->get_var("bracket_arch_angle")), gh_double2scm (paper_l->get_var("bracket_arch_width")), @@ -458,10 +444,9 @@ Lookup::staff_bracket (Real height, Paper_def* paper_l) gh_double2scm (paper_l->get_var("bracket_arch_thick")), gh_double2scm (paper_l->get_var("bracket_thick")), SCM_UNDEFINED)); - - m.add_atom (at); - m.dim_[Y_AXIS] = Interval (-height/2,height/2); - m.dim_[X_AXIS] = Interval (0,4 PT); + + Box b ( Interval (-height/2,height/2), Interval (0,4 PT)); + Molecule m (b, at); m.translate_axis (- 4. / 3. * m.dim_[X_AXIS].length (), X_AXIS); return m; diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc index 6e9dbfdb24..404644f2ce 100644 --- a/lily/mark-engraver.cc +++ b/lily/mark-engraver.cc @@ -18,7 +18,6 @@ Mark_engraver::Mark_engraver () mark_req_l_ = 0; axis_ = Y_AXIS; type_ = "mark"; - visibility_lambda_ = ly_eval_str ("mark-visibility"); } void diff --git a/lily/molecule.cc b/lily/molecule.cc index f447d542d6..cd4d048206 100644 --- a/lily/molecule.cc +++ b/lily/molecule.cc @@ -10,8 +10,10 @@ ugh. Rewrite not finished yet. Still must copy atom lists. */ + #include +#include "dimensions.hh" #include "interval.hh" #include "string.hh" #include "molecule.hh" @@ -32,67 +34,60 @@ Molecule::extent(Axis a) const return dim_[a]; } +Molecule::Molecule (Box b, SCM func) +{ + expr_ = func; + dim_ = b ; +} + +Molecule::Molecule() +{ + expr_ = SCM_EOL; + set_empty (true); +} + void Molecule::translate (Offset o) { - if (isinf (o.length ())) - { - programming_error ("Translating infinitely. Ignore."); - return; - } - - for (SCM ptr = gh_cdr (atom_list_); ptr != SCM_EOL; ptr = gh_cdr(ptr)) + Axis a = X_AXIS; + while (a < NO_AXES) { - gh_set_car_x (ptr, translate_atom (o, gh_car (ptr))); + if (abs(o[a]) > 30 CM + || isinf (o[a]) || isnan (o[a])) + { + programming_error ("Improbable offset for translation: setting to zero"); + o[a] = 0.0; + } + incr (a); } + + expr_ = gh_list (ly_symbol2scm ("translate-molecule"), + to_scm (o), + expr_, SCM_UNDEFINED); if (!empty_b ()) dim_.translate (o); } + void Molecule::translate_axis (Real x,Axis a) { - if (isinf (x)) - { - programming_error ("Translating infinitely. Ignore."); - return; - } - for (SCM ptr = gh_cdr (atom_list_); ptr != SCM_EOL; ptr = gh_cdr(ptr)) - { - gh_set_car_x (ptr, translate_atom_axis (x, a, gh_car (ptr))); - } + Offset o(0,0); + o[a] = x; + translate (o); +} + - if (!dim_[a].empty_b ()) - dim_[a] += x; -} void Molecule::add_molecule (Molecule const &m) { - for (SCM ptr = gh_cdr (m.atom_list_); ptr != SCM_EOL; ptr = gh_cdr(ptr)) - { - add_atom (gh_car (ptr)); - } + expr_ = gh_list (ly_symbol2scm ("combine-molecule"), + m.expr_, + expr_, SCM_UNDEFINED); dim_.unite (m.dim_); } -void -Molecule::add_atom (SCM atomsmob) -{ - gh_set_cdr_x (atom_list_, - gh_cons (atomsmob, gh_cdr (atom_list_))); -} - -void -Molecule::operator=(Molecule const & src) -{ - if (&src == this) - return; - - atom_list_ = gh_cons (SCM_EOL,scm_list_copy (gh_cdr (src.atom_list_))); - dim_= src.dim_; -} - void Molecule::set_empty (bool e) { @@ -112,41 +107,16 @@ void Molecule::print () const { #ifndef NPRINT - for (SCM ptr = gh_cdr (atom_list_); ptr != SCM_EOL; ptr = gh_cdr(ptr)) - gh_display (gh_car (ptr)); + gh_display (expr_); #endif } -Molecule::Molecule (Molecule const &s) -{ - atom_list_ = gh_cons (SCM_EOL, scm_list_copy (gh_cdr (s.atom_list_))); - dim_ = s.dim_; -} - -Molecule::~Molecule () -{ -} - - void Molecule::align_to (Axis a, Direction d) { - if (d == CENTER) - { - Interval i (extent (a)); - translate_axis (-i.center (), a); - } - else - { - translate_axis (-extent (a)[d], a); - } -} - -Molecule::Molecule () -{ - dim_[X_AXIS].set_empty (); - dim_[Y_AXIS].set_empty (); - atom_list_ = gh_cons (SCM_EOL, SCM_EOL); + Interval i (extent (a)); + Real r = (d == CENTER) ? i.center () : i[d]; + translate_axis (-r, a); } @@ -168,5 +138,5 @@ Molecule::add_at_edge (Axis a, Direction d, Molecule const &m, Real padding) bool Molecule::empty_b () const { - return gh_cdr (atom_list_) == SCM_EOL; + return expr_ == SCM_EOL; } diff --git a/lily/moment.cc b/lily/moment.cc index 3d7a69474e..45002d8eed 100644 --- a/lily/moment.cc +++ b/lily/moment.cc @@ -64,6 +64,7 @@ make_rational (SCM n, SCM d) #include "ly-smobs.icc" +IMPLEMENT_UNSMOB(Moment,moment); IMPLEMENT_SMOBS(Moment); void diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc index 2b5ff1ac50..cba889d3f7 100644 --- a/lily/multi-measure-rest.cc +++ b/lily/multi-measure-rest.cc @@ -30,8 +30,8 @@ Multi_measure_rest::Multi_measure_rest () [TODO] 17 * variable-sized multi-measure rest symbol: |====| ?? */ -Molecule* -Multi_measure_rest::do_brew_molecule_p () const +Molecule +Multi_measure_rest::do_brew_molecule () const { Real staff_space = staff_symbol_referencer (this).staff_space (); @@ -48,7 +48,7 @@ Multi_measure_rest::do_brew_molecule_p () const sp_iv[d] = coldim[-d] ; } while ((flip (&d)) != LEFT); - Molecule *mol_p = new Molecule; + Molecule mol; Real x_off = 0.0; Real rx = spanned_drul_[LEFT]->relative_coordinate (0, X_AXIS); @@ -119,17 +119,17 @@ Multi_measure_rest::do_brew_molecule_p () const s = lookup_l ()->afm_find (idx); } - mol_p->add_molecule (s); + mol.add_molecule (s); if (measures > 1) { Molecule s (lookup_l ()->text ("number", to_str (measures), paper_l ())); s.align_to (X_AXIS, CENTER); s.translate_axis (3.0 * staff_space, Y_AXIS); - mol_p->add_molecule (s); + mol.add_molecule (s); } - mol_p->translate_axis (x_off, X_AXIS); - return mol_p; + mol.translate_axis (x_off, X_AXIS); + return mol; } /* diff --git a/lily/note-head.cc b/lily/note-head.cc index d7da247660..188d967f3b 100644 --- a/lily/note-head.cc +++ b/lily/note-head.cc @@ -26,7 +26,7 @@ Note_head::ledger_line (Interval xwid) const { Drul_array endings; endings[LEFT] = lookup_l()->afm_find ("noteheads-ledgerending"); - Molecule * e = &endings[LEFT]; + Molecule *e = &endings[LEFT]; endings[RIGHT] = *e; Real thick = e->dim_[Y_AXIS].length(); @@ -79,8 +79,8 @@ Note_head::do_pre_processing () -Molecule* -Note_head::do_brew_molecule_p() const +Molecule +Note_head::do_brew_molecule() const { Staff_symbol_referencer_interface si (this); @@ -98,15 +98,14 @@ Note_head::do_brew_molecule_p() const type = ly_scm2string (style); } - Molecule* out = - new Molecule (lookup_l()->afm_find (String ("noteheads-") + to_str (balltype_i ()) + type)); + Molecule out = lookup_l()->afm_find (String ("noteheads-") + to_str (balltype_i ()) + type); - Box ledgerless = out->dim_; + Box ledgerless = out.dim_; if (streepjes_i) { Direction dir = (Direction)sign (p); - Interval hd = out->dim_[X_AXIS]; + Interval hd = out.dim_[X_AXIS]; Real hw = hd.length ()/4; Molecule ledger (ledger_line (Interval (hd[LEFT] - hw, @@ -119,11 +118,11 @@ Note_head::do_brew_molecule_p() const Molecule s (ledger); s.translate_axis (-dir * inter_f * (i*2 + parity), Y_AXIS); - out->add_molecule (s); + out.add_molecule (s); } } - out->dim_ = ledgerless; + out.dim_ = ledgerless; return out; } diff --git a/lily/paper-outputter.cc b/lily/paper-outputter.cc index f3863b13bd..fc5630d9ac 100644 --- a/lily/paper-outputter.cc +++ b/lily/paper-outputter.cc @@ -73,57 +73,43 @@ Paper_outputter::output_header () } void -Paper_outputter::output_molecule (Molecule const*m, Offset o, char const *nm) +Paper_outputter::output_molecule (SCM expr, Offset o, char const *nm) { +#if 0 if (flower_dstream) { output_comment (nm); } +#endif + + SCM offset_sym = ly_symbol2scm ("translate-molecule"); + SCM combine_sym = ly_symbol2scm ("combine-molecule"); +enter: - SCM offset_sym = ly_symbol2scm ("translate-atom"); - for (SCM ptr = gh_cdr (m->atom_list_); ptr != SCM_EOL; ptr = gh_cdr (ptr)) + if (!gh_pair_p (expr)) + return; + + SCM head =gh_car (expr); + if (head == offset_sym) { - SCM func = gh_car (ptr); - SCM funcptr = func; - - Offset a_off (0,0); - while (gh_pair_p (funcptr)) - { - if (gh_car (funcptr) == offset_sym) - { - SCM quot = gh_cadr (funcptr); - a_off += ly_scm2offset (gh_cadr (quot)); - } - funcptr = scm_last_pair (funcptr); - if (funcptr != SCM_EOL ) - { - funcptr = gh_car (funcptr); - } - } - - a_off += o; - - Axis a = X_AXIS; - while (a < NO_AXES) - { - if (abs(a_off[a]) > 30 CM - || isinf (a_off[a]) || isnan (a_off[a])) - { - programming_error ("Improbable offset for object: setting to zero"); - a_off[a] = 0.0; - } - incr (a); - } - - - SCM box_scm - = gh_list (ly_symbol2scm ("placebox"), - gh_double2scm (a_off[X_AXIS]), - gh_double2scm (a_off[Y_AXIS]), - func, - SCM_UNDEFINED); + o += scm_to (gh_cadr (expr), &o); + expr = gh_caddr (expr); + goto enter; + } + else if (head == combine_sym) + { + output_molecule (gh_cadr (expr), o, nm); + expr = gh_caddr (expr); + goto enter; // tail recursion + } + else + { + output_scheme (gh_list (ly_symbol2scm ("placebox"), + gh_double2scm (o[X_AXIS]), + gh_double2scm (o[Y_AXIS]), + expr, + SCM_UNDEFINED)); - output_scheme (box_scm); } } diff --git a/lily/rest.cc b/lily/rest.cc index 671c59bf72..783372390c 100644 --- a/lily/rest.cc +++ b/lily/rest.cc @@ -37,8 +37,8 @@ Rest::do_post_processing () } -Molecule * -Rest::do_brew_molecule_p () const +Molecule +Rest::do_brew_molecule () const { bool ledger_b =false; @@ -58,7 +58,7 @@ Rest::do_brew_molecule_p () const String idx = ("rests-") + to_str (balltype_i ()) + (ledger_b ? "o" : "") + style; - return new Molecule(lookup_l ()->afm_find (idx)); + return lookup_l ()->afm_find (idx); } diff --git a/lily/scm-hash.cc b/lily/scm-hash.cc index e864d60875..83357769fa 100644 --- a/lily/scm-hash.cc +++ b/lily/scm-hash.cc @@ -31,8 +31,6 @@ Scheme_hash_table::do_smobify_self () { } -#include "ly-smobs.icc" -IMPLEMENT_SMOBS(Scheme_hash_table); SCM Scheme_hash_table::mark_smob (SCM s) @@ -108,3 +106,7 @@ Scheme_hash_table::to_alist () const return l; } + +#include "ly-smobs.icc" +IMPLEMENT_UNSMOB(Scheme_hash_table,scheme_hash); +IMPLEMENT_SMOBS(Scheme_hash_table); diff --git a/lily/score-element.cc b/lily/score-element.cc index 63a89e500f..bdc28e626a 100644 --- a/lily/score-element.cc +++ b/lily/score-element.cc @@ -30,7 +30,6 @@ Score_element::Score_element() { - output_p_ =0; dim_cache_[X_AXIS] = new Dimension_cache; dim_cache_[Y_AXIS] = new Dimension_cache; dim_cache_[X_AXIS]->elt_l_ = dim_cache_[Y_AXIS]->elt_l_ = this; @@ -66,7 +65,6 @@ Score_element::Score_element (Score_element const&s) original_l_ =(Score_element*) &s; element_property_alist_ = SCM_EOL; // onstack; - output_p_ =0; status_i_ = s.status_i_; lookup_l_ = s.lookup_l_; pscore_l_ = s.pscore_l_; @@ -76,7 +74,6 @@ Score_element::Score_element (Score_element const&s) Score_element::~Score_element() { - assert (!output_p_); assert (status_i_ >=0); status_i_ = -1; @@ -146,12 +143,8 @@ Interval Score_element::molecule_extent(Dimension_cache const *c) { Score_element *s = dynamic_cast(c->element_l()); - Molecule*m = s->do_brew_molecule_p(); - - Interval iv = m->extent()[c->axis ()]; - - delete m; - return iv; + Molecule m = s->do_brew_molecule(); + return m.extent()[c->axis ()]; } @@ -255,11 +248,8 @@ Score_element::output_processing () if (to_boolean (get_elt_property ("transparent"))) return; - // we're being silly here. - if (output_p_) - delete output_p_; - output_p_ = do_brew_molecule_p (); + Molecule m (do_brew_molecule ()); Offset o (relative_coordinate (0, X_AXIS), relative_coordinate (0, Y_AXIS)); SCM s = get_elt_property ("extra-offset"); @@ -270,12 +260,7 @@ Score_element::output_processing () o[Y_AXIS] += il * gh_scm2double (gh_cdr (s)); } - pscore_l_->outputter_l_->output_molecule (output_p_, - o, - classname(this)); - - delete output_p_; - output_p_ =0; + pscore_l_->outputter_l_->output_molecule (m.expr_, o, classname(this)); } /* @@ -316,22 +301,20 @@ Score_element::do_add_processing() -Molecule* -Score_element::do_brew_molecule_p() const +Molecule +Score_element::do_brew_molecule() const { SCM glyph = get_elt_property ("glyph"); if (gh_string_p (glyph)) { - Molecule*output = new Molecule (lookup_l ()->afm_find (String (ly_scm2string (glyph)))); + return lookup_l ()->afm_find (String (ly_scm2string (glyph))); - return output; } else { Interval emp; emp.set_empty (); - Molecule a (lookup_l ()->fill (Box (emp,emp))); - return new Molecule (a); + return lookup_l ()->fill (Box (emp,emp)); } } @@ -609,8 +592,8 @@ Score_element::fixup_refpoint () #include "ly-smobs.icc" -IMPLEMENT_SMOBS(Score_element); IMPLEMENT_UNSMOB(Score_element, element); +IMPLEMENT_SMOBS(Score_element); SCM Score_element::mark_smob (SCM ses) { diff --git a/lily/script.cc b/lily/script.cc index 494faed2b4..7e19e16940 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -56,15 +56,15 @@ Script::do_post_processing () i.set_direction (d); } -Molecule* -Script::do_brew_molecule_p () const +Molecule +Script::do_brew_molecule () const { Direction dir = DOWN; SCM d = get_elt_property ("direction"); if (isdir_b (d)) dir = to_dir (d); - return new Molecule (get_molecule (dir)); + return get_molecule (dir); } diff --git a/lily/slur.cc b/lily/slur.cc index bc64fd20c4..679ece65b5 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -24,17 +24,213 @@ #include "molecule.hh" #include "debug.hh" #include "box.hh" -#include "bezier.hh" #include "bezier-bow.hh" #include "main.hh" #include "cross-staff.hh" #include "group-interface.hh" +#include "staff-symbol-referencer.hh" +#include "lily-guile.icc" + + +class Slur_bezier_bow : public Bezier_bow +{ +public: + Slur_bezier_bow (Array encompass, Direction dir); + Array area_x_gradients_array (Real area); + void blow_fit (); + Real enclosed_area_f () const; + Real fit_factor () const; + void minimise_enclosed_area (Paper_def* paper_l, Real default_height); +}; + +Slur_bezier_bow::Slur_bezier_bow (Array encompass, Direction dir) + : Bezier_bow (encompass, dir) +{ +} + +void +Slur_bezier_bow::blow_fit () +{ + Real len = curve_.control_[3][X_AXIS]; + Real h = curve_.control_[1][Y_AXIS] * fit_factor () / len; + curve_.control_[1][Y_AXIS] = h * len; + curve_.control_[2][Y_AXIS] = h * len; + curve_.assert_sanity (); +} + + +Real +Slur_bezier_bow::enclosed_area_f () const +{ + Real a = 0; + for (int i=0; i < encompass_.size (); i++) + { + Interval x; + Interval y; + if (i == 0) + { + x = Interval (0, encompass_[1][X_AXIS] / 2); + y = Interval (0, + curve_.get_other_coordinate (X_AXIS, + encompass_[1][X_AXIS] + / 2)); + } + else if (i == encompass_.size () - 1) + { + x = Interval ((encompass_[i-1][X_AXIS] + encompass_[i][X_AXIS])/2, + encompass_[i][X_AXIS]); + y = Interval (0, + (curve_.get_other_coordinate (X_AXIS, + (x[MIN] + x[MAX]) / 2))); + } + else + { + x = Interval ((encompass_[i-1][X_AXIS] + encompass_[i][X_AXIS]) / 2, + (encompass_[i][X_AXIS] + encompass_[i+1][X_AXIS]) / 2); + y = Interval (encompass_[i][Y_AXIS], + (curve_.get_other_coordinate (X_AXIS, x[MIN]) + + curve_.get_other_coordinate (X_AXIS, + (x[MIN] + x[MAX]) / 2) + + curve_.get_other_coordinate (X_AXIS, x[MAX])) / 3); + } + + Real da = x.length () * y.length (); + a += da; + } + return a; +} + +Array +Slur_bezier_bow::area_x_gradients_array (Real area) +{ + Real len = curve_.control_[3][X_AXIS]; + Real grow = len / 10.0; + Array da (2); + for (int i=0; i < 2; i++) + { + Real r = curve_.control_[i+1][X_AXIS]; + curve_.control_[i+1][X_AXIS] += grow; + da[i] = (enclosed_area_f () - area) / grow; + curve_.control_[i+1][X_AXIS] = r; + } + return da; +} + +void +Slur_bezier_bow::minimise_enclosed_area (Paper_def* paper_l, + Real default_height) +{ + Real length = curve_.control_[3][X_AXIS]; + Real bbc = paper_l->get_var ("bezier_beautiful"); + Real beautiful = length * default_height / bbc; + + DEBUG_OUT << to_str ("Beautiful: %f\n", beautiful); + DEBUG_OUT << to_str ("Length: %f\n", length); + DEBUG_OUT << to_str ("D-height: %f\n", default_height); + DEBUG_OUT << to_str ("FitFac: %f\n", fit_factor ()); + + if (fit_factor () > 1.0) + blow_fit (); + + Real pct_c0 = paper_l->get_var ("bezier_pct_c0"); + Real pct_c3 = paper_l->get_var ("bezier_pct_c3"); + Real pct_in_max = paper_l->get_var ("bezier_pct_in_max"); + Real pct_out_max = paper_l->get_var ("bezier_pct_out_max"); + Real steps = paper_l->get_var ("bezier_area_steps"); + + for (int i=0; i < steps; i++) + { + Real area = enclosed_area_f (); + if (!i) + DEBUG_OUT << to_str ("Init area: %f\n", area); + + if (area <= beautiful) + break; + + Array da = area_x_gradients_array (area); + + // urg + Real pct = pct_c0 + pct_c3 * length * length * length; + pct *= (steps - i) / steps; + if (da[0] > 0 || da[1] < 0) + pct = pct x1 && encompass_[i][X_AXIS] < x2) + { + Real y = curve_.get_other_coordinate (X_AXIS, encompass_[i][X_AXIS]); + if (y>0) + { + Real f = encompass_[i][Y_AXIS] / y; + factor = factor >? f; + } + } + } + + + return factor; +} + + + + + +/* + Slur +*/ Slur::Slur () { + // URG dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0.0; dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0; + set_elt_property ("note-columns", SCM_EOL); + set_elt_property ("control-points", SCM_EOL); + +#if 0 + /* + I still don't understand the merits of this Group_interface. + */ + Group_interface c (this, "control-points"); + c.set_interface (); +#endif } void @@ -50,6 +246,36 @@ Slur::add_column (Note_column*n) } } +void +Slur::de_uglyfy (Slur_bezier_bow* bb, Real default_height) +{ + Real length = bb->curve_.control_[3][X_AXIS] ; + Real ff = bb->fit_factor (); + for (int i = 1; i < 3; i++) + { + Real ind = abs (bb->curve_.control_[(i-1)*3][X_AXIS] + - bb->curve_.control_[i][X_AXIS]) / length; + Real h = bb->curve_.control_[i][Y_AXIS] * ff / length; + + Real f = default_height / length; + Real c1 = paper_l ()->get_var ("bezier_control1"); + Real c2 = paper_l ()->get_var ("bezier_control2"); + Real c3 = paper_l ()->get_var ("bezier_control3"); + if (h > c1 * f) + { + h = c1 * f; + } + else if (h > c2 + c3 * ind) + { + h = c2 + c3 * ind; + } + + bb->curve_.control_[i][Y_AXIS] = h * length; + } + + bb->curve_.assert_sanity (); +} + Direction Slur::get_default_dir () const { @@ -94,7 +320,7 @@ Slur::encompass_offset (Note_column const* col) const if (!stem_l) { warning (_ ("Slur over rest?")); - o[X_AXIS] = col->hpos_f (); + o[X_AXIS] = col->hpos_f (); o[Y_AXIS] = col->extent (Y_AXIS)[dir]; return o; } @@ -125,13 +351,19 @@ Slur::encompass_offset (Note_column const* col) const return o; } -/* - ARGRARGRARGRARGAR! +void +Slur::do_post_processing () +{ + set_extremities (); + set_control_points (); +} - Fixme +/* + urg + FIXME */ void -Slur::do_post_processing () +Slur::set_extremities () { Link_array encompass_arr = Group_interface__extract_elements (this, (Note_column*)0, "note-columns"); @@ -287,158 +519,6 @@ Slur::do_post_processing () if (!fix_broken_b) dy_f_drul_[RIGHT] += interstaff_f; - - - - return; - - /* - Now we've got a fine slur - Catch and correct some ugly cases - */ - String infix = interstaff_b ? "interstaff_" : ""; - Real height_damp_f = paper_l ()->get_var ("slur_"+infix +"height_damping"); - Real slope_damp_f = paper_l ()->get_var ("slur_"+infix +"slope_damping"); - Real snap_f = paper_l ()->get_var ("slur_"+infix +"snap_to_stem"); - Real snap_max_dy_f = paper_l ()->get_var ("slur_"+infix +"snap_max_slope_change"); - - Real dx_f = spanner_length ()+ dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]; - Real dy_f = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT]; - if (!fix_broken_b) - dy_f -= interstaff_f; - - /* - Avoid too steep slurs. - */ - Real slope_ratio_f = abs (dy_f / dx_f); - if (slope_ratio_f > slope_damp_f) - { - Direction d = (Direction)(- my_dir * (sign (dy_f))); - if (!d) - d = LEFT; - Real damp_f = (slope_ratio_f - slope_damp_f) * dx_f; - /* - must never change sign of dy - */ - damp_f = damp_f height_damp_f) - { - Direction d = (Direction)(- my_dir * (sign (dy_f))); - if (!d) - d = LEFT; - /* take third step */ - Real damp_f = (height_ratio_f - height_damp_f) * size[X_AXIS] / 3; - /* - if y positions at about the same height, correct both ends - */ - if (abs (dy_f / dx_f ) < slope_damp_f) - { - dy_f_drul_[-d] += my_dir * damp_f; - dy_f_drul_[d] += my_dir * damp_f; - } - /* - don't change slope too much, would have been catched by slope damping - */ - else - { - damp_f = damp_f snapy_f_drul; - snapy_f_drul[LEFT] = snapy_f_drul[RIGHT] = 0; - Drul_array snapx_f_drul; - snapx_f_drul[LEFT] = snapx_f_drul[RIGHT] = 0; - Drul_array snapped_b_drul; - snapped_b_drul[LEFT] = snapped_b_drul[RIGHT] = false; - do - { - Note_column * nc = note_column_drul[d]; - if (nc == spanned_drul_[d] - && nc->stem_l () - && nc->stem_l ()->get_direction () == my_dir - && abs (nc->stem_l ()->extent (Y_AXIS)[my_dir] - - dy_f_drul_[d] + (d == LEFT ? 0 : interstaff_f)) - <= snap_f) - { - /* - prepare to attach to stem-end - */ - snapx_f_drul[d] = nc->stem_l ()->hpos_f () - - spanned_drul_[d]->relative_coordinate (0, X_AXIS); - - snapy_f_drul[d] = nc->stem_l ()->extent (Y_AXIS)[my_dir] - + interstaff_interval[d] - + my_dir * 2 * y_gap_f; - - snapped_b_drul[d] = true; - } - } - while (flip (&d) != LEFT); - - /* - only use snapped positions if sign (dy) will not change - and dy doesn't change too much - */ - if (!fix_broken_b) - dy_f += interstaff_f; - - - /* - (sigh) - - More refactoring could be done. - */ - Real maxsnap = abs (dy_f * snap_max_dy_f); - if (snapped_b_drul[LEFT] && snapped_b_drul[RIGHT] - && ((sign (snapy_f_drul[RIGHT] - snapy_f_drul[LEFT]) == sign (dy_f))) - && (!dy_f || (abs (snapy_f_drul[RIGHT] - snapy_f_drul[LEFT] - dy_f) - < maxsnap))) - { - dy_f_drul_ = snapy_f_drul; - dx_f_drul_ = snapx_f_drul; - } - else - do - { - Direction od = (Direction)-d; - if (snapped_b_drul[d] - && d * sign (snapy_f_drul[d] - dy_f_drul_[od]) == sign (dy_f) - && (!dy_f || (abs (snapy_f_drul[d] - dy_f_drul_[od] - d * dy_f) - < maxsnap))) - { - dy_f_drul_[d] = snapy_f_drul[d]; - dx_f_drul_[d] = snapx_f_drul[d]; - } - } - while (flip (&d) != LEFT); } @@ -560,8 +640,8 @@ ugly_scm (Bezier b) /* Ugh should have dash-length + dash-period */ -Molecule* -Slur::do_brew_molecule_p () const +Molecule +Slur::do_brew_molecule () const { Real thick = paper_l ()->get_var ("slur_thickness"); Bezier one = get_curve (); @@ -586,26 +666,60 @@ Slur::do_brew_molecule_p () const a.add_molecule (mark); } #endif - return new Molecule (a); + return a; } +void +Slur::set_control_points () +{ + Slur_bezier_bow bb (get_encompass_offset_arr (), + directional_element (this).get ()); + + Real staff_space = Staff_symbol_referencer_interface (this).staff_space (); + Real h_inf = paper_l ()->get_var ("slur_height_limit_factor") * staff_space; + Real r_0 = paper_l ()->get_var ("slur_ratio"); + bb.set_default_bezier (h_inf, r_0); + if (bb.fit_factor () > 1.0) + { + Real length = bb.curve_.control_[3][X_AXIS]; + Real default_height = bb.get_default_height (h_inf, r_0, length); + bb.minimise_enclosed_area (paper_l(), default_height); + + Real bff = paper_l ()->get_var ("slur_force_blowfit"); + bb.curve_.control_[1][Y_AXIS] *= bff; + bb.curve_.control_[2][Y_AXIS] *= bff; + bb.blow_fit (); + + Real sb = paper_l ()->get_var ("slur_beautiful"); + Real beautiful = length * default_height * sb; + Real area = bb.enclosed_area_f (); + + /* + Slurs that fit beautifully are not ugly + */ + if (area > beautiful) + de_uglyfy (&bb, default_height); + } + + Bezier b = bb.get_bezier (); + SCM controls = array_to_scm (b.control_); + set_elt_property ("control-points", controls); +} + + Bezier Slur::get_curve () const { + Bezier b; + Array controls (4); + scm_to_array (get_elt_property ("control-points"), &controls); + b.control_ = controls; + Array enc (get_encompass_offset_arr ()); - Direction dir = directional_element (this).get (); - Bezier_bow b (enc,dir); - - b.ratio_ = paper_l ()->get_var ("slur_ratio"); - b.height_limit_ = paper_l ()->get_var ("slur_height_limit"); - b.rc_factor_ = paper_l ()->get_var ("slur_rc_factor"); - - b.calculate (); - - Bezier curve = b.get_curve (); - + Direction dir = directional_element (this).get (); + Real x1 = enc[0][X_AXIS]; Real x2 = enc.top ()[X_AXIS]; @@ -615,12 +729,11 @@ Slur::get_curve () const Real x = enc[i][X_AXIS]; if (x > x1 && x ? dir * (enc[i][Y_AXIS] - y); } } - curve.translate (Offset (0, dir * off)); - return curve; + b.translate (Offset (0, dir * off)); + return b; } - diff --git a/lily/span-bar.cc b/lily/span-bar.cc index 4393de2def..0ee3142afd 100644 --- a/lily/span-bar.cc +++ b/lily/span-bar.cc @@ -123,15 +123,15 @@ Span_bar::height_callback (Dimension_cache const *c) return s->get_spanned_interval (); } -Molecule* -Span_bar::do_brew_molecule_p () const +Molecule +Span_bar::do_brew_molecule () const { Interval iv (get_spanned_interval ()); - Molecule*output = new Molecule; + Molecule output; SCM s = get_elt_property ("glyph"); if (gh_string_p (s) && !iv.empty_b()) { - output->add_molecule (lookup_l ()->bar (ly_scm2string (s), + output.add_molecule (lookup_l ()->bar (ly_scm2string (s), iv.length (), paper_l ())); } diff --git a/lily/staff-margin-engraver.cc b/lily/staff-margin-engraver.cc index a7f2607c26..9a93d91e7d 100644 --- a/lily/staff-margin-engraver.cc +++ b/lily/staff-margin-engraver.cc @@ -18,7 +18,6 @@ Staff_margin_engraver::Staff_margin_engraver () { axis_ = X_AXIS; type_ = "margin"; - visibility_lambda_ = ly_eval_str ("postbreak-only-visibility"); } diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc index 30ff14f405..eb32b20db0 100644 --- a/lily/staff-symbol-engraver.cc +++ b/lily/staff-symbol-engraver.cc @@ -54,6 +54,14 @@ Staff_symbol_engraver::do_creation_processing() void Staff_symbol_engraver::do_removal_processing() { + SCM n = get_property ("numberOfStaffLines",0); + SCM ss = get_property ("staffSpace", 0); + + if (gh_number_p (ss)) + span_p_->set_elt_property ("staff-space", ss); + if (gh_number_p (n)) + span_p_->set_elt_property ("line-count", n); + span_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ()); typeset_element (span_p_); span_p_ =0; diff --git a/lily/staff-symbol.cc b/lily/staff-symbol.cc index 10d7927201..21123e75d9 100644 --- a/lily/staff-symbol.cc +++ b/lily/staff-symbol.cc @@ -15,8 +15,8 @@ -Molecule* -Staff_symbol::do_brew_molecule_p() const +Molecule +Staff_symbol::do_brew_molecule() const { Score_element * common = spanned_drul_[LEFT]->common_refpoint (spanned_drul_[RIGHT], X_AXIS); @@ -28,18 +28,18 @@ Staff_symbol::do_brew_molecule_p() const ; Real t = paper_l ()->get_var ("stafflinethickness"); - Molecule rule = lookup_l ()->filledbox (Box (Interval (0,width), - Interval (-t/2, t/2))); - int l = line_count (); Real height = (l-1) * staff_space () /2; - Molecule * m = new Molecule; + Molecule m; for (int i=0; i < l; i++) { - Molecule a (rule); + Molecule a = + lookup_l ()->filledbox (Box (Interval (0,width), + Interval (-t/2, t/2))); + a.translate_axis (height - i * staff_space (), Y_AXIS); - m->add_molecule (a); + m.add_molecule (a); } return m; diff --git a/lily/stem-tremolo.cc b/lily/stem-tremolo.cc index 57b35d875e..d6b2fcfa4c 100644 --- a/lily/stem-tremolo.cc +++ b/lily/stem-tremolo.cc @@ -42,8 +42,8 @@ Stem_tremolo::dim_callback (Dimension_cache const *c) } -Molecule* -Stem_tremolo::do_brew_molecule_p () const +Molecule +Stem_tremolo::do_brew_molecule () const { Stem * st = stem_l (); int mult =0; @@ -85,20 +85,20 @@ Stem_tremolo::do_brew_molecule_p () const abbrev_flags = gh_scm2int (a); } - Molecule *beams= new Molecule; + Molecule mol; for (int i = 0; i < abbrev_flags; i++) { Molecule b (a); b.translate_axis (interbeam_f * i, Y_AXIS); - beams->add_molecule (b); + mol.add_molecule (b); } - beams->translate_axis (-beams->extent ()[Y_AXIS].center (), Y_AXIS); + mol.translate_axis (-mol.extent ()[Y_AXIS].center (), Y_AXIS); if (st) { if (st->beam_l ()) { - beams->translate (Offset(st->hpos_f () - hpos_f (), + mol.translate (Offset(st->hpos_f () - hpos_f (), st->stem_end_position () * half_staff_space - directional_element (st->beam_l ()).get () * beams_i * interbeam_f)); } @@ -107,7 +107,7 @@ Stem_tremolo::do_brew_molecule_p () const /* Beams should intersect one beamthickness below staff end */ - Real dy = - beams->extent ()[Y_AXIS].length () / 2 * st->get_direction (); + Real dy = - mol.extent ()[Y_AXIS].length () / 2 * st->get_direction (); /* uhg. Should use relative coords and placement @@ -117,7 +117,7 @@ Stem_tremolo::do_brew_molecule_p () const : 0.0; dy += st->stem_end_position (); - beams->translate (Offset(st->hpos_f () - hpos_f ()+ + mol.translate (Offset(st->hpos_f () - hpos_f ()+ whole_note_correction, dy)); } @@ -127,7 +127,7 @@ Stem_tremolo::do_brew_molecule_p () const */ } - return beams; + return mol; } diff --git a/lily/stem.cc b/lily/stem.cc index 2061caf1c2..ce3312a9b1 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -444,10 +444,10 @@ Stem::dim_callback (Dimension_cache const* c) const Real ANGLE = 20* (2.0*M_PI/360.0); // ugh! -Molecule* -Stem::do_brew_molecule_p () const +Molecule +Stem::do_brew_molecule () const { - Molecule *mol_p =new Molecule; + Molecule mol; Staff_symbol_referencer_interface si (first_head ()); @@ -468,17 +468,17 @@ Stem::do_brew_molecule_p () const Real stem_width = paper_l ()->get_var ("stemthickness"); Molecule ss =lookup_l ()->filledbox (Box (Interval (-stem_width/2, stem_width/2), Interval (stem_y[DOWN]*dy, stem_y[UP]*dy))); - mol_p->add_molecule (ss); + mol.add_molecule (ss); } if (!beam_l () && abs (flag_i ()) > 2) { Molecule fl = flag (); fl.translate_axis(stem_y[get_direction ()]*dy, Y_AXIS); - mol_p->add_molecule (fl); + mol.add_molecule (fl); } - return mol_p; + return mol; } Real diff --git a/lily/text-item.cc b/lily/text-item.cc index 034173e7c5..ea0c6f2475 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -13,17 +13,15 @@ #include "paper-def.hh" #include "lookup.hh" -Molecule* -Text_item::do_brew_molecule_p () const +Molecule +Text_item::do_brew_molecule () const { SCM style = get_elt_property ("style"); String st = gh_string_p (style) ? ly_scm2string (style) : ""; SCM txt = get_elt_property ("text"); String t = gh_string_p (txt) ? ly_scm2string (txt) : ""; - Molecule a= paper_l ()->lookup_l(0)->text (st, t, paper_l ()); - - return new Molecule (a); + return paper_l ()->lookup_l(0)->text (st, t, paper_l ()); } diff --git a/lily/tie.cc b/lily/tie.cc index b96a815dfa..7f1befbf66 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -106,8 +106,8 @@ Tie::do_post_processing() if (!directional_element (this).get ()) directional_element (this).set (get_default_dir ()); - Real staff_space = paper_l ()->get_var ("interline"); - Real half_staff_space = staff_space / 2; + Real staff_space = staff_symbol_referencer (this).staff_space (); + Real half_space = staff_space / 2; Real x_gap_f = paper_l ()->get_var ("tie_x_gap"); Real y_gap_f = paper_l ()->get_var ("tie_y_gap"); @@ -150,7 +150,7 @@ Tie::do_post_processing() Real ypos = position_f (); - Real y_f = half_staff_space * ypos; + Real y_f = half_space * ypos; int ypos_i = int (ypos); Real dx_f = extent (X_AXIS).length () + dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]; @@ -158,14 +158,14 @@ Tie::do_post_processing() if (dx_f < paper_l ()->get_var ("tie_staffspace_length")) { if (abs (ypos_i) % 2) - y_f += dir * half_staff_space; + y_f += dir * half_space; y_f += dir * y_gap_f; } else { if (! (abs (ypos_i) % 2)) - y_f += dir * half_staff_space; - y_f += dir * half_staff_space; + y_f += dir * half_space; + y_f += dir * half_space; y_f -= dir * y_gap_f; } @@ -188,8 +188,8 @@ Tie::get_rods () const -Molecule* -Tie::do_brew_molecule_p () const +Molecule +Tie::do_brew_molecule () const { Real thick = paper_l ()->get_var ("tie_thickness"); Bezier one = get_curve (); @@ -201,7 +201,7 @@ Tie::do_brew_molecule_p () const else a = lookup_l ()->slur (one, directional_element (this).get () * thick, thick); - return new Molecule (a); + return a; } @@ -212,12 +212,12 @@ Tie::get_curve () const Direction d (directional_element (this).get ()); Bezier_bow b (get_encompass_offset_arr (), d); - b.ratio_ = paper_l ()->get_var ("slur_ratio"); - b.height_limit_ = paper_l ()->get_var ("slur_height_limit"); - b.rc_factor_ = paper_l ()->get_var ("slur_rc_factor"); + Real staff_space = staff_symbol_referencer (this).staff_space (); + Real h_inf = paper_l ()->get_var ("tie_height_limit_factor") * staff_space; + Real r_0 = paper_l ()->get_var ("tie_ratio"); - b.calculate (); - Bezier c (b.get_curve ()); + b.set_default_bezier (h_inf, r_0); + Bezier c = b.get_bezier (); /* should do this for slurs as well. */ Array horizontal (c.solve_derivative (Offset (1,0))); @@ -227,15 +227,14 @@ Tie::get_curve () const /* ugh. Doesnt work for non-horizontal curves. */ - Real space = staff_symbol_referencer (this).staff_space (); Real y = c.curve_point (horizontal[0])[Y_AXIS]; - Real ry = rint (y/space) * space; + Real ry = rint (y/staff_space) * staff_space; Real diff = ry - y; Real newy = y; if (fabs (diff) < paper_l ()->get_var ("tie_staffline_clearance")) { - newy = ry - 0.5 * space * sign (diff) ; + newy = ry - 0.5 * staff_space * sign (diff) ; } Real y0 = c.control_ [0][Y_AXIS]; diff --git a/lily/time-signature.cc b/lily/time-signature.cc index 24f0fa73f0..0c11decc33 100644 --- a/lily/time-signature.cc +++ b/lily/time-signature.cc @@ -19,8 +19,8 @@ Time_signature::Time_signature () } // ugh.! -Molecule* -Time_signature::do_brew_molecule_p () const +Molecule +Time_signature::do_brew_molecule () const { SCM st = get_elt_property ("style"); @@ -39,15 +39,15 @@ Time_signature::do_brew_molecule_p () const String style (ly_scm2string (st)); if (style[0]=='1') { - return new Molecule (time_signature (n, 0)); + return time_signature (n, 0); } else { - return new Molecule (special_time_signature (style, n, d)); + return special_time_signature (style, n, d); } } else - return new Molecule (time_signature (n,d)); + return time_signature (n,d); } Molecule diff --git a/lily/tuplet-spanner.cc b/lily/tuplet-spanner.cc index 766b636fe0..36782cb6fc 100644 --- a/lily/tuplet-spanner.cc +++ b/lily/tuplet-spanner.cc @@ -31,10 +31,10 @@ Tuplet_spanner::Tuplet_spanner () /* TODO. */ -Molecule* -Tuplet_spanner::do_brew_molecule_p () const +Molecule +Tuplet_spanner::do_brew_molecule () const { - Molecule* mol_p = new Molecule; + Molecule mol; // Default behaviour: number always, bracket when no beam! bool par_beam = to_boolean (get_elt_property ("parallel-beam")); @@ -82,7 +82,7 @@ Tuplet_spanner::do_brew_molecule_p () const num.translate_axis (dy/2, Y_AXIS); - mol_p->add_molecule (num); + mol.add_molecule (num); } Real thick = paper_l ()->get_var ("tuplet_thick"); @@ -99,12 +99,13 @@ Tuplet_spanner::do_brew_molecule_p () const gh_int2scm (dir), SCM_UNDEFINED); - mol_p->add_atom (at); + Box b; + mol.add_molecule (Molecule (b, at)); } - mol_p->translate_axis (dir * staff_space, Y_AXIS); + mol.translate_axis (dir * staff_space, Y_AXIS); } - return mol_p; + return mol; } void diff --git a/lily/volta-spanner.cc b/lily/volta-spanner.cc index fba5da4831..0fac7a6c23 100644 --- a/lily/volta-spanner.cc +++ b/lily/volta-spanner.cc @@ -32,16 +32,16 @@ Volta_spanner::Volta_spanner () /* FIXME: too complicated. */ -Molecule* -Volta_spanner::do_brew_molecule_p () const +Molecule +Volta_spanner::do_brew_molecule () const { - Molecule* mol_p = new Molecule; + Molecule mol; Link_array bar_arr = Group_interface__extract_elements (this, (Bar*)0, "bars"); if (!bar_arr.size ()) - return mol_p; + return mol; Link_array note_column_arr = Group_interface__extract_elements (this, (Score_element*)0, "note-columns"); @@ -68,8 +68,6 @@ Volta_spanner::do_brew_molecule_p () const Real w = spanner_length() - dx - get_broken_left_end_align (); Real h = paper_l()->get_var ("volta_spanner_height"); - Molecule volta; - SCM at = (gh_list (ly_symbol2scm ("volta"), gh_double2scm (h), gh_double2scm (w), @@ -77,10 +75,8 @@ Volta_spanner::do_brew_molecule_p () const gh_int2scm (no_vertical_start), gh_int2scm (no_vertical_end), SCM_UNDEFINED)); - - volta.dim_[Y_AXIS] = Interval (- h/2, h/2); - volta.dim_[X_AXIS] = Interval (0, w); - volta.add_atom (at); + Box b (Interval (- h/2, h/2), Interval (0, w)); + Molecule volta(b,at); Molecule num (lookup_l ()->text ("volta", ly_scm2string (get_elt_property("text")), @@ -103,10 +99,10 @@ Volta_spanner::do_brew_molecule_p () const Offset off (num.dim_.x ().length () + gap, h / half_staff_space - gap); num.translate (off); - mol_p->add_molecule (volta); - mol_p->add_molecule (num); - mol_p->translate (Offset (0, dy)); - return mol_p; + mol.add_molecule (volta); + mol.add_molecule (num); + mol.translate (Offset (0, dy)); + return mol; } void diff --git a/ly/engraver.ly b/ly/engraver.ly index 177cbb8d53..b30c731e86 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -61,8 +61,6 @@ StaffContext=\translator { %} defaultClef = #"treble" - marginBreakPriority = #-5 - \consists "Separating_line_group_engraver"; \accepts "Voice"; @@ -291,8 +289,6 @@ StupidScore = \translator { BarNumberingStaffContext = \translator { \StaffContext - barColumnPriority = #0 - marginBreakPriority = #-4 \consists "Mark_engraver"; \consists "Bar_number_engraver"; }; @@ -306,8 +302,6 @@ HaraKiriStaffContext = \translator { OrchestralPartStaffContext = \translator { \StaffContext - barColumnPriority = #0 - marginBreakPriority = #-4 \consists "Mark_engraver"; \consists "Bar_number_engraver"; }; @@ -345,8 +339,9 @@ ScoreContext = \translator { \accepts "PianoStaff"; \accepts "NoteNames"; - clefBreakPriority = #-2 - breathingSignBreakPriority = #-4 + markVisibilityFunction = #end-of-line-invisible + barNumberVisibilityFunction = #end-of-line-invisible + marginVisibilityFunction = #begin-of-line-visible }; \translator { \ScoreContext } diff --git a/ly/params-as.ly b/ly/params-as.ly index 2a7838c996..974dae0b7b 100644 --- a/ly/params-as.ly +++ b/ly/params-as.ly @@ -67,6 +67,27 @@ slur_y_gap = 0.25 * \staffspace; slur_y_free = 0.75 * \staffspace; slur_x_minimum = 1.5 * \staffspace; + +% use tangent controls or area asymmetry? +bezier_area = 1.0; +bezier_asymmetry = 1.0; +bezier_beautiful = 2.0; + +% 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; +bezier_pct_out_max = 0.8; +bezier_pct_in_max = 1.2; +bezier_area_steps = 1.0; + +bezier_before_blowfit = 0.5; + %{ Like beams, slurs often aren't as steep as the notes they encompass. This sets the amount of damping. diff --git a/ly/params.ly b/ly/params.ly index 063c8e92cd..5c5d505123 100644 --- a/ly/params.ly +++ b/ly/params.ly @@ -41,9 +41,9 @@ arithmetic_multiplier = 0.9 * \quartwidth ; #'Stem_tremolo::beam-width = 1.5 * \quartwidth ; -#'Clef_item::visibility-lambda = #postbreak-only-visibility -#'Key_item::visibility-lambda = #postbreak-only-visibility -#'Breathing_sign::visibility-lambda = #non-postbreak-visibility +#'Clef_item::visibility-lambda = #begin-of-line-visible +#'Key_item::visibility-lambda = #begin-of-line-visible +#'Breathing_sign::visibility-lambda = #begin-of-line-invisible % catch suspect beam slopes, set slope to zero if % outer stem is lengthened more than @@ -51,10 +51,22 @@ beam_lengthened = 0.2 * \staffspace; % and slope is running away steeper than beam_steep_slope = 0.2 / 1.0; + + %{ -dit(code(slur_x_gap)) Horizontal space between note and slur. Set to -code(\staffspace / 5) by default. + Slur parameters. + + See Documentation/programmer/fonts.doc +%} +% Height-limit (h_inf) = factor * staff_space +slur_height_limit_factor = 2.0; +slur_ratio = 1.0 / 3.0; + +slur_thickness = 1.2 * \stafflinethickness; + +%{ +Horizontal space between centre of notehead and slur. %} % OSU: suggested gap = ss / 5; slur_x_gap = \staffspace / 5.0; @@ -62,25 +74,34 @@ slur_y_gap = 0.25 * \staffspace; slur_y_free = 0.75 * \staffspace; slur_x_minimum = 1.5 * \staffspace; + +bezier_asymmetry = 1.0; +bezier_beautiful = 2.0; + +% 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; +bezier_pct_out_max = 0.8; +bezier_pct_in_max = 1.2; +bezier_area_steps = 1.0; + +slur_force_blowfit = 0.5; +slur_beautiful = 0.5; + + %{ -Like beams, slurs often aren't as steep as the notes they encompass. -This sets the amount of damping. + Tie parameters %} -% slope damping: keep dy/dx < slur_slope_damping -slur_slope_damping = 0.3; -slur_interstaff_slope_damping = 0.6; -% height damping: keep h/dx < slur_height_damping -slur_height_damping = 0.4; -slur_interstaff_height_damping = 0.5; -% snap to stem if slur ends closer to stem than -slur_snap_to_stem = 1.75 * \staffspace; -slur_interstaff_snap_to_stem = 2.5 * \staffspace; -% maximum dy change allowed by snapping -slur_snap_max_slope_change = 0.5; -slur_interstaff_snap_max_slope_change = 0.5; -slur_thickness = 1.2 * \stafflinethickness; - +tie_height_limit_factor = \slur_height_limit_factor; +tie_ratio = \slur_ratio; +tie_thickness = \slur_thickness; tie_x_minimum = \staffspace + \slur_x_minimum; % OSU: tie gap == slur gap @@ -89,29 +110,10 @@ 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 . -tie_thickness = 1.2 * \stafflinethickness; tie_staffline_clearance = 2.0 *\tie_thickness; -%{ - Specifies the maximum height of slurs. -%} -slur_height_limit = \staffheight; -%{ -Specifes the ratio of slur hight to slur width -to aim for. Default value is 0.3. -%} -% slur_ratio = 0.3; -% try bit flatter slurs -slur_ratio = 0.25; -slur_clip_ratio = 1.2; -slur_clip_height = 3.0 * \staffheight; -slur_clip_angle = 100.0; -slur_rc_factor = 2.4; % ugh notewidth = (\quartwidth + \wholewidth) / 2.0; diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 682abaf587..3c181ed8de 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.3.28 -Entered-date: 01MAR00 +Version: 1.3.29 +Entered-date: 02MAR00 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.28.tar.gz + 1000k lilypond-1.3.29.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.3.28.tar.gz + 1000k lilypond-1.3.29.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index c51ae7c22e..055cde99ca 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 1.3.28 +Version: 1.3.29 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.28.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.29.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond # get Packager from (undocumented?) ~/.rpmmacros! diff --git a/make/toplevel.make.in b/make/toplevel.make.in index ed42272d1a..fd457e035f 100644 --- a/make/toplevel.make.in +++ b/make/toplevel.make.in @@ -39,8 +39,7 @@ examples: $(PYTHON) $(buildscripts)/mutopia-index.py -o short-examples.html input/ $(PYTHON) $(buildscripts)/mutopia-index.py -o long-examples.html mutopia/ - - tar --exclude='*.dvi' --exclude='*.tex' --exclude='*.ps' --exclude='*.ppm' -czf $(outdir)/examples.tar.gz `find input mutopia -type d -name 'out-www' -print` + tar --exclude='*.dvi' --exclude='*.tex' --exclude='*.ps' --exclude='*.ppm' -czf $(outdir)/examples.tar.gz *-examples.html `find input mutopia -type d -name 'out-www' -print` localinstall: mkdir -p $(datadir) diff --git a/mutopia/GNUmakefile b/mutopia/GNUmakefile index 3484e938c4..a01958d459 100644 --- a/mutopia/GNUmakefile +++ b/mutopia/GNUmakefile @@ -2,7 +2,7 @@ depth = .. -SUBDIRS = J.S.Bach Coriolan F.Schubert D.Zipoli Hymns L.Mozart E.Satie N.W.Gade +SUBDIRS = J.S.Bach Coriolan F.Schubert D.Zipoli Hymns L.Mozart E.Satie examples= LOCALSTEPMAKE_TEMPLATES=mutopia diff --git a/mutopia/N.W.Gade/GNUmakefile b/mutopia/N.W.Gade/GNUmakefile deleted file mode 100644 index ef093ade58..0000000000 --- a/mutopia/N.W.Gade/GNUmakefile +++ /dev/null @@ -1,12 +0,0 @@ -# - -depth = ../.. - -EXTRA_DIST_FILES += README global.tex - -examples= -LOCALSTEPMAKE_TEMPLATES=mutopia - -include $(depth)/make/stepmake.make - - diff --git a/mutopia/N.W.Gade/README b/mutopia/N.W.Gade/README deleted file mode 100644 index dbd16551f6..0000000000 --- a/mutopia/N.W.Gade/README +++ /dev/null @@ -1,34 +0,0 @@ -This ouverture "Imellem Fjeldene" ("Between the Mountains") by -Niels W. Gade (1788-1854) is typeset from handwritten parts -available at Statens Musikbibliotek, Stockholm, Sweden. -No score was available. - -A few obvious misprints and inconsistencies between the parts -have been corrected. This is indicated with comments in the -different source files. - -The piece was performed in Ludvika and Östervåla, Sweden, -March 13-14, 1999, by Bergslagens Kammarsymfoniker conducted -by Ola Karlsson. - -The piece is for a small symphony orchestra with (using standard -notation for orchestral settings): 1121-2200-10-strings - -Christian Mondrup has provided the following background on the -piece: -It was composed 1850 as a ouverture for the comedy "Imellem -Fjeldene" by the Danish poet Carsten Hauch. In the Andante -introduction, Gade uses a melody from the collection ``Norske -Folkesagn og Melodier'' (``Norwegian folksongs and melodies'') -by the Danish composer A.P. Bergreen. The song has a Norwegian -text ``Heimreise fraa Sæteren'' by Edvard Storm. The second -theme of the Allegro part might very well come from the same -collection, namely the song ``Saag du nokke Kjærringa mi''. - -The music was typeset using Lilypond, the GNU Project music -typesetter. - -The score and parts may be freely copied. - -Stockholm 1999. Mats Bengtsson, matsb@s3.kth.se - diff --git a/mutopia/N.W.Gade/brass.ly b/mutopia/N.W.Gade/brass.ly deleted file mode 100644 index 37e7d28a7a..0000000000 --- a/mutopia/N.W.Gade/brass.ly +++ /dev/null @@ -1,876 +0,0 @@ -\version "1.3.4"; - -corI=\notes\relative c'' { -\key c; - -\property Staff."midiInstrument" = "french horn" - -[g8. \f ( a16 ] ) g2 | -[g8. ( a16 ] ) g2_"dim." | -c2. \p ( | -) g2 g4 ( | -) c2. ( | -) g4 [g8. ( a16 ] ) g4 | -c2. \p ( | -) g2 g4 | -\grace g8 c2 \< ( ~ [ \! c8 \> \! ) g ] | -g2 \p r4 | -g \mf ( d' c~ | -c ) b r | -R2. | -r4 r c \p ( | -) g r r | -g [g8. ( a16 ] ) g4 | -R2. | -r4 r [g8^""^"solo" \mf \< () e' ] | -\grace d8 \! g2 \> ( [ \! e8. c16 ] | -) g2 r4 | -R2. | -r4 r \times 2/3 {[e'8 \f ( g, ) g'] } | -g4 () e r | -r r \times 2/3 {[g8 \f ( e ) g] } -d4 () g r | -r r [d16 \f ( g, e' d ] | -[g, d' e ) d ] g,4 r | -r \grace g8 d'2 \f \> (| -[g,8. a16 g8. a16 \! g8. ) a16 ] | -g4 r r | -R2. | -r4 r r8 r | -R2*8 | -d'8-. \pp r c-. r | -d r c g | -[g-. \< g-. g-. \! g-. ] | -g4.:8 g8 \f ( | -) c4. r8 | -c4. r8 | -c4. r8 | -c4 () b8 r | -e,4. r8 | -e'4. r8 | -e,4. r8 | -e'4. r8 | -e r e r | -e r e r | -c4 \fz r | -R2*12 | -r4 r8 g' ( | -) g,4. \f g8 ( | -[ ) d' d16-> ( e ] ) d8 r | -R2 | -r4 r8 g \f ( | -) g,4. g8 ( | -[ ) d' d16 ( e ] [) d8 d ] ~ | -d4.-> d8 ~ | -d4.-> r8 | -r4 r8 e ( | -) d4. \f d8 ~ | -d4.-> d8 ~ | -d4.-> r8 | -r4 r8 e \f ( | -[ ) d d16 ( e ] ) d8 r | -R2*4 | -d4. \f r8 | -R2 | -d4. \fz r8 | -d4. \fz r8 | -d4 d-> ~ | -d4 d-> ~ | -d g ( | -[ ) d8 d16 ( e] ) d8 r | -d4 d ~ | -d4 d ~ | -d g ( | -[ ) d8 d16 ( e] ) d8 r | -d4 d ~ | -d4_"dim." d ~ | -d4 d ~ | -d4 d ~ | -d8 r r4 | -R2*35 | -c,2 \pp ~ | -c4. r8 | -R2*2 | -d'2 \pp ~ | -d4. r8 | -d8 r c r | -d-. r c-. g | -g2:8 \< | -\! g4.:8 g8 \f ( | -) e'4. r8 | -c4. r8 | -c4. c8 | -c2:8 | -c4. r8 | -d4 () c8 r | -d4 () c8 r | -f4 () e8 r | -c4 r | -e r | -c r | -e r | -c8 r d r | -es r d r | -d \fz r r4 | -R2*2 | -d4 ( \p \< e | -\! f g \> ~ | -g ) \! e8 r | -R2 | -d4 ( \p \< e | -\! ) f2 | -b,4_"dim." ( c | -) d r | -R2*3 | -[c8 ( \f c16 d ][es8 d16 ) c ] | -d4. r8 | -R2*2 | -[c8 ( c16 d ][es8 d16 ) c ] | -d4. c8 ( | -) g'4.-> c,8 ( | -) g'4.-> r8 | -R2 | -r4 r8 g \f ~ | -g4. g8 ~ | -g4. r8 | -r4 r8 d ( | -[ ) g g16 ( a ] ) g8 r | -R2 | -r4 r8 g, \p | -[g-. \< g-. g-. \! g-.] | -[g-. \< g-. g-. \! g ( ] | -) e'4. r8 | -R2 | -d4. \f r8 | -d4. g,8 ( | -) e' r d4 ( | -) e8 r d4 ( | -) e8 r c4 ( | -[) d8 f-. f-. d-. ] | -e r d4 ( | -) e8 r d4 ( | -) e8 r c4 ( | -[) d8 f-. f-. d-. ] | -e r d4 ( | -) e8 r d4_"dim." ( | -) c8 r g4 | -g8 r [g'8.^""^"solo" ( \< \! a16 ] | -g4. \> \! e8 | -c4 d | -e d | -) c [g'8. ( \< \! a16 ] | -g4. \> \! e8 | -c4 d | -e d | -) c [c8. ( d16 ] | -) c2 ( | -) g ~ | -g_"dim." ~ | -g ~ | -g \p ~ | -g ~ | -g ~ | -g | -R2*2 | -d'2 \fz \> ( | -) \! g, ~ | -g \p ~ | -g | -c \< ~ | -\! c | -c4. \f r8 | -d4. r8 | -d4. r8 | -d4. r8 | -c2 ~ | -c4. r8 | -c2 ~ | -c4. r8 | -d4. r8 | -d4. d8 | -[e-. d-. e-. d-.] | -[e-. d-. e-. d-.] | -e r d r | -c r d r | -c r e r | -g r e r | -c4 r8 g ( | -) e'4 r8 g,8 ( | -) c4 r8 g ( | -) e'4 r8 g,8 ( | -) c4 r | -R2 | -e4 \fz r -} - -corIcue=\notes\relative c''' { -\key c; -\tiny - -s2.*32 | -s2*33 | \stemup -r4 r8 [g16^"oboe" ( a ] | -[ ) g8-. fis16 ( g ][ ) fis8-. f16 ( g ] | -[ ) f8-. e16 ( f ] ) e8-. s | \stemboth -s2*66 | -[f,,16^"Vlc." ( g f g][f g f8 ] | -) e4 r | -[f16 ( g f_"dim." g][f g f8 ] | -) e4 r | -} - -corIIcue=\notes\relative c'' { -\key c; -\tiny - -[c8.^"Oboe" ( d16] ) c2 | -[c8. ( d16] ) c2 | -s2.*15 | -r4 r [g8^"Cor. I" ( ) e'] | -g2 ( [e8. ) c16 ] | -g2 s4 | -s2.*12 | -s2*35 | -r4 r8 g'8^"Cor. I" ( | -) g,4. s8 | -s2*65 | -[f,16^"Vlc." ( g f g][f g f8 ] | -) e4 r | -[f16 ( g f_"dim." g][f g f8 ] | -) e4 r | -s2*35 | -r4 r8 a''^"Oboe" | -a-. [ gis-. gis-. \< g-.] | -[g-. fis-. \! fis-. f-. ] | -} - -corII=\notes\relative c'' { -\key c; - -\property Staff."midiInstrument" = "french horn" - -R2.*19 | -r4 r [g8^"solo" \p (\< ) e'] | -\grace d8 \! g2 \> ( [e8. ) \! c16 ] | -g2 r 4 | -r r \times 2/3 {[e'8 \p ( g, ) g' ]} | -g4 \> () \! e r | -r r \times 2/3 {[g8 \p ( e ) g ]} | -d4 \> () \! g r | -r r [g,16 ( \p d' e d ] | -) g,4 r r | -R2. | -[g8. ( a16 g8. a16 g8. a16] | -[g8._"dim." a16 ] g4. a8 | -[g8. a16] ) g4 \pp r8 r | -R2*8 | -g8-. \pp r c,-. r | -g'-. r c,-. r | -R2 | -r4 r8 e \f ~ | -e4. r8 | -c4. r8 | -c4. r8 | -e4. r8 | -c4. r8 | -g'4. r8 | -c,4. r8 | -g'4. r8 | -e r e r | -e r e r | -fis4 \fz r | -R2*13 | -r4 r8 g \f ( | -) g,4. r8 | -R2*2 | -r4 r8 g' ( | -) g,4.-> g'8 ( | -) g,4.-> g'8 ( | -) g,4.-> r8 | -R2 | -r4 r8 g' ( | -) g,4.-> g'8 ( | -) g,4.-> r8 | -R2*6 | -d''4. \f r8 | -R2 | -c4. \fz r8 | -c4. \fz r8 | -g4 g,-> ~ | -g g-> ~ | -g g ~ | -g r | -g4 g-> ~ | -g g-> ~ | -g g-> ~ | -g r | -g4 g ~ | -g_"dim." g ~ | -g g ~ | -g g ~ | -g8 r r4 | -R2*35 | -c2 \pp ~ | -c4. r8 | -R2*4 | -g'8-. \pp r c,-. r | -g'-. r c,-. r | -R2 | -r4 r8 e \f ( | -) g4. r8 | -c,4. r8 | -c4. c8 | -c2:8 | -c'4. r8 | -d4 () c8 r | -d4 () c8 r | -d4 () c8 r | -c,4 r | -e r | -c r | -e r | -c'8 r d r | -es r d r | -g, \fz r r4 | -R2*13 | -c,4. \f c8 ( | -)c,4. r8 | -R2*2 | -c'4. c8 ( | -)c,4. c''8 | -c,4. c'8 | -c,4. r8 | -R2 | -r4 r8 c' \f ~ | -c4. c8 ~ | -c4. r8 | -R2*3 | -r4 r8 c,8 \p | -c2:8 | -c4.:8 e8 ( | -) g4. \f r8 | -R2 | -g4. \fz r8 | -g4. g8 ( | -) c r g4 ( | -) c8 r g4 ( | -) c8 r c,4 ( | -[ ) g'8 d'-. d-. g,-. ] | -c r g4 ( | -) c8 r g4 ( | -) c8 r c,4 ( | -[ ) g'8 d'-. d-. g,-. ] | -c r g4 ( | -) c8 r g4_"dim." ( | -) c,8 r c4 ~ | -c8 r r4 | -R2*4 | -c2 \p ~ | -c ~ | -c4 r | -r [c'8. \f ( d16 ] | -) c2 ( | -) g ~ | -g_"dim." ~ | -g ~ | -g \pp ~ | -g ~ | -g ~ | -g | -R2*2 | -g \fz ~ | -g ~ | -g ~ | -g | -c, \< | -c | -\! c4. r8 | -d'4. r8 | -g,4. r8 | -g4. r8 | -c2 ( | -) c,4. r8 | -c'2 ( | -) c,4. r8 | -d'4. r8 | -g,4. g8 | -[c-. g-. c-. g-. ] | -[c-. g-. c-. g-. ] | -c r g r | -c, r g' r | -c r g r | -e r g r | -e4 r8 g ( | -) c,4 r8 g'8 ( | -) e4 r8 g ( | -) c,4 r8 g'8 ( | -) e4 r | -R2 | -c'4-. \fz r -} - -trpI=\notes\relative c'' { -\key c; - -\property Staff."midiInstrument" = "trumpet" - -[d8. ( \f e16 ] ) d2 | -R2.*30 | -r4 r r8 r | -R2*12 | -g,2 \f ~ | -g4 r | -g r | -g () fis8 r | -R2 | -d'4 r | -R2 | -d4 r | -R2*2 | -e8 \f r r4 | -R2*19 | -c4. \f r8 | -c4. r8 | -R2*2 | -c4. \f r8 | -c4. r8 | -R2*8 | -e4. \f r8 | -e4. r8 | -r4 e-> ( | -) d8 r e4-> ( | -) d8 r d4 ( | -) e8 r r4 | -r e ( | -) d8 r e4 ( | -) d8 r d4 ( | -) e8 r r4 | -r e_"dim." | -) d8 r e4 ( | -) d8 r r4 | -R2*47 | -g,2 \f ~ | -g4 r | -g r8 g | -g2:8 | -c4. r8 | -c4. r8 | -c4. r8 | -e4. r8 | -e,4. r8 | -e'4. r8 | -e,4. r8 | -e'4. r8 | -e8 r e r | -e r e r | -d \fz r r4 | -R2*13 | -r4 g,8 \f r | -[d'-. d16 ( e ] ) d8 r | -R2*2 | -r4 g,8 \f r | -[d'-. d16 ( e ] ) d8 r | -g,4. \f r8 | -g4. r8 | -R2*2 | -g4. \f r8 | -g4. r8 | -R2*6 | -d'4. \f r8 | -R2 | -c4. \f r8 | -c4. r8 | -g4 r | -g r | -g8 r g r | -[d' d16 ( e ] ) d8 r | -g,4 r | -g r | -g8 r g r | -[d' d16 ( e ] ) d8 r | -g,4 \p r | -g_"dim." r | -g r | -R2*25 | -c4 \f r | -e r | -d r | -d r | -g, r | -e' () d8 r | -g,4 r | -e' () d8 r | -e4-. r | -d-. r | -d8-. r d-. r | -d-. r d-. r | -d-. r d-. r | -d-. r d-. r | -d r d r | -d r d r | -g,4 r | -d'-. r | -d-. r | -d-. r | -g, r | -R2 | -g4 \fz r -} - -trpIcue=\notes\relative c'' { -\tiny - -s2.*32 | -s2*9 | -r4^"Clar. I" r8 c-. | -[bes-. a-. g-. f-. ] | -[e-. d-. c-. ] r8 | -s2*23 | -r4^"Cor. I" r8 g''8 ( | -) g,4. g8 ( | -[) d' d16 ( e ] )d8 s | -s2*75 | -r4^"Clar. I" r8 c-. | -[bes-. a-. g-. f-. ] | -[e-. d-. c-. ] s8 | -s2*25 -r4^"Oboe" r8 a'' | -a-. [ gis-. gis-. \< g-.] | -[g-. fis-. \! fis-. f-. ] | -s2*53 | -r4^"Flauto" r8 [c'16 ( d] | -) c8 [b16 ( c ] ) b8 [bes16 ( c ] | -)bes8 [a16 ( bes ] ) a8 [c16 ( d] | -) c8 [b16 ( c ] ) b8 [bes16 ( c ] | -)bes8 [a16 ( bes ] ) a8 -} - -trpIIcue=\notes\relative c'' { -\tiny - -[c8.^"Oboe" ( d16] ) c2 | -[c8. ( d16] ) c2 | -s2.*30 | -s2*9 | -r4^"Clar. I" r8 c-. | -[bes-. a-. g-. f-. ] | -[e-. d-. c-. ] r8 | -s2*23 | -r4^"Cor. I" r8 g''8 ( | -) g,4. g8 ( | -[) d' d16 ( e ] )d8 s | -s2*75 | -r4^"Clar. I" r8 c-. | -[bes-. a-. g-. f-. ] | -[e-. d-. c-. ] s8 | -s2*28 -r4^"Trp. I" g'8 \f r | -[d'-. d16 ( e ] ) d8 r | -s2*51 | -r4^"Flauto" r8 [c'16 ( d] | -) c8 [b16 ( c ] ) b8 [bes16 ( c ] | -)bes8 [a16 ( bes ] ) a8 [c16 ( d] | -) c8 [b16 ( c ] ) b8 [bes16 ( c ] | -)bes8 [a16 ( bes ] ) a8 -} - -trpII=\notes\relative c' { -\key c; - -\property Staff."midiInstrument" = "trumpet" - -R2.*31 | -r4 r r8 r | -R2*12 | -g2 \f ~ | -g4 r | -g r | -g' () fis8 r | -R2 | -d'4 r | -R2 | -d4 r | -R2*2 | -e,8 r r4 | -R2*19 | -c4. \f r8 | -c4. r8 | -R2*2 | -c4. \f r8 | -c4. r8 | -R2*8 | -e4. \f r8 | -e4. r8 | -r4 g4-> ( | % added > -) fis8 r g4-> ( | % added > -) fis8 r d'4 ( | -) e8 r r4 | -r g, ( | -) fis8 r g4 ( | -) fis8 r d'4 ( | -) e8 r r4 | -r g, ( | -) fis8_"dim." r g4 ( | -) fis8 r r4 | -R2*47 | -g,2 \f ~ | -g4. r8 | -g4 r | -R2 | -c4. r8 | -c4. r8 | -c4. r8 | -e4. r8 | -c4. r8 | -g'4. r8 | -c,4. r8 | -g'4. r8 | -e r e r | -e r e r | -c' r r4 | -R2*19 | -g4. \f r8 | -g4. r8 | -R2*2 | -g,4. \f r8 | -g4. r8 | -R2*6 | -d''4. r8 | -R2 | -c,4. \f r8 | -c4. r8 | -g4. r8 | -g4 r | -g8 r r4 | -R2 | -g4 r | -g r | -g8 r r4 | -R2 | -g4 r | -g_"dim." r | -g r | -R2*25 | -c4 \f r | -e r | -d' r | -d r | -g,, r | -c' () g8 r | -g,4 r | -c' () g8 r | -g4 r | -fis r | -g8-. r g-. r | % Staccato copied from trp. I -g-. r g-. r | -g-. r d'-. r | -g,-. r d'-. r | -g, r g r | -g r g r | -g4-. r | -g-. r | -g-. r | -g-. r | -g r | -R2 | -g4 \fz r -} - -timpani=\notes\relative c, { -\clef "bass"; - -\property Staff."midiInstrument" = "timpani" - -r2. | % Ensure that the staff is printed on page 1 of the score. -R2.*5 | -f2.:32 \pp ~ | -f2.:32 ~ | -f2.:32 ~ | -f2.:32 ( | -) c'4 r r | -R2.*3 | -c2.:32 \pp | -c2.:32 | -c2.:32 | -c2.:32 | -c4 r r | -R2.*7 | -c2.:32 \pp | -c2.:32 | -c2.:32 | -c2.:32 | -c4 r r | -r r r8 r | -R2*12 | -f,2:32 \f ~ | -f4 r | -f r | -R2 | -f8 r r4 | -R2 | -f8 r r4 | -R2*14 | -\context Staff <{\voiceone \clef "treble"; - r4^"Trg." r8 e''' | - [e e e e ] | - [e e e g,, ] | % In reality: e e e e | e - g r r4 | - s4. \clef treble; e''8 | - e2:8 | - [e8 e e g,,] | % In reality: e e e e | e - g8 r r4 } - {\voicetwo r2 | r | - r4_" Timp." r8 \clef bass; c, \p | - [c-. \< c-. c-. \! c-.] | - c4.:8 \f r8 | - R2 | - r4 r8 \clef bass; c \p | - c2:8 \< | - \! c4.:8 \f r8 } >| -c,4:32 ~ c8 r | -c4:32 ~ c8 r | -R2*2 | -f,4:32 \f ~ f8 r | -f4:32 ~ f8 r | -\context Staff <{\voiceone \clef "treble"; - [e''' e e e ] | - e r r e | - e2:8 | - [e8 e e g,, ] |} % In reality: e e e e - {\voicetwo r2 | - r2 | - r2 | - r4 r8 \clef bass; c, \p |}> -c,2:8 \< | -\! c4.:8 r8 | -R2*4 | -c4 \f r | -c4 r | -c2:32 ~ | % Added tie -c8 r r4 | -c4 r | -c4_"dim." r | -c2:32 ~ | -c8 r r4 | -c4_"dim." r | -c4 r | -c4 r | -c4 r | -c8 r r4 | -R2*45 | -f,2:32 \f ~ | -f4 r | -f4 r | -R2 | -f4 r | -R2*3 | -f8 r r4 | -R2 | -f8 r r4 | -R2*3 | -c'4 \fz r | -R2*10 | -\context Staff <{\voiceone \clef "treble"; - r4^"Trg." r8 e'' | - [e e e e ] | - [e e e g,, ] | % In reality: e e e e | e4 - g4 r4 | - s4. \clef treble; e''8 | - [e e e e ] | - [e e e g,, ] | % In reality: e e e e | e4 - g4 r4 | - s2 | s2 | - s4. \clef treble; e''8 | - [e e e e ] | - e r r e | - s2 | s | s | - r4 r8 \clef treble; e | - [e e e e ] | - [e e e g,, ] | % In reality: e e e e -} - {\voicetwo r2 | - r | - r4 r8 \clef bass; f, \p | - [f \< f f \! f ] | - f4.:8 \f r8 | - r2 | - r4 r8 \clef bass; f \p | - f2:8 \< | - \! f4.:8 \f r8 | - f4:32 \f ~ f8 r | - f4:32 ~ f8 r | - r2 | - r | \clef bass; - f4:32 \f ~ f8 r | - f4:32 ~ f8 r | - r2 | r | r | - r4 r8 \clef bass; f \p | - }> -f,2:8 | -f4.:8 r8 | -R2*2 | -c'4 \f r | -c r | -f, r | -f r | -f2:32 ~ | -f8 r r4 | -f r | -f r | -f2:32 ~ | -f8 r r4 | -f r | -f_"dim." r | -f r | -R2*28 | -r4 r8 c' \f | -f,2:32^\trill ~ | -f4 r8 c' | -f,2:32^\trill ~ | -f4 r | -f r | -c' r8 c-. | -[f,-. c'-. f,-. c'-.] | -[f,-. c'-. f,-. c'-.] | -f, r c' r | -f, r c' r | -f, r c' r | -f, r c' r | -f,2:32 \ff ~ | -f2:32 ~ | -f2:32 ~ | -f2:32 ~ | -f8 r r4 | -r2 | -f4 \fz r -} - -timpcue=\notes\relative c' { -\tiny - -[c8.^"Oboe, \\okt" ( d16] ) c2 | -[c8. ( d16] ) c2 | -s2.*30 | -s2*9 | -r4^"Clar. I" r8 \clef "treble"; c'-. | -[bes-. a-. g-. f-. ] | -[e-. d-. c-. ] r8 \clef "bass"; | -s2*24 | -%r4 r8 \clef "treble"; [g''16^"oboe" \p ( a ] | -%[ ) g8-. fis16 ( g ][ ) fis8-. f16 ( g ] | -%[ ) f8-. e16 ( f ] ) e8-. \clef "bass"; s | -s2*77 | -r4^"Clar. I" r8 \clef "treble"; c'-. | -[bes-. a-. g-. f-. ] | -[e-. d-. c-. ] r8 \clef "bass"; | -s2*28 -%r4^"Oboe" r8 \clef "treble"; a'' | -%a-. [ gis-. gis-. \< g-.] | -%[g-. fis-. \! fis-. ] \clef "bass"; s8 | -s2*57 | -r4^"Vi. I" r8 \clef "treble"; bes' ( | -) bes'4. d,8 ( | -) d'4. c,8 ( | -) c'4. e,8 ( | -) e'4. \clef "bass"; s8 | -} \ No newline at end of file diff --git a/mutopia/N.W.Gade/global.ly b/mutopia/N.W.Gade/global.ly deleted file mode 100644 index 82221cbef6..0000000000 --- a/mutopia/N.W.Gade/global.ly +++ /dev/null @@ -1,53 +0,0 @@ - -globalNoKey=\notes { -\time 3/4; -\tempo 4=100; % My own suggestion, M.B. -\skip 2.*31; -s4 s4^\fermata s8^\fermata \bar "||"; \break -s8 -\time 2/4; -\tempo 4=130; % My own suggestion, M.B. -\skip 2*224; -s4 s4^\fermata -\bar "|."; -} - -global=\notes { -\key f; -\globalNoKey -} - -marks= \notes { -\time 3/4; -%\property Thread.textStyle = "Large" -s2.^"\\raisebox{4mm}{\\bfseries\Large Andante con moto}" -\skip 2.*30; -s2 s8 s^"\\raisebox{4mm}{\\bfseries\Large Allegro molto vivace}" -\time 2/4; -\skip 2*12; -\mark "A"; -\skip 2*12; -\mark "B"; -\skip 2*26; -\mark "C"; -\skip 2*24; -\mark "D"; -\skip 2*32; -\mark "E"; -\skip 2*10; -\mark "F"; -\skip 2*26; -\mark "G"; -\skip 2*16; -\mark "H"; -\skip 2*20; -\mark "I"; -\skip 2*12; -\mark "K"; -\skip 2*16; -\mark "L"; -\skip 2*8; -\mark "M"; -\skip 2*11; -%slut -} diff --git a/mutopia/N.W.Gade/global.tex b/mutopia/N.W.Gade/global.tex deleted file mode 100644 index 003def855a..0000000000 --- a/mutopia/N.W.Gade/global.tex +++ /dev/null @@ -1,58 +0,0 @@ -%\def\fetdef#1#2{% -% \def#1{\hbox{\fetchar{#2}}}} -%\font\fetasixteen = feta16 -%\def\fetchar#1{{\fetasixteen\char#1}} -%\input{feta20} %%% Add lilypond-xxx/mf/out/ to TEXINPUTS - -\newcommand{\okt}{$8^{va}$} - -\newcommand{\thecopyright}{ - \begin{tabular}{l} - \copyright{} mats.bengtsson@s3.kth.se, 1999. Free circulation permitted and - encouraged.\\ Typeset from handwritten parts at Statens - Musikbibliotek, Stockholm, Sweden - \end{tabular} -} - -% Modified from lilypond/tex/headers.tex: -\advance\topmargin-5mm -\advance\headsep-4mm -\addtolength{\textheight}{17mm} -\advance\footskip-5mm - -\usepackage{fancyheadings} -\lhead{\textbf{\large\theinstrument}} -\chead{} -\lfoot{} -\cfoot{\ifnum\thepage=1{\thecopyright\hfill\mudelatagline}\fi} -\rfoot{\ifnum\thepage>1{\hfill\thepage\hfill}\fi} -\headrulewidth0mm -\pagestyle{fancy} - -% Modified from lilypond/tex/titledefs.tex: -\def\makelilytitle{% - \vspace*{-10mm}% - \begin{center} - \bfseries - \ifx\mudelanull\thetitle\else{\huge\thetitle}\\ \fi - \ifx\mudelanull\thesubtitle\else{\Large\thesubtitle}\\ \fi - \end{center} - \bigskip - % urg - \edef\saveparskip{\parskip}\parskip-5mm - \begin{minipage}[t]{0.45\textwidth} - \ifx\mudelanull\thepoet\else{\thepoet}\\ \fi - \ifx\mudelanull\themetre\else{\themetre}\\ \fi - \end{minipage}\hspace*{\fill} - \begin{minipage}[t]{0.45\textwidth} - \begin{flushright} - \ifx\mudelanull\thecomposer\else{\large\normalfont\scshape\thecomposer}\\ \fi - \ifx\mudelanull\theopus\else{\theopus}\\ \fi - \ifx\mudelanull\thearranger\else{\thearranger}\\ \fi - \end{flushright}% - \end{minipage}\par - \parskip\saveparskip - {\flushleft{\Large\textbf\thepiece}\\}% -% \leavevmode% -% \enlargethispage*{7mm}% -} diff --git a/mutopia/N.W.Gade/parts.ly b/mutopia/N.W.Gade/parts.ly deleted file mode 100644 index 5e4c429c19..0000000000 --- a/mutopia/N.W.Gade/parts.ly +++ /dev/null @@ -1,329 +0,0 @@ -\header{ -title = "Imellem Fjeldene. Ouverture"; -composer = "Niels W Gade"; -enteredby = "Mats Bengtsson"; -latexheaders = "\\input global"; -copyright = "Mats Bengtsson, 1999. Free circulation permitted and " + - "encouraged.\\\\ Typeset from handwritten parts at " + - "Statens Musikbibliotek, Stockholm, Sweden"; -} - -% Process with 'ly2dvi -s parts.ly' to get the separate parts. - - -\version "1.3.4"; - -\include "global.ly" -\include "wood.ly" -\include "brass.ly" -\include "strings.ly" - -my_paper = \paper { - textheight = 265.0 \mm; - \translator { - \OrchestralPartStaffContext - } - \translator { - \ScoreContext - skipBars = 1; - barNumberScriptPadding = "12.0"; - markScriptPadding = "20.0"; - dynamicPadding = 3.0; - textScriptPadding = 5.0; - textStyle = "italic"; - textEmptyDimension = 1; - noAutoBeaming = "1"; % Beams inserted explicitly as in the original. - } -} - -\score{ - \context Staff < - \context Voice < - \global - \marks - \flauto - > - \context Voice = cue \flautocue - > - \header{ - instrument = "Flauto"; - } - \paper{ - \my_paper - output = "flauto"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Staff < - \context Voice < - \global - \marks - \oboe - > - \context Voice = cue \oboecue - > - \header{ - instrument = "Oboe"; - } - \paper{ - \my_paper - output = "oboe"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Voice < - \globalNoKey - \marks - \clarI - > - \header{ - instrument = "Clarinetto I in B\\textflat"; - } - \paper{ - \my_paper - output = "clarI"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Voice < - \globalNoKey - \marks - \clarII - > - \header{ - instrument = "Clarinetto II in B\\textflat"; - } - \paper{ - \my_paper - output = "clarII"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Voice < - \global - \marks - \fagotto - > - \header{ - instrument = "Fagotto"; - } - \paper{ - \my_paper - output = "fagotto"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Staff < - \context Voice < - \globalNoKey - \marks - \corI - > - \context Voice = cue \corIcue - > - \header{ - instrument = "Corno I in F"; - } - \paper{ - \my_paper - output = "corI"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Staff < - \context Voice < - \globalNoKey - \marks - \corII - > - \context Voice = cue \corIIcue - > - \header{ - instrument = "Corno II in F"; - } - \paper{ - \my_paper - output = "corII"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Staff < - \context Voice < - \globalNoKey - \marks - \trpI - > - \context Voice = cue \trpIcue - > - \header{ - instrument = "Tromba I in B\\textflat"; - } - \paper{ - \my_paper - output = "trpI"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Staff < - \context Voice < - \globalNoKey - \marks - \trpII - > - \context Voice = cue \trpIIcue - > - \header{ - instrument = "Tromba II in B\\textflat"; - } - \paper{ - \my_paper - output = "trpII"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Staff < - \context Voice < - \globalNoKey - \marks - \timpani - > - \context Voice = cue \timpcue - > - \header{ - instrument = "Timpani \& Triangolo"; - } - \paper{ - \my_paper - output = "timpani"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Voice < - \global - \marks - \viI - > - \header{ - instrument = "Violino I"; - } - \paper{ - \my_paper - output = "viI"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Voice < - \global - \marks - \viII - > - \header{ - instrument = "Violino II"; - } - \paper{ - \my_paper - output = "viII"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Voice < - \global - \marks - \notes{s2.*32 s2*142 \break} - \vla - > - \header{ - instrument = "Viola"; - } - \paper{ - \my_paper - output = "viola"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Voice < - \global - \marks - \vlc - > - \header{ - instrument = "Violoncello"; - } - \paper{ - \my_paper - output = "violoncello"; - } - \midi { - \tempo 4=120; - } -} - -\score{ - \context Voice < - \global - \marks - \cb - > - \header{ - instrument = "Contrabasso"; - } - \paper{ - \my_paper - output = "cb"; - } - \midi { - \tempo 4=120; - } -} diff --git a/mutopia/N.W.Gade/score.ly b/mutopia/N.W.Gade/score.ly deleted file mode 100644 index a672ff8f16..0000000000 --- a/mutopia/N.W.Gade/score.ly +++ /dev/null @@ -1,166 +0,0 @@ -\header{ -title = "Imellem Fjeldene. Ouverture"; -composer = "Niels W Gade"; -enteredby = "Mats Bengtsson"; -latexheaders = "\\input global"; -copyright = "Mats Bengtsson, 1999. Free circulation permitted and " + - "encouraged.\\\\ Typeset from handwritten parts at " + - "Statens Musikbibliotek, Stockholm, Sweden"; -} - -\version "1.3.4"; - -\include "global.ly" -\include "wood.ly" -\include "brass.ly" -\include "strings.ly" -\include "paper16.ly" - -\score{ < - \context StaffGroup = wood < - \context Voice = flauto < - \property Staff.instrument = "Flauto" - \property Staff.instr = "Fl." - \global - \marks - \flauto - > - \context Voice = oboe < - \property Staff.instrument = "Oboe" - \property Staff.instr = "Ob." - \global - \oboe - > - \context Voice = clarI < - \property Staff.instrument = "Clar. I in B\\textflat " - \property Staff.instr = "Cl. I" - \globalNoKey - \clarI - > - \context Voice = clarII < - \property Staff.instrument = "Clar. II in B\\textflat " - \property Staff.instr = "Cl. II" - \globalNoKey - \clarII - > - \context Voice = fagotto < - \property Staff.instrument = "Fagotto" - \property Staff.instr = "Fg." - \global - \fagotto - > - > - \context StaffGroup = brass < - \context Staff = cor < - \property Staff.instrument = "2 Corni in F" - \property Staff.instr = "Cor." - \context Voice = corI < - \globalNoKey - \stemup \property Voice.dynamicDirection = \up - \property Voice.articulationScriptVerticalDirection = \up - \corI - > - \context Voice = corII { - \stemdown \property Voice.dynamicDirection = \down - \property Voice.articulationScriptVerticalDirection = \down - \corII - } - > - \context Staff = trp < - \property Staff.instrument = "2 Trp. in B\\textflat " - \property Staff.instr = "Trp." - \context Voice = trpI < - \globalNoKey - \stemup \property Voice.dynamicDirection = \up - \property Voice.articulationScriptVerticalDirection = \up - \trpI - > - \context Voice = trpII { - \stemdown \property Voice.dynamicDirection = \down - \property Voice.articulationScriptVerticalDirection = \down - \trpII - } - > - > - \context StaffGroup = percussion <\context Voice = timpani < - \property Staff.instrument = "Timp. \& Triang." - \property Staff.instr = "\qquad Tmp\& Trg" - \global - \timpani - > - > - \context StaffGroup = strings < - \context GrandStaff = violins < - \context Voice = viI < - \property Staff.instrument = "Violin I" - \property Staff.instr = "Vi. I" - \global - \viI - > - \context Voice = viII < - \property Staff.instrument = "Violin II" - \property Staff.instr = "Vi. II" - \global - \viII - > - > - \context Voice = vla < - \property Staff.instrument = "Viola" - \property Staff.instr = "Vla." - \global - \vla - > - \context Voice = vlc < - \property Staff.instrument = "Violoncello" - \property Staff.instr = "Vlc" - \global - \vlc - > - \context Voice = cb < - \property Staff.instrument = "Contrabasso" - \property Staff.instr = "C.B." - \global - \cb - > - > -> - \paper { -% \paper_sixteen; - linewidth = 18.0\cm; - \translator { - \OrchestralScoreContext - minVerticalAlign = 2.5*\staffheight; - barNumberScriptPadding = "12.0"; - markScriptPadding = "20.0"; - } - \translator { - \HaraKiriStaffContext - \consists "Staff_margin_engraver"; - marginScriptPadding = "15.0"; - dynamicPadding = 3.0; - textStyle = "italic"; - textScriptPadding = 5.0; - textEmptyDimension = 1; - noAutoBeaming = "1"; % Beams inserted explicitly as in the original. - } - } -} - -\score{ - \context StaffGroup < \global - \context Staff = oboe \oboe - \context Staff = flauto \flauto - \context Staff = clarinetsInBes {\notes \transpose bes <\clarI \clarII >} - \context Staff = fagotto \fagotto - \context Staff = corniInF {\notes \transpose f <\corI \corII >} - \context Staff = trumpetsInBes {\notes \transpose bes <\trpI \trpII >} - \context Staff = timpani \timpani - \context Staff = violinoi \viI - \context Staff = violinoii \viII - \context Staff = viola \vla - \context Staff = violoncello \vlc - \context Staff = contrabass \cb - > - \midi { - } -} diff --git a/mutopia/N.W.Gade/strings.ly b/mutopia/N.W.Gade/strings.ly deleted file mode 100644 index d8adf8359f..0000000000 --- a/mutopia/N.W.Gade/strings.ly +++ /dev/null @@ -1,1334 +0,0 @@ -\version "1.3.4"; - -viI=\notes\relative c'' { - -\property Staff."midiInstrument" = "violin" - -r4 r [g8.-> \mf ( a16 ] | -) g4 r c, \p | -[c'8. ( d16 ] c4. a8 | -[f8. e16 ] f4. ) a8 | -[c8. ( d16 ] c4. ) a8 | -[a8. ( g16 ] ) f4 r | -[c'8. ( d16 ] c4. a8 | -[f8. e16 ] f4. ) a8 | -[c8. ( d16 ] c4. ) a8 | -[a8. ( g16 ] ) f4 r | -[c'8. \mf ( \< d16 ] [b8 c] \! ) f4 | -[ e8. \> ( d16 ] c4 \! ) g \pp | -[c8. ( \< d16 ] [b8 c] \! ) f4 | -[ e8. \> ( d16 ] ) \! c2 \p | -[c8. ( d16 ] c4. a8 | -[g8. a16 ] f4. ) a8 | -[c8. ( d16 ] c4. ) a8 | -[a8. ( g16 ] ) f4 r | -g2 \< ( \! f4 | -e \> \! ) f r | -r8 [ c ( g' c, f c ] | -[ bes c a8 c a ) c ] | -[a ( c a c a c ] | -[a \pp c a c a ) c ] | -[bes ( c ] bes4 [a8 c ] | -[ bes c ] ) bes2 ~ | -bes r4 | -R2.*4 | -r4 r r8 [c'16 \pp ( d] | \time 2/4; -) c8 r r [c16 ( d] | -) c8 r r [c16 ( d] | -[c d c a][f a c d] | -[f8 d ) c d ( ] | -[ ) a bes () g d' ( ] | -[ ) a bes () g ] [d'16 ( es ] | -[ d es d bes][g bes d es] | -[ g8 es ) d bes ( ] | -[) g a () f c' ( ] | -[) g a () f ][ c'16 ( d ] | -[ ) c8 c16 ( d ][ ) c8 c16 ( d ] | -[ ) c8 c16 ( d ][ ) c8 c16 \f ( d ] | -[c d c a][f a c d] | -[f8 d ) c f, ( ] | -[f' d ) c a ( ] | -[a' f ) e ] [a,,16 ( b ] | -[c-> d c b ][ ) a8 a'16 ( b ] | -[c d c b ][ ) a8 a,16 ( b ] | -[c \> d c \! b ][ ) a8 a'16 ( b ] | -[c d c b ][ ) a8 a,16 ( b ] | -[) c8-. b16 ( c][ ) d8-. c16 ( d ] | -[ es f es ) d ][c8-. d'16 ( e ] | -[f! \fz g f e][d \> e d c ] | -[ b c b \! a][g a g ) fis ] | -f!4 ( \p \< g | -\! a2 | -a4 \> [g8 \! f'] | -[e c a ) g ] | -f4 ( \< g | -\! a2~ | -a4 \> ) g | -\! a2 ( | -[a8_"dim." g f d] | -[b g ] \grace b8 [a ) g ] | -R2 | -r4 r8 a'-. \mf | -[a-. \< a-. a-. \! a-. ] | -b4. \fz r8 | -R2 | -r4 r8 a-. \mf | -[a-. \< a-. a-. \! a-. ] | -b4. \f bes8 ( | -) bes'4.-> bes,8 ( | -) bes'4.-> a8 \p | % added \p -[g-. \< f-. e-. \! d-. ] | -[cis16 ( e d b][ ) g8 \f bes8 (] | -) bes'4.-> bes,8 ( | -) bes'4.-> a8 \p | -[g-. \< f-. e-. \! d-. ] | -[g, g'16 \f ( a ][ ) g8 g,, \p ] | -g4^\trill ( a^\trill | % added longer slur and trills -b^\trill \grace{[a16 b]} [c8 ) g ] | -g4^\trill ( a^\trill | -b^\trill \grace{[a16 b]} [) c8 bes' \f ( ] | -) bes'4.-> a8 | -[f-. e-. d-. f, ( ] | -< ) d'4. \fz a'> g,8 ( | -< ) d'4. \fz g> g,8 ( | -) e' r g4-> ( | -) e8 r g4-> ( | -) e8 r es4 ( | -[) d8 g16 ( a ] [ ) g8 g, ( ] | -) e'! r g4-> ( | -) e8 r g4-> ( | -) e8 r es4 ( | -[) d8 g16 ( a ] [ ) g8 g, ( ] | -) e' r g4_"dim." ( | -) e8 r d4 ( | -) e8 r g4 ( | -) e8 r d4 ( | -[ ) e8 \p g,-. a-. b-.] | -c r r4 | -R2 | -r4 e,-. \p | -a ( \< ) e' | -e-. () \! e-. | -e \fz \> [ d8 \! c ] | -b2 \p | % \p added -\grace e8 g4 ( \> dis | -\! e ) b | -\grace e8 g4 ( \> dis | -\! e ) b | -\grace d8 f2 \fz ( | -b,4 [c8 ) b] | -a2-> ( | -) gis4 e | -a ( ) e' | -e-. \< () \! e-. | -e ( \fz \> [ d8 \! c ] | -) b2 \p | -\grace e8 g4 ( \> dis | -\! e ) b | -\grace e8 g4 ( \> dis | -\! e ) b | -\grace d8 f2 \fz ( | -b,4 [c8 ) b] | -a2 \p ( | -) gis | -\grace a8 d2 ( \> | -b4 [ c8 \! b ] | -a2 \p | -) gis | -R2*4 | -[c16 ( \pp d c a][f a c d] | -[f8 d ) c d ( ] | -[ ) a bes () g d' ( ] | -[ ) a bes () g ] [d'16 ( es ] | -[ d es d bes][g bes d es] | -[ g8 es ) d bes ( ] | -[) g a () f c' ( ] | -[) g a () f ][ c'16 ( d ] | -[ ) c8 c16 ( d ][ ) c8 c16 ( d ] | -[ ) c8 c16 ( d ][ ) c8 c16 \ff ( d ] | -[c d c a][f a c d] | -[f8 d ) c f, ( ] | -[f' d ) c ][f,16 ( g] | -[ ) f8 f16 ( g][ ) f8 f'16 ( g] | -[f g f d][bes d f g] | -[bes8 g ) f bes, ( ] | -[bes'8 g ) f d ( ] | -[d' bes ) a d,,16 ( e ] | -[f g f e ][ ) d8 d'16 ( e ] | -[f-> g f e][ ) d8 d,16 ( e ] | -[f g f e ][ ) d8 d'16 ( e ] | -[f g f e][ ) d8 d,16 ( e ] | -[ ) f8 e16 ( f][ ) g8 f16 ( g ] | -[as bes as g][ ) f8 g'16 ( a! ] | -[bes! \fz c bes a][g a g ) f ] | -[e ( f e d][c d c ) b ] | -bes!4 \p ( \< c | % \p added -\! d2 ~ | -d4 [c8 bes' \> ] | -[a f d ) \! c ] | -bes4 ( \< c | -\! d2 ~ | -d4 \> c | -\! d2 | -[d8_"dim." c][bes g] | -[e c] \grace e8 [d ) c ] | -R2 | -r4 r8 d' \mf | -d2:8 \< | -\! e4 \f r | -R2 | -r4 r8 d | -d2:8 \< | -\! e4 \f r8 es ( | -) es'4.-> es,8 ( | -) es'4.-> d8 \p | -[c-. \< bes-. a-. \! g-. ] | -[fis16 ( a g ) e!] [c8 es8 ( \f ] | -) es'4.-> es,8 ( | -) es'4.-> d8 \p | -[c-. \< bes-. a-. \! g-. ] | -[c, c'16 ( \f d] [) c8 c,, \p ] | -c4^\trill ( d^\trill | -e^\trill \grace{[d16 e]} [f8 ) c ] | -c4^\trill ( d^\trill | -e^\trill \grace{[d16 e]} [f8 ) es' \f ( ] | -) es'4. d8 | -[bes-. a-. g-. bes, ( ] | -) d'4. \fz c,8 ( | -) c'4. \fz c,8 ( | -) a' r c4-> ( | -) a8 r c4-> ( | -) a8 r as4 ( | -[) g8 c16 ( d][) c8 c, ( ] | -) a' r c4 ( | -) a8 r c4 ( | -) a8 r as4 ( | -[) g8 c16 ( d][) c8 c, ( ] | -) a' r c4_"dim." ( | -) a8 r g4 ( | -) f8 r c4 ( | -) a8 r g4 \p ( | -) f2 \< ~ | -\! f2 ( ~ | -f4 g | -f ) e | -es2 ( | -) d4 r | -\grace f'8 a4 \fz ( e | -f b, | -) c r | -R2 | -f,8 \p r r4 | % \p added -e8 r r [c'16 ( \pp d] | -[ ) c8-. b16 ( c ][ ) b8-. bes16 ( c ] | -[ ) bes8-. a16 ( bes ][ ) a8-. c16 ( d ] | -[ ) c8-. b16 ( c ][ ) b8-. bes16 ( c ] | -[ ) bes8-. a16 ( bes ][ ) a8-. e'16 ( f ] | -[ ) e8-. d16 ( e ][ ) d8-. c16 \< ( d ] | -[ ) c8-. b16 ( \! c ][ ) b8-. bes ] | -bes'4. \fz \> a8 | -[g-. \! f-. ] [e-. c16 ( d ] | -[ ) c8-. b16 ( c ][ ) b8-. bes16 ( c ] | -[ ) bes8-. a16 ( bes ][ ) a8-. c16 ( d ] | -[ ) c8-. b16 ( c ][ ) b8-. bes16 ( c ] | -[ ) bes8-. a16 \< ( bes ][ ) a8-. \! bes ( ] | -) bes'4. \f d,8 ( | -) d'4.-> c,8 ( | -) c'4.-> e,8 ( | -) e'4.-> [c16 ( d] | -[c d c a][f a c d] | -[f8 d ) c ][ c16 ( d ] | -[c d c a][f a c d] | -[f8 d ) c ][f,16 ( g ] | -[f g f d ][ ) b8 bes'!16 ( c ] | -[bes c bes g][ ) e8 c'16 ( d ] | -[) c8 c16 ( d ][) c8-. c16 ( d ] | -[) c8-. c16 ( d ][) c8-. c16 ( d ] | -) c8-. r c r | -a r r | - r a' r | -c r a r | - r8 c ( | - r8 c ( | - r8 c ( | - r8 c, | -f2 ~ | -f ( | - r - -} - -viII=\notes\relative c' { - -\property Staff."midiInstrument" = "violin" - -r4 r e-> \mf ~ | -e r e ( \p | -) f2 f4 ( | -) c r r | -f2 f4 ( | -) e f r | -f2 f4 ( | -) c r r | -f2 f4 ( | -e \< [f8. d16][c8. \! ) d16] | -[e8. \mf ( f16][d8 ) e] f4 ~ | -f ( e [c8 ) e] | -a2. \pp ( | -gis4 e ) f | -g! \p [f8. ( g16] ) f8 r | -c4 ( ~ [c8. d16] ) c8 r | -g'4 [f8. ( g16] ) f8 r | -c4 r r | -}> ~ | -\! c2._"dim." ~ | -c \pp ~ | -c \< ~ | -\! c \> ~ | -\! c \pp \< ~ | -\! c \> ~ | -\! c \pp ~ | -c2 r4 | -R2.*4 | -r4 r r8 [c'16 \pp ( d] | \time 2/4; -) c8 r r [c16 ( d] | -) c8 r r [c16 ( d] | -[c d c a][f a c d] | -[f8 d ) c ] r | -fis,-. r g-. r | -fis r [g d'16 ( es ] | -[ d es d bes][g bes d es] | -[ g8 es ) d ] r | -e,! r f r | -e r f r | -R2 | -r4 r8 [ c'16 \f ( d ] | -[c d c a][f a c d] | -[f8 d ) c f, ( ] | -[f' d ) c f, ( ] | -[f' d ) c ] [a,16 ( b ] | -[c d c b ][ ) a8 a'16 ( b ] | -[c-> d c b ][ ) a8 a,16 ( b ] | -[c d c b ][ ) a8 a'16 ( b ] | -[c-> d c b ][ ) a8 a,16 ( b ] | -[) c8-. b16 ( c][ ) d8-. c16 ( d ] | -[ es f es ) d ][c8-. d'16 ( e! ] | -[f! g f e][d e d c ] | -) b r r8 r4 | -<{d,2 ( \p ~ | - d4 e | - f2 | - ) e | - d ( \p ~ | - d4 e | - f2 | - f | - ) f4 } - {b,2 ( ~ | - b4 c | - b2 | - ) c | - b ( ~ | - b4 c | - b2 | - b4 c | - ) d \p } > r | -R2*2 | -r4 r8 fis-. \mf | -[fis-. \< fis-. fis-. \! fis-. ] | -f!4. \f r8 | -R2 | -r4 r8 fis-. | -fis2:8 | -f!4. \f e8 ( | -) e'4.-> e,8 ( | -) e'4.-> c,8 \p | -[cis-. \< d-. e-. \! f-. ] | -f4. \f e8 ( | -) e'4.-> e,8 ( | -) e'4.-> c,8 \p | -[cis-. \< d-. e-. \! f-. ] | -[f \f g16 ( a][ ) g8 g, \p ] | -g4^\trill ( \< \! a^\trill | -b^\trill \> \grace{[a16 b]} [ ) c8 \! g] | -g4^\trill ( \< \! a^\trill | -b^\trill \> \grace{[a16 b]} [ ) \! c8 g' \f ( ] | -< ) g4.-> bes> a8 | -[a a a f ( ] | - g,8 ( | - g,8 ( | -<{ ) e r f4_> ( | - ) e8 r f4_> ( | - ) e8 } - {c'8 s d4 ( | - ) c8 s d4 ( | - ) c8 }> r fis4 ( | -[ ) f!8 g16 ( a][ ) g8 f ( ] | -<{ ) e! r f4_> ( | - ) e8 r f4_> ( | - ) e8 } - {c'8 s d4 ( | - ) c8 s d4 ( | - ) c8 }> r fis4 ( | -[ ) f!8 g16 ( a][ ) g8 f ( ] | -<{ ) e r f4 ( | - ) e8 r f4_"dim." ( | - ) e8 r f4 ( | - ) e8 r f4 ( | - [ ) e8 \p } - {c'8 s d4 ( | - ) c8 s b4 ( | - ) c8 s d4 ( | - ) c8 s b4 ( | - [ ) c8 }> g,-. a-. b-. ] | -c r r4 | -R2*2 | -a4:16 \p \< \! b4:16 \> | -\! c2:16 \< | -\! b2:16 \> | -\! b2:16 | -b4:16 \p \< \! c4:16 \> | -\! b2:16 | -b4:16 \p \< \! c4:16 \> | -b2:16 | -\grace d8 \! f2 ( \> | % grace note c8 corrected to d8 -\! ) e | -b-> ( | -) e4 r | -a,4:16 \p b4:16 | -c2:16 \< | -\! b2:16 \fz \> | -\! b2:16 | -b4:16 \p \< \! c4:16 \> | -\! b2:16 | -b4:16 \p \< \! c4:16 \> | -\! b2:16 | -\grace d8 f2 ( \fz | -) e | -[ a,16 ( \p d a d ][a d a d] | -[ b16 d b d ][b d b ) d] | -f2 ( \> | -) \! e | -[ a,16 ( d a d ][a d a d] | -[ b16 d b d ][b d b ) d] | -R2 | -r8 [e16^"solo" ( f] ) e4 ( | -) d2_"dim." ~ | -d ( | -) c4 r | -r r8 d' ( | -[ ) a bes () g d' ( ] | -[ ) a bes () g ] r | -R2 | -r4 r8 bes ( | -[) g a () f c' ( ] | -[) g a () f ] r | -R2 | -r4 r8 [c'16 \fz ( d ] | -[c d c a][f a c d] | -[f8 d ) c f, ( ] | -[f' d ) c ][f,16 ( g] | -[ ) f8 f16 ( g][ ) f8 f'16 ( g] | -[f g f d][bes d f g] | -[bes8 g ) f bes, ( ] | -[bes' g ) f bes, ( ] | -[bes' g ) f d,16 ( e! ] | -[f-> g f e ][ ) d8 d'16 ( e ] | -[f g f e][ ) d8 d,16 ( e ] | -[f g f e ][ ) d8 d'16 ( e ] | -[f g f e][ ) d8 d,16 ( e ] | -[ ) f8 e16 ( f][ ) g8 f16 ( g ] | -[as bes as g][ ) f8 g'16 ( a! ] | % misprint fz to early -[bes! \fz c bes a][g a g f ] | -) e r r8 r4 | -<{e,2 \p ~ | - e4 \< \! f | - e2 \> | - \! f | - e \< | - e4 \! f | - e2 ( | - ) e4 ( f | - ) g4 \p } - {g2 ( ~ | - g4 a | - bes2 | - ) a | - g2 | - g4 a | - bes2 ( - ) bes2 ( - ) bes4}> r | -R2*2 | -r4 r8 b \p | -b2:8 \< | -< \! g4 bes! \fz > r | -R2 | -r4 r8 b \p | -b2:8 \< | -< \! g4 bes! \f > r8 a ( | - ) a'> a8 ( | - ) a'> f,8 \p | -[fis-. \< g-. a-. \! bes-.] | % cresc. added -bes4. a8 ( \f | - ) a'> a8 ( | - ) a'> f,8 \p | -[fis-. \< g-. a-. \! bes-.] | -[bes \f c16 ( d][)c8 c, \p ] | -c4^\trill ( \< \! d^\trill | -e^\trill \> \grace{[d16 e]} [ \! f8 ) c ] | -c4^\trill ( d^\trill | -e^\trill \grace{[d16 e]} [ ) f8 a ( \f ] | - d8 | -[d d d bes \f (] | - bes8 (| - bes8 (| -<{a r bes4 ( | - ) a8 r bes4 ( | - ) a8} - { ) f' r g4^> ( | - ) f8 r g4^> ( | - ) f8}> r b4 ( | -[ ) bes!8 c16 ( d][ ) c8 bes ( ] | -<{a r bes4 ( | - ) a8 r bes4 ( | - ) a8} - {) f' r g4 ( | - ) f8 r g4 ( | - ) f8}> r b4 ( | -[ ) bes!8 c16 ( d][ ) c8 bes ( ] | -<{a r bes4_"dim." ( | - ) a8 r bes4 ( | - ) a8} - {) f' r g4 ( | - ) f8 r e4 ( | - ) f8}> r g4 ( | -) c,8 r e4 \p | -es2 ( | -) d4 \< \! des | -c2 \> ~ | -\! c | -a4 ( \< c | -d \! des | -c \f \> ) bes | -a ( g | -\! ) a r | -R2 | -c8 \p r r4 | -c8 r r4 | -R2 | -r4 r8 c \p ~ | -c d4 e8 ~ | -e f4 c8 ~ | -c d4 e8 ~ | -e \< e4 \! e8 ( | -) bes'!4. \fz \> a8 | -[ \! g-. f-. e-.] r | -R2 | -r4 r8 es \p ~ | -es es4 es8 ~ | -es \< es4 \! d8 \f | - d'4.-> <{bes8 ( | - ) g'4. bes,8 ( | - ) g'4. bes,8 ( | - ) g'4. } - {d,8 | - bes'4. g8 | - bes4._> g8 | - bes4._> }> [c,16 ( d] | -[c d c a][f a c d] | -[f8 d ) c ][ c16 ( d ] | -[c d c a][f a c ) d] | -[f8 ( d ) c ][f16 ( g ] | -[f g f d ][ ) b8 bes!16 ( c ] | -[bes c bes g][ ) e8 < bes' g'^. > ] | -<{[a bes a bes] | - [a bes a bes] | - [a} - {[f'-. g-. f-. g-.] | - [f-. g-. f-. g-.] | - [ f}> c16 ( d ][ ) c8-. c16 ( d ] | -[ ) c8-. c16 ( d ][ ) c8-. c16 ( d ] | -) c8-. r r | - r r | - r8 c ( | - r8 c ( | - r8 c ( | - r8 c, | -[a16 ( gis a gis][a gis a gis] | -[a gis a gis][a gis a gis] | -<) a4 f' \fz > r -} - -vla=\notes\relative c' { -\clef "alto"; - -\property Staff."midiInstrument" = "viola" - -[c8. \f ( d16 ] ) c2_"dim." | -\context Staff <{\voiceone [c8. d16 ] c2 | - c2. ~ | - c2. ~ | - c2. ~ | - c2. ~ | - c2. ~ | - c2. ~ | - c2. ~ | } - { \voicetwo [c8. ( d16 ] c4 ) bes | - [a8 \p ( bes ] a4. ) c8 | % added \p - [a8 ( bes ] a4. ) c8 | - [a8 ( bes ] a4. ) c8 | - [c8 ( bes ] ) a2 | - [a8 ( bes ] a4. ) c8 | - [a8 ( bes ] a4. ) c8 | - [a8 ( bes ] a4. ) c8 |} > -[c8. ( \< bes16 ] ) \! a2 | -g2 \mf [a8 \< ( \! d ] | -[ c \> b \! c g e ) c] | -[e'8. \pp ( f16 d8 e f d ] | -b4 [c8 \< a f \! ) a ] | -c,2 \p () c'4 | -c,2 () c'4 | -c,2 () c'4 | -c, () c' r | -[c,8 ( g' ][ c g c a ] | -[bes c ] ) a4 r | -R2. | -r4 r dis, \< ( | -) \! e r dis' \pp ( | -) e r r | -R2. | -r4 r c, \pp ~ | -c2. ~ | -c4 r r | -R2.*3 | -r4 r r8 r8 | -R2*4 | -c'8-. \pp r bes-. r | -c-. r bes-. r | -R2*2 | -bes8-. r a-. r | -bes-. r [a-. c16 ( d ] | -[ ) c8 c16 ( d ] [ ) c8 c16 ( d ] | -[ ) c8 c16 ( d ] [ ) c8 c16 () f ] | -[c ( \f f c f][ c f c ) f ] | -[d ( f d f][ c f c ) f ] | -[d ( f d f][ c f c ) f ] | -[d ( f d f] ) a8 r | -f,4.-> [a16 ( b] | -[c d c b] ) a8 r | -f4. [a16 ( b] | -[c d c b] ) a8 r | - r r | - r r | -[ d'16 ( e][f g f e ] | -[d e d c] ) b8 r | -[as16 ( \p g as g] [fis g fis ) g ] | -[f! ( g f g][e g e ) g] | -d4 \> \! g | -[c,16 ( g' a g ] [a g a ) g ] | -[as16 ( \p g as g] [fis g fis ) g ] | -[f! ( g f g][e g e ) g] | -[d ( g d g ][d g d g ] | -[d g d g ] [c, g' c, g' ] -) d4 \p r | -r r8 | - | - | -< \! c2:8 \f g'2:8 > | -<{[c8 c c c \p ]}{[g' g g g]}> | - | - | - | -<{[c8 c c c ] | - c'4.-> c,8 | - c'4. } - {[g8 g g g (] | - ) g'4. g,8 ( | - ) g'4. } - > a'8-. \p | -[g-. \< f-. e-. \! d-. ] | -b4. <{c,8 \f | - c'4.-> c,8 | - c'4. } - { g8 ( | - ) g'4. g,8 ( | - ) g'4. }> a'8-. \p | -[g-. \< f-. e-. \! d-. ] | -b4 r8 | - | - | -< c2:8 g'2:8 > | -<{[ \! c8 c c cis \f (]}{[g' g g s ]}> | -) cis'4.-> cis8 | -[d a d ] | - | - g,8 ( | -[c,16 g' fis ) g] [c, (g' fis ) g ] | -[c, ( g' fis ) g] [c, (g' fis ) g ] | -[c, ( g' fis ) g] [c, (a' gis ) a ] | -[b ( c d ) b ][g ( a f ) d ] | -[c ( g' fis ) g] [c, (g' fis ) g ] | -[c, ( g' fis ) g] [c, (g' fis ) g ] | -[c, ( g' fis ) g] [c, (a' gis ) a ] | -[b ( c d ) b ][g ( a f ) d ] | -[c ( g' fis ) g] [c, (g' fis ) g ] | -[c,_"dim." ( g' fis ) g] [c, (g' fis ) g ] | -[c, ( g' fis ) g] [c, (g' fis ) g ] | -[c, ( g' fis ) g] [c, (g' fis ) g ] | -c,8 \p r r4 | -r8 [g'-. a-. b-.] | -c r r4 | -r8 <{[b c d] | c }{gis-. a-. b!-. | a}> - r r4 | -R2*2 | -g'4 \p ( [fis8 \< dis ] | -\! e4 fis | -g \> [fis8 ) \! dis ] | -e4 \< ( \! fis | -g \> [fis8 ) \! dis ] | - ~ | - | - ~ | - | -c4 r | -R2*2 | -g'4 \p ( [fis8 \< dis ] | -\! e4 fis | -g \> [fis8 ) \! dis ] | -e4 \< ( \! fis | -g \> [fis8 ) \! dis ] | - ~ | - | -d \p ~ | -d | - > ~ | - | -d \p ~ | -d ~ | -d ~ | -d_"dim." ~ | -d4 r | -r8 [e16 ( f ] e4 | -) es \pp r | -R2*3 | -g,2 ~ | -g4. r8 | -R2 | -r4 r8 [c16 \p ( d ] | -[ ) c8 c16 ( d ] [ ) c8 c16 ( d ] | -[ ) c8 c16 ( d ] [ ) c8 c16 ( f ] | -[c \fz f c f][ c f c ) f ] | -[d ( f d f][ c f c ) f ] | -[d ( f d f] ) c8 r | -r4 r8 [ f16 () g ] | - | - | - | - r | -bes,4.-> [d16 ( e ] | -[f g f e ] ) d8 r | -bes4.-> [d16 ( e ] | -[f g f e ] ) d8 r | - r r | - r r | -[ g'16 ( a ] [bes! \> c \! bes a ] | -[g a g f ] ) e r r8 | -[des16 ( \p c des c ] [ b c b c ] | -[bes! \< c bes c ] [ \! a c a ) c ] | -g4 \> \! c, ( | -[f16 c' d c][d c d ) c] | -[des16 ( \p c des c ] [ b c b c ] | -[bes! \< c bes c ] [ \! a c a ) c ] | -[g \> ( c g c][g c g \! c ] | -[g c g c][f, c' f, ) c'] | -e,4 \p r | -r r8 | - | - | - | -<{[f8 \f f f f \p ]}{[c'8 c c c]}> | - | - | - | -<{[f8 f f f] | - f'4._> f,8 | - f'4._> } - {[c8 c c c ( ] | - ) c'4. c,8 ( | - ) c'4. }> d'8 \p | -[c-. \< bes-. a-. \! g-. ] | -<{c,4. f,8 \f | - f'4._> f,8 | - f'4._> } % added > - {e4. c8 ( | - ) c'4. c,8 ( | - ) c'4. }> d'8 \p | % \p added -[c-. \< bes-. a-. \! g-. ] | - r8 | - | - | - | -<{[f8 f f fis \f (( ]}{[c'8 c c s]}> | -< ) a4. ) fis'4.> fis'8 | -[g d g ] | - | - c,8 ( | -[f16 c' b ) c ][ f, ( c' b ) c ] | -[ f, ( c' b ) c ] [ f, ( c' b ) c ] | -[ f, ( c' b ) c ] [ f, ( d' cis ) d ] | -[e ( f g ) e ][c ( d bes ) g] | -[ f ( c' b ) c ] [ f, ( c' b ) c ] | -[ f, ( c' b ) c ] [ f, ( c' b ) c ] | -[ f, ( c' b ) c ] [ f, ( d' cis ) d ] | -[e ( f g ) e ][c ( d bes ) g] | -[ f ( c' b ) c ] [ f, ( c' b ) c ] | -[ f,_"dim." ( c' b ) c ] [ f, ( c' b ) c ] | -[ f, ( c' b ) c ] [ f, ( c' b ) c ] | -[ f, ( c' b ) c ] [ f, ( c' b ) c ] | -f,2 \p ~ | -f4 r | -R2*2 | -f'2 ( ~ | -f | -f4 \f g | -) f [f8. ( \> g16 ] | -\! f2 | -) c | -a8 \p r r4 | -g8 r r a \pp ~ | -a as4 g8 ~ | -g f4 a!8 ~ | -a as4 g8 ~ | -g f4 e8 ~ | -e \< f4 e8 ~ | -\! e d4 c8 ( | - f8 | -[g-. a-. bes-. a ~ ] | -a as4 g8 ~ | -g f4 a!8 ~ | -a \< as4 \! g8 ~ | -g f4 \f f8 ( | - ) f' > g8 ( | - ) bes' > e,!8 ( | - ) g' > | - ) g' > c,8 ( | -) f4. a8 ( | -[d f ) a ] c,,8 ( | -) f4. a8 ( | -[d f ) a ] [f16 ( g ] | -[f g f d ][ ) b8 bes'!16 ( c ] | -[bes c bes g][ ) e8 c'16 ( d ] | -[) c8-. c16 ( d ][) c8-. c16 ( d ] | -[) c8-. c16 ( d ][) c8-. c16 ( d ] | -[) c8-. c,16 ( d ][) c8-. c16 ( d ] | -[) c8-. c16 ( d ][) c8-. c16 ( d ] | -) c8-. r c-. r | -a r c-. r | - r8 c ( | - r8 c, ( | - r8 c ( | - r8 c, | -[c'16 ( b c b][c b c b] | -[c b c b][c b c b] | - r -} - -vlc=\notes\relative c' { -\clef "bass"; - -\property Staff."midiInstrument" = "cello" - -r4 r [bes8. \mf ( c16] | -) bes4 r bes \p ( | -[ a8 bes ) a f, ( c' f] | -[ a8 bes ) a f, ( c' f] | -[ a8 bes ) a f, ( c' f] | -[c' bes ) a f, ( c' f] | -[ a8 bes ) a f, ( c' f] | -[ a8 bes ) a f, ( c' f] | -[ a8 bes ) a f, \< ( c' f] | -[c' bes a f \! c ) f, ] | -<{g2. ( | ) g2 } - {c,2. \mf ( | ) c2 \> ( ) \! c'4 |} - {s2. \< \! s8}> -a2 \pp d4 \< ( | -e ) \! a2 | -[bes8 \p ( c] [a c a c] | -[bes8 c] [a c a c] | -[bes8 c] [a c a ) c] | -[c ( bes a f c ) f, ] | -e2 (\< \! f4 | -g \> ) \! f r | -e'2 ( f4 | -g ) f f, ( \< | % added slur -) \! e2 f'4 \pp ( | -) e2 dis4 ( \< | -\! ) e2 dis4 ( \pp | -) e2. ~ | -e2 r4 | -R2.*4 | -r4 r4 r8 [c'16 \pp ( d] | \time 2/4; % \pp added -) c8 r r [c16 ( d] | -) c8 r r [c16 ( d] | -[c d c a][f a c d] | -[f8 d ) c] r | -d,-. \pp r g-. r | -d-. r [g-. d'16 ( es] | -[d es d bes][g bes d es] | -[g8 es ) d] r | -c,-. r f-. r | -c-. r [f-. c'-. ] | -[bes-. a-. g-. f-.] | -[e d][c a'16 \f ( f] | -[a f a f][a f a ) f] | % Misprint trem 8 -[bes ( f bes f][a f a ) f] | -[bes ( f bes f][a f a ) f] | -[a ( d, a' d,][)a8 a'16 ( b] | -[c d c b ][) a8 f ( ] | -) e4. [a16 ( b] | -[c d c b ][) a8 f ( ] | -) e4. [a,16 ( b ] | -[)c8 b16 ( c][)d8 c16 ( d] | -[es f es d] ) c8 r | -[g \fz d''16 ( e] [f g f e] | -[d e d c][b c b ) a] | -[as \p ( g as g][fis g fis g ] | -[f! \< g f g][e g e ) \! g] | -[d \> ( g d g] [d g d ) \! g] | -c,2 | -[as'16 ( g as g][fis g fis g ] | -[f! g f g][e g e ) g] | -[d ( g d g] [d g d g] | -d4 c \p | -) b r | -R2*2 | -r4 r8 c'8 \f ( | % Misprint, missing slur -) c,4. c8 ( | -) c,4. r8 | -R2 | -r4 r8 c''8 \f (| -) c,4. c8 ( | -) c,4. c''8 ( | -< ) g4. c,_> > c8 ( | -< ) g4. c,> c,8 \p | -[cis-. \< d-. e-. \! f-. ] | -g,4. c8 \f ( | -< ) c4. f,_> > c8 ( | % slur added -< ) c4.-> f,> c8 \p | % > and \p moved one quaver backwards -[cis-. \< d-. e-. \! f-. ] | -g,4 r8 <{ c8 \p | - c2:8 | - c2:8 \< | - \! c2:8 | - [c8 c s s] | - a4.} - {g'8 | - g2:8 | - g2:8 | - g2:8 | - [g8 g c cis (] | % added slur - ) e,4.-> }> a8 | -[d-. e-. f-. b ( ] | -) b,4. \f b'8 ( | -< ) d,4. \f g,> g8 ( | -[)c,16 g' (fis) g][c,( g' fis ) g] | -[c, ( g' fis ) g][c, ( g' fis ) g] | -[c, ( g' fis ) g][c, ( a' gis ) a] | -[b ( c d ) b][g ( a f )d ] | -[c ( g' fis ) g][c, ( g' fis ) g] | -[c, ( g' fis ) g][c, ( g' fis ) g] | -[e ( g fis ) g][c, ( a' gis ) a] | -[b ( c d ) b][g ( a f )d ] | -[c ( g' fis ) g][c, ( g' fis ) g] | -[c,_"dim." ( g' fis ) g][c, ( g' fis ) g] | -c,4 r | -c4 r | -c8 \p r8 r4 | -R2 | -r8 [c-.^"solo" \p d-. dis-. ] | -e r e, r | -c'4:16 \p d4:16 | -e4:16 \< \! fis4:16 | -g2:16 \> | -g4:16 \! a4:16 | -g4:16 \< \! a4:16 | -g4:16 \> \! a4:16 | -g4:16 \< \! a4:16 | -g4:16 \> \! a4:16 | -gis2 \fz ~ | -gis | -f! ( | -[e8 d c ) b ] | -c4:16 \p d4:16 | -e4:16 \< \! fis4:16 | -g2:16 \fz \> | -\! g4:16 \p \< a4:16 | -\! g4:16 \> \! a4:16 | -g4:16 \< \! a4:16 | -g4:16 \> a4:16 | -g4:16 \! a4:16 | -gis2 \fz ~ | -gis ( | -) f \p \> | -\! e_"dim." | -d | -e | -f | -e | -[f16 ( g f g][f g f8 ] | -) e4 r | -[f16 ( g f_"dim." g][f g f8 ] | -) e4 r | -[c'16 \pp ( d c a][f a c ) d] | -[f8 ( d ) c] r | -fis,8-. r g-. r | -d r [g d'16 ( es] | -[d es d bes][g bes d es] | -[g8 es ) d] r | -c, r f-. r | -c r [f-. c'-. ] | -[bes-. \< a-. g-. \! f-.] | -[e-. d-.][c-. a'16 \f ( f] | -[a f a f][a f a ) f] | % Misprint trem 8 -[bes ( f bes f][a f a ) f] | -[bes ( f bes f][) a8 f-.] | -[e-. es-. d-. c-. ] | -[bes16 ( f' bes f][bes f bes ) f] | -[bes, ( a bes a][bes d f ) bes ] | -[bes, ( a bes a][bes d f ) bes ] | -g4 ( [ ) d8 d'16 ( e] | -[f g f ) e] [d8 bes^._> ] | -a4. [d16 ( e] | -[f g f ) e] [d8 bes ( ] | -) a4. [d,16 ( e ] | -[) f8-. e16 ( f] [) g8-. f16 ( g] | -[)as ( bes as g ] ) f8 r | -c \fz r r [e'16 ( f ] | -[g a_"dim." g f][e f e ) d] | -[des \p \< ( c des c][b c b \! ) c ] | -[bes! ( c bes c][a c a ) c ] | -[g ( c g c][g c g ) c] | % misprint a c a c a c a c, comp. bar 59 -f,2 | -[des'16 \p ( c des c][b c b ) c ] | -[bes! ( c bes c][a c a ) c ] | -[g ( c g c][g c g c] | % misprint a c a c a c a c, comp. bar 64 -g4 f | -) e r | -R2*2 | -r4 r8 f' \f (| -) f,4.-> f8 ( | -) f,4.-> r8 | -R2 | -r4 r8 f'' (| -) f,4.-> f8 ( | -) f,4. f'8 (| -<) c4. f, > f8 ( | -<) c4. f,> f8 \p | -[fis-. \< g-. a-. \! bes-. ] | -c,4. f8 \f ( | -<) f4. bes,_> > f8 (| -<) f4. bes,_> > f8 \p | % \p added -[fis-. \< g-. a-. \! bes-. ] | -c,4 r8 <{ f8 \p | - f2:8 \< | - f2:8 | - \! f2:8 | } - {c'8 | - c2:8 | - c2:8 | - c2:8 |}> - [c'8 c f fis ( \f ] | - < ) a,4. d,_> > d,8 | -[g-. a-. bes-. e! ( ] | -) e,4.-> e'8 | -< g,4. c,_> > c8 | -[f,16 ( c' b c][f,16 c' b ) c] | -[f,16 ( c' b c][f,16 c' b ) c] | -[f,16 ( c' b ) c][f, ( d' cis ) d] | -[e ( f g ) e][c ( d bes ) g] | -[f16 ( c' b ) c][f,16 ( c' b ) c] | -[f,16 ( c' b ) c][f,16 ( c' b ) c] | -[f,16 ( c' b ) c][f, ( d' cis ) d] | -[e ( f g ) e][c ( d bes ) g] | -[f16 ( c' b ) c][f,16 ( c' b ) c] | -[f,16 ( c' b ) c][f,16 ( c' b ) c] | -f,8 r e'4 ( | -) f8 r bes,4 \p ( | -) a2 ( | -) bes | -a4 \< ( \! bes | -a \> ) \! g | -a2 ( \< | -) \! bes | -f4 \f \> ( cis | -d \! g, | -) c!8 r r4 | -R2 | -c8 r r4 | -c8 r r4 | - r r | - r r | - r r | - r r | -e, r e r | -e r [e () c] | -c'4. \f \> d8 | -[\! e-._"dim." f-. g-.] r | - r r | - r r | - r r | - r bes' \f | -bes,4.-> g'8 ( | -) g,4.-> e'!8 ( | -) e,!4.-> c'8 ( | -) c,4.-> [c''16 ( d ] | -[c d c a][f a c d] | -[f8 d ][) c c16 ( d] -[c d c a][f a c d] | -[f8 d ][) c d, ( ] | -) g,4.-> g'8 ( | -) c,4.-> c'8 ( | -[ ) f, c-. f-. c-. ] | -[f-. c-. f-. c-. ] | -f r c r | -f r c' r | -f, r c r | -a r c r | -f4 r8 c8 ( | -) f4 r8 c8 ( | -) f,4 r8 c'8 ( | -) f4 r8 c8 ( | -) f,2 ~ | -f ( | -) f'4 \fz r -} - -cb=\notes\relative c { -\clef "bass"; - -\property Staff."midiInstrument" = "contrabass" - -r4 r c-> \mf ~ | -c r c \p ( | -) f,2. ~ | -f ~ | -f2 f'4 ( | -c ) f r | -f,2. ~ | -f ~ | -f ~ | -f2 r4 | -c'2. ~ | -c | -a2 d4 ( | -e a ) f | -c2. \p ~ | -c ~ | -c ~ | -c4 () f r | -e2 f4 ( | -g ) f r | -R2. | -r4 r f ( \< | -\! ) e2 r4 | -r r dis ( \< | -\! ) e2 r4 | -R2.*6 | -r4 r r8 r | -R2*4 | -d8-. \pp r g-. r | -d-. r g-. r | -R2*2 | -c,8-. r f-. r | -c-. r f-. r | -R2 | -r4 r8 f8 \f ~ | -f2 | -f | -f | -d4 () a8 r | -f4.-> f'8 ( | -) e4. r8 | -f,4.-> f'8 ( | -) e4. r8 | -f,8 r f' r | -fis r fis r | -g \fz r r4 | -R2*3 | -r4 g, ( | -) c r | -R2*8 | -c'4_"pizz." \f r | -c, r | -R2*2 | -c'4_"pizz." r | -c, r8 c'8_"arco?" ( | -) c,4.-> c'8 ( | -) c,4. f8-. \p | -[f-. \< f-. f-. \! f-.] | -g4. c,8 ( | -) f,4.-> c'8 ( | -) f,4.-> f'8 | -[f-. \p \< f-. f-. \! f-.] | -g4 r8 c, \p | -c2:8 \< | -c2:8 | -c'2:8 | -\! c4.:8 cis8 \f ( | -) a,4. a8 | -[d e f b ( ] | -) b,4. \f b'8 ( | -) g,4. \f g'8-> | -c,4 c-> ~ | -c c-> ~ | -c c-> ~ | -c r | -c c ~ | -c c ~ | -c c ~ | -c r | -c r | -c r | -c_"dim." r | % dim. added -c r | -c8 r r4 | -R2 | -r8 [c-.^"solo" \p d-. dis-.] | -e r e, r | -a2 \p | -a \< ( | -\! e' \> | -\! ) e4 r | -e2 \< ~ | -\! e4 \> \! r | -e2 \< ~ | -\! e4 \> \! r | -e2 \fz ~ | -e | -f! ( | -[e8 d c ) b] -a2 \p ~ | -a | -e' \fz \> ~ | -\! e4 r | -e2 \> ~ | -\! e4 r | -e2 \> ~ | -\! e4 r | -e2 \fz ~ | -e ( | -) f \p ( | -) e | -d \> ( | -e | -\! f \p | -) e4 r | -R2*6 | -fis8-. r g-. r | -d-. r g-. r | -R2*2 | -c,8-. r f-. r | -c-. r f-. r | -R2 | -r4 r8 f \f ~ | -f2 | -f | -f,4. f'8 | -[e8-. es-. d-. c-. ] | -bes2 | -bes | -bes | -g'4 () d8 r | -bes4. bes'8 ( | -) a4. r8 | -bes,4. bes'8 ( | -) a4. r8 | -bes, r bes' r | -b r b, r | -c \fz r r4 | -R2*3 | -r4 c ( | -) f r | -R2*8 | -f4_"pizz." r | -f, r | -R2*2 | -f'4 r | -f, r | -f'4._"arco" r8 | -f4. bes,8 \p | -bes2:8 \< | -\! c4. f8 \f ( | -) bes,4.-> | -) bes,4. bes'8 \p | % \p added -c2:8 \< | -\! c4 r8 f, \p | -f2:8 \< | -f2:8 | -\! f2:8 | -f4.:8 fis8 \f ( | -) d4.-> d8 | -[g-. a-. bes-. e ( ] | -) e,4.-> e'8 | -c,4.-> c'8 ( | -) f,4 f~ | -f f~ | -f f~ | -f r | -f, f ~ | -f f ~ | -f f' ~ | -f r | -f r | -f_"dim." r | -f r | -f r | -f2 \p \< ~ | -f ~ | -\! f \> ~ | -\! f | -f, \< ~ | -\! f | -f'4 ( \f \> cis | -\! d g, | -) c! r | -R2 | -c8 \p r r4 | -c8 r r4 | -f8 \pp r f r | -f r f r | -f r f r | -f r f r | -e r e r | -e r e r | -c4. \f \> d8 | -[e-. f-. \! g-.] r | -f \p r f r | -f r f r | -f r f r | -f r f r | -bes4.-> r8 | -g4.-> r8 | -e!4.-> r8 | -c4. c8 ( | -) f2 ( | -) f,4. c'8 | -f2 ( | -) f,4. d'8 ( | -) g,4.-> g'8 ( | -) c,4.-> c'8 ( | -[ ) f, c-. f-. c-. ] | -[ f-. c-. f-. c-. ] | -f r c r | -f r c' r | -f, r c r | -a r c r | -f4 r8 c8 ( | -) f4 r8 c8 ( | -) f,4 r8 c'8 ( | -) f4 r8 c8 ( | -) f,2 ~ | -f ( | -) f'4 \fz r -} diff --git a/mutopia/N.W.Gade/wood.ly b/mutopia/N.W.Gade/wood.ly deleted file mode 100644 index 8291299980..0000000000 --- a/mutopia/N.W.Gade/wood.ly +++ /dev/null @@ -1,1064 +0,0 @@ -\version "1.3.4"; - -flauto=\notes\relative c''' { -\clef "treble"; -\property Staff."midiInstrument" = "flute" - -[c8. \f ( d16] c2 | -)c,8 r r4 r | -R2.*4 | -[c8. \p ( d16] c4. ) a8 | -[f8. ( e16 ] f4. ) a8 | -[c8. ( d16] c4. ) a8 | -[a8. ( g16 ] ) f4 r | -R2.*4 | -[c'8. ( d16] c4. ) a8 | -[g8. ( a16 ] f4. ) a8 | -[c8. ( d16] c4. ) a8 | -[a8. ( g16 ] ) f4 r | -R2.*13 | -r4 r4 r8 r8 \time 2/4; -R2*4 | -a'8-. \pp r g-. r | -a8-. r g-. r | -R2*2 | -g8-. r f-. r | -g8-. r f-. r | -R2 | -r4 r8 [c'16 \f ( d] | -[c d c a][f a c d] | -[f8 d ) c] f, ( | -[f'8 d ) c] a ( | -[a'8 f ) e] a ( | -dis,2 | -) e4 r8 a8 ( | -dis,2 | -) e4 r8 a ( | -) es r d r | -c r d r | -g, r r4 | -R2*10 | -r4 r8 e' \p | -e [es-. es-.] d-. | -d-. [cis-. cis-.] c-. | -c \f [c16 ( d] [es8 d16 c] | % slur and \f added -) d4 r8 e!-. \p | -e-. [es-. es-.] d-. | -d-. [cis-. cis-.] c | -c-. \f [c16 ( d][es8 d16 c] | % \f added -) d4 r8 e,! ( | -)e'4.-> e,8 ( | -)e'4.-> a8 \p | -[g-. f-. e-. d-.] | -[cis16 ( \< e d \! b ] ) g8 e \f ( | -)e'4.-> e,8 ( | -)e'4.-> a8 \p | -[g-. \< f-. e-. \! d-.] | -g r r e-. \p | -e-. [es-. \< es-.] d-. | -d-. [c-. \! c-.] g-. | -g-. [fis-. \< fis-.] f-. | -f-. [e-. \! e-.] bes \f ( | -) bes'4.-> a8-. | -[f'-. e-. d-.] f, ( | -) f'4. \fz g,8 ( | -) g'4. \fz g,8 ( | -) e' r g4-> ( | -) e8 r g4-> ( | -) e8 r es4-> ( | -) d8 r r g, ( | -) e'! r g4 ( | -) e8 r g4 ( | -) e8 r es4-> ( | -) d8 r r g, ( | -) e'! r g4 ( | -) e8 r d4 ( | -) e8 r r4 | -R2*27 | -d2 ( \p | -) gis, | -R2*2 | -d'2 ( \p | -) gis, | -a ( | -) gis | -a_"dim." ( | -) gis ( | -) a ( | -bes!4 ) a8 r | -a r bes r | -fis r g r | -bes2 ( | -c4 ) bes8 r | -bes r a r | -e! r f r | -R2 | -r4 r8 [c'16 \f ( d] | % \f added -[c d c a][f a c d] | -[f8 d ) c] f, ( | -[f'8 d ) c] f,-. | -[g-. a-. bes-. a-. ] | -bes4 r8 bes,8 ( | -[bes' g ) f] bes,8 ( | -[bes' g ) f] bes,8 ( | -[d' g ) f! ] d ( | -gis,2 | -) a4. d8 ( | -gis,2 | -) a4. d,8 ( | -) d' r d-. r | -d-. r d-. r | -c r r4 | -R2*10 | -r4 r8 [c16^""^"solo" \p ( d] | -) c8-. [b16 ( c ] ) b8-. [bes16 \< ( c ] | -)bes8-. [a16 ( \! bes ] ) a8-. [as16 ( bes ] | -) as8-. \f [f16 ( g][as8 g16 f ] | -) g4 r8 [c16 ( d] | -) c8-. [b16 ( c ] ) b8-. [bes16 \< ( c ] | -)bes8-. [a16 ( \! bes ] ) a8-. [as16 bes ] | -as8 \f [f16 ( g][as8 g16 f ] | -) g4 r8 es ( | -)es'4.-> es,8 ( | -)es'4.-> d8 \p | -[c8-. \< bes-. a \! g ] | -[fis16 ( a g e! ] ) c8 es ( \f | -) es'4.-> es,8 ( | -) es'4.-> d8 \p | -[c8-. \< bes-. a \! g ] | -c r r a'-. \p | -a-. [gis-. \< gis-.] \! g-. | -g-. [f-. f-.] c-. | -c-. [b-. \< b-.] bes-. | -bes-. [a-. \! a-.] a( \f | -) es'4.-> d8 | -[bes-. a-. g-.] bes, ( | -) d'4. \fz c,8 ( | -) c'4. \fz c,8 ( | -) a' r c4-> ( | -) a8 r c4-> ( | -) a8 r as4-> ( | -) g8 r r c ( | -) a! r c4 ( | -) a8 r c4 ( | -) a8 r as4-> ( | -) g8 r r c, ( | -) a'! r c4_"dim." ( | -) a8 r g4 ( | -) f8 r c4 ( | -) a8 r r4 | -R2*19 | -r4 r8 [c'16 \p ( d] | -) c8-. [b16 ( c ] ) b8-. [bes16 ( c ] | -)bes8-. [a16 ( bes ] ) a8-. [c16 ( d] | -) c8-. [b16 ( c ] ) b8-. [bes16 \< ( c ] | -)bes8-. [a16 ( \! bes ] ) a8-. bes ( \f | -) bes,4. d8 ( | -) d'4. c8 ( | -) c,4. e8 ( | -) e'4. c8 ( | -) a'4 r | -[f8 ( d ) c ] c ( | -) a'4 r | -[f8 ( d ) c ] f, ( | -) f'4. e,8 ( | -) e'4. e8 | -[f-. e-. f-. e-.] | -[f-. e-. f-. e-.] | -f r e r | -f r e r | -f r a, r | -c r a r | -f4 r8 c' ( | -) a4 r8 c ( | -) f4 r8 c ( | -) a4 r8 c ( | -) f4 r | -R2 | -f4 \fz r - -} - -oboe=\notes\relative c'' { -\clef "treble"; -\property Staff."midiInstrument" = "oboe" - -[c8. \f ( d16] ) c2_"dim." | -[c8. ( d16] ) c2 | -[c8. \p ( d16] c4. a8 | -[f8. e16 ] f4. ) a8 | -[c8. ( d16] c4. ) a8 | -[a8. ( g16 ] ) f4 r | -[c'8. \p ( d16] c4. a8 | -[f8. e16 ] f4. ) a8 | -[c8. ( d16] c4. ) a8 | -[a8. ( g16 ] ) f4 r | -R2.*4 | -[c'8. ( d16] c4. a8 | -[g8. a16 ] f4. ) a8 | -[c8. ( d16] c4. ) a8 | -[a8. ( g16 ] ) f4 r | -R2.*13 | -r4 r4 r8 r8 \time 2/4; -R2*4 | -d'8-. \pp r d-. r | -d-. r d-. r | -R2*2 | -c8-. r c-. r | -c8-. r c-. \p [c16 ( d]| -) c8 r \< r [c16 ( \! d]| -) c8 r r [c16 \f ( d]| -) c8 r r f, ( | -) f'4. f,8 ( | -) f'4. a,8 ( | -) a'4. r8 | -dis,2 ( | -) e4. r8 | -dis2 ( | -) e4. r8 | -a r a r | -a r d, r | -g r r4 | -R2*10 | -r4 r8 [g16 \p ( a ] | -[ ) g8-. fis16 ( g ][ ) fis8-. f16 ( g ] | -[ ) f8-. e16 ( f ][ ) e8-. es16 ( f ] | -[ ) es8 \f c16 ( d][es8 d16 c ] | -) d4 r8 [g16 \p ( a ] | -[ ) g8-. fis16 ( g ][ ) fis8-. f16 ( g ] | -[ ) f8-. \< e16 ( f ][ ) e8-. \! es16 ( f ] | -[ ) es8 \f c16 ( d][es8 d16 c ] | -) d4 r8 bes! ( | -) bes'4.-> bes,8 ( | -) bes'4.-> a8 \p | -[g-. \< f-. e-. \! d-. ] | -[cis16 ( e d ) b] g8 bes! \f ( | -) bes'4.-> bes,8 ( | -) bes'4.-> a8 \p | % \p added -[g-. \< f-. e-. \! d-. ] | -g-. r r [g16 \p ( a] | -[ ) g8-. fis16 ( g ][ ) fis8-. f16 ( g ] | -[ ) f8-. e16 ( f ][ ) e8-. e16 ( f ] | -[ ) e8-. es16 ( f ][ ) es8-. d16 ( e ] | -[ ) d8-. c16 ( d ] ) c8 bes! \f ( | -) bes'4. r8 | -R2 | -d,4. \fz r8 | -d4. \fz r8 | -e8 r g4-> ( | -) e8 r g4-> ( | -) e8 r es4 ( | -) d8 r r g ( | -) e!8 r g4-> ( | -) e8 r g4-> ( | -) e8 r es4 ( | -) d8 r r g ( | -) e!8_"dim." r g4 ( | -) e8 r r4 | -R2*2 | -r8 [g,-.^""^"solo" \p a-. b-. ] | -c r r4 | -R2*10 | -\grace d8 f2 \fz \> ( | -\! b,4 [c8 b] | -a2-> | -) gis | -a4 ( \p \< ) e' | -e-. () \! e-. | -e ( \> [ d8 \! c ] | -) b2 \p | -\grace e8 g4 ( \> dis | -\! e ) b | -\grace e8 g4 ( \> dis | -\! e_"dim." ) b | -\grace d!8 f2 \fz ( \> | -b,4 [ \! c8 b] | -a2 \p | -) gis | -\grace a8 d2( \> | -\! b4 [ c8 b ] | -a2 \p | -) gis | -R2*11 | -r4 r8 [c16 \p ( d ] | -) c8 r r [c16_"cresc." ( d ] | -) c8 r r [c16 \f ( d ] | -) c8 r r f, ( | -) f'4. f,8 ( | -) f'4. a,8 | -[bes-. c-. d-. es-. ] | -d4 r8 bes ( | -) bes'4 r8 bes, ( | % slur added -) bes'4 r8 d, ( | -[ d' bes ) a ] d ( | -) gis,2 ( | -) a4 r8 d ( | -) gis,2 ( | -) a4 r8 d ( | -) as r g r | -f r f r | -e r r4 | -R2*10 | -r4 r8 a | -a-. [ gis-. gis-. \< g-.] | -[g-. fis-. \! fis-. f-. ] | -[f f16 ( \f g][as8 g16 f ] | -) g8 [c16 ( d] ) c8 a \p | -[a-. gis-. gis-. \< g-.] | -[g-. fis-. \! fis-. f-. ] | -[f f16 ( \f g][as8 g16 f ] | -) g8 [c16 ( d] ) c8 r | -es,4.-> r8 | -es4.-> r8 | -r4 r8 d ( | -) c4. r8 | -es4.-> r8 | -es4.-> r8 | -r4 r8 d8 ( | -) bes4 r8 a' \p | -[a-. gis-. gis-. \< g-.] | -[ \! g-. f-. f-. ] c | -[c-. \< b-. b-. bes-. ] | -[bes-. a-. \! a-. es' ( ] | -) a4. \f r8 | -r4 r8 bes, ( | -) g'4. \fz c,8 ( | -) g'4. \fz c,8 ( | -) a' r c4-> ( | -) a8 r c4-> ( | -) a8 r as4 ( | -) g8 r r c ( | -) a! r c4 ( | -) a8 r c4 ( | -) a8 r as4 ( | -) g8 r r c ( | -) a! r c4_"dim." ( | -) a8 r g4 ( | -) f8 r r4 | -R2*7 | -\grace f8 a4 \f \> ( e | -f \! b, | -) c r | -R2*7 | -e8-. \p r d-. \< r | -c-. r b-. \! r | -bes!4. \f r8 | -R2 | -c8-. \p r b-. r | -bes!-. r a-. r | -c-. r b-. r | -bes!-. r a-. bes \f ( | -) bes'4. bes,8 ( | -) bes'4. bes,8 ( | -) bes'4. bes,8 ( | -) bes'4. c,8 ( | -) a'4 r8 f ( | -bes4 ) a8 c, ( | -) a'4 r8 f ( | -bes4 ) a8 f ( | -) b4. e,8 ( | -) bes'!4. bes8 | -[a-. bes-. a-. bes-. ] | -[a-. bes-. a-. bes-. ] | -a-. r c-. r | -a-. r e-. r | -f-. r a-. r | -c r a r | -f4 r8 c ( | -) a'4 r8 c, ( | -) f4 r8 c ( | -) a'4 r8 c, ( | -) f4 r | -R2 | -f4-. \fz r -} - -clarI=\notes\relative c'' { -\key G; -\clef "treble"; -\property Staff."midiInstrument" = "clarinet" - -[d8. \fp ( e16 ] ) d2 | -[d8._"dim." ( e16 ] ) d2 | -R2.*8 | -[d8. \mf ( \< e16 ][ cis8 d ] \! g4 | -[fis8. \> e16 ] \! d4 ) a | -b2. \pp \< ( | -\! ais4 ) b2 | -a!4 \p ( [g8. a16 ] g4 | -fis ) g8 r r4 | -a4 ( [g8. a16 ] g4 | -fis ) g8 r [d^""^"solo" \mf \< () b' ] | -\grace a8 \! d2 ( \> [b8. \! g16] | -) d2 r4 | -R2. | -r4 r \times 2/3 { [b'8^""^"solo" ( \ff d, ) d' ] } | -d4-> () b r | -r r \times 2/3 { [d8 ( b ) d ] } | -a4 () d r | -R2.*6 | -r4 r4 r8 r8 | -R2*4 | -gis,8-. \pp r a-. r | -gis-. r a-. r | -R2*2 | -fis!8 r g r | -fis r g d'-. \p | -[c-. b-. \< a-. g-. ] | % crescendo added -[ \! fis-. e-. d-. ] [d'16 \f ( e ] | % \f added -[d e d b][g b d e] | -[g8 e ) d ] g, ( | -[g' e ) d ] b ( | -[b' g ) fis] b ( | % slur added -) f2 ( | -) fis!4 r8 b ( | -) f2 ( | -) fis!4 r8 b | -f r e r | -d r d r | -cis r r4 | -R2 | -g4 \p ( a | -b2 \< ~ | -b4 [a8 \! g'] | -[fis \> d b \! ) a] | -g4 \p ( a | -b2 ~ | -b4 a | -b2 ~ | -[b8_"dim." a g ) e ] | -[cis ( a \grace cis ) b a-. ] | -[fis''-. f-. f-. e-. ] | -[e-. \< dis-. dis-. \! d-. ] | -d r b4 \f ( | -) cis8 [a'16-> ( b] ) a8 fis-. \p | % \p added -[fis-. f-. f-. e-. ] | -[e-. dis-. dis-. d-. ] | -d r b4 \f ( | -) cis8 [a'16-> ( b] ) a8 r | -d,4.-> r8 | % added > -d4.-> r8 | -R2*2 | -d4. \f r8 | -d4. r8 | -R2 | -cis4.-> fis8-. \p | % \p added -[fis-. \< f-. f-. e-. ] | -[\! e-. d-. d-. ] [fis16 \mf ( g ] | -) fis8 [f16 ( g] ) f8-. [e16 \< ( fis ] | -) e8 [\! d16 ( e ] ) d8-. c! \f ( | -) c'4.-> b8 | -[g-. fis-. e-.] g,8 ( | -) b'4. \fz a,8 ( | -) a'4. \fz a,8 ( | -) fis' r a4-> ( | % -> added -) fis8 r a4-> ( | -) fis8 r f4 ( | -) e8 [a,16 ( b ] ) a8 a ( | -) fis' r a4-> ( | -) fis8 r a4-> ( | -) fis8 r f4 ( | -) e8 [a,16 ( b ] ) a8 a ( | -) fis' r a4_"dim." ( | -) fis8 r e4 ( | -) fis8 r a4 ( | -) fis8 r e4 \p ( | -) fis8 r r4 | -R2*3 | -fis,2 \pp \< ~ | -\! fis ~ | -fis \> ~ | % cresc. added -\! fis4 r | % dim. added -R2*4 | -e'2 \fz \> ( | -) fis,4 \! r | -b2 \> ( | -) \! ais4 r | -fis2 \pp \< ~ | -\! fis ~ | -fis \> ~ | -\! fis4 r | -R2*4 | -e'2 \fz \> ( | -) fis,4 \! r | -e'2 \p ( | -) ais, | -R2*2 | -e'2 \p ( | -) ais, | -b ( | -) ais | -b_"dim." ( | -) ais ( | -) b ( | -c4 ) b8 r | -e-. r e-. r | -e-. r e-. r | -c2 ( ( | -) d4 ) c8 r | -d-. r d-. r | -d-. r [d-. d-. ] | -[c-. \< b-. a-. g-. ] | -[fis-. \! e-. d-. ] [d'16 \f ( e ] | -[d e d b][g b d e] | -[g8 e ) d] g, ( | -[g' e ) d ] b-. | -[c-. d-. e-. ] [g16 ( a] | -[g a g e][c e g a] | -[c8 a ) g ] c, ( | -[c' a ) g] r | -[e ( c ) b ] e ( | -) ais,2 ( | -) b4 r8 e ( | -) ais,2 ( | -) b4 r8 e | -bes r a r | -g r e' r | -d [a16 ( b ][c! d c b] | -[a b a g] ) fis8 r | -c'4 ( \p \< d | -\! e2 ~ | -e4 \> [d8 c' ] | -[b g e \! ) d ] | -c4 \p ( \< d | -e2 ~ | -\! e4 d \> | -e2 ~ | -[\! e8 d_"dim." c a ] | -) fis r r [d'16 \p ( e] | -) d8-. [cis16 ( d] ) cis8-. [c16 ( d] | -) c8-. [ b16 ( c] ) b8-. [bes16 ( c ] | -) bes8-. r e4 \f ( | -[ ) fis8 d16 ( e] ) d8 [d16 \p ( e] | -) d8-. \< [cis16 ( d] ) cis8-. [c16 ( d] | -) c8-. [ b16 ( c] ) b8-. [bes16 ( \! c ] | -) bes8-. r e4 \f ( | -[ ) fis8 d16 ( e] ) d8 f ( | -) b4.-> f8 ( | -) b4.-> r8 | -R2 | -r4 r8 f \f ( | -) b4.-> f8 ( | -) b4.-> r8 | -R2 | -r4 r8 [d,16 \p ( e] | -) d8-. [cis16 ( d] ) cis8-. [c16 ( d] | -) c8-. \< [ b16 ( c] ) \! b8-. [b'16 ( c ] | -) b8-. [bes16 ( c ] ) bes8-. [a16 ( b ] | -) a8-. [g16 ( as ] ) g8 b, \f ( | -) f'4.-> r8 | -r4 r8 c ( | -) e'4. \fz d,8 ( | -) d'4. d,8 ( | -) b' r a4-> ( | -) g8 r a4-> ( | -) g8 r g4 ( | -) fis8 [d16 ( e] ) d8 d ( | -) g r a4 ( | -) g8 r a4 ( | -) g8 r g4 ( | -) fis8 [d16 ( e] ) d8 c ( | -) b r c4 ( | -) b8 r c4_"dim." ( | -) b8 r c4 ( | -) b8 r a4 \p ( | -) g8 r r4 | -R2 | -b'4^"solo" \p ( fis \> | -g [d8. \! e16 ] | -d4. b8 | -g4 \< ) \! a | -b \> ( \! a | -) g [g8. \f (a16 ] | -) g2 | -d2 ~ | -d2_"dim." ~ | -d4. r8 | -R2*2 | -d'8-. \p r cis-. r | -c! r b r | -R2*2 | -d4. \fz d8 \> | -[d d \! d] r | -R2*3 | -r4 r8 c \f ( | -) c'4. e,8 ( | -) e'4. d,8 ( | -) d'4. d,8 ( | -) a'4. fis8 ( | -) g4 r8 g ( | -) c4 () b8 fis ( | -) g4 r8 g ( | -) c4 () b8 cis, ( | -) g'4. c,!8 ( | -) fis4. fis8 | -[g-. fis-. g-. fis-. ] | -[g-. fis-. g-. fis-. ] | -g-. r fis-. r | -g r d r | -[d16 ( e d e][d e d e] | -[d e d e] [d e d e] | -) d4 r8 d ( | -) b'4 r8 d, ( | -) g4 r8 d ( | -) b'4 r8 d, ( | -) g,2 ~ | -g ( | -) g'4-. \fz r -} - - -clarII=\notes\relative c'' { -\key G; -\clef "treble"; -\property Staff."midiInstrument" = "clarinet" - -[d8. \fp ( e16 ] ) d2 | -[d8._"dim." ( e16 ] ) d2 | -R2.*8 | -[fis,8. \mf ( \< g16 ][ e8 fis ] \! ) g4 | -[a8. ( \> g16 ] \! ) fis4 r | -b2. \pp \< ( | -\! ais4 ) b2 | -a!4 \p ( [g8. a16 ] g4 | -fis ) g8 r r4 | -a4 ( [g8. a16 ] g4 | -fis ) g8 r [d^""^"solo" \mf \< () b' ] | -\grace a8 \! d2 ( \> [b8. \! g16] | -) d2 r4 | -R2. | -r4 r \times 2/3 { [b'8 ( \f d, ) d' ] } | -d4 () b r | -r r \times 2/3 { [d8 \f ( b ) d ] } | -a4 () d r | -R2.*6 | -r4 r4 r8 r8 | -R2*9 | -r4 r8 d-. \p | -[c-. b-. \< a-. g-. ] | -[\! fis-. e-. d-. ] [d'16 \f ( e ] | -[d e d b][g b d e] | -[g8 e ) d ] g, ( | -[g' e ) d ] g, ( | -[g' e ) d ] b' ( | -) f2 ( | -) fis!4 r8 b ( | -) f2 ( | -) fis!4 r8 b, ~ | -b r b r | -b r b r | -a r r4 | -R2 | -g4 \p \< ( a | -\! b2 ~ | -b4 \> a ~ | -a \! ) fis8 r | -g4 \p \< ( a | -\! b2 ~ | -b4 \> a | -g2 ~ | -\! ) g4 r | -R2*3 | -r4 gis \f ( | -[ ) g!8 a16-> ( b ] ) a8 r | -R2*2 | -r4 gis \f ( | -[ ) g!8 a16 ( b ] ) a8 r | -fis4. r8 | -fis4. r8 | -R2*2 | -fis4. \f r8 | -fis4. r8 | -R2 | -g4. -> r8 | -R2 | -r4 r8 a-. \mf | -[a-. gis-. gis-. g-. ] | -g [ fis-. fis-. ] fis \f ( | % \f added -) dis'4.-> r8 | -r4 r8 g,8 ( | -) e'4. \fz g,8 ( | -) e'4. \fz g,8 ( | -) fis r a4-> ~ | -a8 r a4-> ~ | -a8 r gis4 ( | -[ ) g!8 g-. g-. g ( ] | -) fis! r a4-> ~ | % added > -a8 r a4-> ~ | -a8 r gis4 ( | -) g!8 [g-. g-.] g ( | -) fis! r a4_"dim." ~ | % dim. added -a8 r a4 ~ | -a8 r a4 ~ | -a8 r a4 \p ~ | -a8 r r4 | -R2*3 | -fis2 \pp \< ~ | -\! fis ~ | -fis \>~ | -\! fis4 r | -R2*4 | -g2 \f \> ( | -) \! fis4 r | -b2 \> ( | -) \! ais4 r | -fis2 \pp \< ~ | -\! fis ~ | -fis \>~ | -\! fis4 r | -R2*16 | -f2 \pp ( | -) g4. r8 | -b-. r a-. r | -b-. r a-. r | -a2 ~ | -a4. r8 | -c r b r | -a r [g-. \p d'-. ] | -[c-. b-. a-. g-. ] | -[fis-. e-. d-. ] [d'16 \f ( e ] | -[d e d b][g b d e] | -[g8 e ) d] g, ( | -[g' e ) d ] g,-. | -[a-. b-. c-. ] [g'16 ( a] | -[g a g e][c e g a] | -[c8 a ) g ] c, ( | -[c' a ) g] r | -[c, ( a ) g ] e' ( | -) ais,2 ( | -) b4 r8 e ( | -) ais,2 ( | -) b4 r8 e ( | -) bes r a r | -g r g r | -[fis ( a16 b ][c! d c b] | -[a b a g] ) fis8 r | -R2 | -a4 \p \< ( b | -\! c \> fis, | -) \! g r | -R2 | -fis4 \< g ( | -) \! a r | -fis4 \> g_"dim." ( | -) \! a r | -r r8 b-. \p | -b [ais-. \< ais-. a-. ] | -[a-. gis-. \! gis-. g-. ] | -g r cis4 \f ( | -) c! r8 b!-. \p | -b [ais-. \< ais-. a-. ] | -[a-. gis-. \! gis-. g-. ] | -g r cis4 \f ( | -) c! r8 b ( | -) f'4.-> b,8 ( | -) f'4.-> r8 | -R2 | -r4 r8 b,8 \f ( | -) f'4.-> b,8 ( | -) f'4.-> r8 | -R2 | -r4 r8 b,8-. \p | -b-. [ais-. ais-. a-. ] | -[a-. g-. g-. ] [b16 ( c ] | -) b8-. \< [bes16 ( c ] ) bes8-. [a16 ( b ] | -) \! a8-. [g16 ( as ] ) g8 f \f ( | -) b4.-> r8 | -r4 r8 c ( | -) a'4. \fz c,8 ( | -) a'4. \fz c,8 ( | -) b r c4-> ( | -) b8 r c4-> ( | -) b8 r bes4 ( | -[ ) a8 d16 ( e ] [) d8 c ( ] | -) b! r c4 ( | -) b8 r c4 ( | -) b8 r bes4-> ( | -[ ) a8 d16 ( e ] ) d8 a ( | -) g r a4 ( | -) g8_"dim." r a4 ( | -) g8 r a4 ( | -) g8 r fis4 ( | -) g8 \p r r4 | -R2*6 | -r4 [g8. ( \f a16 ] | -) g2 ( | -) d_"dim." ~ | -d ~ | -d4. r8 | -R2*6 | -fis4. \fz \> g8 | -[ \! a-. b-. c-. ] r | -R2*3 | -r4 r8 e, \f ( | -) e'4. a,8 ( | -) a'4. a,8 ( | -) a'4. fis,8 ( | -) d'4. c8 ( | -) b4 r8 g ( | -e'4 [ ) d8 c ( ] | -) b4 r8 g ( | -e'4 () ) d8 g, ( | % ending slur added -) cis4. fis,8 ( | -) c'!4. c8 | -[b-. c-. b-. c-. ] | -[b-. c-. b-. c-. ] | -b r a r | -b r c r | -[b d16 ( e ] [d e d e] | -[d e d e] [d e d ) e] | -d4 r | -d4 r | -b4 r | -d4 r8 d, ( | -) g2 ~ | -g ( | -) b4-. \fz r -} - -fagotto=\notes\relative c' { -\clef "bass"; -\property Staff."midiInstrument" = "bassoon" - -[c8. \f ( d16 ] ) c2_"dim." | -[c8. ( d16 ] ) c4 r | -R2.*29 | -r4 r4 r8 r8 | -R2*4 | -c8-. \pp r bes-. r | -c8-. r bes-. r | -R2*2 | -bes8-. r a-. r | -bes8-. r [a-. c-.] | -[bes-. \< a-. g-. f-. ] | -[e-. \! d-. c-. ] c \f ( | -) c'4. r8 | -d4 () c8 r | -d4 () c8 r | -d4 ( [ ) c8 a16 ( b ] | -[c d c b] ) a8 f-> ( | -) e4 r8 [ a16 ( b ] | -[c d c b] ) a8 f-> ( | -) e4 r8 a ( | -) c r d r | -es r d r | -d4 \fz r | -R2*2 | -d4 \p ( \< e | -\! f b, \> | -) \! c r | -R2 | -d4 \p ( \< e | -\! ) f2 \> | -\! b,4 \p ( c | -) d r | -r r8 g, \p | -[g \< g g g] | -[g g g \! g] | -g \f [c16 ( d] [es8 d16 c ] | -) d4 r8 g, \p | -[g g g g] | -[g g g g] | -g [c16 ( d] [es8 d16 c ] | -) d4 r8 c ( | -) g4.-> c8 ( | -) g4.-> r8 | -r4 r8 a ( | -) b4. g8 \f ( | -) c4.-> g8 ( | -) c4.-> r8 | -r4 r8 a \f ( | -) d4. \clef "tenor"; [g16 \p ( a] | -) g8 [fis16 ( g] ) fis8-. \< [f16 ( g ] | -) f8-. [e16 ( \! f ] ) e8 g-. \mf | -[g-. fis-. \< fis-. f-. ] | -[f-. e-. \! e-. ] \clef "bass"; cis \f ( | -) e4. a,8 | -[d,-. e-. f-. ] f' ( | -) d4. d8 | -b4. b8 ( | -) c r f4-> ( | -) e8 r f4-> ( | -) e8 r c4 ( | -[ ) d8-. f-. d-. b ( ] | -) c r f4-> ( | -) e8 r f4-> ( | -) e8 r c4 ( | -[ ) d8-. f-. d-. b ( ] | -) c r f4 ( | -) e8 r f4_"dim." ( | -) e8 r f4 ( | -) e8 r f4 \p ( | -) e8 r r4 | -r8 [g,-.^"solo" \p a-. b-. ] | -c r r4 | -R2 | -a,2 \pp \< ~ | -\! a | -e' \> ~ | -\! e4 r | -e2 \p \< ~ | -\! e \> ~ | -\! e \< ~ | -\! e \> | -\grace d'8 ( ) \! f2 \fz \> ( | -) e4. \! r8 | -f,2 \> ( ( | -[ ) \! e8 d c ) b ] | -a2 \pp \< ~ | -\! a | -e' \> ~ | -\! e4 r | -e2 \p ~ -e ~ | -e ~ | -e | -\grace d'8 ( ) f2 \fz \> ( | -) e4. \! r8 | -f,2 \p ( | -) e4 r | -f'2-> ( | -) e4. r8 | -f,2 ( | -) e | -d' \p ~ | -d ~ | -d_"dim." ~ | -d ( | -) c \pp ( | -) d4 () c8 r | -c r bes r | -c r bes r | -d2 ( | -) es4 () d8 r | -e! r f-. r | -bes,-. r [a-. c-.] | -[bes-. a-. g-. f-. ] | -[e-. d-. c-. ] c ( | -) c'4. \f r8 | -d4 () c8 r | -d4 () c8 a-. | -[bes-. c-. d-. es-. ] | -d4.-> r8 | -es4 () d8 r | -es4 () d8 r | -d4 ~ d8 [d16 ( e! ] | -[f g f e] ) d8 bes ( | -) a4 r8 [d16 ( e ] | -[f g f e] ) d8 bes ( | -) a4 r8 d ( | -) f r g r | -as r g r | -c,4 \fz r | -R2*6 | -bes4 ( \p \< a | -) \! g r | -g_"dim." ( f | -) e r | -r r8 c' | -[c c c c] | -[c \< c c \! c] | % crescendo added -[c c c c] | -[c c c ] c \p | -[c \< c c c] | -[c c c c] | -[\! c \f c c c] | -[c c c ] f ( | -) c4.-> f8 ( | -) c4.-> r8 | -r4 r8 d8 ( | -) e!4. c8 \f ( | -) f4.-> c8 ( | % slur added -) f4.-> r8 | -r4 r8 d ( | -) e4. r8 | -R2 | -r4 r8 c \p | -[c-. \< d-. d-. e-. ] | -[ \! e-. f-. f-. ] r | -fis4. \f d,8-. | -[g-. a-. bes-. ] e! ( | -) g4. \f g8 ( | -) e4. e8 ( | -) f r c4-> ~ | -c c-> ~ | -c d ( | -) e r8 c ( | -) f4 c~ | -c c~ | -c d ( | -) e r8 c ( | -) f4 c~ | -c c~ | -c r | -R2*5 | -es2 \p \> ( ( | -) \! d4 \< \! ) des | -c \f ( bes | -a b | -) c r | -R2 | -a8-. \p r r4 | -g8-. r r4 | -R2*4 | -a2 \p \< ~ | -a4 () \! gis8 g ( | -) c4. \fz c8 \> | -[c c \! c ] r8 | -R2*2 | -es2 \p \< ~ | -\! es4. d8 \f ( | -) f,4. bes8 ( | -) d,4. c'8 ( | -) c,4. c'8 ( | -) c,4. bes'8 ( | -) a4 r8 c( | -) d4 () c8 bes ( | -) a4 r8 c( | -) d4 () c8 d ( | -) g,4. g'8 ( | -) c,4. c,8 | -[f-. c-. f-. c-. ] | -[f-. c-. f-. c-. ] | -f-. r c'-. r | -c-. r c-. r | -[c16 ( d c d][c d c d] | -[c16 d c d][c d c d] | -) c4 r8 c ( | -) f4 r8 c ( | -) f,4 r8 c' ( | -) f4 r8 c ( | -) f,2 ~ | -f ( | -) c'4 \fz r -} - -oboecue=\notes\relative c'' { -\tiny - -s2.*32 | -s2*32 | \stemdown -[a8^"Vi. I" ( g f d] | -[b g ) a ] s8 | -s2*106 | -[d'8^"Vi. I" ( c bes g] | -[e c ) d] s | -} - -flautocue=\notes\relative c'' { -\tiny - -s2.*32 | -s2*32 | \stemdown -[a8^"Vi. I" ( g f d] | -[b g ) a ] s8 | \stemboth -s2*60 | -f''2^"Oboe" ( | -b,4 [c8 ) b] | -s2*44 | \stemdown -[d8^"Vi. I" ( c bes g] | -[e c ) d] s | -s2*54 | \stemup -bes''4.^"Vi. I" a8 | -[g-. f-. e-. ] s8 | -} diff --git a/scm/generic-property.scm b/scm/generic-property.scm index a13394ae09..619e0591aa 100644 --- a/scm/generic-property.scm +++ b/scm/generic-property.scm @@ -65,10 +65,9 @@ ) ) +; don't do this yet. Depends on whennn the staff is really announced (define generic-staff-symbol-properties (cons "Staff_symbol" (list - (list 'numberOfStaffLines number? 'line-count) - (list 'staffSpace number? 'staff-space) ) ) ) @@ -168,7 +167,7 @@ generic-timesig-properties generic-clef-properties generic-collision-properties - generic-staff-symbol-properties +; generic-staff-symbol-properties generic-All-properties ) ) diff --git a/scm/lily.scm b/scm/lily.scm index 582c55e24b..f2b009aa9e 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -71,21 +71,21 @@ ;; See documentation of Item::visibility_lambda_ -(define (postbreak-only-visibility d) (if (= d 1) '(#f . #f) '(#t . #t))) -(define (spanbar-non-postbreak-visibility d) (if (= d -1) '(#t . #t) '(#f . #f))) -(define (all-visibility d) '(#f . #f)) -(define (non-postbreak-visibility d) (if (= d 1) '(#t . #t) '(#f . #f))) -(define (non-prebreak-visibility d) (if (= d -1) '(#t . #t) '(#f . #f))) +(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 (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))) ;; Score_span_bars are only visible at start of line ;; i.e. if break_dir == RIGHT == 1 -(define Span_bar_engraver-visibility non-postbreak-visibility) -(define Base_span_bar_engraver-visibility non-postbreak-visibility) -(define mark-visibility non-prebreak-visibility) -(define Span_score_bar_engraver-visibility postbreak-only-visibility) -(define Piano_bar_engraver-visibility postbreak-only-visibility) -(define Staff_group_bar_engraver-visibility postbreak-only-visibility) +(define Span_bar_engraver-visibility begin-of-line-invisible) +(define Base_span_bar_engraver-visibility begin-of-line-invisible) +(define mark-visibility end-of-line-invisible) +(define Span_score_bar_engraver-visibility begin-of-line-visible) +(define Piano_bar_engraver-visibility begin-of-line-visible) +(define Staff_group_bar_engraver-visibility begin-of-line-visible) ;; Spacing constants for prefatory matter. ;; @@ -240,8 +240,8 @@ ;;;;;;;;;;;;;;;;;;; generic output -(define (translate-atom offset exp) - exp) +(define (translate-molecule offset) + "") ;;;;;;;;;;;;;;;;;;; TeX output diff --git a/scm/paper.scm b/scm/paper.scm index 36ccac9622..9a6b05a8c0 100644 --- a/scm/paper.scm +++ b/scm/paper.scm @@ -2,7 +2,7 @@ ;;; ;;; source file of the GNU LilyPond music typesetter ;;; -;;; (c) 1999 Jan Nieuwenhuizen +;;; (c) 1999--2000 Jan Nieuwenhuizen ;;; All dimensions are measured in staff-spaces @@ -125,3 +125,12 @@ (define stem-shorten '(0.5)) (define grace-stem-shorten '(0.0)) + +;; urg +(define pi (* 2 (acos 0))) + +(define (slur-default-height h-inf r-0 b) + (let ((alpha (/ (* 2.0 h-inf) pi)) + (beta (/ (* pi r-0) (* 2.0 h-inf)))) + (* alpha (atan (* beta b))))) +