. * use Rhythmic_head::position_i () for all Staff_referenced
. * .po -> .pot.
. * setting indent to 0 with \shape fails
+. * ly2dvi : don't repeat opus if same.
+. * breaks before mmrests are favored.
. * hara kiri _8 clef.
. * junk -M ?
. * mudela-book doco
{
Musical_pitch p = spanish_inquisition.pitch_arr_[0];
Direction s = Direction (sign(p.steps ()));
- if (s && s != where_dir_)
+ if (s != where_dir_)
{
where_dir_ = s;
- String to_id = (s > 0) ? "up" : "down";
+ String to_id = (s >= 0) ? "up" : "down";
Auto_change_music const * auto_mus = dynamic_cast<Auto_change_music const* > (music_l_);
change_to (it, auto_mus->what_str_, to_id);
*/
#include "score-column.hh"
-#include "break.hh"
+#include "break-algorithm.hh"
#include "paper-def.hh"
#include "debug.hh"
#include "line-of-score.hh"
}
-Line_spacer*
+Simple_spacer*
Break_algorithm::generate_spacing_problem (Line_of_cols curline, Interval line) const
{
- Line_spacer * sp = new Simple_spacer;
-
- sp->default_space_f_ = pscore_l_->paper_l_->get_var ("loose_column_distance");
+ Simple_spacer * sp = new Simple_spacer;
+ Paper_def * d = pscore_l_->paper_l_;
+ sp->compression_energy_factor_f_ = d->get_var ("compression_energy_factor");
+ sp->default_space_f_ = d->get_var ("loose_column_distance");
sp->indent_f_ = line[LEFT];
sp->line_len_f_ = line.length ();
sp->add_columns (curline);
- sp->prepare ();
+
return sp;
}
Break_algorithm::Break_algorithm ()
{
pscore_l_ = 0;
- get_line_spacer =0;
linelength = 0;
}
*/
#include "column-x-positions.hh"
+#include "simple-spacer.hh" // ugh
#include "real.hh"
#include "debug.hh"
-#include "line-spacer.hh"
Column_x_positions::Column_x_positions()
{
#endif
}
-void
-Column_x_positions::OK() const
-{
-#ifndef NDEBUG
- assert (config_.size() == cols_.size ());
-#endif
-}
-void
-Column_x_positions::stupid_solution()
-{
- // set_stupid_solution (spacer_l_->default_solution());
-}
-void
-Column_x_positions::solve_line()
-{
- spacer_l_->solve (this);
-}
-void
-Column_x_positions::approximate_solve_line()
-{
- spacer_l_->lower_bound_solution (this);
-}
#include "paper-column.hh"
#include "paper-score.hh"
#include "paper-def.hh"
-#include "line-spacer.hh"
+#include "simple-spacer.hh"
#include "killing-cons.tcc"
*/
int line_i_;
- Real energy_f_;
+ Real demerits_f_;
Column_x_positions line_config_;
Break_node ()
Break_node first_node ;
first_node.prev_break_i_ = -1;
- first_node.line_config_.energy_f_ = 0;
+ first_node.line_config_.force_f_ = 0;
+ first_node.line_config_.energy_f_ = 0;
first_node.line_i_ = 0;
optimal_paths[0] = first_node;
for (; break_idx< breaks.size (); break_idx++)
{
- Array<int> candidates;
- Array<Column_x_positions> candidate_lines;
- Cons_list<Line_spacer> spacer_p_list;
-
/*
start with a short line, add measures. At some point
the line becomes infeasible. Then we don't try to add more
*/
+ int minimal_start_idx = -1;
+ Column_x_positions minimal_sol;
+ Real minimal_demerits = infinity_f;
+
for (int start_idx = break_idx; start_idx--;)
{
+#if 0
if (break_idx - start_idx > max_measures_i_)
break;
-
+#endif
+
if (optimal_paths[start_idx].prev_break_i_ < 0
&& optimal_paths[start_idx].line_config_.energy_f_)
continue;
if (!feasible (line))
break;
- Column_x_positions approx;
- approx.cols_ = line;
-
- approx.spacer_l_ = generate_spacing_problem (line,
- pscore_l_->paper_l_->line_dimensions_int (optimal_paths[start_idx].line_i_));
- spacer_p_list.append (new Killing_cons<Line_spacer> (approx.spacer_l_,0));
-
- approx.approximate_solve_line ();
-
- if (approx.energy_f_ > energy_bound_f_)
- {
- continue;
- }
-
- // this is a likely candidate. Store it.
- candidate_lines.push (approx);
- candidates.push (start_idx);
- }
+ Column_x_positions cp;
+ cp.cols_ = line;
+
+ Interval line_dims
+ = pscore_l_->paper_l_->line_dimensions_int (optimal_paths[start_idx].line_i_);
+ Simple_spacer * sp = generate_spacing_problem (line, line_dims);
+ sp->solve (&cp);
+ delete sp;
+
+ if (!cp.satisfies_constraints_b_)
+ break;
-
- int minimal_j = -1;
- Real minimal_energy = infinity_f;
- for (int j=0; j < candidates.size (); j++)
- {
- int start = candidates[j];
- if (optimal_paths[start].line_config_.energy_f_
- + candidate_lines[j].energy_f_ > minimal_energy)
-
- continue;
+ Real this_demerits
+ = combine_demerits (optimal_paths[start_idx].line_config_, cp)
+ + optimal_paths[start_idx].demerits_f_;
- if (!candidate_lines[j].satisfies_constraints_b_)
+ if (this_demerits < minimal_demerits)
{
- candidate_lines[j].solve_line ();
- }
-
- Real this_energy
- = optimal_paths[start].line_config_.energy_f_
- + candidate_lines[j].energy_f_ ;
-
- if (this_energy < minimal_energy)
- {
- minimal_j = j;
- minimal_energy = this_energy;
+ minimal_start_idx = start_idx;
+ minimal_sol = cp;
+ minimal_demerits = this_demerits;
}
}
- if (minimal_j < 0)
+ if (minimal_start_idx < 0)
{
optimal_paths[break_idx].prev_break_i_ = -1;
optimal_paths[break_idx].line_config_.energy_f_ = infinity_f;
}
else
{
- optimal_paths[break_idx].prev_break_i_ = candidates[minimal_j];
- optimal_paths[break_idx].line_config_ = candidate_lines[minimal_j];
- optimal_paths[break_idx].line_i_ =
- optimal_paths[optimal_paths[break_idx].prev_break_i_].line_i_ + 1;
+ optimal_paths[break_idx].prev_break_i_ = minimal_start_idx;
+ optimal_paths[break_idx].line_config_ = minimal_sol;
+ optimal_paths[break_idx].demerits_f_ = minimal_demerits;
+ optimal_paths[break_idx].line_i_ =
+ optimal_paths[minimal_start_idx].line_i_ + 1;
}
if (! (break_idx % HAPPY_DOTS_I))
*mlog << "[" << break_idx << "]" << flush;
-
- spacer_p_list.junk ();
}
+ /* do the last one */
if (break_idx % HAPPY_DOTS_I)
*mlog << "[" << break_idx << "]";
*mlog << endl;
Array<int> final_breaks;
-
Array<Column_x_positions> lines;
/* skip 0-th element, since it is a "dummy" elt*/
void
Gourlay_breaking::do_set_pscore ()
{
- energy_bound_f_ = pscore_l_->paper_l_->get_var ("gourlay_energybound");
max_measures_i_ =int (rint (pscore_l_->paper_l_->get_var ("gourlay_maxmeasures")));
}
+
+/*
+ TODO: uniformity parameter to control rel. importance of spacing differences.
+ */
+Real
+Gourlay_breaking::combine_demerits (Column_x_positions const &prev,
+ Column_x_positions const &this_one) const
+{
+ return abs (this_one.force_f_) + abs (prev.force_f_ - this_one.force_f_);
+}
--- /dev/null
+/*
+ break-algorithm.hh -- declare Break_algorithm
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef BREAK_HH
+#define BREAK_HH
+#include "array.hh"
+#include "interval.hh"
+#include "lily-proto.hh"
+#include "column-x-positions.hh"
+
+
+/** Class representation of an algorithm which decides where to put
+ the column, and where to break lines.
+
+ TODO: A "parindent", caching of breakpoints
+
+ */
+class Break_algorithm {
+protected:
+
+ Paper_score *pscore_l_;
+ Real linelength;
+
+ /// search all pcols which are breakable.
+ Line_of_cols find_breaks() const;
+
+ Array<int> find_break_indices() const;
+
+
+ /// helper: solve for the columns in #curline#.
+ void solve_line (Column_x_positions*) const;
+
+ /// helper: approximate the energyv
+ void approximate_solve_line (Column_x_positions*) const;
+
+ /// does curline fit on the paper?
+ bool feasible (Line_of_cols) const;
+
+
+ Simple_spacer* generate_spacing_problem (Line_of_cols, Interval) const;
+
+ virtual Array<Column_x_positions> do_solve() const=0;
+ virtual void do_set_pscore();
+
+public:
+
+ Simple_spacer* (*get_line_spacer)();
+
+ Break_algorithm();
+ void set_pscore (Paper_score*);
+
+ /// check if the spacing/breaking problem is well-stated
+ void problem_OK() const;
+ void OK() const;
+ Array<Column_x_positions> solve() const;
+};
+
+#endif // BREAK_HH
+
typedef Link_array<Paper_column> Line_of_cols;
struct Column_x_positions {
- Line_spacer * spacer_l_;
+ Simple_spacer * spacer_l_;
Line_of_cols cols_;
Array<Real> config_;
+ Real force_f_;
Real energy_f_;
bool satisfies_constraints_b_;
- void OK() const;
~Column_x_positions();
- void solve_line();
- void approximate_solve_line();
- /** generate a solution with no regard to idealspacings or
- constraints. should always work */
- void stupid_solution();
Column_x_positions();
void add_paper_column (Paper_column*c);
void print() const;
#ifndef GOURLAY_BREAKING_HH
#define GOURLAY_BREAKING_HH
-#include "break.hh"
+#include "break-algorithm.hh"
/**
A dynamic programming solution to breaking scores into lines
*/
struct Gourlay_breaking : public Break_algorithm
{
- Real energy_bound_f_ ;
+ Real energy_bound_f_ ;
/// maximum number of measures in a line
- int max_measures_i_;
- void do_set_pscore();
- Array<Column_x_positions> do_solve() const;
- Gourlay_breaking();
+ int max_measures_i_;
+ void do_set_pscore();
+ Array<Column_x_positions> do_solve() const;
+ Gourlay_breaking();
+ Real combine_demerits (Column_x_positions const&,Column_x_positions const&) const;
};
#endif // GOURLAY_BREAKING_HH
struct Line_group_engraver;
struct Line_of_score;
struct Line_of_staff;
-struct Line_spacer;
+struct Simple_spacer;
struct Linestaff;
struct Local_key;
struct Local_key_engraver;
#define SIMPLE_SPACER_HH
#include "parray.hh"
-#include "line-spacer.hh"
+#include "lily-proto.hh"
struct Spring_description
Perhaps this is not a bad thing, because the 1st looks better anyway. */
-struct Simple_spacer: public Line_spacer
+struct Simple_spacer
{
Array<Spring_description> springs_;
+
Real force_f_;
+ Real indent_f_;
+ Real line_len_f_;
+ Real default_space_f_;
+ Real compression_energy_factor_f_;
Simple_spacer ();
- virtual void solve (Column_x_positions *) const;
- virtual void lower_bound_solution (Column_x_positions *) const;
- virtual void add_columns (Link_array<Paper_column>);
-
+ void solve (Column_x_positions *) const;
+ void add_columns (Link_array<Paper_column>);
void my_solve_linelen ();
void my_solve_natural_len ();
Real active_springs_stiffness () const;
{
if (iter_p_)
{
- music_l_->warning (_ ("Must stop before this music ends"));
+ if (iter_p_->ok ())
+ music_l_->warning (_ ("Must stop before this music ends"));
delete iter_p_;
iter_p_ = 0;
}
TODO: more advanced: supply height of noteheads as well, for more advanced spacing possibilities
*/
+
void
Stem::set_spacing_hints ()
{
}
autoBeamOff = \property Voice.noAutoBeaming = "1"
-autoBeamOn = \property Voice.noAutoBeaming = ""
+autoBeamOn = \property Voice.noAutoBeaming = ""
+
+
+emptyText = \property Voice.textEmptyDimension = "1"
+fatText = \property Voice.textEmptyDimension = ""
ff = \textscript "ff" "dynamic"
fff = \textscript "fff" "dynamic"
fp = \textscript "fp" "dynamic"
+cresc = \textscript "cresc." "italic"
sf = \textscript "sf" "dynamic"
+sfp = \textscript "sfp" "dynamic"
sff = \textscript "sff" "dynamic"
sfz = \textscript "sfz" "dynamic"
fz = \textscript "fz" "dynamic"
%description
@BLURB@
+%package documentation
+Summary: Prebuilt website containing all LilyPond documentation.
+Group: Applications/Publishing
+
+%description documentation
+@BLURB@
+
+The documentation package is rather big, due to the many pictures and
+different documentation formats. It is really a rip-off from the
+LilyPond website. If you have direct internet access, you may always
+read the documentation documentation there: http://www.lilypond.org.
+
%prep
%setup
%build
make all
ln -s /usr/share/texmf/fonts/tfm/public/cm/ tfm
+# urg
+# %build documentation
+# line 42: second %build
+# ok, now make sure that lilypond package will succeed,
+# even if documentation fails to build
make -C Documentation || true
make htmldoc || true
-
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc
-mkdir htmldocs
-tar -C htmldocs -xzf out/htmldoc.tar.gz
-mkdir -p out/examples/
-tar -cf - input/ | tar -C out/examples/ -xf-
strip lily/out/lilypond midi2ly/out/midi2ly
make prefix="$RPM_BUILD_ROOT/usr" install
cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT/etc/profile.d/lilypond.sh
cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT/etc/profile.d/lilypond.csh
+# urg
+#%install documentation
+#line 63: second %install
+# again, make sure that main package installs even if doco fails
+mkdir -p htmldocs
+tar -C htmldocs -xzf out/htmldoc.tar.gz
+mkdir -p out/examples/
+tar -cf - input/ | tar -C out/examples/ -xf-
+
%post
touch /tmp/.lilypond-install
%files
-%doc htmldocs/
-%doc out/examples/
-%doc mutopia/
-
-
# hairy to hook it in (possibly non-existing) emacs
%doc mudela-mode.el
-# this gets too messy...
-# %doc input/*.ly
-# verbatim include of input: list the directory without issuing a %dir
-
/usr/bin/abc2ly
/usr/bin/convert-mudela
/usr/bin/mudela-book
/usr/share/locale/*/LC_MESSAGES/lilypond.mo
/etc/profile.d/lilypond.*
+%files documentation
+# this gets too messy...
+# %doc input/*.ly
+# verbatim include of input: list the directory without issuing a %dir
+%doc htmldocs/
+%doc out/examples/
+%doc mutopia/
\header{
filename = "preludes-1.ly";
-% urg?
-%opus = "BWV 924";
-% piece = "1";
-% blz 1
+%
+% page 1
+%
% Clavierb"uchlein f"ur W. Fr. Bach
% Clav. W. Fr. Bach: 2-Praeambulum I
% ca 1720
>
>
\paper{
- \include "preludes-paper.ly";
% no slur damping
slur_slope_damping = 10.0;
- gourlay_maxmeasures = 4.0;
}
\midi{ \tempo 4 = 80; }
\header {
\header{
filename = "preludes-2.ly";
-% blz 10
+%
+% page 10
%
-% Six Petits Pr eludes
+% Six Petits Preludes
% Collection Johann Peter Kellner
% ca 1703- 1707
composer = "Johann Sebastian Bach (1685-1750)";
>
>
\paper{
- \include "preludes-paper.ly";
- gourlay_maxmeasures = 4.0;
}
\midi{ \tempo 4 = 100; }
\header {
--- /dev/null
+%{
+
+ Six Petits Preludes,
+ Collection Johann Peter Kellner
+ ca 1703 - 1707
+
+
+
+ Kellner was a student of Bach's.
+
+%}
+\header{
+ copyright = "public domain";
+ source = "Ed. Henry Lemoine Urtext";
+ title = "Pr\\\"aludum in C moll";
+ subtitle = "f\\\"ur Laute";
+ composer = "Johann Sebastian Bach (1685-1750)";
+ enteredby = "jcn,hwn";
+ copyright = "public domain";
+
+ % mutopia headers.
+ mutopiatitle = "Prelude";
+ mutopiacomposer = "J.S.Bach";
+ mutopiaopus = "BWV999";
+ mutopiainstrument = "Piano";
+ style = "baroque";
+ copyright = "Public Domain";
+ tagline = "\\\\This music is part of the Mutopia project, http://sca.uwaterloo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Jan Nieuwenhuizen.\\\\Unrestricted modification and redistribution is permitted and encouraged - copy this music and share it!";
+ maintainer = "janneke@gnu.org";
+ lastupdated = "1999/Oct/16";
+
+}
+%{
+
+TODO: this file needs additional layouting: the upper voice should
+switch staffs to avoid leger lines.
+
+%}
+\version "1.2.13";
+
+
+upper = \notes \transpose c'' {
+ r16 [c es g] [es c es c] r c r c |
+ r16 [c es g] [es c es c] r c r c |
+ r16 [c f as] [f c f c] r c r c |
+ r16 [c f as] [f c f c] r c r c |
+ r16 [b, d f] [d b, d b,] r b, r b, |
+ r16 [b, d f] [d b, d b,] r b, r b, |
+ r16 [g, c es] [c g, c g,] r g, r g, |
+ r16 [g, c es] [c g, c g,] r g, r g, |
+ r16 [g, c es] [c g, c g,] r g, r g, |
+ r16 [g, c es] [c g, c g,] r g, r g, |
+ r16 [a, c es] [c a, c a,] r a, r a, |
+ r16 [a, c es] [c a, c a,] r a, r a, |
+ r16 [a, bes, d] [bes, a, bes, a,] r a, r a, |
+ r16 [g, bes, d] [bes, g, bes, g,] r g, r g, |
+ r16 [bes, d g] [d bes, d bes,] r bes, r bes, |
+ r16 [a, es g] [es a, es a,] r a, r a, |
+ r16 [a, c fis] [c a, c a,] r a, r a, |
+ r16 [a, c fis] [c a, c a,] r a, r a, |
+ r16 [bes, d g] [d bes, d bes,] r bes, r bes, |
+
+ r16 [c fis a] [fis c fis c] r c r c |
+ r16 [d g bes] [g d g d] r d r d |
+ r16 [d fis c'] [fis d fis d] r d r d |
+
+ r16 [cis g bes] [g cis g cis] r cis r cis |
+ r16 [c! es a] [es c es c] r c r c |
+ r16 [bes, e g] [e bes, e bes,] r bes, r bes, |
+ r16 [a, c g] [c a, c a,] r a, r a, |
+
+ r16 [a, c fis] [c a, c a,] r a, r a, |
+ r16 [g, bes, e] [bes, g, bes, g,] r g, r g, |
+ r16 [fis, a, es] [a, fis, a, fis,] r fis, r fis, |
+ r16 [g, bes, d] [bes, g, bes, g,] r g, r g, |
+ r16 [g, a, c] [a, g, a, g,] r g, r g, |
+ r16 [fis, a, c] [a, fis, a, fis,] r fis, r fis, |
+ r16 [fis, a, c] [a, fis, a, fis,] r fis, r fis, |
+ r16 [g, a, c] [b, g, b, g,] r g, r g,
+ r16 [a, c fis] [c a, c a,] r a, r a, |
+ r16 [c fis a] [fis c fis c] r c r c |
+ r16 [b, d g] [d b, d b,] r b, r b, |
+ r16 [b, d f] [d b, d b,] r b, r b, |
+ r16 [g, c es] [c g, c g,] r g, r g, |
+ r16 [fis, c es] [c fis, c fis,] r fis, r fis, |
+ r16 [fis, c es] [c fis, c fis,] r fis, r fis, |
+ r16 [g, b, d] [b, g, b, d] [es c a, fis] |
+ \context Staff <
+ \context Voice=i {\stemup g2.-\fermata\mf}
+ \context Voice=ii {\stemdown <b,2. d>}
+ >
+ \stemboth
+ \bar "|.";
+}
+
+lower = \notes{
+ c4 r [g8 es] |
+ c4 r [g8 es] |
+ c4 r [as8 f] |
+
+ c4 r [as8 f] |
+ c4 r [as8 f] |
+ c4 r [as8 f] |
+
+ c4-- r [es8 c] |
+ bes,!4-- r [es8 c] |
+ as,!4-- r [es8 c] |
+
+ g,4-- r [es8 c] |
+ fis,4-- r [es8 c] |
+ fis,4 r [fis8 d] |
+
+ g,4 r [d8 bes,] |
+ g,4 r [bes,8 g,] |
+ es,4 r [g8 es] |
+
+ c4 r [c8 a,] |
+ d,4 r [d8 a,] |
+ d,4 r [d8 a,] |
+ d,4 r [d8 bes,] |
+
+
+ d,4 r [es8 c] |
+ d,4 r [g8 d] |
+ d,4 r [a8 fis] |
+
+ d,4 r [g8 es] |
+ d,4 r [fis8 d] |
+ d,4 r [e8 cis] |
+ d,4 r [es8 c] |
+
+ d,4 r [d8 a,] |
+ d,4 r [cis8 bes,] |
+ d,4 r [c!8 a,] |
+
+ d,4 r [bes,8 g,] |
+ d,4 r [es8 c] |
+ d,4 r [d8 a,] |
+
+ g,4 r [es8 c] |
+ g,4 r [d8 b,] |
+ g,4 r [es8 c] |
+
+ g,4 r [es8 c] |
+ g,4 r [g8 d] |
+ g,4 r [as8 f] |
+ g,4 r [es8 c] |
+
+ g,4 r [es8 c] |
+ g,4 r [es8 c] |
+ g,4 r r |
+ g,2._\fermata
+ \bar "|.";
+}
+
+global = \notes{
+ \time 3/4;
+ \key es;
+}
+
+\score{
+ \context PianoStaff <
+ \context Staff = up <
+ \global
+ \upper
+ >
+ \context Staff = down <
+ \global
+ \clef "bass";
+ \lower
+ >
+ >
+ \paper{
+ \translator { \PianoStaffContext
+ minVerticalAlign = 2.2 * \staffheight;
+ maxVerticalAlign = 2.2 * \staffheight ;
+ }
+ \translator {\OrchestralScoreContext }
+ }
+ \midi{ \tempo 4 = 100; }
+ \header{
+ opus = "BWV 999";
+ }
+}
\header{
filename = "preludes-4.ly";
-% blz 8
+%
+% page 8
+%
% Clavierb"uchlein f"ur W. Fr. Bach
% Clav. W. Fr. Bach: 27-Praeludium ex d neutral
% ca 1720
three = \notes\relative c{
\context Voice=iii
\stemdown
- d4-3 c-4 b e-3 |
+ d4-3 cis-4 b e-3 |
a16 a,-5\mf( cis-3 a-5 d-2 e-1 fis-2 d-4
g-1 fis-3 g a g b a g |
)fis4 fis e a-4 |
>
>
\paper{
- \include "preludes-paper.ly";
- gourlay_maxmeasures = 2.0;
}
\midi{ \tempo 4 = 70; }
\header{
\header{
filename = "preludes-5.ly";
-% blz 2
+%
+% page 2
+%
% Clavierb"uchlein f"ur W. Fr. Bach
% Clav. W. Fr. Bach: 4-Praeludium 2
% ca 1720
%40
s4 s16 [d16-1-"m.d." f-2 a-4] \stemdown [d,-2-"m.g." f a] \stemup d-1 |
\stemboth
- f a-4 f d f-4 d b d-5 gis-2 b a gis, |
+ f a-4 f d f-4 d b d-5 gis,-2 b a gis |
<g'!4.-5\f e a,> a8-5
<
{
>
>
\paper{
- \include "preludes-paper.ly";
- gourlay_maxmeasures = 5.0;
}
\midi{ \tempo 4 = 90; }
\header{
\header{
filename = "preludes-6.ly";
-% blz 11
+%
+% page 11
+%
% Six Petits Preludes
% Collection Johann Peter Kellner
% ca 1703 - 1707
)d16-5\mf a'-4( g f e f-4 cis-2 d-1
e8.-\mordent f16 d8.-\prall-1 cis16-3 |
\stemup
- )cis4\> ~ cis16 a \!d8 ~ d4 c-5 |
+ )cis4\> ~ cis16 a \!d8 ~ d4 a( |
%5
- b2-4 ~ b4 a-5 ~ |
+ )b2-4 ~ b4 a-5 ~ |
a16 a-5 \stemup g! f g4-4\< ~ g f-3 ~ |
\!f16 a g f e16 g8.-5 ~ g16 g-5 f-4 e-3 d-1 f8.-4 ~ |
f16 f-3 e d b'4 a-5 g-5 |
\context Voice=iv
\stemdown
d2-3 cis-4 |
- \skip 1*3; |
- %5
+ \skip 1*2; |
+ \skip 4*3;
\translator Staff=upper \stemup \property Voice.horizontalNoteShift = 1
- a'4 gis-2 ~ gis16 gis-3 fis e
+ c''4-5 |
+ %5
+ a gis-2 ~ gis16 gis-3 fis e
\skip 4*1;
\translator Staff=lower \stemdown \property Voice.horizontalNoteShift = 0
\stemup
>
>
\paper{
- \include "preludes-paper.ly";
- gourlay_maxmeasures = 3.0;
}
\midi{ \tempo 4 = 40; }
\header{
--- /dev/null
+% This is the main score file of the Petites Preludes
+
+\header{
+title = "Petites Pr\'eludes";
+% urg subtitle = "Clavierb\\"uchlein";
+subtitle = "Clavierbuechlein";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+
+ % mutopia headers.
+ mutopiatitle = "Petites Pr&aigueludes";
+ mutopiacomposer = "J.S.Bach";
+ mutopiaopus = "BWV924,939,999,925,926,940";
+ mutopiainstrument = "Piano";
+ style = "baroque";
+ copyright = "Public Domain";
+ tagline = "\\\\This music is part of the Mutopia project, http://sca.uwaterloo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Jan Nieuwenhuizen.\\\\Unrestricted modification and redistribution is permitted and encouraged - copy this music and share it!";
+ maintainer = "janneke@gnu.org";
+ lastupdated = "1999/Oct/16";
+
+}
+
+
+\paper { linewidth = 18.0\cm; }
+
+\include "preludes-1.ly"
+\include "preludes-2.ly"
+\include "preludes-3.ly"
+\include "preludes-4.ly"
+\include "preludes-5.ly"
+\include "preludes-6.ly"
-\header{
-filename = "allemande-cello.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-%piece = "Allemande";
-% opus = "BWV 1008";
-opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
+
\version "1.2.0";
\score{
\$allemande_cello_staff
- \paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 3.0;
-
- }
+ \paper{ }
\midi{ \tempo 4 = 45; }
- \header{ piece = "Allemande"; }
+ \header{ piece = "Allemande";
+ opus = "";
+
+ }
}
-\header{
-filename = "allemande-viola.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-% piece = "Allemande";
-% opus = "BWV 1008";
-opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
\version "1.2.0";
\score{
\$allemande_viola_staff
- \paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 3.0;
- }
+ \paper{ }
\midi{ \tempo 4 = 45; }
- \header{ piece = "Allemande"; }
+ \header{ piece = "Allemande";
+ opus = "";
+ }
}
-\header{
-filename = "courante-cello.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-% piece = "Courante";
-% opus = "BWV 1008";
-opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
\version "1.2.0";
\score{
\$courante_cello_staff
- \paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 4.0;
- }
+ \paper {}
\midi{ \tempo 4 = 55; }
- \header{ piece = "Courante"; }
+ \header{ piece = "Courante";
+ opus = "";
+ }
}
-\header{
-filename = "courante-viola.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-% piece = "Courante";
-% opus = "BWV 1008";
-opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
+
\version "1.2.0";
\score{
\$courante_viola_staff
- \paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 4.0;
- }
+ \paper{ }
\midi{ \tempo 4 = 55; }
- \header{ piece = "Courante"; }
+ \header{
+ opus= "" ;
+ piece ="Courante";
+ }
}
-\header{
-filename = "gigue-cello.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-% piece = "Gigue";
-% opus = "BWV 1008";
-opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
+
\version "1.2.0";
\score{
\$gigue_cello_staff
\paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 7.0;
\translator{
\VoiceContext
beamAutoEnd_8 = "3/4";
}
}
\midi{ \tempo 4 = 60; }
- \header{ piece = "Gigue"; }
+ \header{
+ opus= "" ;
+piece ="Gigue"; }
}
-\header{
-filename = "gigue-viola.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-% piece = "Gigue";
-% opus = "BWV 1008";
-opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
\version "1.2.0";
\score{
\$gigue_viola_staff
\paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 7.0;
\translator{
\VoiceContext
beamAutoEnd_8 = "3/4";
}
}
\midi{ \tempo 4 = 60; }
- \header{ piece = "Gigue"; }
+ \header{
+ opus= "" ;
+ piece ="Gigue"; }
}
-\header{
-filename = "menuetto-cello.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-%piece = "Menuetto I";
-source = "?";
-% opus = "BWV 1008 no. 5";
-opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
+
\version "1.2.0";
\score{
\$menuetto_i_cello_staff
\paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 7.0;
\translator{
\VoiceContext
beamAutoEnd_8 = "3/4";
}
}
\midi{ \tempo 4 = 110; }
- \header{ piece = "Menuetto I"; }
+ \header{
+ opus= "" ;
+ piece ="Menuetto I"; }
}
menuetto_ii_cello_global = \notes{
\score{
\$menuetto_ii_cello_staff
\paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 7.0;
-
\translator{
\VoiceContext
beamAutoEnd_8 = "3/4";
-\header{
-filename = "menuetto-viola.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-% piece = "Menuetto I";
-description = "Transcribed for Viola";
-source = "?";
-% opus = "BWV 1008 no. 5";
-opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
+
\version "1.2.0";
}
}
\midi{ \tempo 4 = 110; }
- \header{ piece = "Menuetto I"; }
+ \header{
+ opus= "" ;
+ piece ="Menuetto I"; }
}
menuetto_ii_viola_global = \notes{
\score{
\$menuetto_ii_viola_staff
\paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 7.0;
\translator{
\VoiceContext
beamAutoEnd_8 = "3/4";
}
}
\midi{ \tempo 4 = 130; }
- \header{ piece = "Menuetto II"; }
+ \header{
+ opus= "" ;
+ piece ="Menuetto II"; }
}
-\header{
-filename = "prelude-cello.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-%piece = "Pr\\'elude"; % duh
-opus = "BWV 1008";
-% opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
+
\version "1.2.0";
\score{
\$prelude_cello_staff
- \paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 7.0;
- }
+ \paper{ }
\midi{ \tempo 4 = 40; }
- \header{ piece = "Pr\\'elude"; }
+ \header{
+ opus= "" ;
+ piece ="Pr\\'elude"; }
}
-\header{
-filename = "prelude-viola.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-% piece = "Pr\\'elude"; % duh
-opus = "BWV 1008";
-% opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
+
\version "1.2.0";
\score{
\$prelude_viola_staff
- \paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 7.0;
- }
+ \paper{ }
\midi{ \tempo 4 = 40; }
- \header{ piece = "Pr\\'elude"; }
+ \header{
+ opus= "" ;
+ piece ="Pr\\'elude"; }
}
-\header{
-filename = "sarabande-cello.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-% piece = "Sarabande";
-% opus = "BWV 1008";
-opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
+
\version "1.2.0";
\score{
\$sarabande_cello_staff
- \paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 5.0;
- }
+ \paper{ }
\midi{ \tempo 4 = 40; }
- \header{ piece = "Sarabande"; }
+ \header{
+ opus= "" ;
+ piece ="Sarabande"; }
}
-\header{
-filename = "sarabande-viola.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-% piece = "Sarabande";
-% opus = "BWV 1008";
-opus = "";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents,
- dotted slurs
-%}
-
\version "1.2.0";
\include "sarabande-urtext.ly";
\score{
\$sarabande_viola_staff
- \paper{
- \include "scs-paper.ly";
- gourlay_maxmeasures = 5.0;
- }
+ \paper{ }
\midi{ \tempo 4 = 40; }
- \header{ piece = "Sarabande"; }
+ \header{
+ opus= "" ;
+ piece ="Sarabande"; }
}
linewidth = 180.\mm;
-gourlay_maxmeasures = 10.0;
-\translator { \BarNumberingStaffContext }
}
instrument="cello"
+
\include "solo-cello-suite-ii.ly"
-\header{
-filename = "solo-cello-suite-ii.ly";
-title = "Solo Cello Suites";
-subtitle = "Suite II";
-opus = "BWV 1008";
-composer = "Johann Sebastian Bach (1685-1750)";
+\include "header.ly"
+% urg
+
+\paper {
+linewidth = 180.\mm;
+\translator { \BarNumberingStaffContext }
}
-% urg
% \include "prelude-" + \instrument + ".ly";
depth = ../..
examples=# cadenza
+SUBDIRS=horn-concerto-3
LOCALSTEPMAKE_TEMPLATES=mutopia
include $(depth)/make/stepmake.make
--- /dev/null
+depth = ../../..
+
+examples=
+SUBDIRS=
+LOCALSTEPMAKE_TEMPLATES=mutopia
+
+include $(depth)/make/stepmake.make
+
+
--- /dev/null
+
+
+allegro =
+ \notes
+ \relative c'
+{
+ \time 4/4;
+ r4 |
+ R1*4
+ c'2^"tutti" g
+ c, r
+ R1*1
+ r8 [g' g g] [g g e c]
+ g'4 g, r2
+ R1*18
+ r2 r4 g'4 |
+ e'4. () c8 [f (d c )b ]
+ [b()c] g4 r8 [g-. c-. e-.]
+ g2. ( [g16-.( f e ))f]
+ dis4 () e4-- r8 [c8-. c-. c-.]
+ c4.( [d16 )e] f4 () e
+ a,() d g,() c
+ d-. d-. \grace e16( [)d8. c16 d8. e16]
+ c4 r r2
+ R1*3
+ c,2 ~ [c8 e( g )c]
+ [c () b ] b4-. r2
+ [c,8 () e g c] [e()g e c]
+ [c()b] b4-- r2
+ c4.() g8 e'4.() c8
+ [g'()d ] d4-- r4 d
+ [d8 () c] c4.( [d16 e] [d8 )c]
+ [c8(-\trill )b] b4 r2 |
+ d2( ~ [d8 e16 d] [c8 )b] |
+ [b()a-.] a4-> r8 [a-. a-. a-.]
+ a4 cis e g
+ \grace { \longgrace g16( }
+ [ fis8 e16 )d] d4-. r2 |
+ \mark "B";
+ R1*3
+ r2 r4 [d8 (b ]
+ [a )g d'( b] [a )g e'( c ]
+ [b8 )a] a4 r4 [a8-. a-.]
+ [a( \< b c \!cis\< ] d4 \! )c
+ [ais8() b] r8 b [b()c] r c
+ [cis ()d] r4 r2
+ g,1 ~ g2 ~ [g8 a16 b] [c()d e c]
+ f4-. d-. b-. g-.
+ r1
+ \emptyText
+ c,2\p e4 g c_\cresc e g4. e8 |
+ d4. [e16 fis] [g () fis e d] [c() b a g]
+ a1(-\trill \grace{ [g16 a] }
+ )g4 r r2
+ R1*15
+ \mark "D";
+ bes2-\mf d4 f
+ g,2~ [g8 g'( es )c]|
+ bes4( )a4. [c8 d es]
+ cis4()d r8 [bes (c )d]
+ es2 () d4 r
+ es2\p () d4 r
+ [c8(\mf g' es )c] bes4()c-.
+ c4.( cis8 )d4 r
+ R1*2
+ es1~es1|
+ e!
+ d
+ c
+ c,
+ e'
+ e,
+ c'2 [b8( a gis )a]
+ [gis8 e gis b ] e4 r |
+ r8 [e, a c] dis4 r
+ r8 [e, a c] dis4 r
+ r8 [e, g b] e4 r
+ r8 [fis, b dis] fis4 r
+ r8 [gis, b d] f4 r
+ r8 [g, b d_"rit."] f4 r
+ \mark "E";
+ R1*8
+ r2 r8 [g,-. g-. g-.]
+ e'4.() c8 [f( d c )b]
+ [b()c] g4 r8 [g c e] |
+ g2. ( [g16( f e ))f]
+ dis4()e r8 [c-. c-. c-.]
+ c4.( [d16 e] f4 )e
+ a, ( d g, )c
+ d d [
+ \grace { e8( }
+ d8. c16 d8. e16]
+ c4 r r2
+ \mark "F";
+ R1*3
+ c,2~[c8( e g )c]
+ [c8()b] b4 r2
+ [c,8()e g c ] [e ()g e c]
+ [c()b] b4 r2
+ c2 (bes )a [a8(b c )cis]
+ d2( ~ [d8 e16 d] [\grace { \longgrace d16( } )c8 b16 )c]
+ \grace { \longgrace c16 }[ b8( a16 )g] g4 r2 |
+ R1*3
+ r2 r4 [g'8()e]
+ \mark "G";
+ [d()c g'()e] [d()c a'()f]
+ [e()d] d4 r [d8 d]
+ d4(~ [d16 e d )e] [g8() f e d] |
+ c4 r r2
+ r1
+ c1 ~
+ c |
+ [c8-. c-.] r c-. [cis()d] r d-. |
+ [dis()e] r e-. [e()f] r f-. |
+ g4-. e-. c-. bes-. |
+ g-.\ff e-. c-. r |
+ a'2 ~ [a8_"sempre f" b16 c] [d( e d )e]%TODO
+
+ f4. () d8 [f8 ()d f d]
+ [c (e] )g2 \grace { \longgrace f16( } [)e8( d16 )c]
+ \grace { \aftergrace [c16 d] }
+ d1-\trill
+ c4 r r2
+ r1 |
+ \mark "H";
+ \times 2/3 { [ c8 ()b a ] } \times 2/3 { [ g a b] } \times 2/3 { [ c d e] } \times 2/3 { [ f()e d] } |
+ \times 2/3 { [ c () b a ] } \times 2/3 { [ g a b] } \times 2/3 { [ c d e] } \times 2/3 { [ f()e d] }|
+ c4 \times 2/3 { r8 [g'()e]} c4 \times 2/3 { r8 [e () c]} |
+ g4 \times 2/3 { r8 [c8() g] } \times 2/3 { [ e ()g e] } \times 2/3 { [c ()e c] }|
+ g4 r8 g'\f [a b c d]|
+ \grace { \aftergrace [c16 d] }
+ d1(-\trill
+ )c4 r r2
+ R1*3
+ \grace{ \aftergrace [c16 d] }
+ c1-\trill_"Cadenza ad lib." (
+ )c4 r r2
+ R1*2
+ r4 [c8.^"tutti"-\f c16] c4 c
+ c [c,8. c16] c4 c|
+ c2 r2 \bar "|.";
+
+}
--- /dev/null
+\header{
+ title = "Konzert Nr. 3 Es dur";
+ subtitle = "Cadenza ad lib.";
+ enteredby = "HWN";
+ copyright = "public domain";
+ instrument = "Horn in Es";
+
+ mutopiatitle = "Cadenza for horn concerto no. 3";
+ mutopiacomposer = "Anon.";
+ style = "classical";
+ tagline = "\\\\This music is part of the Mutopia project, http://sca.uwaterloo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Han-Wen Nienhuys.\\\\Unrestricted modification and redistribution is permitted and encouraged - copy this music and share it!";
+ maintainer = "hanwen@cs.uu.nl";
+ lastupdated = "1999/Oct/16";
+ source = "Breitkopf & Haertel + own modifications";
+}
+
+
+
+%{
+
+This is a cadenza to Mozart 3, as given to me by Arthur Verhofstad
+(one of my teachers). The source is unknown
+
+Lots more can be found in Uijlenspiegel 1998 no. 1, in an article by
+Herman Jeurissen.
+
+%}
+
+\version "1.2.13";
+
+
+cad = \notes \relative c' {
+ \property Score.midiInstrument = "french horn"
+ \context Staff {
+ \emptyText
+ \cadenza 1;
+
+
+ \clef "violin";
+ c'4.\mf g8
+
+
+ [e'^"accel" () d c b]
+ [b() c] g-\fermata
+ \bar "empty";
+ c, ~ [c^\turn_"rubato" e g c]
+ e4. e8 [g () f_"rit" e d]
+
+ dis4() e4
+ \bar "" ;
+ r8 [c16 d] [e f g gis]
+
+ a4-> f,() e g'
+ f-> d,() cis e'
+
+ d4^\fermata
+ \bar "" ;
+
+ r8 a [b cis]
+ \grace { e8( }
+ [d16 cis d e]
+ f4 ~ [f16 e d c]
+ b4-\turn
+ \times 2/3 { [ d8 c8 a8] }
+ g2~
+ \bar "" ;
+ [g16 c, e g] [c e, g c]
+ [e g, c e] g4^\fermata
+ \bar "" ;
+ [g8.(_"a tempo" e16 g8. )e16]
+ a4. g8 [f8 e8 d8 c8]
+ g2 d'2-\trill
+ \grace { [c32 d] }
+ c4
+ } }
+
+\score {
+ \notes { \cad }
+% \midi { \tempo 4 = 90; }
+ \paper { casting_algorithm = \Wordwrap;}
+
+}
--- /dev/null
+\header{
+ title = "Konzert Nr. 3 Es dur";
+ subtitle = "f\\\"ur Horn und Orchester";
+ composer = "Wolfgang Amadeus Mozart (1756-1792)";
+ enteredby = "HWN";
+ opus = "K.V. 447";
+
+ copyright = "public domain";
+ instrument = "Horn in Es";
+
+ mutopiatitle = "Horn Concerto 3";
+ mutopiacomposer = "W.A.Mozart";
+ mutopiaopus = "KV447";
+ style = "classical";
+ tagline = "\\\\This music is part of the Mutopia project, http://sca.uwaterloo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Han-Wen Nienhuys.\\\\Unrestricted modification and redistribution is permitted and encouraged - copy this music and share it!";
+ maintainer = "hanwen@cs.uu.nl";
+ lastupdated = "1999/Oct/16";
+ source = "Breitkopf & Haertel + own modifications";
+}
+
+%%%%%%% This is the main file.
+
+%{
+
+This is the Mozart 3 for horn. It's from an old and fumbled part I
+have with lots of unidentified staccato dots, marcato's and dynamic
+markings; I left off most of them.
+
+Some of the marks are mine. Some of them are my teachers'. Some of
+them are my teachers' teachers. Some of them are B&H's. Some of them
+are Mozart's.
+
+--hwn
+
+%}
+
+longgrace = \property Grace.stemStyle = ""
+aftergrace = \property Grace.graceAlignPosition = \right
+
+
+\version "1.2.13";
+
+\include "allegro.ly"
+\include "romanze.ly"
+\include "rondo.ly"
+
+\paper{
+ \translator { \StaffContext \consists Mark_engraver; }
+ \translator { \ScoreContext
+ skipBars = 1;
+ }
+ linewidth = 180. \mm;
+}
+
+\score
+{
+ < \allegro
+ \property Score.midiInstrument = "french horn"
+ >
+ \paper{ }
+ \header { piece = "allegro"; opus = ""; }
+ \midi{ \tempo 4=90; }
+}
+
+\score
+{
+ < \romanze
+ \property Score.midiInstrument = "french horn"
+ >
+ \header { piece = "romanze"; opus = ""; }
+ \midi{ \tempo 4 = 70; }
+ \paper{}
+}
+\score
+{
+ < \rondo
+ \property Score.midiInstrument = "french horn"
+ >
+ \header { piece = "rondo"; opus = ""; }
+ \paper{
+ \translator { \BarNumberingStaffContext }
+ }
+ \midi{ \tempo 4 = 100; }
+}
--- /dev/null
+
+
+romanze = \notes \relative c' {
+ \key F;
+ \time 2/2;
+ \emptyText
+ c'4.( _\textscript "p. con molto espressione" "italic" )
+ f8 a,4 a
+ [bes8( c d bes] )g4 r8 g
+ a r bes r c r [d()bes]
+ a2( [)g8 a( bes )b]
+ c4. () f8 a,4 a |
+ [bes8 (c d) bes] g4 r8 c,-.
+ [c8( e g )bes] [a( c f ) d]
+ c r e r f r r4
+ \mark "A";
+ R1*8
+ g4. ()f8 [e( d c) bes]
+ [bes( a d )c] c4 r
+ R1*2
+ g'4.() f8 [e( d c) bes]
+ [bes (a d ) c] c4 r
+ r1
+ [c16\mf () d c-. d-.] [e () f e-. f-.] [g()e c-. c-.] [f()d b-. b-.]
+ [c16\p () d c-. d-.] [e () f e-. f-.] [g()e c-. c-.] [f()d b-. b-.]
+ [c8 \< c, c c] [c c c \! c] %B&H use tremolo.
+ \mark "B";
+ c1\f
+ R1*9
+ f'4.(\p )d8 b4 r8 g
+ g'4.() e8 c4 r8 cis |
+ d4(~ [d16 e d )e] [f8 () d f() d]
+ c2()b4 r
+ R1*4
+ e4. ()g8 c,4 ()cis
+ [d8( e f )d] b4 r8 g
+ [c ()e g g] [g( f e )d]
+ c4(
+ \grace { e16 }
+ [d8. )c16] [c8 c--( c-- )c--]
+ \mark "C";
+ des1\sfp
+ g,1\sfp
+ c\sfp
+ c,\sfp
+ R1*3
+ r8 [c-\p c c] c2~
+ [c8 c' c c] c2~
+ [c8 \< e( g f] [e \!d \> c bes]
+ \mark "D";
+ \! )a4 r r2
+ R1*3
+ c4.-\p () f8 a,4 a |
+ [bes8 (c d) bes] g4 r8 c,-.
+ [c8( e g )bes] [a( c f ) d]
+ c-. r e-. r f4 r4
+ R1*3
+ r2 r4 r8 c,8
+ [c8( e g )bes] [a( c f ) d]
+ c-. r e-. r f4 r4
+ g,1\pp
+ c,2~c4. c8
+ [c8( e g )bes] [a( c f ) d]
+ c r e r f4 r4 % -. ?
+
+ r1
+ c8-. r e-. r f4 r4
+
+ % Finish with F if played separately
+ c8-. ( r c,-. r ) c4 r4|
+ \bar "|.";
+}
+
--- /dev/null
+
+rondotheme = \notes \relative c' {
+ [c'8 c c] [c c c]
+ c4( cis8 )d r g,
+ [d'8 d d] [d d d]
+ d4( dis8 )e r c |
+ [c()d e] [f g a]
+ [g ()e c] c4 d8
+ e4()d8 e4()f8
+ e4.()d8 r r |
+}
+
+lipbreaker = \notes \relative c'
+{
+ r8 [g'-. g-.] [c()e g,-.]
+ [c()e g,-.] [c()e g,-.]
+ [c c, c] [c c c]
+ [c c c] [c c c]
+}
+
+rightsixteenth = { \property Voice.stemLeftBeamCount = "1"
+ \property Voice.stemRightBeamCount = "2" }
+leftsixteenth = { \property Voice.stemLeftBeamCount = "2"
+ \property Voice.stemRightBeamCount = "1" }
+bothsixteenth = { \property Voice.stemLeftBeamCount = "2"
+ \property Voice.stemRightBeamCount = "2" }
+
+rondo = \notes \relative c'
+{
+ \partial 8;
+ g'8-\p |
+ \time 6/8;
+
+ \rondotheme
+
+ R2.*13 |
+ r8 r-\fermata d [d e f]
+ [g ()e c-.] [d()e d-.]
+ c4 c8 [d e f]
+ [g()e c-.] [d()e d-.]
+ c4 r8 r4 r8 |
+ R2.*7
+ \mark "A";
+ c4.\p \grace { e16( } [)d8 c d]
+ c4 r8 r4 r8
+ e4. \grace g16( [)f8 e f]
+ e4 r8 r4 r8
+ g4. e4 c8
+ g2.~
+ [g8 a b] [c d e ]
+ e4.()d8 r r
+ R2.*4
+ e2.~ |
+ [e8 d c] [c b a]
+ d2.~
+ [d8 c b] [b a g]
+ g'4()e8 b4()cis8
+ \mark "B";
+ d4 r8 r4 r8
+ R2.*3 |
+ r8 [d-. d-.] [d()g d-.]
+ [d()g d-.] [d d d]
+ [d()g] r r4 r8
+ R2.*1
+ \lipbreaker
+ c4 r8 [c' d e]
+ d4()g8 [c, d e]
+ d4 r8 r4 r8
+ R2. |
+ r4 r8 [c-. d-. e-.]
+ d4()g8 [c, d e]
+ [d()g fis] [e d c]
+ [b () e d] [c b a]
+ \mark "C";
+ g4 r8 r4 r8
+ r2. |
+ %
+ r8 [g g] [g( )b b]
+ [b()d d-.] [d()g g-.]
+ g2.~
+ [g8 a g] [f e d]
+ < \rondotheme
+ { s8-\p } >
+
+ R2.*12
+ r4 r8 r4 c8
+ \mark "D";
+ c4 f8 c4 a8
+ a4.~a4 a8
+ bes4 c8 d4 bes8
+ g4. ~ g8 r r
+ R2.*3
+ r4 r8 r4 c8
+ a4. c
+ f ~ [f8. \rightsixteenth e16( d )c]
+ bes4 g8 e4 g8
+ c4. ~ c8 r r
+ R2.*3|
+ r4 r8 r4 c8
+ b4()c8 b4()c8
+ bes4. ~ bes4 g8
+ a4 c8 [f () d b]
+ d4. () c8 r r
+ \mark "E";
+ R2.*9 |
+ \lipbreaker
+ [c8 c' c] c4.~
+ [c8 c d] [e e fis]
+ g4 r8 r4 r8
+ r2.
+ r8 [g, g] [g g g] |
+ es'4. ~ [es8 d c]
+ b4 r8 r4 r8
+ r2. |
+ r8 [g g] [g g g]
+ es'4. ~ [es8 d c]
+ b4.\cresc c4. d4. e4.
+ \mark "F";
+ f2.\f ~ |
+ f4 r8 r4 r8
+ r8 [g,\> g] [g g g]
+ [fis g gis] % Edition breitkopf says a-flat (silly!)
+ [a bes \! b]
+ < \rondotheme
+ { s8-\p } >
+ R2.*7
+ \mark "G";
+ R2.*4
+ c,4.\mf c4 c8
+ c4. e4 c8
+ g'4. g4 g8
+ g4. g,4 g8
+ c4 r8 r4 r8
+ r4 r8 r4 g'8
+ [c ()e g,-.] [c ()e g,-.]
+ [c ()e g,-.] [c ()e g,-.]
+ \mark "H";
+ g'2._\cresc bes,2.
+ a4. [b16 c d e f g]
+ a4. f4 d8
+ [c8\f g' e] [c g e]
+ [\stemup c \stemdown e' c] \stemboth [g e c]
+ g4 r8 [g''8 e c]
+ \grace { \aftergrace [c16 d] }
+ d2.(-\trill
+ )c4 r8 r4 r8
+ R2.*5
+ r8 r8-\fermata d8\p [d e f]
+ [g ()e c] [d()e d]
+ [c\cresc c c] [d e f]
+ [g()e c] [d()e d]
+ c4\f r8 r4 r8
+ R2.*5
+ [c8\f c, c] [c c c]
+ c4 r8 c4 r8
+ c4 r8 r4 \bar "||."; % B&H do another r8.
+}
+
+
+