-1.3.43.jcn1
+1.3.43.hwn1
===========
-* Added a Piano_pedal_engraver.
+* Put global element list into Line_of_score, instead of
+Paper_score. post processing (the stage after line breaking) is now
+truly done per-system, and we got rid of an ugly hack to get font
+handling OK.
-* Removed some empty files.
+* Bugfix: set the group-interface of System_start_delimiter.
-* Created piano pedal symbols: * - . P e d.
+* Cleanups of Break_algorithm and derived classes, Move
+broken_col_range () to Line_of_score, remove Paper_score::col_l_arr_
-* Fixed ps-to-pfa.py to handle multiple unfills.
+* Bugfix for accordion symbols.
-* Moved accordion symbols out of feta-script to end of font.
-
-* Bugfix: don't create tfm's, pfa's etc of feta-test fonts.
-
-* Fixed blot_diameter for small resolutions.
+* Various patches to prevent crashing when do_brew_molecule gets
+called before after_line_breaking (). This was a problem in Spanner
+classes mostly.
1.3.43
======
@
@mudela[13pt,eps]
-%\context StaffGroup <
-\context ChoirStaff <
+\context StaffGroup <
+% \context ChoirStaff <
\property StaffGroup.minVerticalAlign = 12
\notes\relative c'' { \clef treble; g4 e c2 }
\notes\relative c { \clef bass; c1 \bar "|."; } >
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=3
-PATCH_LEVEL=43
-MY_PATCH_LEVEL=jcn1
+PATCH_LEVEL=44
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
f.write (''
'exch definefont pop % Define the font\n')
-suspect_re = re.compile ('closepath ((gsave )*fill( grestore stroke)*) 1 setgray newpath (.*?) closepath fill')
+
+suspect_re = re.compile ('closepath (.*?) 1 setgray newpath (.*?) closepath fill')
def characters (f):
sys.stderr.write ('[')
m = suspect_re.search (s)
while m:
fill = m.group (1)
- path = m.group (4)
+ path = m.group (2)
# be complicated, in case of gsave/grestore.
# vill as quick hack to avoid duple substitutions.
Section: tex
Priority: optional
Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.1.1
+Standards-Version: 3.1.0
Package: lilypond1.3
Architecture: any
using a high level description file as input. LilyPond is part of
the GNU Project.
.
- This is the developmental 1.3 branch of LilyPond. It is not intended for
- use with stable projects, although arguably 1.3.41 is less buggy and much
- more featureful than then the "stable" 1.2.17.
+ This is the unstable 1.3 branch of LilyPond. It is not intended for
+ use with stable projects!
.
URLs: http://www.cs.uu.nl/~hanwen/lilypond/
http://www.xs4all.nl/~jantien/lilypond/
Section: tex
Priority: optional
Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.1.1
+Standards-Version: 3.1.0
Package: lilypond1.3
Architecture: any
using a high level description file as input. LilyPond is part of
the GNU Project.
.
- This is the developmental 1.3 branch of LilyPond. It is not intended for
- use with stable projects, although arguably 1.3.41 is less buggy and much
- more featureful than then the "stable" 1.2.17.
+ This is the unstable 1.3 branch of LilyPond. It is not intended for
+ use with stable projects!
.
URLs: http://www.cs.uu.nl/~hanwen/lilypond/
http://www.xs4all.nl/~jantien/lilypond/
coefs_[i] = 0.0;
}
- while (degree () > 0 && fabs (coefs_.top ()) < FUDGE * fabs (coefs_.top (1)))
+ while (degree () > 0 &&
+ (fabs (coefs_.top ()) < FUDGE * fabs (coefs_.top (1)))
+ || !coefs_.top ())
coefs_.pop ();
}
\include "paper20.ly"
-\version "1.3.4";
+\version "1.3.42";
oden = \lyrics{
O |
-\version "1.3.4";
+\version "1.3.42";
one = \notes\relative c{
c'' d e f
}
}
-\version "1.3.4";
+\version "1.3.42";
* organ staff...
%}
-\version "1.3.4";
+\version "1.3.42";
-\version "1.3.4";
+\version "1.3.42";
ritme = \notes\transpose c'' {
\time 4/4;
}
-\version "1.3.4";
+\version "1.3.42";
+++ /dev/null
-\score{
-\context Staff \notes\relative c'{
-c\sustaindown d e f\sustainup g\sustaindown b c
-c,\sustainup\sustaindown d e f \sustainup g\sustaindown b c
-\property Staff.stopStartSustain = #"-P"
-\property Staff.startSustain = #"P"
-c,\sustainup\sustaindown d e f \sustainup g\sustaindown b c
-}
-\paper{
-}
-\midi{
-\tempo 4 = 60;
-}
-}
+++ /dev/null
-\score{
-\context Staff \notes\relative c{
-c\sustaindown d e f\sustainup g\sustaindown b c
-c,\sustainup\sustaindown d e f \sustainup g\sustaindown b c
-\property Staff.stopStartSustain = #"-P"
-\property Staff.startSustain = #"P"
-c,\sustainup\sustaindown d e f \sustainup g\sustaindown b c
-}
-\paper{
-}
-\midi{
-\tempo 4 = 60;
-}
-}
-\score { \notes\relative c'' {
+\score {
+
+ \context Voice \notes\relative c'' {
\repeat unfold 3 { c^"3x 0a" d }
% less alts than body
\repeat unfold 4 { c^"4x 0a" d } \alternative { e f }
}
%\translator { \StaffContext \consists "Instrument_name_engraver"; }
%\translator { \PianoStaffContext \consists "Instrument_name_engraver"; }
-\translator { \StaffContext \consists "New_staff_margin_engraver"; }
-\translator { \PianoStaffContext \consists "New_staff_margin_engraver"; }
+\translator { \StaffContext \consists "Instrument_name_engraver"; }
+\translator { \PianoStaffContext \consists "Instrument_name_engraver"; }
}}
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
melodie = \notes\relative c'' {
\clef "violin";
auto beaming, adding lyrics to notes, hyphens
%}
-\version "1.3.4";
+\version "1.3.42";
melody = \notes \relative c'' {
\clef violin;
{
Score_element *par = elts_[i]->parent_l (Y_AXIS);
- if (!par || !Axis_group_interface (par).has_interface_b ())
+ if ((!par || !Axis_group_interface (par).has_interface_b ())
+ && ! elts_[i]->empty_b (Y_AXIS))
Axis_group_interface (staffline_p_).add_element (elts_[i]);
}
elts_.clear ();
void
Axis_group_interface::add_element (Score_element *e)
{
+
+ // ugh. used_b_ should be junked.
elt_l_->used_b_ = true;
e->used_b_ = true;
}
Group_interface (elt_l_).add_element (e);
-
elt_l_->add_dependency (e);
}
elt_l_->set_elt_property ("axes", ax);
if (a1 != X_AXIS && a2 != X_AXIS)
- elt_l_->set_empty (X_AXIS);
+ elt_l_->set_extent_callback (0, X_AXIS);
if (a1 != Y_AXIS && a2 != Y_AXIS)
- elt_l_->set_empty (Y_AXIS);
+ elt_l_->set_extent_callback (0, Y_AXIS);
elt_l_->dim_cache_[a1]->set_extent_callback (Axis_group_interface::group_extent_callback);
elt_l_->dim_cache_[a2]->set_extent_callback (Axis_group_interface::group_extent_callback);
Axis_group_interface::has_interface_b ()
{
SCM memq = scm_memq (ly_symbol2scm ("Axis_group"),
- elt_l_->get_elt_property ("interfaces"));
+ elt_l_->get_elt_property ("interfaces"));
return (memq != SCM_BOOL_F);
}
if (!gh_string_p (g))
{
set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (X_AXIS);
+ set_extent_callback (0, X_AXIS);
}
else
set_elt_property ("glyph", g);
* less hairy code
* move paper vars to scm
+
+ remove *-hs variables.
+
*/
#include <math.h> // tanh.
-
#include "directional-element-interface.hh"
#include "beaming.hh"
#include "dimensions.hh"
#include "staff-symbol-referencer.hh"
#include "cross-staff.hh"
-
Beam::Beam ()
{
Group_interface g (this, "stems");
g.set_interface ();
+
+ set_elt_property ("height", gh_int2scm (0)); // ugh.
+ set_elt_property ("y-position" ,gh_int2scm (0));
}
void
{
/* first, calculate y, dy */
Real y, dy;
- calc_position_and_height (&y, &dy);
+ calc_default_position_and_height (&y, &dy);
if (visible_stem_count ())
{
if (suspect_slope_b (y, dy))
See Documentation/tex/fonts.doc
*/
void
-Beam::calc_position_and_height (Real* y, Real* dy) const
+Beam::calc_default_position_and_height (Real* y, Real* dy) const
{
- *y = *dy = 0;
+ *y = 0;
+ *dy = 0;
if (visible_stem_count () <= 1)
return;
#include "cpu-timer.hh"
#include "command-request.hh"
#include "simple-spacer.hh"
-
-
-
+#include "group-interface.hh"
Array<int>
Break_algorithm::find_break_indices () const
{
- Link_array<Paper_column> all (pscore_l_->col_l_arr_);
+ Link_array<Paper_column> all = pscore_l_->line_l_->column_l_arr ();
+
+
Array<int> retval;
for (int i=0; i < all.size (); i++)
Link_array<Paper_column>
Break_algorithm::find_breaks () const
{
- Link_array<Paper_column> all (pscore_l_->col_l_arr_);
+ Link_array<Paper_column> all = pscore_l_->line_l_->column_l_arr ();
+
Link_array<Paper_column> retval;
for (int i=0; i < all.size (); i++)
{
pscore_l_ = s;
linewidth_f_ = s->paper_l_->get_var("linewidth");
- do_set_pscore ();
-}
-
-
-
-void
-Break_algorithm::problem_OK () const
-{
- if (pscore_l_->col_l_arr_.empty ())
- error (_("score does not have any columns"));
- OK ();
-}
-
-void
-Break_algorithm::OK () const
-{
}
Array<Column_x_positions>
return h;
}
-void
-Break_algorithm::do_set_pscore ()
-{
-
-}
(c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include <ctype.h>
+
#include "clef-item.hh"
#include "string.hh"
#include "molecule.hh"
#include "dimension-cache.hh"
#include "side-position-interface.hh"
#include "warn.hh"
+#include "line-of-score.hh"
void
Clef_item::before_line_breaking ()
if (style == "transparent") // UGH. JUNKME
{
set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (X_AXIS);
+ set_extent_callback (0, X_AXIS);
}
}
Side_position_interface spi (g);
spi.set_axis (Y_AXIS);
- pscore_l_->typeset_element (g);
+ pscore_l_->line_l_->typeset_element (g);
spi.add_support (this);
g->set_elt_property ("text", ly_str02scm ( "8"));
if (!gh_number_p (d) || !gh_scm2int (d))
{
set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (X_AXIS);
- set_empty (Y_AXIS);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
}
else
{
#include "paper-score.hh"
#include "paper-def.hh"
#include "simple-spacer.hh"
-
-#include "killing-cons.tcc"
+#include "line-of-score.hh"
/// How often to print operator pacification marks?
const int HAPPY_DOTS_I = 3;
/**
This algorithms is adapted from the OSU Tech report on breaking lines.
+
+ this function is longish, but not very complicated.
+
*/
Array<Column_x_positions>
Gourlay_breaking::do_solve () const
{
Array<Break_node> optimal_paths;
- Link_array<Paper_column> all = pscore_l_->col_l_arr_ ;
+ Link_array<Paper_column> all =
+ pscore_l_->line_l_->column_l_arr ();
+
Array<int> breaks = find_break_indices ();
optimal_paths.set_size (breaks.size ());
Gourlay_breaking::Gourlay_breaking ()
{
energy_bound_f_ = infinity_f;
- max_measures_i_ = INT_MAX;
}
-void
-Gourlay_breaking::do_set_pscore ()
-{
- max_measures_i_ =int (rint (pscore_l_->paper_l_->get_var ("gourlay_maxmeasures")));
-}
/*
if ( line_l () != s->line_l ())
programming_error ("Killing other children too");
s->set_elt_property ("transparent", SCM_BOOL_T);
- s->set_empty (X_AXIS);
- s->set_empty (Y_AXIS);
+ s->set_extent_callback (0, X_AXIS);
+ s->set_extent_callback (0, Y_AXIS);
}
- set_empty (X_AXIS);
- set_empty (Y_AXIS);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
}
class Audio_column : public Audio_element {
public:
- Audio_column (Moment at_mom);
+ Audio_column (Moment at_mom);
- void add_audio_item (Audio_item* i_l);
- Moment at_mom() const;
- void print() const;
+ void add_audio_item (Audio_item* i_l);
+ Moment at_mom() const;
+ void print() const;
- Link_array<Audio_item> audio_item_l_arr_;
- Performance * performance_l_;
+ Link_array<Audio_item> audio_item_l_arr_;
+ Performance * performance_l_;
private:
- Audio_column (Audio_column const&);
+ Audio_column (Audio_column const&);
- Moment at_mom_;
+ Moment at_mom_;
};
void auto_knees ();
bool auto_knee (String gap_str, bool interstaff_b);
void set_stem_shorten ();
- void calc_position_and_height (Real* y, Real* dy) const;
+ void calc_default_position_and_height (Real* y, Real* dy) const;
bool suspect_slope_b (Real y, Real dy) const;
Real calc_slope_damping_f (Real dy) const;
Real calc_stem_y_f (Stem* s, Real y, Real dy) const;
Simple_spacer* generate_spacing_problem (Link_array<Paper_column>, 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;
};
{
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();
Real combine_demerits (Column_x_positions const&,Column_x_positions const&) const;
#ifndef SCORELINE_HH
#define SCORELINE_HH
+#include "protected-scm.hh"
#include "column-x-positions.hh"
#include "spanner.hh"
void output_all ();
int rank_i_;
-
+
+ Protected_scm output_;
Line_of_score();
/// is #c# contained in #*this#?
static int compare (Line_of_score* const &,Line_of_score* const &);
void break_into_pieces (Array<Column_x_positions> const&);
- void output_lines ();
- void output_line (bool last_line);
- void add_column (Paper_column*);
+
+ SCM output_lines ();
+
+
+ Link_array<Item> broken_col_range (Item const*, Item const*) const;
+ Link_array<Paper_column> column_l_arr () const;
+ void add_column (Paper_column*);
+ void typeset_element (Score_element*);
+ void output_molecule (SCM, Offset);
+ void output_scheme (SCM);
+ void pre_processing ();
protected:
VIRTUAL_COPY_CONS(Score_element);
};
{
public:
VIRTUAL_COPY_CONS(Score_element);
+
+ /*
+ ugh.
+ */
+
Drul_array<Array<Column_rod> > minimal_dists_arr_drul_;
Drul_array<Array<Column_spring> > spring_arr_drul_;
virtual Paper_column * column_l () const;
virtual Line_of_score *line_l () const;
-
/// if lines are broken then this column is in #line#
Line_of_score *line_l_;
-
/// which one (left =0)
int rank_i() const;
int rank_i_;
};
-
-
-// #include "compare.hh"
-// INSTANTIATE_COMPARE(Paper_column &, Paper_column::compare);
#endif // P_COL_HH
#include "lily-guile.hh"
#include "protected-scm.hh"
-// huh?
-#ifdef __powerpc__
-#include "protected-scm.hh"
-#endif
-
/**
Abstract interface for a Score_element to output itself.
*/
void output_font_def (int i, String str);
void output_font_switch (int i);
void output_header ();
- void output_molecule (SCM expr, Offset, char const *);
void output_comment (String s);
void output_scheme (SCM scm);
-
- void start_line (Real height);
- void stop_line ();
- void stop_last_line ();
};
#endif // PAPER_OUTPUTTER_HH
#include "lily-proto.hh"
#include "music-output.hh"
#include "lily-guile.hh"
+#include "protected-scm.hh"
/** all stuff which goes onto paper. notes, signs, symbols in a score
#Paper_score# contains the items, the columns.
public:
Paper_def *paper_l_;
- /// the columns, ordered left to right
- /*
- UGH. MOVE INTO LINE_OF_SCORE ?!
- */
- Link_array<Paper_column> col_l_arr_;
-
Paper_outputter *outputter_l_;
Line_of_score * line_l_;
Paper_score ();
- void fixup_refpoints ();
-
-
- /// add to bottom of pcols
- void add_column (Paper_column*);
-
/**
@return index of argument.
*/
Link_array<Item> broken_col_range (Item const*,Item const*) const;
- /* STANDARD ROUTINES */
- void print() const;
-
- void typeset_element (Score_element*);
- void typeset_broken_spanner (Spanner*);
- /// add a Spanner
- void typeset_unbroken_spanner (Spanner*);
-
+ void typeset_line (Line_of_score*);
- virtual ~Paper_score();
protected:
/* MAIN ROUTINES */
virtual void process();
private:
/// before calc_breaking
void preprocess();
-
void calc_idealspacing();
/// calculate where the lines are to be broken, and use results
Array<Column_x_positions> calc_breaking();
#include "item.hh"
-/*
- Why don't I have a
- VIRTUAL_COPY_CONS (Score_element);
- see also note-head, rest.
- ?
-*/
class Rhythmic_head : public Item
{
/// do calculations before determining horizontal spacing
virtual void before_line_breaking ();
+ /// do calculations after determining horizontal spacing
+ virtual void after_line_breaking ();
+ virtual void output_processing ();
+
static Interval preset_extent (Dimension_cache const*);
static Interval molecule_extent (Dimension_cache const*);
be handled by GUILE gc. */
virtual ~Score_element ();
- virtual void output_processing ();
-
/// do printing of derived info.
virtual void do_print () const;
/// generate the molecule
///executed directly after the item is added to the Paper_score
virtual void do_add_processing ();
- /// do calculations after determining horizontal spacing
- virtual void after_line_breaking ();
static Interval dim_cache_callback (Dimension_cache const*);
+
public:
static SCM ly_set_elt_property (SCM, SCM,SCM);
static SCM ly_get_elt_property (SCM, SCM);
-
+
virtual void handle_broken_dependencies ();
virtual void handle_prebroken_dependencies ();
char const * name () const;
/**
Set empty in direction A.
+ JUNKME
*/
void set_empty (Axis a);
bool empty_b (Axis a) const;
bool has_offset_callback_b (Offset_cache_callback, Axis)const;
void add_offset_callback (Offset_cache_callback, Axis);
+ void set_extent_callback (Dim_cache_callback , Axis);
+
/**
Set the parent refpoint of THIS to E
*/
#include "paper-column.hh"
#include "spanner.hh"
#include "lily-guile.hh"
+#include "line-of-score.hh"
Item::Item ()
{
{
Score_element * dolly = clone();
Item * item_p = dynamic_cast<Item*>(dolly);
- pscore_l_->typeset_element (item_p);
+ pscore_l_->line_l_->typeset_element (item_p);
new_copies[i] =item_p;
}
while (flip(&i) != LEFT);
if (empty)
{
- set_empty (X_AXIS);
- set_empty ( Y_AXIS);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
}
if (trans)
set_elt_property ("transparent", SCM_BOOL_T);
#include <stdio.h>
#include <ctype.h>
+#include "notename-table.hh"
#include "lily-guile.hh"
#include "string.hh"
#include "string-convert.hh"
#include "paper-score.hh"
#include "string.hh"
#include "warn.hh"
-
+#include "dimensions.hh"
Line_of_score::Line_of_score()
{
set_elt_property ("columns", SCM_EOL);
+ set_elt_property ("all-elements", SCM_EOL);
+
Axis_group_interface (this).set_interface ();
Axis_group_interface (this).set_axes (Y_AXIS,X_AXIS);
}
-
void
+Line_of_score::typeset_element (Score_element * elem_p)
+{
+ elem_p->pscore_l_ = pscore_l_;
+ Group_interface (this, "all-elements").add_element (elem_p);
+ scm_unprotect_object (elem_p->self_scm_);
+}
+
+SCM
Line_of_score::output_lines ()
{
+ for (SCM s = get_elt_property ("all-elements");
+ gh_pair_p (s); s = gh_cdr (s))
+ {
+ unsmob_element (gh_car (s))->do_break_processing ();
+ }
+
+ for (SCM s = get_elt_property ("all-elements");
+ gh_pair_p (s); s = gh_cdr (s))
+ {
+ unsmob_element (gh_car (s))->handle_broken_dependencies ();
+ }
+ handle_broken_dependencies ();
+
for (int i=0; i < broken_into_l_arr_.size (); i++)
{
Line_of_score *line_l = dynamic_cast<Line_of_score*> (broken_into_l_arr_[i]);
progress_indication ("[");
line_l->post_processing ();
progress_indication (to_str (i));
- line_l->output_line (i + 1 == broken_into_l_arr_.size ());
progress_indication ("]");
}
+
+ SCM list = SCM_EOL;
+ for (int i=broken_into_l_arr_.size (); i--;)
+ {
+ Line_of_score * l = dynamic_cast<Line_of_score*> (broken_into_l_arr_[i]);
+ list = gh_cons (gh_cdr (l->output_), list);
+ }
+ return list;
}
// const?
Line_of_score *line_l = dynamic_cast <Line_of_score*> (clone());
line_l->rank_i_ = i;
Link_array<Paper_column> c (breaking[i].cols_);
- pscore_l_->typeset_element (line_l);
+ pscore_l_->typeset_line (line_l);
+
line_l->set_bound(LEFT,c[0]);
line_l->set_bound(RIGHT,c.top ());
for (int j=0; j < c.size(); j++)
}
}
+
void
-Line_of_score::add_column (Paper_column*p)
+Line_of_score::output_molecule (SCM expr, Offset o)
{
- set_elt_property ("columns",
- gh_cons (p->self_scm_, get_elt_property ("columns")));
- Axis_group_interface (this).add_element (p);
+ SCM offset_sym = ly_symbol2scm ("translate-molecule");
+ SCM combine_sym = ly_symbol2scm ("combine-molecule");
+enter:
+
+ if (!gh_pair_p (expr))
+ return;
+
+ SCM head =gh_car (expr);
+ if (head == offset_sym)
+ {
+ o += ly_scm2offset (gh_cadr (expr));
+ expr = gh_caddr (expr);
+ goto enter;
+ }
+ else if (head == combine_sym)
+ {
+ output_molecule (gh_cadr (expr), o);
+ 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));
+ }
}
+void
+Line_of_score::output_scheme (SCM s)
+{
+ gh_set_cdr_x (output_, gh_cons (s, gh_cdr (output_)));
+}
void
-Line_of_score::output_line (bool last_line)
+Line_of_score::add_column (Paper_column*p)
{
- Interval i(extent(Y_AXIS));
- if (i.empty_b())
- programming_error ("Huh? Empty Line_of_score?");
- else
- translate_axis (- i[MAX], Y_AXIS);
-
- pscore_l_->outputter_l_->start_line (i.length ());
- output_all ();
- if (last_line)
- pscore_l_->outputter_l_->stop_last_line();
- else
- pscore_l_->outputter_l_->stop_line ();
+ SCM cs = get_elt_property ("columns");
+ Score_element * prev = gh_pair_p (cs) ? unsmob_element (gh_car (cs)) : 0;
+ int rank = prev ? dynamic_cast<Paper_column*> (prev)->rank_i () + 1 : 0;
+
+ p->set_rank (rank);
+ set_elt_property ("columns", gh_cons (p->self_scm_, cs));
+
+ Axis_group_interface (this).add_element (p);
+ typeset_element (p);
+}
+
+Link_array<Paper_column>
+Line_of_score::column_l_arr ()const
+{
+ return Group_interface__extract_elements (this,
+ (Paper_column*) 0, "columns");
+
}
int
return p1->rank_i_ - p2->rank_i_;
}
+
+void
+fixup_refpoints (SCM s)
+{
+ for (; gh_pair_p (s); s = gh_cdr (s))
+ {
+ Score_element * se = unsmob_element (gh_car (s));
+ if (se)
+ {
+ se->fixup_refpoint ();
+ if (!dynamic_cast<Line_of_score*> (se) && !se->parent_l (Y_AXIS))
+ {
+ programming_error ("No parent!");
+ }
+ }
+ }
+}
+
+
+void
+Line_of_score::pre_processing ()
+{
+ for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
+ unsmob_element (gh_car (s))->do_breakable_col_processing ();
+
+ fixup_refpoints (get_elt_property ("all-elements"));
+
+ for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
+ {
+ Score_element* sc = unsmob_element (gh_car (s));
+ sc->calculate_dependencies (PRECALCED, PRECALCING, &Score_element::before_line_breaking);
+ }
+
+ progress_indication ("\n" + _ ("Calculating column positions...") + " " );
+ for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
+ unsmob_element (gh_car (s))->do_space_processing ();
+}
+
void
Line_of_score::post_processing ()
{
- calculate_dependencies (POSTCALCED, POSTCALCING, &Score_element::after_line_breaking);
+ fixup_refpoints (get_elt_property ("all-elements"));
+ for (SCM s = get_elt_property ("all-elements");
+ gh_pair_p (s); s = gh_cdr (s))
+ {
+ Score_element* sc = unsmob_element (gh_car (s));
+ sc->calculate_dependencies (POSTCALCED, POSTCALCING, &Score_element::after_line_breaking);
+ }
+
+ Interval i(extent(Y_AXIS));
+ if (i.empty_b())
+ programming_error ("Huh? Empty Line_of_score?");
+ else
+ translate_axis (- i[MAX], Y_AXIS);
+
+ Real height = i.length ();
+ if (height > 50 CM)
+ {
+ programming_error ("Improbable system height");
+ height = 50 CM;
+ }
+
+ output_ = gh_cons (SCM_EOL, SCM_EOL);
+ output_scheme (gh_list (ly_symbol2scm ("stop-line"), SCM_UNDEFINED));
+ for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
+ unsmob_element (gh_car (s))->output_processing ();
+ output_scheme (gh_list (ly_symbol2scm ("start-line"),
+ gh_double2scm (height),
+ SCM_UNDEFINED));
}
void
calculate_dependencies (BREWED, BREWING, &Score_element::output_processing);
}
+Link_array<Item>
+Line_of_score::broken_col_range (Item const*l, Item const*r) const
+{
+ Link_array<Item> ret;
+
+ l = l->column_l ();
+ r = r->column_l ();
+ SCM s = get_elt_property ("columns");
+
+ while (gh_car (s) != r->self_scm_)
+ s = gh_cdr (s);
+
+
+ s = gh_cdr (s);
+
+ while (gh_car (s) != l->self_scm_)
+ {
+ Paper_column *c
+ = dynamic_cast<Paper_column*> (unsmob_element (gh_car (s)));
+ if (c->breakable_b () && !c->line_l_)
+ ret.push (c);
+
+ s = gh_cdr (s);
+ }
+
+ ret.reverse ();
+ return ret;
+}
if (sym == "Discant")
{
- Molecule r = afm_find("accordion-accDiscant");
+ Molecule r = afm_find("scripts-accDiscant");
m.add_molecule(r);
if (reg.left_str(1) == "F")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 2.5 PT, Y_AXIS);
m.add_molecule(d);
reg = reg.right_str(reg.length_i()-1);
}
if (eflag & 0x02)
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 1.5 PT, Y_AXIS);
m.add_molecule(d);
}
if (eflag & 0x04)
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 1.5 PT, Y_AXIS);
d.translate_axis(0.8 * staff_space PT, X_AXIS);
m.add_molecule(d);
}
if (eflag & 0x01)
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 1.5 PT, Y_AXIS);
d.translate_axis(-0.8 * staff_space PT, X_AXIS);
m.add_molecule(d);
}
if (reg.left_str(2) == "SS")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(0.5 * staff_space PT, Y_AXIS);
d.translate_axis(0.4 * staff_space PT, X_AXIS);
m.add_molecule(d);
}
if (reg.left_str(1) == "S")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(0.5 * staff_space PT, Y_AXIS);
m.add_molecule(d);
reg = reg.right_str(reg.length_i()-1);
}
else if (sym == "Freebase")
{
- Molecule r = afm_find("accordion-accFreebase");
+ Molecule r = afm_find("scripts-accFreebase");
m.add_molecule(r);
if (reg.left_str(1) == "F")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 1.5 PT, Y_AXIS);
m.add_molecule(d);
reg = reg.right_str(reg.length_i()-1);
}
if (reg == "E")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 0.5 PT, Y_AXIS);
m.add_molecule(d);
}
}
else if (sym == "Bayanbase")
{
- Molecule r = afm_find("accordion-accBayanbase");
+ Molecule r = afm_find("scripts-accBayanbase");
m.add_molecule(r);
if (reg.left_str(1) == "T")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 2.5 PT, Y_AXIS);
m.add_molecule(d);
reg = reg.right_str(reg.length_i()-1);
/* include 4' reed just for completeness. You don't want to use this. */
if (reg.left_str(1) == "F")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 1.5 PT, Y_AXIS);
m.add_molecule(d);
reg = reg.right_str(reg.length_i()-1);
}
if (reg.left_str(2) == "EE")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 0.5 PT, Y_AXIS);
d.translate_axis(0.4 * staff_space PT, X_AXIS);
m.add_molecule(d);
}
if (reg.left_str(1) == "E")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 0.5 PT, Y_AXIS);
m.add_molecule(d);
reg = reg.right_str(reg.length_i()-1);
}
else if (sym == "Stdbase")
{
- Molecule r = afm_find("accordion-accStdbase");
+ Molecule r = afm_find("scripts-accStdbase");
m.add_molecule(r);
if (reg.left_str(1) == "T")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 3.5 PT, Y_AXIS);
m.add_molecule(d);
reg = reg.right_str(reg.length_i()-1);
}
if (reg.left_str(1) == "F")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 2.5 PT, Y_AXIS);
m.add_molecule(d);
reg = reg.right_str(reg.length_i()-1);
}
if (reg.left_str(1) == "M")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 2 PT, Y_AXIS);
d.translate_axis(staff_space PT, X_AXIS);
m.add_molecule(d);
}
if (reg.left_str(1) == "E")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 1.5 PT, Y_AXIS);
m.add_molecule(d);
reg = reg.right_str(reg.length_i()-1);
}
if (reg.left_str(1) == "S")
{
- Molecule d = afm_find("accordion-accDot");
+ Molecule d = afm_find("scripts-accDot");
d.translate_axis(staff_space * 0.5 PT, Y_AXIS);
m.add_molecule(d);
reg = reg.right_str(reg.length_i()-1);
for the rectangle */
else if (sym == "SB")
{
- Molecule r = afm_find("accordion-accSB");
+ Molecule r = afm_find("scripts-accSB");
m.add_molecule(r);
}
else if (sym == "BB")
{
- Molecule r = afm_find("accordion-accBB");
+ Molecule r = afm_find("scripts-accBB");
m.add_molecule(r);
}
else if (sym == "OldEE")
{
- Molecule r = afm_find("accordion-accOldEE");
+ Molecule r = afm_find("scripts-accOldEE");
m.add_molecule(r);
}
else if (sym == "OldEES")
{
- Molecule r = afm_find("accordion-accOldEES");
+ Molecule r = afm_find("scripts-accOldEES");
m.add_molecule(r);
}
return m;
#include "lily-version.hh"
+/*
+ Ugh, this is messy.
+ */
+
Paper_outputter::Paper_outputter ()
{
molecules_ = gh_cons (SCM_EOL, SCM_EOL);
output_scheme (scm);
}
-void
-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:
-
- if (!gh_pair_p (expr))
- return;
-
- SCM head =gh_car (expr);
- if (head == offset_sym)
- {
- o += ly_scm2offset (gh_cadr (expr));
- 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));
- }
-}
void
Paper_outputter::output_comment (String str)
output_String_def ( "LilyPondVersion", version_str ());
}
-void
-Paper_outputter::start_line (Real height)
-{
- if (height > 50 CM)
- {
- programming_error ("Improbable system height");
- height = 50 CM;
- }
- SCM scm = gh_list (ly_symbol2scm ("start-line"),
- gh_double2scm (height),
- SCM_UNDEFINED);
- output_scheme (scm);
-}
+
void
Paper_outputter::output_font_def (int i, String str)
-void
-Paper_outputter::stop_line ()
-{
- SCM scm = gh_list (ly_symbol2scm ("stop-line"), SCM_UNDEFINED);
- output_scheme (scm);
-}
-
-void
-Paper_outputter::stop_last_line ()
-{
- SCM scm = gh_list (ly_symbol2scm ("stop-last-line"), SCM_UNDEFINED);
- output_scheme (scm);
- scm = gh_list (ly_symbol2scm ("end-output"), SCM_UNDEFINED);
- output_scheme (scm);
-}
{
paper_l_ =0;
outputter_l_ =0;
- Line_of_score * line_p = new Line_of_score;
- line_p->pscore_l_ = this;
- element_smob_list_ = scm_protect_object (gh_cons (line_p->self_scm_, SCM_EOL));
- line_l_ = line_p;
-}
-
-Paper_score::Paper_score (Paper_score const &s)
- : Music_output (s)
-{
- assert (false);
-}
-
-Paper_score::~Paper_score ()
-{
- scm_unprotect_object (element_smob_list_);
+ line_l_ = new Line_of_score;
+ element_smob_list_ = SCM_EOL;
+ typeset_line (line_l_);
}
void
-Paper_score::typeset_element (Score_element * elem_p)
+Paper_score::typeset_line (Line_of_score *l)
{
- elem_p->pscore_l_ = this;
-
- gh_set_cdr_x(element_smob_list_,
- gh_cons (elem_p->self_scm_, gh_cdr (element_smob_list_)));
- elem_p->set_elt_property ("full-name",
- gh_str02scm((char*)elem_p->name()));
-
- scm_unprotect_object (elem_p->self_scm_);
-}
-
-void
-Paper_score::add_column (Paper_column *p)
-{
- p->set_rank (col_l_arr_.size ());
- col_l_arr_.push (p);
- typeset_element(p);
+ line_l_->pscore_l_ = this;
+ element_smob_list_ = gh_cons (l->self_scm_, element_smob_list_);
}
-void
-Paper_score::print () const
-{
-#ifndef NPRINT
- if (!flower_dstream)
- return ;
-
- DEBUG_OUT << "Paper_score { ";
- DEBUG_OUT << "\n elements: ";
-
- for (SCM p = gh_cdr (element_smob_list_);
- p != SCM_EOL;
- p = gh_cdr(p))
- gh_display (gh_car (p));
- DEBUG_OUT << "}\n";
-#endif
-}
-
-int
-Paper_score::find_col_idx (Paper_column const *c) const
+Paper_score::Paper_score (Paper_score const &s)
+ : Music_output (s)
{
- Paper_column const *what = c;
-
- return col_l_arr_.find_i ((Paper_column*)what);
+ assert (false);
}
Array<Column_x_positions>
+/*
+ urg. clean me
+ */
void
Paper_score::process ()
{
- print ();
progress_indication (_ ("Preprocessing elements...") + " ");
-
/*
Be sure to set breakability on first & last column.
*/
- col_l_arr_[0]->set_elt_property ("breakable", SCM_BOOL_T);
- col_l_arr_.top ()->set_elt_property ("breakable", SCM_BOOL_T);
-
- for (SCM s = element_smob_list_; gh_pair_p (s); s = gh_cdr (s))
- unsmob_element (gh_car (s))->do_breakable_col_processing ();
-
- fixup_refpoints ();
-
- for (SCM s = element_smob_list_; gh_pair_p (s); s = gh_cdr (s))
- {
- Score_element* sc = unsmob_element (gh_car (s));
- sc->calculate_dependencies (PRECALCED, PRECALCING, &Score_element::before_line_breaking);
- }
-
- progress_indication ("\n" + _ ("Calculating column positions...") + " " );
- for (SCM s = element_smob_list_; gh_pair_p (s); s = gh_cdr (s))
- unsmob_element (gh_car (s))->do_space_processing ();
+ Link_array<Paper_column> pc (line_l_->column_l_arr ());
+
+ pc[0]->set_elt_property ("breakable", SCM_BOOL_T);
+ pc.top ()->set_elt_property ("breakable", SCM_BOOL_T);
+ line_l_->pre_processing ();
+
Array<Column_x_positions> breaking = calc_breaking ();
line_l_->break_into_pieces (breaking);
- for (SCM s = element_smob_list_; gh_pair_p (s); s = gh_cdr (s))
- {
- unsmob_element (gh_car (s))->do_break_processing ();
- }
- for (SCM s = element_smob_list_; gh_pair_p (s); s = gh_cdr (s))
- {
- unsmob_element (gh_car (s))->handle_broken_dependencies ();
- }
+ SCM lines = line_l_->output_lines ();
outputter_l_ = new Paper_outputter ;
outputter_l_->output_header ();
if (paper_l_->scope_p_)
outputter_l_->output_scope (paper_l_->scope_p_, "mudelapaper");
-
- SCM scm = gh_list (ly_symbol2scm ("experimental-on"), SCM_UNDEFINED);
- outputter_l_->output_scheme (scm);
+
+ SCM scm;
+ if(experimental_features_global_b)
+ {
+ SCM scm = gh_list (ly_symbol2scm ("experimental-on"), SCM_UNDEFINED);
+ outputter_l_->output_scheme (scm);
+ }
scm = gh_list (ly_symbol2scm ("header-end"), SCM_UNDEFINED);
outputter_l_->output_scheme (scm);
+
+ SCM font_names = ly_quote_scm (all_fonts_global_p->font_descriptions ());
+ outputter_l_->output_scheme (gh_list (ly_symbol2scm ("define-fonts"),
+ font_names,
+ SCM_UNDEFINED));
+
+ for (SCM i = lines ; gh_pair_p (i); i = gh_cdr (i))
+ for (SCM j = gh_car (i) ; gh_pair_p (j); j = gh_cdr (j))
+ outputter_l_->output_scheme (gh_car (j));
+ scm = gh_list (ly_symbol2scm ("end-output"), SCM_UNDEFINED);
+ outputter_l_->output_scheme (scm);
- /*
- This is tricky: we have to put the font definitions before the
- actual output, but we don't know all fonts in advanced: generating
- the output might trigger loading of a new font. So we store the
- place to insert the font definitions, generate the output and then
- insert the definitions
-
- */
- SCM before_output = outputter_l_->last_cons_;
- fixup_refpoints ();
-
- /*
- TODO: change this, so that each element ouputs its molecules into
- its line, and then output all lines one by one; then we can do
-
- foreach element: output
- */
- line_l_->output_lines ();
-
- SCM font_names = ly_quote_scm (all_fonts_global_p->font_descriptions ());
- gh_set_cdr_x (before_output,
- gh_cons (gh_list (ly_symbol2scm ("define-fonts"),
- font_names,
- SCM_UNDEFINED),
- gh_cdr (before_output)));
Paper_stream* psp = paper_l_->paper_stream_p ();
outputter_l_->dump_onto (psp);
delete outputter_l_;
outputter_l_ = 0;
delete psp;
-
-}
-
-Link_array<Item>
-Paper_score::broken_col_range (Item const*l, Item const*r) const
-{
- Link_array<Item> ret;
-
- l = l->column_l ();
- r = r->column_l ();
-
- int start = l
- ? find_col_idx (dynamic_cast<Paper_column*> ((Item*)l))+1
- : 0;
-
- int stop = r
- ? find_col_idx (dynamic_cast<Paper_column*>((Item*)r))
- : col_l_arr_.size ();
-
- while (start < stop)
- {
- Paper_column *c = col_l_arr_[start];
- if (c->breakable_b () && !c->line_l_)
- ret.push (c);
- start++;
- }
-
- return ret;
-}
-
-
-void
-Paper_score::fixup_refpoints ()
-{
- for (SCM s = element_smob_list_; gh_pair_p (s); s = gh_cdr (s))
- {
- SCM e = gh_car (s);
- if (SMOB_IS_TYPE_B(Score_element, e))
- {
- Score_element * se = unsmob_element (e);
- se->fixup_refpoint ();
-
- if (!dynamic_cast<Line_of_score*> (se) && !se->parent_l (Y_AXIS))
- {
- programming_error ("No parent!");
- }
- }
- }
}
+++ /dev/null
-/*
- piano-pedal-engraver.cc -- implement Piano_pedal_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
-
- */
-
-#include "engraver.hh"
-#include "musical-request.hh"
-#include "score-element.hh"
-#include "item.hh"
-#include "lookup.hh"
-#include "lily-guile.hh"
-#include "note-head.hh"
-#include "stem.hh"
-#include "side-position-interface.hh"
-#include "staff-symbol-referencer.hh"
-
-
-/*
- TODO:
- sostenuto
- una-chorda / tre-corde
- */
-
-
-/*
- Urg.
- This is almost text
- Problem is:
- * we have no kerning
- * symbols are at wrong place in font
-*/
-
-class Sustain_pedal : public Item
-{
-public:
- VIRTUAL_COPY_CONS (Score_element);
-
-protected:
- virtual Molecule do_brew_molecule () const;
- virtual void after_line_breaking ();
-};
-
-void
-Sustain_pedal::after_line_breaking ()
-{
- Side_position_interface i (this);
- Direction d = i.get_direction ();
- i.set_direction (d);
-}
-
-Molecule
-Sustain_pedal::do_brew_molecule () const
-{
- Molecule mol;
- SCM glyph = get_elt_property ("glyph");
- if (glyph == SCM_UNDEFINED)
- return mol;
- String text = ly_scm2string (glyph);
-
- for (int i = 0; i < text.length_i (); i++)
- {
- // leuke koor dump door tiepo, snapnie helemaal:
- //String idx = ("pedal-") + text[i];
- // urg, Byte* ??
- // braak: waarom vindt String het zo moeilijk om
- // String + char te doen?
- //String idx = "pedal-" + String (&text.byte_C ()[i], 1);
- String idx = String ("pedal-") + String (&text.byte_C ()[i], 1);
- Molecule m = lookup_l ()->afm_find (idx);
- if (m.empty_b ())
- continue;
- Real kern = 0;
- if (i)
- {
- SCM s = scm_eval (gh_list (ly_symbol2scm ("pedal-kerning"),
- ly_str02scm (String (&text.byte_C ()[i - 1], 1).ch_C ()),
- ly_str02scm (String (&text.byte_C ()[i], 1).ch_C ()),
- SCM_UNDEFINED));
- if (gh_number_p (s))
- {
- Staff_symbol_referencer_interface st (this);
- Real staff_space = st.staff_space ();
- kern = gh_scm2double (s) * staff_space;
- }
- }
- mol.add_at_edge (X_AXIS, RIGHT, m, kern);
- }
-
- return mol;
-}
-
-/**
- engrave Piano pedals
- */
-class Piano_pedal_engraver : public Engraver
-{
-public:
- VIRTUAL_COPY_CONS (Translator);
- Piano_pedal_engraver ();
-
-protected:
- virtual bool do_try_music (Music*);
- virtual void do_process_music ();
- virtual void do_pre_move_processing ();
- virtual void do_post_move_processing ();
- virtual void acknowledge_element (Score_element_info);
-
-private:
- Span_req* sustain_start_req_l_;
- Drul_array<Span_req*> sustain_req_l_drul_;
- Sustain_pedal* sustain_p_;
-};
-
-ADD_THIS_TRANSLATOR(Piano_pedal_engraver);
-
-Piano_pedal_engraver::Piano_pedal_engraver ()
-{
- sustain_p_ = 0;
- sustain_req_l_drul_[START] = 0;
- sustain_req_l_drul_[STOP] = 0;
- sustain_start_req_l_ = 0;
-}
-
-/*
- Urg: Code dup
- I'm a script
- */
-void
-Piano_pedal_engraver::acknowledge_element (Score_element_info i)
-{
- if (sustain_p_)
- {
- if (Note_head* n = dynamic_cast<Note_head*> (i.elem_l_))
- {
- Side_position_interface st (sustain_p_);
- st.add_support (n);
- if (st.get_axis( ) == X_AXIS
- && !sustain_p_->parent_l (Y_AXIS))
- sustain_p_->set_parent (n, Y_AXIS);
- }
- if (Stem* s = dynamic_cast<Stem*> (i.elem_l_))
- {
- Side_position_interface st (sustain_p_);
- st.add_support (s);
- }
- }
-}
-
-bool
-Piano_pedal_engraver::do_try_music (Music *m)
-{
- if (Span_req * s = dynamic_cast<Span_req*>(m))
- {
- if (s->span_type_str_ == "sustain")
- {
- sustain_req_l_drul_[s->span_dir_] = s;
- return true;
- }
- }
- return false;
-}
-
-void
-Piano_pedal_engraver::do_process_music ()
-{
- SCM s = SCM_UNDEFINED;
- if (sustain_req_l_drul_[STOP] && sustain_req_l_drul_[START])
- {
- if (!sustain_start_req_l_)
- {
- sustain_req_l_drul_[STOP]->warning (_ ("can't find start of piano_pedal"));
- }
- else
- {
- s = get_property ("stopStartSustain");
- if (!gh_string_p (s))
- s = ly_str02scm ("*Ped.");
- }
- sustain_start_req_l_ = sustain_req_l_drul_[START];
- }
- else if (sustain_req_l_drul_[STOP])
- {
- if (!sustain_start_req_l_)
- {
- sustain_req_l_drul_[STOP]->warning (_ ("can't find start of piano_pedal"));
- }
- else
- {
- s = get_property ("stopSustain");
- if (!gh_string_p (s))
- s = ly_str02scm ("*");
- }
- sustain_start_req_l_ = 0;
- }
- else if (sustain_req_l_drul_[START])
- {
- sustain_start_req_l_ = sustain_req_l_drul_[START];
- s = get_property ("startSustain");
- if (!gh_string_p (s))
- s = ly_str02scm ("Ped.");
- }
- if (s != SCM_UNDEFINED)
- {
- sustain_p_ = new Sustain_pedal;
- sustain_p_->set_elt_property ("glyph", s);
-
-
- Side_position_interface si (sustain_p_);
- si.set_axis (Y_AXIS);
-
- /* Hmm,
- If set to empty, it can't be centred
- Howto centre non-fat text?
- sustain_p_->set_empty (X_AXIS);
- */
- sustain_p_->set_elt_property ("self-alignment-X", gh_int2scm (0));
- sustain_p_->add_offset_callback (Side_position_interface::aligned_on_self, X_AXIS);
- sustain_p_->add_offset_callback (Side_position_interface::centered_on_parent, X_AXIS);
- announce_element (Score_element_info (sustain_p_,
- sustain_req_l_drul_[START]
- ? sustain_req_l_drul_[START]
- : sustain_req_l_drul_[STOP]));
- }
-}
-
-void
-Piano_pedal_engraver::do_pre_move_processing ()
-{
- if (sustain_p_)
- {
- side_position (sustain_p_).add_staff_support ();
- typeset_element (sustain_p_);
- }
- sustain_p_ = 0;
-}
-
-void
-Piano_pedal_engraver::do_post_move_processing ()
-{
- sustain_req_l_drul_[STOP] = 0;
- sustain_req_l_drul_[START] = 0;
-}
/*
TODO:
sostenuto
- una-chorda / tre-corde
+ una-chorda ?
*/
/**
private:
Link_array<Audio_piano_pedal> audio_p_arr_;
- Span_req* sustain_start_req_l_;
- Drul_array<Span_req*> sustain_req_l_drul_;
+ Span_req* span_start_req_l_;
+ Drul_array<Span_req*> span_req_l_drul_;
};
ADD_THIS_TRANSLATOR (Piano_pedal_performer);
Piano_pedal_performer::Piano_pedal_performer ()
{
- sustain_req_l_drul_[START] = 0;
- sustain_req_l_drul_[STOP] = 0;
- sustain_start_req_l_ = 0;
+ span_req_l_drul_[START] = 0;
+ span_req_l_drul_[STOP] = 0;
+ span_start_req_l_ = 0;
}
void
Piano_pedal_performer::do_process_music ()
{
- if (sustain_req_l_drul_[STOP])
+ if (span_req_l_drul_[STOP])
{
- if (!sustain_start_req_l_)
+ if (!span_start_req_l_)
{
- sustain_req_l_drul_[STOP]->warning (_ ("can't find start of piano_pedal"));
+ span_req_l_drul_[STOP]->warning (_ ("can't find start of piano_pedal"));
}
else
{
p->type_b_ = false;
audio_p_arr_.push (p);
}
- sustain_start_req_l_ = 0;
+ span_start_req_l_ = 0;
}
- if (sustain_req_l_drul_[START])
+ if (span_req_l_drul_[START])
{
- sustain_start_req_l_ = sustain_req_l_drul_[START];
+ span_start_req_l_ = span_req_l_drul_[START];
Audio_piano_pedal* p = new Audio_piano_pedal;
p->type_b_ = true;
audio_p_arr_.push (p);
void
Piano_pedal_performer::do_post_move_processing ()
{
- sustain_req_l_drul_[STOP] = 0;
- sustain_req_l_drul_[START] = 0;
+ span_req_l_drul_[STOP] = 0;
+ span_req_l_drul_[START] = 0;
}
bool
{
if (Span_req * s = dynamic_cast<Span_req*>(r))
{
- if (s->span_type_str_ == "sustain")
+ if (s-> span_type_str_ == "sustain")
{
- sustain_req_l_drul_[s->span_dir_] = s;
+ span_req_l_drul_[s->span_dir_] = s;
return true;
}
}
set_elt_property ("rests", SCM_EOL);
set_elt_property ("notes", SCM_EOL);
set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (X_AXIS);
- set_empty (Y_AXIS);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
}
void
Score_element::output_processing ()
{
- if (to_boolean (get_elt_property ("transparent")))
+ if (to_boolean (get_elt_property ("transparent")))
return;
-
Molecule m (do_brew_molecule ());
Offset o (relative_coordinate (0, X_AXIS), relative_coordinate (0, Y_AXIS));
o[Y_AXIS] += il * gh_scm2double (gh_cdr (s));
}
- pscore_l_->outputter_l_->output_molecule (m.expr_, o, classname(this));
+ line_l ()->output_molecule (m.expr_, o);
}
/*
return dim ? dim->element_l () : 0;
}
-void
-Score_element::set_empty (Axis a)
-{
- dim_cache_[a]->extent_callback_l_ =0;
-}
-
bool
Score_element::empty_b (Axis a)const
{
SCM extra = get_elt_property (a == X_AXIS ? "extra-extent-X"
: "extra-extent-Y");
-
/*
signs ?
*/
{
ext.unite (Interval (s * gh_scm2double (gh_car (extra)),
s * gh_scm2double (gh_cdr (extra))));
-
}
return ext;
return false;
}
+void
+Score_element::set_extent_callback (Dim_cache_callback dc, Axis a)
+{
+ dim_cache_[a]->extent_callback_l_ = dc ;
+}
+
+
void
Score_element::set_parent (Score_element *g, Axis a)
{
Score_engraver::announce_element (Score_element_info info)
{
announce_info_arr_.push (info);
- pscore_p_->typeset_element (info.elem_l_);
+ pscore_p_->line_l_->typeset_element (info.elem_l_);
}
/* All elements are propagated to the top upon announcement. If
{
if ((*current[i])->linked_b())
{
- pscore_p_->add_column ((*current[i]));
scoreline_l_->add_column ((*current[i]));
+
}
else
{
}
else if (key == ly_symbol2scm ("accordion"))
{
- return lookup_l ()->accordion (s, paper_l()->get_var("interline"));
+ return lookup_l ()->accordion (gh_cdr (s), paper_l()->get_var("interline"));
}
else assert (false);
set_elt_property ("elements", SCM_EOL);
// this is weird! , but needed!
- set_empty (X_AXIS);
- set_empty ( Y_AXIS);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
}
if (!encompass_arr.size ())
{
set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (X_AXIS);
- set_empty (Y_AXIS);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
return;
}
Group_interface__extract_elements (this, (Note_column*)0, "note-columns");
Array<Offset> offset_arr;
+
#if 0
/*
check non-disturbed slur
{
Array<Rod> a;
Rod r;
+
r.item_l_drul_[LEFT] = get_bound (LEFT);
r.item_l_drul_[RIGHT] = get_bound (RIGHT);
-
r.distance_f_ = paper_l ()->get_var ("slur_x_minimum");
a.push (r);
{
Bezier b;
int i = 0;
+
+ if (!directional_element (this).get ())
+ ((Slur*)this)->set_extremities ();
+
+ if (!gh_pair_p (get_elt_property ("control-points")))
+ ((Slur*)this)->set_control_points ();
+
+
for (SCM s= get_elt_property ("control-points"); s != SCM_EOL; s = gh_cdr (s))
{
b.control_[i] = ly_scm2offset (gh_car (s));
Spacing_spanner::Spacing_spanner ()
{
- set_empty (X_AXIS);
- set_empty (Y_AXIS);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
set_elt_property ("transparent", SCM_BOOL_T);
}
{
spanbar_p_ = get_span_bar_p();
spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS);
+ spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
/*
UGH. UGH UUHGK GUHG G
Span_bar::evaluate_empty ()
{
if (!gh_pair_p (get_elt_property ("elements")))
- {
- set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (X_AXIS);
- set_empty (Y_AXIS);
- }
+ {
+ set_elt_property ("transparent", SCM_BOOL_T);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
+ }
SCM gl = get_elt_property ("glyph");
if (!gh_string_p (gl))
{
set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (X_AXIS);
- set_empty (Y_AXIS);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
}
else {
String type_str = ly_scm2string (gl);
if (type_str == "|:")
- {
- type_str= ".|";
- }
- else if (type_str== ":|")
- {
- type_str= "|.";
- }
- else if (type_str== ":|:")
- {
- type_str= ".|.";
- }
+ {
+ type_str= ".|";
+ }
+ else if (type_str== ":|")
+ {
+ type_str= "|.";
+ }
+ else if (type_str== ":|:")
+ {
+ type_str= ".|.";
+ }
}
/*
uhh. should do something with type_str ?!!
- */
+ */
}
Interval
Real
Span_bar::get_bar_size () const
{
- Interval iv (get_spanned_interval ());
- if (iv.empty_b ())
- {
- programming_error("Huh? My children deflated (FIXME)");
- iv = Interval (0,0);
- }
- return iv.length ();
+ Interval iv (get_spanned_interval ());
+ if (iv.empty_b ())
+ {
+ programming_error("Huh? My children deflated (FIXME)");
+ iv = Interval (0,0);
+ }
+ return iv.length ();
}
Span_bar::Span_bar ()
{
group (this).set_interface ();
dim_cache_[X_AXIS]->set_extent_callback (width_callback);
- dim_cache_[Y_AXIS]->set_extent_callback (Axis_group_interface::group_extent_callback);
+
+ // dim_cache_[Y_AXIS]->set_extent_callback (Axis_group_interface::group_extent_callback);
+
+ dim_cache_[Y_AXIS]->set_extent_callback (0);
}
do
{
Item* bound = left->find_broken_piece (d);
- Spanner * span_p = dynamic_cast<Spanner*>( clone ());
- span_p->set_bound (LEFT, bound);
- span_p->set_bound (RIGHT, bound);
+ if (bound->line_l ())
+ {
+ Spanner * span_p = dynamic_cast<Spanner*>( clone ());
+ span_p->set_bound (LEFT, bound);
+ span_p->set_bound (RIGHT, bound);
- assert (span_p->line_l ());
- pscore_l_->typeset_element (span_p);
- broken_into_l_arr_.push (span_p);
+ assert (span_p->line_l ());
+ span_p->line_l ()->typeset_element (span_p);
+ broken_into_l_arr_.push (span_p);
+ }
}
while ((flip(&d))!= LEFT);
}
else
{
- Link_array<Item> break_points = pscore_l_->broken_col_range (left,right);
+ Link_array<Item> break_points = pscore_l_->line_l_->broken_col_range (left,right);
break_points.insert (left,0);
break_points.push (right);
Spanner *span_p = dynamic_cast<Spanner*>(clone ());
span_p->set_bound(LEFT,bounds[LEFT]);
span_p->set_bound(RIGHT,bounds[RIGHT]);
-
- pscore_l_->typeset_element (span_p);
+
+
+ assert (bounds[LEFT]->line_l () ==
+ bounds[RIGHT]->line_l ());
+
+ bounds[LEFT]->line_l ()->typeset_element (span_p);
broken_into_l_arr_.push (span_p);
}
}
if (invisible_b ())
{
set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (Y_AXIS);
- set_empty (X_AXIS);
+ set_extent_callback (0, Y_AXIS);
+ set_extent_callback (0, X_AXIS);
}
set_spacing_hints ();
System_start_delimiter::System_start_delimiter ()
{
- set_empty (Y_AXIS);
+ set_extent_callback (0, Y_AXIS);
+ Group_interface (this).set_interface();
}
Molecule
{
System_start_delimiter * me = (System_start_delimiter*)this;
me->set_elt_property ("transparent", SCM_BOOL_T);
- me->set_empty (X_AXIS);
- me->set_empty (Y_AXIS);
+ me->set_extent_callback (0, X_AXIS);
+ me->set_extent_callback (0, Y_AXIS);
return m;
}
SCM empty = get_property ("textNonEmpty");
if (!to_boolean (empty))
- text->set_empty (X_AXIS);
+ text->set_extent_callback (0, X_AXIS);
announce_element (Score_element_info (text, r));
texts_.push (text);
Tie_column::Tie_column ()
{
set_elt_property ("ties", SCM_EOL);
- set_empty (X_AXIS);
- set_empty (Y_AXIS);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
set_elt_property ("transparent", SCM_BOOL_T);
}
{
programming_error ("Tie without heads.");
set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (X_AXIS);
- set_empty (Y_AXIS);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
return;
}
Tuplet_spanner::Tuplet_spanner ()
{
set_elt_property ("beams", SCM_EOL);
- set_elt_property ("columns", SCM_EOL);
+ set_elt_property ("columns", SCM_EOL);
+
+ // ugh.
+ set_elt_property ("delta-y", gh_int2scm (0));
}
/*
if (!column_arr.size ())
{
set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (X_AXIS);
- set_empty (Y_AXIS);
+ set_extent_callback (0, X_AXIS);
+ set_extent_callback (0, Y_AXIS);
}
- Direction d = directional_element (this).get ();
+ Direction d = directional_element (this).get ();
if (!d)
{
d = get_default_dir ();
}
Real dy, offset;
-calc_position_and_height (&offset,&dy);
- // calc_position (&offset, dy);
+ calc_position_and_height (&offset,&dy);
set_elt_property ("delta-y", gh_double2scm (dy));
{
Align_interface(valign_p_).add_element (i.elem_l_);
}
-
-#if 1 //
- /*
- should junk this, but (crossstaff?) Beam doesn't have a clue yet
- ... */
-
- /*
- Add make sure spanbars (whose size depends on vertical alignment)
- depend on the vertical alignment element
- */
- else if (dynamic_cast<Span_bar*>(i.elem_l_) && i.origin_trans_l_arr (this).size ())
- {
- i.elem_l_->add_dependency (valign_p_);
- }
-#endif
}
\consists "Melisma_engraver";
textScriptPadding = #3.0
\consists "Text_engraver";
- \consists "Piano_pedal_engraver";
\consists "Script_engraver";
\consists "Script_column_engraver";
\consists "Rhythmic_column_engraver";
Begin3
Title: LilyPond
-Version: 1.3.43
-Entered-date: 10APR00
+Version: 1.3.44
+Entered-date: 12APR00
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.43.tar.gz
+ 1000k lilypond-1.3.44.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 1000k lilypond-1.3.43.tar.gz
+ 1000k lilypond-1.3.44.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 1.3.43
+Version: 1.3.44
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.43.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.44.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
# Icon: lilypond-icon.gif
depth = ..
STEPMAKE_TEMPLATES=metafont metapost asciifont install install-out
-include $(depth)/make/stepmake.make
AF_FILES = $(wildcard *.af)
EXTRA_DIST_FILES += README feta.tex
-# don't try to make fonts from test files
-TEST_FILES = $(wildcard *test*.mf)
-FET_FILES = $(filter-out $(TEST_FILES),$(wildcard feta[0-9]*.mf))
-FONT_FILES = $(filter-out $(TEST_FILES),$(wildcard feta*[0-9].mf))
-
-XPM_FONTS = feta20 feta-nummer10 feta-braces20
+FET_FILES = $(wildcard feta[0-9]*.mf)
+FONT_FILES = $(wildcard feta*[0-9].mf)
+XPM_FONTS = feta20
LOG_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.log))
TEXTABLES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.tex))
TFM_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.tfm))
PFA_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.pfa))
-foo:
- @echo fof: $(FONT_FILES)
- @echo fef: $(FET_FILES)
- @echo tfm: $(TFM_FILES)
-
# Make tfm files first, log files last,
# so that normally log files aren't made twice
ALL_GEN_FILES= $(TFM_FILES) $(TEXTABLES) $(AFM_FILES) $(TFM_FILES) $(PFA_FILES) $(LOG_FILES)
INSTALLATION_OUT_DIR4=$(datadir)/pfa
INSTALLATION_OUT_FILES4=$(PFA_FILES)
+
export MFINPUTS:=.:$(MFINPUTS)
+include $(depth)/make/stepmake.make
default: $(ALL_GEN_FILES)
% -*- Fundamental -*-
-fet_begingroup("accordion")
-
accreg_dot_size# := .5staff_space#;
accreg_linethickness# := 1.3stafflinethickness#;
enddef;
def print_penpos (suffix $)=
- message "z"&str $ &"l = ("&decimal x.$.l&", "&decimal y.$.l&"); z"&str $ &"r = ("&decimal x.$.r&", "&decimal y.$.r&");";
+ message str $ &": ("&decimal x.$.l&", "&decimal y.$.l&"); ("&decimal x.$.r&", "&decimal y.$.r&");";
enddef;
-%fet_beginchar("accTEST", "accTEST", "accTEST")
-% set_char_box(.4staffsize#, .4staffsize#, 0, 2.4staff_space#);
-% def_some_vars;
-% penlabels(10, 11, 12, 13, 14);
-% penstroke z10e--z11e{right}..z12e..z13e{left}--z14e;
-%fet_endchar;
-
fet_beginchar("accSB", "accSB", "accSB")
set_char_box(.4staffsize#, .4staffsize#, 0, 2.4staff_space#);
def_some_vars;
def_B(.35width, .7height);
- %print_penpos (10);
- %print_penpos (11);
- %print_penpos (12);
- %print_penpos (13);
- %print_penpos (14);
- penlabels(10, 11, 12, 13, 14);
penstroke z10e--z11e{right}..z12e..z13e{left}--z14e;
+ penlabels(10, 11, 12, 13, 14);
penstroke z13e{right}..z15e{up}..z16e{left}--z17e;
penstroke z18e--z19e;
currentpicture := currentpicture shifted (-w/2, -shy*h);
currentpicture := currentpicture shifted (0, r);
fet_endchar;
-
-fet_endgroup("accordion")
make_picture_stack;
input feta-params;
-font_x_height staff_space#;
+
+
if test = 0:
input feta-eindelijk;
input feta-banier;
input feta-klef;
input feta-timesig;
- input feta-pendaal;
- input feta-accordion;
else:
% input feta-bolletjes;
% input feta-banier;
% input feta-eindelijk;
% input feta-klef;
% input feta-toevallig;
-% input feta-schrift;
+ input feta-schrift;
% input feta-haak;
% input feta-timesig;
- input feta-pendaal;
-% input feta-accordion;
fi
save rad, ang;
ang = angle(zr-zl);
-
- % don't get near infinity
- %z0 = zr + bulb_rad * (zl-zr)/length(zr -zl);
- z0 = zr + bulb_rad /length(zr -zl) * (zl-zr);
-
+ z0 = zr + bulb_rad * (zl-zr)/length(zr -zl);
rad = bulb_rad;
z1 = z0 + radius_factor* rad * dir(ang + turndir* 100);
input feta-autometric;
input feta-macros;
-input feta-params;
-%blot_diameter# = .4pt#;
+blot_diameter# = .4pt#;
fet_beginfont("feta-nummer", size);
mode_setup;
height#:=designsize;
-font_x_height height#;
save b,h; 4h+b=1.15; 10h+b=1;
fatten:=designsize*h+b;
%
% (c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-fet_begingroup("number")
+fet_begingroup("nummer")
define_pixels(height,thick,thick,thin,hair,flare);
define_pixels(foot_top,foot_width);
dot_diam# = 7/8flare#;
define_pixels(dot_diam);
-
-code := 43; % , = 44
+code := 43;
% urg
fet_beginchar("Numeral comma", ",", "comma")
% skip slash
-code := 47; % 0 = 48
+code := 47;
fet_beginchar("Numeral 0", "0", "zero")
% set_char_box(0, 4/5height#*widen, 0, height#);
currentpicture := currentpicture shifted (w,h);
fet_endchar;
-fet_endgroup("number")
+fet_endgroup("nummer")
staff_space#:=staffsize#/(stafflines-1);
% URG!
-%font_x_height staff_space# ;
+font_x_height staff_space# ;
%
% [D.K.Roush & J.S.Gourlay] say this should be 0.072
%
numeric blot_diameter;
blot_diameter# = .4pt#;
-if (blot_diameter# * hppp) < 1:
- blot_diameter# := 1/hppp;
-fi
-if (blot_diameter# * vppp) < 1:
- blot_diameter# := 1/vppp;
-fi
define_pixels(blot_diameter);
+++ /dev/null
-% feta-pendaal.mf -- piano pedal markings
-%
-% part of LilyPond's pretty-but-neat music font
-%
-% source file of the Feta (not the Font-En-Tja) music font
-%
-% (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
-%
-% Voor Cup
-
-% Kerning
-%
-% Pe = -0.034 pedalh == -0.07 staff-space
-% ed = -0.27 pedalh == -0.53 staff-space
-
-fet_begingroup("pedal")
-
-pedalpha = 40;
-pedbeta = 25;
-
-penh#=0.7stafflinethickness#;
-penw#=4penh#;
-%penw#=penh#;
-define_pixels (penh,penw);
-
-pedalh# = 2staff_space#;
-pedalbh# = 4/7pedalh#;
-define_pixels (pedalh,pedalbh);
-
-% code values for own pedal font commented out
-% code := 41; % * = 42
-
-def draw_asterisk_bulb (expr w, h, i) =
- begingroup;
- clearxy;
- save bulb, p;
- path p;
- bulb = 4/3penw;
-
- pickup pencircle scaled penh;
- penpos 1 (bulb, 180);
- penpos 2 (bulb, 0);
- penpos 3 (penh, 0);
- penpos 4 (penw, 0);
-
- z0 = (1/2w, h - 1/2w);
- z1 = (1/2w, h-1/2bulb);
- z2 = z1;
- z3 = (x1, y1-penw);
- z4 = (x1, y3-2penh);
-
- penlabels (1,2,3,4);
-% penstroke z1e{up}..z2e{down}..z3e{down}..z4e;
- p = z1l{up}..z2l{down}..z3l{down}..z4l..z4r
- ..z3r{up}..z2r{up}..z1r{down}..cycle;
- p := p rotatedaround (z0, 360/8i);
- fill p;
- endgroup;
- enddef;
-
-fet_beginchar("Pedal asterisk", "*", "pedal-asterisk")
- set_char_box(0, 7/9pedalh#, 0, pedalh#);
- z0 = (1/2w, h - 1/2w);
- for i = 0 upto 7:
- draw_asterisk_bulb (w, h, i);
- pickup pencircle scaled penw;
- undraw z0;
- endfor
-fet_endchar;
-
-% skip + and ,
-
-% code := 44; % - = 45
-
-fet_beginchar("Pedal dash", "-", "pedal-dash")
- set_char_box(0, 3penw#, 0, pedalbh#);
- pickup pencircle scaled penh;
-
- penpos 1 (penw, 60);
- penpos 2 (penw, 60);
- z1l = (0, 2/3h - 1/2penw);
- z2r = (w, y1l + 1.2penw);
- penlabels (1,2);
- penstroke z1e{dir 40}..tension 1.2 ..z2e{dir 40};
-fet_endchar;
-
-fet_beginchar("Pedal dot", ".", "pedal-dot")
- set_char_box(0, penw#, 0, penw#);
- pickup pencircle scaled penw;
- draw (1/2penw,1/2penw);
-fet_endchar;
-
-% code := 79; % P = 80
-
-fet_beginchar("Pedal P", "P", "pedal-P")
- set_char_box(0, 5/6pedalh#, 0, pedalh#);
- pickup pencircle scaled penh;
-
- penpos 1 (penh, 0);
- penpos 2 (penw, 55);
- penpos 3 (penw, pedalpha);
- penpos 4 (1.2penh, -pedalpha);
- penpos 5 (penh, -pedalpha);
- penpos 6 (penh, 180-pedalpha);
- penpos 7 (2penh, 180-pedalpha);
- penpos 8 (penh, 90);
- penpos 9 (4/3penw,50);
- penpos 10 (1.4penw,50);
- penpos 11 (penh, 90+pedalpha);
-
- z1r = (0.6w, h);
- x2l = x1l - penw;
- y2 = 0.7h;
- x3r = x2l + 2penw;
- y3r = 0.4h;
- z4l = z5r + 1/4(z3r - z5r);
- x5 = 1/4w;
- y5r = 0;
- z6 = z5;
- z7 = z6r + 1/3(z8r - z6r);
- z8r = z5r + 3/5(z3r - z5r);
- x9l = x10l - penh;
- y9l = 1/4penh;
- x10l = w - tand (90-pedalpha)*y11l;
- y10l = 1/4penh;
- x11l = w;
- y11 = 1/5h;
-
- penlabels (1,2,3,4,5,6,7,8,9,10,11);
- penstroke z1e..tension 2.5 .. z2e.. tension 1.5 .. z3e ..tension 2.5
- ..z4e..tension 1.5
- ..z5e..z6e..tension 1.5
- ..z7e..tension 1.5
- ..z8e{right}..tension 1.5
- ..z9e{dir -pedalpha}
- ..z10e..tension 2.5..z11e;
-
- penpos 12 (penh, 0);
- penpos 13 (penw, -90-pedbeta);
- penpos 14 (penh, 90);
- penpos 15 (penw, -90+pedbeta);
- penpos 16 (penh, 180+pedbeta);
- z12 = (5/9x1, y2);
- z13l = (1/2x12r, y15r);
- z14r = z1r;
- z15l = (1/2[x16,w], y2l + 0.5penw);
- x16 = 1/4[x1, w];
- y16r = y2r;
-
- penlabels (12,13,14,15,16);
- penstroke z12e{down}..tension 1.1
- ..z13e{dir (180-pedbeta)}..tension 1.1
- ..z14e{right}..tension 1.1
- ..z15e{dir (180+pedbeta)}..tension 1.1
- ..z16e{dir (90+pedbeta)};
-fet_endchar;
-
-
-% code := 99; % d = 100
-
-if 0 = 1:
-
-fet_beginchar("Pedal d", "d", "pedal-d")
- set_char_box(2/9pedalh#, 4/9pedalh#, 0, 7/8pedalh#);
- pickup pencircle scaled penh;
-
- penpos 1 (penh, -70);
- penpos 2 (3/4penw, 0);
- penpos 3 (2penh, 90);
- penpos 4 (penw, 190);
- penpos 5 (penh, -10-90);
-
- z1l = (1/2w, pedalbh);
- z2l = (0, 1/2pedalbh);
- z3l = (1/2w, 0);
- z4 = (w - 1/2penw, 1/2pedalbh + penh);
- x5r = -b;
- y5l = h;
-
- penlabels (1,2,3,4,5);
-
- penstroke z1e{dir (-70-90)}..tension 1.1
- ..z2e{down}..tension 1.1
- ..z3e{right}..tension 1.1
- ..z4e{dir (90+10)}..tension 1.1
- ..z5e{dir (180-10)};
-fet_endchar;
-
-else:
-
-fet_beginchar("Pedal d", "d", "pedal-d")
- set_char_box(0, 2/3pedalh#, 0, 7/8pedalh#);
- pickup pencircle scaled penh;
-
- penpos 1 (penh, -70);
- penpos 2 (3/4penw, 0);
- penpos 3 (2penh, 90);
- penpos 4 (penw, 190);
- penpos 5 (penh, -10-90);
-
- z1l = (2/3w, pedalbh);
- z2l = (1/3w, 1/2pedalbh);
- z3l = (x1l, 0);
- z4 = (w - 1/2penw, 1/2pedalbh + penh);
- x5r = 0;
- y5l = h;
-
- penlabels (1,2,3,4,5);
-
- penstroke z1e{dir (-70-90)}..tension 1.1
- ..z2e{down}..tension 1.1
- ..z3e{right}..tension 1.1
- ..z4e{dir (90+10)}..tension 1.1
- ..z5e{dir (180-10)};
-fet_endchar;
-
-fi
-
-fet_beginchar("Pedal e", "e", "pedal-e")
- set_char_box(0, 2/5pedalh#, 0, pedalbh#);
- pickup pencircle scaled penh;
-
- penpos 1 (penh, pedalpha-90);
- penpos 2 (penh, pedalpha-90);
- penpos 3 (3/5penw, pedalpha);
- penpos 4 (1.2penh, 90+pedalpha);
- penpos 5 (2/3penw, 180);
- penpos 6 (penw, 180+pedalpha);
- penpos 7 (2/3penw, -90-20);
- penpos 8 (penh, pedalpha-90);
-
- z1l = (0, 1/5pedalh);
- z2 = z1 + dir pedalpha * penw;
- z3 = (3/5w, 8/9h);
-
- z4 = (2/9w, y3);
-
- x5r = 0;
- y5 = y2;
-
- x6 = 3/8w;
- y6r = 1/2penh;
-
- z7l = (x6l+penh, y6l);
-
- x8r = w;
- y8 = 1/5pedalh;
-
- penlabels (1,2,3,4,5,6,7,8);
- penstroke z1e{dir pedalpha}
- ..z2e{dir pedalpha}.. tension 1.1
- %urg
- ..z3e..tension 1.05
- ..z4e..tension 1.1
- ..z5e..tension 1.5
- ..z6e{dir -pedalpha}..tension 1.1
- ..z7e.. tension 2.5
- ..z8e;
-fet_endchar;
-
-fet_endgroup("pedal")
-
fet_endchar;
input feta-slag;
+input feta-accordion;
fet_endgroup("scripts");
+++ /dev/null
-% feta-test16
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-fet_beginfont("feta-test", 23);
-staffsize#:=23pt#;
-test:=1;
-
-% smoked cheese
-% test := -1;
-
-
-% dem piksels.
-%test := 1;
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
% part of LilyPond's pretty-but-neat music font
input feta-autometric;
-fet_beginfont("feta-test", 13);
-staffsize#:=13pt#;
+fet_beginfont("feta-test", 16);
+staffsize#:=16pt#;
test:=1;
% smoked cheese
+++ /dev/null
-% feta-test23
-% part of LilyPond's pretty-but-neat music font
-
-
-input feta-autometric;
-fet_beginfont("feta-test", 23);
-staffsize#:=23pt#;
-test:=1;
-
-% smoked cheese
-% test := -1;
-
-
-% dem piksels.
-%test := 1;
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
% part of LilyPond's pretty-but-neat music font
input feta-autometric;
-fet_beginfont("feta-test", 26);
+fet_beginfont("feta-test", 16);
staffsize#:=26pt#;
test:=1;
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "violoncello.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "clarinetti.ly"
}
-\version "1.3.4";
+\version "1.3.42";
\include "clarinetto-1.ly"
\include "clarinetto-2.ly"
}
-\version "1.3.4";
+\version "1.3.42";
clarinetto1 = \notes \relative c {
R1 *2 |
}
-\version "1.3.4";
+\version "1.3.42";
clarinetto2 = \notes \relative c {
R1*2 bes''4-.\ff r r2 |
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "contrabasso.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
contrabasso = \notes \relative c {
% \translator Staff=violoncello
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "paper16.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "corni.ly"
}
-\version "1.3.4";
+\version "1.3.42";
\include "corno-1.ly"
\include "corno-2.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
corno1 = \notes \relative c {
R1*2 |
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
corno2 = \notes \relative c {
R1*2 |
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "fagotti.ly"
}
-\version "1.3.4";
+\version "1.3.42";
\include "fagotto-1.ly"
\include "fagotto-2.ly"
}
-\version "1.3.4";
+\version "1.3.42";
fagotto1 = \notes \relative c {
R1*2 |
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
fagotto2 = \notes \relative c {
R1*2 |
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "flauti.ly"
}
-\version "1.3.4";
+\version "1.3.42";
\include "flauto-1.ly"
\include "flauto-2.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
flauto1 = \notes \relative c {
R1 *2 |
enteredby = "JCN";
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
flauto2 = \notes \relative c {
R1 *2 |
as'''4-.\ff r r2 |
}
-\version "1.3.4";
+\version "1.3.42";
global = \notes {
\time 4/4;
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
oboe1 = \notes \relative c'' {
R1*2 |
}
-\version "1.3.4";
+\version "1.3.42";
oboe2 = \notes \relative c{
R1*2|
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "oboi.ly"
}
-\version "1.3.4";
+\version "1.3.42";
\include "oboe-1.ly"
\include "oboe-2.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "timpani.ly"
}
-\version "1.3.4";
+\version "1.3.42";
timpani = \notes \relative c {
R1*2 |
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "trombe.ly"
}
-\version "1.3.4";
+\version "1.3.42";
\include "trombo-1.ly"
\include "trombo-2.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
trombo1 = \notes \relative c {
R1*2 |
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
trombo2 = \notes \relative c {
R1*2 |
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
viola1 = \notes \relative c {
c'1\ff ~ |
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
viola2 = \notes \relative c {
% starts on (actualy, most part is on) same staff as viola1
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "viola-1.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "violino-1.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
violino1 = \notes \relative c {
c'1\ff ~ |
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "violino-2.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
violino2 = \notes \relative c {
c'1\ff ~ |
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
\include "global.ly"
\include "violoncello.ly"
}
-\version "1.3.4";
+\version "1.3.42";
violoncello = \notes \relative c {
c1\ff ~ |
under the Gnu Public Licence.
%}
-\version "1.3.4";
+\version "1.3.42";
$voice_one = \notes \relative c' {
a'2 bes4. [c16 bes] | a4 d ~ d c ~ | c b ~ [b8 a] a4 ~|
Tested Features: cross staff auto beams and slurs, grace notes, no bars
%}
-\version "1.3.5";
+\version "1.3.42";
global = \notes {
\key a \minor;
Tested Features:
%}
-\version "1.3.5";
+\version "1.3.42";
\include "nederlands.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
\include "standchen.ly"
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.42";
% fool make-website
% \include "standchen.ly";
Note: Original key f.
%}
-\version "1.3.4";
+\version "1.3.42";
vocalVerse = \notes\relative c''{
\property Voice.dynamicDirection=\up
metre = "6 6. 8 6. D";
}
-\version "1.3.4";
+\version "1.3.42";
sop=\notes \transpose c''{
ees2 ees4 ees4 g2 g2 | c'1.
metre = "10 10 . 11 11";
}
-\version "1.3.4";
+\version "1.3.42";
sop = \notes \transpose c''{
f4 | d' bes c' | f2 \bar "||";
metre = "10 11. 11 11. and refrain";
}
-\version "1.3.4";
+\version "1.3.42";
sop=\notes \relative c'' {
b2 gis4. a8 |b2 e,2 |
metre = "8 7 8 7 D";
}
-\version "1.3.4";
+\version "1.3.42";
sop=\notes \relative c'' {
b4 b c d | d c b a | g g a b | b4. a8 a2 |
}
-\version "1.3.4";
+\version "1.3.42";
%{
Note: there are other verses, but the three here seem to be
piece = "Allemande";
}
-\version "1.3.4";
+\version "1.3.42";
global = \notes{
\time 4/4;
%%
%% Noe liknende skjer også i mellom andre og tredje stemme i takt 28
-\version "1.3.4";
+\version "1.3.42";
global = \notes{
\time 2/4;
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.42";
global = \notes {
\time 4/4;
-\version "1.3.5";
+\version "1.3.42";
$global_i = \notes{
\time 12/8;
-\version "1.3.5";
+\version "1.3.42";
$global_ii = \notes{
\time 4/4;
copyright = "Public Domain";
}
-\version "1.3.5";
+\version "1.3.42";
\include "global-i.ly"
\include "violoncello-i.ly";
copyright = "Public Domain";
}
-\version "1.3.5";
+\version "1.3.42";
\include "global-ii.ly"
\include "violoncello-ii.ly";
copyright = "Public Domain";
}
-\version "1.3.5";
+\version "1.3.42";
% {
copyright = "Public Domain";
}
-\version "1.3.5";
+\version "1.3.42";
$violino_i = \notes\relative c'' {
\property Voice.beamAutoEnd = "3/8"
copyright = "Public Domain";
}
-\version "1.3.5";
+\version "1.3.42";
$violino_ii = \notes\relative c''{
R1*8 |
\$violino_ii
\$global_ii
>
-\version "1.3.5";
+\version "1.3.42";
copyright = "Public Domain";
}
-\version "1.3.5";
+\version "1.3.42";
% {
copyright = "Public Domain";
}
-\version "1.3.5";
+\version "1.3.42";
% {
\include "violino-i.ly";
copyright = "Public Domain";
}
-\version "1.3.5";
+\version "1.3.42";
% {
\include "violino-i.ly";
copyright = "Public Domain";
}
-\version "1.3.5";
+\version "1.3.42";
$violoncello_i = \notes\relative c{
\property Voice.beamAutoEnd = "3/8"
copyright = "Public Domain";
}
-\version "1.3.5";
+\version "1.3.42";
$violoncello_ii = \notes\relative c{
r2 a'2|c e,| f8(e)d2 e8()fis| g a bes2 a8()gis|
copyright = "Public Domain";
}
-\version "1.3.5";
+\version "1.3.42";
% {
-\version "1.3.4";
+\version "1.3.42";
lowstaff = \translator "Staff" = "lower"
-\version "1.3.4";
+\version "1.3.42";
upper = \context Staff \notes\relative c{
\context Voice=i
\property Voice . textStyle = "italic"
%}
-\version "1.3.4";
+\version "1.3.42";
upper = \notes \transpose c'' {
}
-\version "1.3.4";
+\version "1.3.42";
upper = \context Staff \notes\relative c
\context Voice=i {
}
-\version "1.3.4";
+\version "1.3.42";
-\version "1.3.4";
+\version "1.3.42";
\include "allemande-urtext.ly";
>
-\version "1.3.4";
+\version "1.3.42";
-\version "1.3.4";
+\version "1.3.42";
\include "allemande-urtext.ly";
-\version "1.3.4";
+\version "1.3.42";
\include "courante-urtext.ly";
\$courante_b
>
-\version "1.3.4";
+\version "1.3.42";
-\version "1.3.4";
+\version "1.3.42";
\include "courante-urtext.ly";
-\version "1.3.4";
+\version "1.3.42";
\include "gigue-urtext.ly";
\$gigue_b
>
-\version "1.3.4";
+\version "1.3.42";
-\version "1.3.4";
+\version "1.3.42";
\include "gigue-urtext.ly";
-\version "1.3.4";
+\version "1.3.42";
\include "menuetto-urtext.ly";
d2.
}
-\version "1.3.4";
+\version "1.3.42";
-\version "1.3.4";
+\version "1.3.42";
\include "menuetto-urtext.ly";
-\version "1.3.4";
+\version "1.3.42";
\include "prelude-urtext.ly";
\$prelude_b
>
-\version "1.3.4";
+\version "1.3.42";
-\version "1.3.4";
+\version "1.3.42";
\include "prelude-urtext.ly";
-\version "1.3.4";
+\version "1.3.42";
\include "sarabande-urtext.ly";
\$sarabande_b
>
-\version "1.3.4";
+\version "1.3.42";
-\version "1.3.4";
+\version "1.3.42";
\include "sarabande-urtext.ly";
%{
TODO: use autobeaming.
%}
-\version "1.3.4";
+\version "1.3.42";
tenor =
% It would be nice to squeeze this onto two pages, but I am not sure
% if it would work with US paper.
-\version "1.3.4";
+\version "1.3.42";
dux = \context Voice=two \notes \relative c''{
lastupdated = "1999/Oct/14";
}
-\version "1.3.4";
+\version "1.3.42";
% should do programmable input.
soprane =
definition below. --MB
%}
-\version "1.3.4";
+\version "1.3.42";
global = \notes {
\property StaffGroup.timeSignatureStyle = "old"
)
))
-(define generic-sustain-pedal-properties
- (cons "Sustain_pedal" (list
- (list 'textScriptPadding number? 'padding)
- (list 'sustainPedalPadding number? 'padding))))
-
(define generic-crescendo-properties
(cons "Crescendo" (list
(list 'verticalDirection dir? 'direction)
generic-slur-properties
generic-beam-properties
generic-text-properties
- generic-sustain-pedal-properties
generic-note-column-properties
generic-script-properties
generic-All-properties
(beta (/ (* pi r-0) (* 2.0 h-inf))))
(* alpha (atan (* beta b)))))
-;; see mf/feta-pendaal.mf
-(define pedal-kerning-alist '())
-(set! pedal-kerning-alist
- (append
- '(
- (("P" . "e") . -0.07)
- (("e" . "d") . -0.53)
- (("*" . "P") . 0.2)
- )
- pedal-kerning-alist))
-
-(define (pedal-kerning l r)
- (let ((entry (assoc (cons l r) pedal-kerning-alist)))
- (if entry
- (cdr entry))))
-
MF_FILES := $(wildcard *.mf)
+FONT_FILES = $(wildcard *[0-9].mf)
EXTRA_DIST_FILES += $(MF_FILES)
MF_TFM_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.tfm))
MF_DVI_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.dvi))
+++ /dev/null
-% pedal.tex
-
-\hsize = 296mm
-\vsize = 210mm
-
-% fix chord.cc::banter_str before removing these
-\def\fetdef#1#2{%
- \def#1{\hbox{\char#2}}}
-
-\fetdef\pedalasterisk{101}
-\fetdef\pedaldash{102}
-\fetdef\pedaldot{103}
-\fetdef\pedalP{104}
-\fetdef\pedald{105}
-\fetdef\pedale{106}
-
-%\font\fetatwentysixfontt=feta26 scaled \magstep 4
-%\font\fetatwentysixfontt=feta26 scaled 18842
-\font\fetatwentysixfontt=feta26 scaled 2407
-\magnification \magstep 4
-
-\def\fetafont{\fetatwentysixfontt}
-
-\baselineskip 12mm
-
-\vbox{
-\kern 50mm
-
-\hbox{
-\fetatwentysixfontt
-\hbox { \pedalP\kern-0.06ex\pedale\kern -0.55ex\pedald\pedaldot}
-\kern 100mm
-\pedalasterisk
-}
-}
-
-\end
-
-%\endinput
+++ /dev/null
-% pedal.tex
-
-% fix chord.cc::banter_str before removing these
-\def\fetdef#1#2{%
- \def#1{\hbox{\char#2}}}
-
-\fetdef\pedalasterisk{101}
-\fetdef\pedaldash{102}
-\fetdef\pedaldot{103}
-\fetdef\pedalP{104}
-\fetdef\pedald{105}
-\fetdef\pedale{106}
-
-
-\font\fetaelevenfont=feta11
-\font\fetathirteenfont=feta13
-\font\fetasixteenfont=feta16
-\font\fetatwentyfont=feta20
-\font\fetatwentythreefont=feta23
-\font\fetatwentysixfont=feta26
-
-\font\fetaelevenfontt=feta11 scaled \magstep 4
-\font\fetathirteenfontt=feta13 scaled \magstep 4
-\font\fetasixteenfontt=feta16 scaled \magstep 4
-\font\fetatwentyfontt=feta20 scaled \magstep 4
-\font\fetatwentythreefontt=feta23 scaled \magstep 4
-\font\fetatwentysixfontt=feta26 scaled \magstep 4
-
-\def\fetafont{\fetasixteenfont}
-
-\def\test{
-\hbox {
-\hbox { \pedalP\kern-0.05ex\pedale\kern -0.6ex\pedald\pedaldot}
-\kern 1ex
-\pedalasterisk
-\kern 1ex
-\hbox {\pedaldash\pedalP}
-}
-}
-
-\magnification \magstep 4
-\baselineskip 12mm
-
-\vbox{
-\fetaelevenfont \test
-\fetathirteenfont \test
-\fetasixteenfont \test
-\fetatwentyfont \test
-\fetatwentythreefont \test
-\fetatwentysixfont \test
-
-%\fetaelevenfontt \test
-%\fetathirteenfontt \test
-\fetasixteenfontt \test
-\fetatwentyfontt \test
-\fetatwentythreefontt \test
-\fetatwentysixfontt \test
-}
-
-\end
-
-%\endinput