]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.25
authorfred <fred>
Tue, 26 Mar 2002 22:45:36 +0000 (22:45 +0000)
committerfred <fred>
Tue, 26 Mar 2002 22:45:36 +0000 (22:45 +0000)
35 files changed:
TODO
buildscripts/set-lily.sh
buildscripts/tfmtoafm.sh
input/test/as.fly [new file with mode: 0644]
input/test/as1.fly [new file with mode: 0644]
input/test/as2.ly [new file with mode: 0644]
input/test/test-as5.ly [new file with mode: 0644]
lily/atom.cc
lily/group-interface.cc
lily/include/dimensions.hh
lily/include/group-interface.hh
lily/include/tie-column.hh [new file with mode: 0644]
lily/lookup.cc
lily/my-lily-lexer.cc
lily/paper-outputter.cc
lily/parser.yy
lily/tie-column.cc [new file with mode: 0644]
lily/tie.cc
ly/declarations-as.ly [new file with mode: 0644]
ly/engraver.ly
ly/paper-as5.ly [new file with mode: 0644]
ly/paper-as9.ly [new file with mode: 0644]
ly/params-as.ly [new file with mode: 0644]
ly/params.ly
mf/GNUmakefile
mf/as-braces9.af [new file with mode: 0644]
mf/as-number1.af [new file with mode: 0644]
mf/as-number4.af [new file with mode: 0644]
mf/as9.af [new file with mode: 0644]
mf/feta-generic.mf
mutopia/E.Satie/gnossienne-4-autochange.ly
scripts/GNUmakefile
stepmake/stepmake/asciifont-rules.make [new file with mode: 0644]
stepmake/stepmake/asciifont-vars.make [new file with mode: 0644]
stepmake/stepmake/metafont-rules.make

diff --git a/TODO b/TODO
index 9d00e7270c374ce69dbb89cfc7330678f8b3bc2c..382e3098b91d28be00d657d94c53ce06d247e65e 100644 (file)
--- a/TODO
+++ b/TODO
@@ -11,21 +11,18 @@ Grep -i for TODO, FIXME and ugh/ugr/urg.
 .* TODO
 . * use hash tabs iso. alist_ for elt property?
 . * fix tremolos.
-. * ROADMAP file.
 . * change ) c4  to c4-)
 . * internationalize GUILE msgs.
 . * unbroken marks.
 . * write smobifying howto.
-. * \property autoBeamOverRest (boolean). Don't stop for rests when autobeaming.
-?
 . * put property test files in refman.
-. * fix slurdotted!
 . * alignment within @itemize
 . * interstaff stems
 . * junk dstream output.
 . * Change website to be index to documentation.
 . * \grace { c d } c1 in midi
 . * \prop slurdir in grace notes
+. * Make fingering and playing instructions Music_wrappers?
 . * \eltproperty "=Context" "Elt_name" "prop-name" #value
 . * script columns
 . * Must stop before this music ends:
@@ -126,7 +123,6 @@ of the grace notes and extend to the note after the grace notes.
 . * 4. Lyrics and grace sections don't go too well together.
  The words are aligned with the main note, not the start of the
  grace note.  This is usually wrong, but is sometimes right.
-. * tie-direction
 . * rhythmic staff & accidentals.
 . * use melismaBusy in Lyric context to typeset melismata correctly.  
 . * ly2dvi/lilypond logfile.
index 199d1a5c5b2e837b79465173b055e3f502ba95b0..7383d6308778ddd39ab2e15d64d10166bdf6023b 100644 (file)
@@ -57,6 +57,7 @@ showln -sf $LILYPOND_SOURCEDIR/midi2ly/out/midi2ly $prefix/bin/midi2ly
 showln -sf $LILYPOND_SOURCEDIR/scripts/out/ly2dvi $prefix/bin/ly2dvi
 showln -sf $LILYPOND_SOURCEDIR/scripts/out/mudela-book $prefix/bin/mudela-book
 showln -sf $LILYPOND_SOURCEDIR/buildscripts/out/genheader $prefix/bin/genheader
+showln -sf $LILYPOND_SOURCEDIR/scripts/out/as2text $prefix/bin/as2text
 
 
 
index f598a8657acf9d2b1bbd6e85f5e9c180da4c399a..42c0bf6ee24dcb36e23c4f741c8f5d8a90991094 100644 (file)
@@ -19,11 +19,11 @@ rm -f $t1 $t2 $font $afm
 for i in `seq 1 127`; do printf "%d Character-%d\n" $i $i >> $t1; done
 tfmtodit $fontfile $t1 $font
 rm $t1
-scaling=`nawk -v OFMT='%.5f' '/designsize/ {print $2/'$size/1000} $font`
+scaling=`awk -v OFMT='%.5f' '/designsize/ {print $2/'$size/1000} $font`
 tail -127 $font | cut -f 1-2 > $t1
 cat $t1 | cut -d, -f 1-2 > $t2
 rm $t1
-nl -ba $t2 | nawk -F '[ \t,]+' '{print "C "$2";\t"$3";\tB 0.00 0.00 "$4/'"$scaling"'" "$5/'"$scaling"'";"}' > $t1
+nl -ba $t2 | awk -F '[ \t,]+' '{print "C "$2";\t"$3";\tB 0.00 0.00 "$4/'"$scaling"'" "$5/'"$scaling"'";"}' > $t1
 
 cat > $afm <<EOF
 FontName cmr
diff --git a/input/test/as.fly b/input/test/as.fly
new file mode 100644 (file)
index 0000000..2203005
--- /dev/null
@@ -0,0 +1,2 @@
+\time 4/4;
+g''1 a2 b4. c8
diff --git a/input/test/as1.fly b/input/test/as1.fly
new file mode 100644 (file)
index 0000000..bd2a54a
--- /dev/null
@@ -0,0 +1,3 @@
+\time 4/4;
+g''1 a2 b4. c8
+\repeat "volta" 2 { a4 b c d } \alternative { { c c c c } { d2 d4 [d8 d] } }
diff --git a/input/test/as2.ly b/input/test/as2.ly
new file mode 100644 (file)
index 0000000..1356548
--- /dev/null
@@ -0,0 +1,20 @@
+
+\include "paper-as9.ly"
+
+\score {
+       \notes\relative c'{
+               \time 4/4;
+               c8 e g b
+               d d d d
+               \bar "|.";
+       }
+       \paper {
+               \paper_as_nine
+               linewidth=65.0\char;
+               \translator { \StaffContext barSize = #9 }
+               %\translator { \VoiceContext beamHeight = #0 }
+               \translator { \VoiceContext beamHeight = ##f }
+       }
+
+}
+
diff --git a/input/test/test-as5.ly b/input/test/test-as5.ly
new file mode 100644 (file)
index 0000000..ee77e76
--- /dev/null
@@ -0,0 +1,14 @@
+\include "paper-as5.ly"
+
+\score {
+       \notes\relative c''{
+               \time 4/4;
+               g1 g2 g4. g8 |
+       }
+       \paper {
+               \paper_as_five
+               \translator { \StaffContext barSize = #5 }
+       }
+
+}
+
index f6eda93aa512b05572e1eda93e4f975227e172cb..cc2bde40be01f211d289b59360968f200294e2f9 100644 (file)
@@ -22,8 +22,8 @@
 
 Atom::Atom(SCM s)
 {
-  SCM onstack = s;             // protection.
-  func_ = scm_protect_object (s);
+  SCM onstack = s;             // protection. just to be sure.
+  func_ = s;
   self_scm_ = SCM_EOL;
   smobify_self ();
 }
index b8388670effb2a9f8f7d57eb36d63175ccdd64ed..3b6b53e664496f267d213aaec9efb90ae9c583fa 100644 (file)
@@ -54,3 +54,10 @@ Group_interface::set_interface ()
       elt_l_->set_elt_property (name_, SCM_EOL);
     }
 }
+
+Group_interface
+group (Score_element*s)
+{
+  Group_interface gi (s);
+  return gi;
+}
index d6b7cfd1767de31ddd24251fe4385fa8a6084aeb..896af5dc428858724eefb4089ed1f4e48130b875 100644 (file)
@@ -10,6 +10,7 @@ const Real MM_TO_PT=CM_TO_PT/10;
 const Real PT_TO_PT =1.0;
 const Real INCH_TO_BP = 72;
 const Real BIGPOINT_TO_POINT = INCH_TO_PT/ INCH_TO_BP;
+const Real CHAR_TO_PT =1.0;
 
 
 #define PT  *PT_TO_PT
@@ -17,6 +18,7 @@ const Real BIGPOINT_TO_POINT = INCH_TO_PT/ INCH_TO_BP;
 #define CM  *CM_TO_PT
 #define INCH *INCH_TO_PT
 #define BIGPOINT *BIGPOINT_TO_POINT
+#define CHAR *CHAR_TO_PT
 
 String print_dimen (Real);
 
index fc832a5426096ea626327977638eeb79eccf4db2..fc4a713f217bcbda50e4fae9e7ee30c6b95cd2be 100644 (file)
@@ -28,6 +28,8 @@ public:
   void add_element (Score_element*);
 };
 
+Group_interface group (Score_element*);
+
 /*
   template<class T>
   Link_array<T> Group_interface__extract_elements (T *, String name);
diff --git a/lily/include/tie-column.hh b/lily/include/tie-column.hh
new file mode 100644 (file)
index 0000000..11d17ed
--- /dev/null
@@ -0,0 +1,29 @@
+
+/*   
+  tie-column.hh -- declare Tie_column
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef TIE_COLUMN_HH
+#define TIE_COLUMN_HH
+
+#include "spanner.hh"
+
+class Tie_column : public Spanner
+{
+public:
+  VIRTUAL_COPY_CONS (Score_element);
+  void add_tie (Score_element*);
+  Tie_column ();
+protected:
+  virtual void do_post_processing ();
+  void set_directions ();
+  
+};
+
+#endif /* TIE_COLUMN_HH */
+
index 9e8586ee2b2eafd0e7e3e80938233699fb9609dd..f074bab26a7c55b2b858ea5079339f83016898f9 100644 (file)
@@ -42,38 +42,6 @@ Lookup::Lookup (Lookup const& s)
 }
 
 
-/*
-  build a ledger line for small pieces.
- */
-Molecule
-Lookup::ledger_line (Interval xwid) const
-{
-  Drul_array<Molecule> endings;
-  endings[LEFT] = afm_find ("noteheads-ledgerending");
-  Molecule * e = &endings[LEFT];
-  endings[RIGHT] = *e;
-  
-  Real thick = e->dim_[Y_AXIS].length();
-  Real len = e->dim_[X_AXIS].length () - thick;
-
-  Molecule total;
-  Direction d = LEFT;
-  do {
-    endings[d].translate_axis (xwid[d] - endings[d].dim_[X_AXIS][d], X_AXIS);
-    total.add_molecule (endings[d]);    
-  } while ((flip(&d)) != LEFT);
-
-  Real xpos = xwid [LEFT] + len;
-
-  while (xpos + len + thick /2 <= xwid[RIGHT])
-    {
-      e->translate_axis (len, X_AXIS);
-      total.add_molecule (*e);
-      xpos += len;
-    }
-
-  return total;
-}
 
 
 Molecule
@@ -202,7 +170,7 @@ Lookup::bar (String str, Real h, Paper_def *paper_l) const
 }
 
 Molecule 
-Lookup::beam (Real slope, Real width, Real thick) const
+Lookup::beam (Real slope, Real width, Real thick) 
 {
   Real height = slope * width; 
   Real min_y = (0 <? height) - thick/2;
@@ -227,11 +195,8 @@ Lookup::beam (Real slope, Real width, Real thick) const
 
 
 
-/*
-  FIXME.
- */
 Molecule
-Lookup::dashed_slur (Bezier b, Real thick, Real dash) const
+Lookup::dashed_slur (Bezier b, Real thick, Real dash)
 {
   SCM l = SCM_EOL;
   for (int i= 4; i -- ;)
@@ -253,7 +218,7 @@ Lookup::dashed_slur (Bezier b, Real thick, Real dash) const
 
 
 Molecule
-Lookup::fill (Box b) const
+Lookup::fill (Box b) 
 {
   Molecule m;
   m.dim_ = b;
@@ -262,7 +227,7 @@ Lookup::fill (Box b) const
 
 
 Molecule
-Lookup::filledbox (Box b ) const
+Lookup::filledbox (Box b ) 
 {
   Molecule m;
   
@@ -278,6 +243,33 @@ Lookup::filledbox (Box b ) const
   return m;
 }
 
+Molecule
+Lookup::frame (Box b, Real thick)
+{
+  Molecule m;
+  Direction d = LEFT;
+  Axis a = X_AXIS;
+  while (a < NO_AXES)
+    {
+      do
+       {
+         Axis o = Axis ((a+1)%NO_AXES);
+
+         Box edges;
+         edges[a] = b[a][d] + 0.5 * thick * Interval (-1, 1);
+         edges[o][DOWN] = b[o][DOWN] - thick/2;
+         edges[o][UP] = b[o][UP] + thick/2;      
+         
+         
+         m.add_molecule (filledbox (edges));
+       }
+      while (flip (&d) != LEFT);
+    }
+  return m;
+  
+}
+
+
 /*
    TODO: THIS IS UGLY.  Since the user has direct access to TeX
    strings, we try some halfbaked attempt to detect TeX trickery.
@@ -327,7 +319,7 @@ sanitise_PS_string (String t)
 
 */
 Molecule
-Lookup::text (String style, String text, Paper_def *paper_l) const
+Lookup::text (String style, String text, Paper_def *paper_l) 
 {
   Molecule m;
   if (style.empty_b ())
@@ -384,18 +376,22 @@ Lookup::text (String style, String text, Paper_def *paper_l) const
 
 
 Molecule
-Lookup::staff_brace (Real y, int staff_size) const
+Lookup::staff_brace (Real y, int staff_size) 
 {
   Molecule m;
 
+  // URG
   Real step  = 1.0;
   int minht  = 2 * staff_size;
   int maxht = 7 *  minht;
   int idx = int (((maxht - step) <? y - minht) / step);
   idx = idx >? 0;
 
-
-  String nm = String ("feta-braces" + to_str (staff_size));
+  SCM l = ly_eval_str ("(style-to-cmr \"brace\")");
+  String nm = "feta-braces";
+  if (l != SCM_BOOL_F)
+    nm = ly_scm2string (gh_cdr (l));
+  nm += to_str (staff_size);
   SCM e =gh_list (ly_symbol2scm ("char"), gh_int2scm (idx), SCM_UNDEFINED);
   Atom *at = new Atom (e);
 
@@ -406,13 +402,13 @@ Lookup::staff_brace (Real y, int staff_size) const
   m.add_atom (at->self_scm_);
   return m;
 }
-
 
 /*
   Make a smooth curve along the points 
  */
 Molecule
-Lookup::slur (Bezier curve, Real curvethick, Real linethick) const
+Lookup::slur (Bezier curve, Real curvethick, Real linethick) 
 {
   Real alpha = (curve.control_[3] - curve.control_[0]).arg ();
   Bezier back = curve;
@@ -451,7 +447,7 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick) const
 }
 
 Molecule
-Lookup::staff_bracket (Real height, Paper_def* paper_l) const
+Lookup::staff_bracket (Real height, Paper_def* paper_l)
 {
   Molecule m;
   Atom *at = new Atom  ( gh_list (ly_symbol2scm ("bracket"),
@@ -472,25 +468,6 @@ Lookup::staff_bracket (Real height, Paper_def* paper_l) const
   return m;
 }
 
-Molecule
-Lookup::volta (Real h, Real w, Real thick, bool vert_start, bool vert_end) const
-{
-  Molecule m; 
-
-  Atom *at = new Atom(gh_list (ly_symbol2scm ("volta"),
-                    gh_double2scm (h),
-                    gh_double2scm (w),
-                    gh_double2scm (thick),
-                    gh_int2scm (vert_start),
-                    gh_int2scm (vert_end),
-                    SCM_UNDEFINED));
-
-  m.dim_[Y_AXIS] = Interval (- h/2, h/2);
-  m.dim_[X_AXIS] = Interval (0, w);
-
-  m.add_atom (at->self_scm_);
-  return m;
-}
 
 Molecule
 Lookup::accordion (SCM s, Real staff_space) const
index f748aa4d338659c1b21f16ab0e4551e14eb7d526..f413a5dc9a1a4ff815d0f4f863e2621ca2cf2786 100644 (file)
@@ -32,6 +32,7 @@ static Keyword_ent the_key_tab[]={
   {"alternative", ALTERNATIVE},
   {"bar", BAR},
   {"breathe", BREATHE},
+  {"char", CHAR_T},
   {"chordmodifiers", CHORDMODIFIERS},
   {"chords", CHORDS},
   {"clef", CLEF},
index 7c14708d7f28634f834ea68d72f26f70c963f002..9e9a57d9b1575775a22e49fa8b0211ef1dfe6d8d 100644 (file)
@@ -53,13 +53,13 @@ Paper_outputter::output_header ()
   
   String generate;
   if (no_timestamps_global_b)
-    generate = ".\n";
+    generate = ".";
   else
     {
       generate = _ (", at ");
       time_t t (time (0));
       generate += ctime (&t);
-      //urg
+      generate = generate.left_str (generate.length_i () - 1);
     }
 
   SCM args_scm = 
@@ -153,7 +153,8 @@ Paper_outputter::dump_onto (Paper_stream *ps)
       scm_display (gh_str02scm (
        ";;; Usage: guile -s x.scm > x.tex\n"
        "(primitive-load-path 'lily.scm)\n"
-       "(scm-tex-output)\n"
+       "(scm-as-output)\n"
+       ";(scm-tex-output)\n"
        ";(scm-ps-output)\n"
        "(map (lambda (x) (display (eval x))) '(\n"
        ), port);
@@ -165,7 +166,7 @@ Paper_outputter::dump_onto (Paper_stream *ps)
          scm_display (newline, port);
          scm_flush (port);
        }
-      scm_display (gh_str02scm (")))"), port);
+      scm_display (gh_str02scm ("))"), port);
       scm_display (newline, port);
       scm_flush (port);
       scm_close_port (port);
@@ -191,7 +192,7 @@ Paper_outputter::dump_onto (Paper_stream *ps)
          
          *ps << ly_scm2string (result);
        }
-      *ps << ")))";
+      *ps << "))";
     }
 #endif
   
index 6b11c89d0422909e442b5c6606febcabb95b1157..a3a54d31f98b16bdee5b305bfb0fdc151f724b15 100644 (file)
@@ -139,7 +139,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token BREATHE
 %token CHORDMODIFIERS
 %token CHORDS
-%token HYPHEN
+%token CHAR_T
 %token CLEF
 %token CM_T
 %token CONSISTS
@@ -151,6 +151,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token FONT
 %token GRACE
 %token HEADER
+%token HYPHEN
 %token IN_T
 %token INVALID
 %token KEY
@@ -588,6 +589,9 @@ real_with_dimension:
        | REAL MM_T     {
                $$ = $1 MM;
        }
+       | REAL CHAR_T   {
+               $$ = $1 CHAR;
+       }
        ;
 
 real:
diff --git a/lily/tie-column.cc b/lily/tie-column.cc
new file mode 100644 (file)
index 0000000..be2116e
--- /dev/null
@@ -0,0 +1,36 @@
+/*   
+  tie-column.cc --  implement Tie_column
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "tie-column.hh"
+#include "group-interface.hh"
+
+Tie_column::Tie_column ()
+{
+  set_elt_property ("ties", SCM_EOL);
+}
+
+void
+Tie_column::add_tie (Score_element *s)
+{
+  group (s).add_element (s);
+  s->add_dependency (this);
+}
+
+void
+Tie_column::set_directions ()
+{
+  Link_array<Score_element> s =
+    Group_interface__extract_elements (this, (Score_element*)0, "ties");
+}
+
+void
+Tie_column::do_post_processing ()
+{
+  set_directions ();
+}
index e9e1ab70606ea8bd8c31094a9d45c34fd6324f63..6eb820b71f5819f68526f0d82b001c259b00e5a8 100644 (file)
@@ -5,6 +5,7 @@
 
   (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
+#include <math.h>
 
 #include "lookup.hh"
 #include "paper-def.hh"
@@ -61,20 +62,6 @@ Tie::get_default_dir () const
     return DOWN;
   else
     return UP;
-
-#if 0 
-  Real p1 = Staff_symbol_referencer_interface (head (LEFT)).position_f () ;
-  Real p2 = Staff_symbol_referencer_interface (head (RIGHT)).position_f () ;  
-  
-  int m = int (p1  + p2);
-
-  /*
-    If dir is not determined: inverse of stem: down
-    (see stem::get_default_dir ())
-   */
-  Direction neutral_dir = (Direction)(int)paper_l ()->get_var ("stem_default_neutral_direction");
-  return (m == 0) ? other_dir (neutral_dir) : (m < 0) ? DOWN : UP;
-#endif
 }
 
 void
@@ -131,45 +118,6 @@ Tie::do_post_processing()
     OSU: not different for outer notes, so why all this code?
     ie,  can we drop this, or should it be made switchable.
    */
-#if 0
-  Direction d = LEFT;
-  do
-    {
-      Real head_width_f = head (d)
-       ? head (d)->extent (X_AXIS).length ()
-       : 0;
-      /*
-       side attached to outer (upper or lower) notehead of chord
-      */
-      if (head (d)
-         /*
-
-               a~a~a;
-
-           to second tie, middle notehead seems not extremal
-
-           Getting scared a bit by score-element's comment:
-           // is this a good idea?
-         */
-         // FIXME extremal deprecated
-         && (head (d)->get_elt_property ("extremal")
-             != SCM_UNDEFINED))
-       {
-       if (d == LEFT)
-           dx_f_drul_[d] += head_width_f;
-         dx_f_drul_[d] += -d * x_gap_f;
-       }
-      /*
-       side attached to inner notehead
-      */
-      else
-       {
-         dx_f_drul_[d] += -d * head_width_f;
-       }
-    } while (flip (&d) != LEFT);
-
-#else
-
   if (head (LEFT))
     dx_f_drul_[LEFT] = head (LEFT)->extent (X_AXIS).length ();
   else
@@ -177,8 +125,6 @@ Tie::do_post_processing()
   dx_f_drul_[LEFT] += x_gap_f;
   dx_f_drul_[RIGHT] -= x_gap_f;
 
-#endif
-
   /* 
    Slur and tie placement [OSU]  -- check this
 
@@ -196,8 +142,8 @@ Tie::do_post_processing()
 
 
   Real ypos = head (LEFT)
-    ? Staff_symbol_referencer_interface (head (LEFT)).position_f ()
-    : Staff_symbol_referencer_interface (head (RIGHT)).position_f () ;  
+    ? staff_symbol_referencer (head (LEFT)).position_f ()
+    : staff_symbol_referencer (head (RIGHT)).position_f () ;  
 
   Real y_f = half_staff_space * ypos; 
   int ypos_i = int (ypos);
@@ -258,101 +204,44 @@ Tie::do_brew_molecule_p () const
 Bezier
 Tie::get_curve () const
 {
-  Bezier_bow b (get_encompass_offset_arr (), directional_element (this).get ());
+  Direction d (directional_element (this).get ());
+  Bezier_bow b (get_encompass_offset_arr (), d);
 
   b.ratio_ = paper_l ()->get_var ("slur_ratio");
   b.height_limit_ = paper_l ()->get_var ("slur_height_limit");
   b.rc_factor_ = paper_l ()->get_var ("slur_rc_factor");
 
   b.calculate ();
-  return b.get_curve ();
-}
-
-#if 0
-
-/*
-  TODO: FIXME.
- */
-
-/*
-  Clipping
-
-  This function tries to address two issues:
-    * the tangents of the slur should always point inwards 
-      in the actual slur, i.e.  *after rotating back*.
-
-    * slurs shouldn't be too high 
-      let's try : h <= 1.2 b && h <= 3 staffheight?
-
-  We could calculate the tangent of the bezier curve from
-  both ends going inward, and clip the slur at the point
-  where the tangent (after rotation) points up (or inward
-  with a certain maximum angle).
-  
-  However, we assume that real clipping is not the best
-  answer.  We expect that moving the outer control point up 
-  if the slur becomes too high will result in a nicer slur 
-  after recalculation.
-
-  Knowing that the tangent is the line through the first
-  two control points, we'll clip (move the outer control
-  point upwards) too if the tangent points outwards.
- */
-
-bool
-Bezier_Tie::calc_clipping ()
-{
-  Real clip_height = paper_l_->get_var ("slur_clip_height");
-  Real clip_ratio = paper_l_->get_var ("slur_clip_ratio");
-  Real clip_angle = paper_l_->get_var ("slur_clip_angle");
-
-  Real b = curve_.control_[3][X_AXIS] - curve_.control_[0][X_AXIS];
-  Real clip_h = clip_ratio * b <? clip_height;
-  Real begin_h = curve_.control_[1][Y_AXIS] - curve_.control_[0][Y_AXIS];
-  Real end_h = curve_.control_[2][Y_AXIS] - curve_.control_[3][Y_AXIS];
-  Real begin_dy = 0 >? begin_h - clip_h;
-  Real end_dy = 0 >? end_h - clip_h;
-  
-  Real pi = M_PI;
-  Real begin_alpha = (curve_.control_[1] - curve_.control_[0]).arg () + dir_ * alpha_;
-  Real end_alpha = pi -  (curve_.control_[2] - curve_.control_[3]).arg () - dir_  * alpha_;
-
-  Real max_alpha = clip_angle / 90 * pi / 2;
-  if ((begin_dy < 0) && (end_dy < 0)
-    && (begin_alpha < max_alpha) && (end_alpha < max_alpha))
-    return false;
+  Bezier c (b.get_curve ());
 
-  transform_back ();
+  /* should do this for slurs as well. */
+  Array<Real> horizontal (c.solve_derivative (Offset (1,0)));
 
-  if ((begin_dy > 0) || (end_dy > 0))
+  if (horizontal.size ())
     {
-      Real dy = (begin_dy + end_dy) / 4;
-      dy *= cos (alpha_);
-      encompass_[0][Y_AXIS] += dir_ * dy;
-      encompass_.top ()[Y_AXIS] += dir_ * dy;
+      /*
+       ugh. Doesnt work for non-horizontal curves.
+       */
+      Real space = staff_symbol_referencer (this).staff_space ();
+      Real y = c.curve_point (horizontal[0])[Y_AXIS];
+
+      Real ry = rint (y/space) * space;
+      Real diff = ry - y;
+      Real newy = y;
+      if (fabs (diff) < paper_l ()->get_var ("tie_staffline_clearance"))
+       {
+         newy = ry - 0.5 * space * sign (diff) ;
+       }
+
+      Real y0 = c.control_ [0][Y_AXIS];
+      c.control_[2][Y_AXIS] = 
+      c.control_[1][Y_AXIS] =
+       (c.control_[1][Y_AXIS] - y0)  * (newy / y) + y0; 
     }
   else
-    {
-      //ugh
-      Real c = 0.4;
-      if (begin_alpha >= max_alpha)
-       begin_dy = 0 >? c * begin_alpha / max_alpha * begin_h;
-      if (end_alpha >= max_alpha)
-       end_dy = 0 >? c * end_alpha / max_alpha * end_h;
-
-      encompass_[0][Y_AXIS] += dir_ * begin_dy;
-      encompass_.top ()[Y_AXIS] += dir_ * end_dy;
-
-      Offset delta = encompass_.top () - encompass_[0];
-      alpha_ = delta.arg ();
-    }
-
-  to_canonic_form ();
-
-  return true;
+    programming_error ("Tie is nowhere horizontal");
+  return c;
 }
-#endif
-
 
 
 Array<Offset>
diff --git a/ly/declarations-as.ly b/ly/declarations-as.ly
new file mode 100644 (file)
index 0000000..ccf8db4
--- /dev/null
@@ -0,0 +1,68 @@
+  
+breve = \duration { -1 0 }
+longa = \duration { -2 0 }
+maxima = \duration { -3 0 }
+
+#(eval-string (ly-gulp-file "generic-property.scm"))
+
+\include "nederlands.ly"               % dutch
+\include "chord-modifiers.ly"
+\include "script.ly"
+
+
+% declarations for standard directions
+left = -1
+right = 1
+up = 1
+down = -1
+start = -1
+stop = 1
+smaller = -1
+bigger = 1
+
+center=0
+
+break =  \penalty  -1000000; 
+nobreak =  \penalty 1000000; 
+
+major = 0
+minor = 3
+
+ionian = 0
+locrian = 1
+aeolian = 3
+mixolydian = 5
+lydian = 7
+phrygian = 8
+dorian = 10
+
+melisma = \property Staff.melismaBusy = ##t
+melismaEnd = \property Staff.melismaBusy = ##f
+
+%papersize = "a4"
+%\include "generic-paper.ly"
+
+#(eval-string (ly-gulp-file "paper.scm"))
+
+\paper {
+       texsetting = "";
+       pssetting = "";
+       scmsetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse;\n";% UGH. 
+}
+
+\include "paper-as9.ly"
+
+% ugh
+\include "midi.ly"
+
+\include "textscripts.ly"
+\include "spanners.ly"
+
+\include "property.ly"
+
+
+
+unusedEntry = \notes { c4 }            % reset default duration
+
+% music = "\melodic\relative c"
+
index a65ad4bd38d05bdd1047e5e4df4ba03dec0173a7..759f8758db0926299b4f19870f39a99965cd39fa 100644 (file)
@@ -95,7 +95,7 @@ RhythmicStaffContext=\translator{
        
        Generic_property_list = #generic-staff-properties
        
-       barSize = \staffheight;
+       barSize = #'staff-height
        \consists "Pitch_squash_engraver";
        \consists "Separating_line_group_engraver";     
        \name RhythmicStaff;
@@ -114,7 +114,6 @@ VoiceContext = \translator {
        dynamicPadding = #5.0
        Generic_property_list = #generic-voice-properties
 
-
        \consists "Dynamic_engraver";   % must come before text_engraver.
        \name Voice ;
        \consists "Property_engraver";
diff --git a/ly/paper-as5.ly b/ly/paper-as5.ly
new file mode 100644 (file)
index 0000000..5c8c5d5
--- /dev/null
@@ -0,0 +1,41 @@
+% paper-as5.ly
+
+\version "1.3.24";
+
+paper_as_five = \paper {
+       staffheight = 5.\char;
+
+       font_large = 1.;
+       font_Large = 1.;        
+       font_normal = 1.;
+       font_script = 1.;
+
+       font_finger = 1.;
+       font_volta = 1.;
+       font_number = 1.;
+       font_mark = 1.;
+
+       % what about:
+       "font_number-1" = 1.;
+       %"font_number" = 10.;
+       "font_number+1" = 1.;
+       
+       % Ugh
+       magnification_dynamic = 2.;
+       
+       % ugh see table20 for sizes
+       quartwidth =  3.\char;
+       wholewidth = 3.\char;
+
+       -2 = \font "as5"
+       -1 = \font "as5"
+       0 = \font "as5"
+
+       "font_feta-2" = 9.;
+       "font_feta-1" = 9.;
+       "font_feta" = 9.;
+
+       \include "params-as.ly";
+}
+
+\paper { \paper_as_five }
diff --git a/ly/paper-as9.ly b/ly/paper-as9.ly
new file mode 100644 (file)
index 0000000..655a642
--- /dev/null
@@ -0,0 +1,41 @@
+% paper-as9.ly
+
+\version "1.3.24";
+
+paper_as_nine = \paper {
+       staffheight = 9.\char;
+
+       font_large = 4.;
+       font_Large = 4.;        
+       font_normal = 4.;
+       font_script = 1.;
+
+       font_finger = 1.;
+       font_volta = 1.;
+       font_number = 4.;
+       font_mark = 4.;
+
+       % what about:
+       "font_number-1" = 1.;
+       %"font_number" = 10.;
+       "font_number+1" = 4.;
+       
+       % Ugh
+       magnification_dynamic = 2.;
+       
+       % ugh see table20 for sizes
+       quartwidth =  3.\char;
+       wholewidth = 3.\char;
+
+       -2 = \font "as9"
+       -1 = \font "as9"
+       0 = \font "as9"
+
+       "font_feta-2" = 9.;
+       "font_feta-1" = 9.;
+       "font_feta" = 9.;
+
+       \include "params-as.ly";
+}
+
+\paper { \paper_as_nine }
diff --git a/ly/params-as.ly b/ly/params-as.ly
new file mode 100644 (file)
index 0000000..94dbfc8
--- /dev/null
@@ -0,0 +1,238 @@
+% params-as.ly
+% generic paper parameters
+
+#'staff-height = \staffheight;
+
+%%paperfile = \papersize + ".ly";
+%%% paperfile = "a4.ly";
+%%\include \paperfile;
+%hsize = 60.0\char;
+%vsize = 60.0\char;  %?
+
+%%\include "paper.ly";
+linewidth = 60.0\char;
+textheight = 60.0\char;
+indent = 8.0\char;
+
+interline = (\staffheight - 1.0 ) / 4.0;
+stafflinethickness = \interline / 2.0;
+
+% urg, need grace_ versions of these too?
+beam_thickness = 0.52 * (\interline - \stafflinethickness);
+
+#'beam-thickness = \beam_thickness;  %% UGR
+
+
+interbeam = (2.0 * \interline + \stafflinethickness - \beam_thickness) / 2.0;
+interbeam4 = (3.0 * \interline - \beam_thickness) / 3.0;
+
+%{
+The space taken by a note is determined by the formula 
+
+arithmetic_multiplier * ( c + log2 (time) ))
+
+where code(time) is the amount of time a note occupies.  The value
+of code(c) is chosen such that the smallest space within a measure is
+arithmetic_basicspace.  The smallest space is the one following the
+shortest note in the measure.  Typically arithmetic_basicspace is set
+to the width of a quarter note head.
+%}
+arithmetic_basicspace = 2.;
+arithmetic_multiplier = 0.9 * \quartwidth ;
+
+
+#'Stem_tremolo::beam-width = 1.5 * \quartwidth ; 
+
+#'Clef_item::visibility-lambda = #postbreak-only-visibility
+#'Key_item::visibility-lambda = #postbreak-only-visibility
+#'Breathing_sign::visibility-lambda = #non-postbreak-visibility
+
+% catch suspect beam slopes, set slope to zero if
+% outer stem is lengthened more than
+beam_lengthened = 0.2 * \interline;
+% and slope is running away steeper than
+beam_steep_slope = 0.2 / 1.0;
+
+%{
+dit(code(slur_x_gap)) Horizontal space between note and slur.  Set to
+code(\interline / 5) by default.  
+
+%}
+% OSU: suggested gap = ss / 5;
+slur_x_gap = \interline / 5.0;
+slur_y_gap = 0.25 * \interline;
+slur_y_free = 0.75 * \interline;
+slur_x_minimum = 1.5 * \interline;
+
+%{
+Like beams, slurs often aren't as steep as the notes they encompass.
+This sets the amount of damping.
+%}
+% slope damping: keep dy/dx < slur_slope_damping
+slur_slope_damping = 0.3;
+slur_interstaff_slope_damping = 0.6;
+% height damping: keep h/dx < slur_height_damping
+slur_height_damping = 0.4;
+slur_interstaff_height_damping = 0.5;
+% snap to stem if slur ends closer to stem than
+slur_snap_to_stem = 1.75 * \interline;
+slur_interstaff_snap_to_stem = 2.5 * \interline;
+% maximum dy change allowed by snapping
+slur_snap_max_slope_change = 0.5;
+slur_interstaff_snap_max_slope_change = 0.5;
+
+
+
+tie_x_minimum = \interline + \slur_x_minimum;
+% OSU: tie gap == slur gap
+tie_x_gap = \slur_x_gap;
+tie_y_gap = 0.25 * \interline;
+% length of a tie that's a staffspace high
+tie_staffspace_length = 4.0 * \interline;
+
+% ugh: rename to bow (in bezier.cc and fonts.doc too...)
+
+% used to be 1.4 .
+slur_thickness = 1.2 * \stafflinethickness;
+tie_thickness = 1.2 * \stafflinethickness;
+
+%{
+ Specifies the maximum height of slurs.
+%}
+slur_height_limit = \staffheight;
+
+
+%{
+Specifes the ratio of slur hight to slur width
+to aim for.  Default value is 0.3. 
+%}
+
+% slur_ratio = 0.3;
+% try bit flatter slurs
+slur_ratio = 0.25;
+slur_clip_ratio = 1.2;
+slur_clip_height = 3.0 * \staffheight;
+slur_clip_angle = 100.0;
+slur_rc_factor = 2.4;
+
+% ugh
+notewidth = 3.0\char;
+
+gourlay_energybound = 100000.;
+%{
+Maximum number of measures per line to try when using Gourlay
+method. 
+%}
+gourlay_maxmeasures = 10.;
+
+bar_kern = 1.0\char;
+bar_thinkern = 1.0\char;
+barthick_thick = 2.0\char;
+barthick_score = 1.0\char;
+barthick_thin = 1.0\char;
+
+bracket_arch_thick = \interline / 3.0;
+bracket_width = 2.0 * \interline;
+bracket_thick = 2.0 * \stafflinethickness;
+bracket_arch_height = 1.5 * \interline;
+bracket_arch_width = \bracket_arch_height;
+bracket_arch_angle = 50.0;
+
+tuplet_spanner_gap = 2.0 * \interline;
+tuplet_thick = 1.0\char;
+volta_thick = 1.0\char;
+volta_spanner_height = 1.0\char;
+
+% relative thickness of thin lines  1.6 : 1 : 0.8
+stemthickness = 1.0\char;
+rulethickness = 1.0\char;
+
+
+extender_height = 0.8*\stafflinethickness;
+
+hyphen_thickness = 0.05*\font_normal;
+hyphen_height = 0.2*\font_normal;
+hyphen_minimum_length = 0.25*\font_normal;
+
+% Multi-measure rests
+multi_measure_rest_x_minimum = 2.5*\staffheight;
+multi_measure_rest_padding = 2.0 *\interline;
+multi_measure_rest_expand_limit = 10.0;
+
+% chop off this much when next to pp / ff sign.
+crescendo_shorten = 4.0 * \interline;
+crescendo_thickness   = \stafflinethickness;
+crescendo_height = 0.666 * \interline;
+
+% in internote.
+restcollision_minimum_dist = 3.0;
+restcollision_minimum_beamdist = 1.5;
+
+
+% unit for note collision resolving
+collision_note_width = \notewidth;     %ugh.
+
+% deprecated!
+postBreakPadding = 0.0;
+
+% optical correction amount.
+stemSpacingCorrection = 0.5*\interline;
+
+
+%{
+ relative strength of space following breakable columns (eg. prefatory matter)
+ %}
+breakable_column_space_strength = 2.0; 
+
+% space after inline clefs and such get this much stretched
+decrease_nonmus_spacing_factor = 1.0 ;
+
+%{
+ space before musical columns (eg. taken by accidentals) get this much
+ stretched when they follow a musical column, in absence of grace notes.
+
+ 0.0 means no extra space (accidentals are ignored)
+%}
+musical_to_musical_left_spacing_factor = 0.4;
+
+%{
+ stretch space this much if there are grace notes before the column
+%}
+before_grace_spacing_factor = 1.2;
+
+%{
+If columns do not have spacing information set, set it to this much
+%}
+loose_column_distance = 2.0 * \interline;
+
+%{
+Relative cost of compressing (vs. stretching).  Increasing this
+will cause scores to be set looser
+.
+%}
+
+compression_energy_factor = 0.6;
+
+% if stem is on middle line, choose this direction.
+stem_default_neutral_direction = 1.0;
+
+% in interline
+articulation_script_padding_default = 1.0;
+
+% Backward compatibility -- has no function; 
+Gourlay = 0.0;
+Wordwrap =0.0;
+
+\include "engraver.ly";
+
+
+#'margin-shape = #'()
+
+
+% 
+#'Local_key_item::left-padding = #'0.2
+#'Local_key_item::right-padding = #'0.4
+
+#'Staff_symbol::staff-space = \interline ;
+#'Staff_symbol::line-count = #5
+
index e38599966666d3293d9479620c4db051d122b25c..988e697e098c08c4fcfd7f59b949b65eb3a934e4 100644 (file)
@@ -1,6 +1,8 @@
 % params.ly
 % generic paper parameters
 
+#'staff-height = \staffheight;
+
 paperfile = \papersize + ".ly";
 % paperfile = "a4.ly";
 \include \paperfile;
@@ -74,6 +76,7 @@ slur_interstaff_snap_to_stem = 2.5 * \interline;
 % maximum dy change allowed by snapping
 slur_snap_max_slope_change = 0.5;
 slur_interstaff_snap_max_slope_change = 0.5;
+slur_thickness = 1.2 * \stafflinethickness;
 
 
 
@@ -87,8 +90,8 @@ tie_staffspace_length = 4.0 * \interline;
 % ugh: rename to bow (in bezier.cc and fonts.doc too...)
 
 % used to be 1.4 .
-slur_thickness = 1.2 * \stafflinethickness;
 tie_thickness = 1.2 * \stafflinethickness;
+tie_staffline_clearance = 2.0 *\tie_thickness;
 
 %{
  Specifies the maximum height of slurs.
@@ -100,7 +103,6 @@ slur_height_limit = \staffheight;
 Specifes the ratio of slur hight to slur width
 to aim for.  Default value is 0.3. 
 %}
-
 % slur_ratio = 0.3;
 % try bit flatter slurs
 slur_ratio = 0.25;
index 81fd8abf3bc2d6dd22f56392a5c85d06dd554883..e1883dc80c47548cbec386deda44a87915f75970 100644 (file)
@@ -2,7 +2,9 @@
 
 depth = ..
 
-STEPMAKE_TEMPLATES=metafont metapost install install-out
+STEPMAKE_TEMPLATES=metafont metapost asciifont install install-out
+
+AF_FILES = $(wildcard *.af) 
 
 EXTRA_DIST_FILES += README feta.tex
 
@@ -12,7 +14,7 @@ XPM_FONTS = feta20
 
 LOG_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.log))
 TEXTABLES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.tex))
-AFM_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.afm)
+AFM_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.afm) $(AF_FILES:.af=.afm))
 TFM_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.tfm))
 PFA_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.pfa)) 
 
@@ -20,7 +22,7 @@ ALL_GEN_FILES= $(TEXTABLES) $(LOG_FILES) $(AFM_FILES) $(TFM_FILES) $(PFA_FILES)
 
 #PRE_INSTALL=$(MAKE) "$(ALL_GEN_FILES)"
 INSTALLATION_DIR=$(datadir)/mf/
-INSTALLATION_FILES=$(MF_FILES)
+INSTALLATION_FILES=$(MF_FILES) $(AF_FILES)
 
 INSTALLATION_OUT_SUFFIXES=1 2 3 4
 
diff --git a/mf/as-braces9.af b/mf/as-braces9.af
new file mode 100644 (file)
index 0000000..3bd0f3c
--- /dev/null
@@ -0,0 +1,126 @@
+       Comment as-braces9.af -- AsciiFont: braces for height 9
+
+       Comment part of LilyPond's [ascii music font]
+
+       Comment (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
+
+       Comment Lines that start with TAB or FF make up the .afm
+       Comment TABs are comments
+       Comment `Comment' is the afm comment prefix
+       Comment which makes `TAB Comment' an .afm comment
+
+       StartFontMetrics 2.0
+       FontName as-braces 9
+       FontFamily as-braces
+       StartCharMetrics 10
+
+       Comment BBox: (llx lly urx ury) * 1000
+\f C 0; WX 1; N Brace-9; B 0 -4500 1000 4500;
+/
+|
+|
+|
+|
+|
+|
+|
+|
+|
+\
+\f C 1; WX 1; N Brace-10; B 0 -5000 1000 5000;
+/
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+\
+\f C 2; WX 1; N Brace-11; B 0 -5500 1000 5500;
+/
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+\
+\f C 3; WX 1; N Brace-12; B 0 -6000 1000 6000;
+/
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+\
+\f C 4; WX 1; N Brace-13; B 0 -6500 1000 6500;
+/
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+\
+\f C 5; WX 1; N Brace-14; B -1000 -3000 1000 14000;
+X5
+\f C 6; WX 1; N Brace-15; B -1000 -3000 1000 14000;
+X6
+\f C 7; WX 1; N Brace-16; B -1000 -3000 1000 14000;
+/
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+\
+\f C 8; WX 1; N Brace-17; B -1000 -3000 1000 14000;
+X8
+\f C 9; WX 1; N Brace-18; B -1000 -3000 1000 14000;
+X9
+       EndCharMetrics
+       EndFontMetrics %d
+
diff --git a/mf/as-number1.af b/mf/as-number1.af
new file mode 100644 (file)
index 0000000..dbcf6cc
--- /dev/null
@@ -0,0 +1,47 @@
+       Comment as-number1.af -- AsciiFont: numerals of height 1
+
+       Comment part of LilyPond's [ascii music font]
+
+       Comment (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
+
+       Comment Lines that start with TAB or FF make up the .afm
+       Comment TABs are comments
+       Comment `Comment' is the afm comment prefix
+       Comment which makes `TAB Comment' an .afm comment
+
+       StartFontMetrics 2.0
+       FontName as-number 1
+       FontFamily as-number
+       StartCharMetrics 14
+
+       Comment BBox: (llx lly urx ury) * 1000
+\f C 44; WX 1; N Comma; B 0 0 1000 1000;
+,
+\f C 45; WX 1; N Dash; B 0 0 1000 1000;
+-
+\f C 46; WX 1; N Dot; B 0 0 1000 1000;
+.
+\f C 47; WX 1; N Slash; B 0 0 1000 1000;
+/
+\f C 48; WX 1; N Numeral-0; B 0 0 1000 1000;
+0
+\f C 49; WX 1; N Numeral-1; B 0 0 1000 1000;
+1
+\f C 50; WX 1; N Numeral-2; B 0 0 1000 1000;
+2
+\f C 51; WX 1; N Numeral-3; B 0 0 1000 1000;
+3
+\f C 52; WX 1; N Numeral-4; B 0 0 1000 1000;
+4
+\f C 53; WX 1; N Numeral-5; B 0 0 1000 1000;
+5
+\f C 53; WX 1; N Numeral-6; B 0 0 1000 1000;
+6
+\f C 53; WX 1; N Numeral-7; B 0 0 1000 1000;
+7
+\f C 53; WX 1; N Numeral-8; B 0 0 1000 1000;
+8
+\f C 53; WX 1; N Numeral-9; B 0 0 1000 1000;
+9
+       EndCharMetrics
+       EndFontMetrics %d
diff --git a/mf/as-number4.af b/mf/as-number4.af
new file mode 100644 (file)
index 0000000..8e58b1b
--- /dev/null
@@ -0,0 +1,91 @@
+       Comment as-number4.af -- AsciiFont: numerals of height 4
+
+       Comment part of LilyPond's [ascii music font]
+
+       Comment (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
+
+       Comment Lines that start with TAB or FF make up the .afm
+       Comment TABs are comments
+       Comment `Comment' is the afm comment prefix
+       Comment which makes `TAB Comment' an .afm comment
+
+       StartFontMetrics 2.0
+       FontName as-number 4
+       FontFamily as-number
+       StartCharMetrics 14
+
+       Comment BBox: (llx lly urx ury) * 1000
+\f C 44; WX 1; N Comma; B 0 -1000 1000 1000;
+**
+ /
+\f C 45; WX 1; N Dash; B 0 -1000 1000 1000;
+**
+\f C 46; WX 1; N Dot; B 0 -1000 1000 1000;
+**
+**
+\f C 47; WX 1; N Slash; B 0 -1000 1000 1000;
+   /
+  /
+ /
+/
+\f C 48; WX 1; N Numeral-0; B 0 1000 5000 5000;
+  __
+ /  \
+|    |
+ \__/
+\f C 49; WX 1; N Numeral-1; B 0 1000 5000 5000; 
+  _
+ /|
+/ |
+__|__
+\f C 50; WX 1; N Numeral-2; B 0 1000 5000 5000;
+  ___
+ /   )
+ _.-'
+(____.
+\f C 51; WX 1; N Numeral-3; B 0 0 5000 5000; 
+ ___
+'   )
+ --(
+.___)
+\f C 52; WX 1; N Numeral-4; B 0 0 5000 5000;
+  _
+ / |
+/__|_
+___|_
+\f C 53; WX 1; N Numeral-5; B 0 1000 5000 5000;
+ ____
+(___
+    \
+.___/
+\f C 53; WX 1; N Numeral-6; B 0 1000 5000 5000;
+  ___
+ /__
+/   \
+\___/
+\f C 53; WX 1; N Numeral-7; B 0 1000 5000 5000;
+____
+   /
+ -/-
+ /
+\f C 53; WX 1; N Numeral-8; B 0 1000 5000 5000;
+  __
+ (__)
+/    \
+\____/
+\f C 53; WX 1; N Numeral-9; B 0 1000 5000 5000;
+ ___
+/   \
+\___/
+___/
+       EndCharMetrics
+       EndFontMetrics %d
+----------------------------------------------------------------------
+  __      _      ___    ___     _     ____    ___  ____    __     ___
+ /  \    /|     /   )  '   )   / |   (___    /__      /   (__)   /   \
+|    |  / |     _.-'    --(   /__|_      \  /   \   -/-  /    \  \___/
+ \__/   __|__  (____.  .___)  ___|_  .___/  \___/   /    \____/  ___/
+----------------------------------------------------------------------
+
+
+
diff --git a/mf/as9.af b/mf/as9.af
new file mode 100644 (file)
index 0000000..187f470
--- /dev/null
+++ b/mf/as9.af
@@ -0,0 +1,285 @@
+       Comment as9.af -- AsciiFont: music font of height 9
+
+       Comment part of LilyPond's [ascii music font]
+
+       Comment (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
+
+       Comment Lines that start with TAB or FF make up the .afm
+       Comment TABs are comments
+       Comment `Comment' is the afm comment prefix
+       Comment which makes `TAB Comment' an .afm comment
+
+       StartFontMetrics 2.0
+       FontName as 9
+       FontFamily as
+       StartCharMetrics 56
+
+       Comment BBox: (llx lly urx ury) * 1000
+\f C 0; WX 7; N rests-0; B 0 -1000 5000 1000;
+-----
+ '''
+\f C 1; WX 7; N rests-1; B 0 0 5000 2000;
+ ,,,
+-----
+\f C 7; WX 5; N rests-2; B 0 0 1000 3000;
+\ 
+< 
+( 
+\f C 8; WX 6; N rests-3; B  0 0 1000 2000;
+__
+\
+\f C 9; WX 7; N rests-4; B 0 -10000 7756 4208;
+__
+\_
+ \
+\f C 10; WX 8; N rests-5; B 0 -10000 8752 9208;
+__
+\_
+ \_
+  \
+\f C 10; WX 8; N rests-5; B 0 -10000 8752 9208;
+__
+\_
+ \_
+  \_
+   \
+\f C 11; WX 9; N rests-6; B 0 -15000 9384 9208;
+__
+\_
+ \_
+  \_
+   \_
+    \
+\f C 16; WX 5; N accidentals-1; B 0 0 1000 1000;
+#
+\f C 17; WX 3; N accidentals-0; B 0 0 1000 1000;
+H
+\f C 18; WX 4; N accidentals--1; B 0 0 1000 2000;
+|
+|)
+\f C 19; WX 7; N accidentals--2; B 0 0 2000 3000;
+||
+|))
+\f C 20; WX 5; N accidentals-2; B 0 -2500 5000 2500;
+x
+\f C 21; WX 3; N accidentals-); B 0 -5000 3000 5000;
+(
+\f C 22; WX 3; N accidentals-(; B -3000 -5000 0 5000;
+)
+\f C 23; WX 2; N dots-dot; B -500 -500 500 500;
+.
+\f C 24; WX 1; N dots-repeatcolon; B 0 1000 1000 4000;
+*
+
+*
+\f C 31; WX 5; N noteheads-ledgerending; B -2500 -500 2500 500;
+-
+\f C 33; WX 9; N noteheads-0; B 1000 -500 5000 500;
+(O)
+\f C 34; WX 6; N noteheads-1; B 1000 -500 5000 500;
+(O)
+\f C 35; WX 6; N noteheads-2; B 1000 0 5000 1000;
+(*)
+\f C 36; WX 9; N noteheads-0diamond; B 0 -1000 4000 1000;
+<o>
+\f C 37; WX 7; N noteheads-1diamond; B 0 -2750 7081 2750;
+<o>
+\f C 38; WX 6; N noteheads-2diamond; B 0 -2750 6605 2750;
+<*>
+\f C 39; WX 6; N noteheads-2cross; B 0 -2750 6605 2750;
+[x]
+\f C 40; WX 13; N scripts-ufermata; B -6625 -375 6625 7250;
+ ___
+/ . \
+\f C 41; WX 13; N scripts-dfermata; B -6625 -7250 6625 375;
+  .
+\___/
+\f C 43; WX 8; N scripts-sforzato; B -4499 -2500 4499 2500;
+>
+\f C 44; WX 1; N scripts-staccato; B -750 -750 750 750;
+.
+\f C 45; WX 2; N scripts-ustaccatissimo; B -1000 -200 1000 5000;
+^
+\f C 46; WX 2; N scripts-dstaccatissimo; B -1000 -5000 1000 200;
+v
+\f C 47; WX 6; N scripts-tenuto; B -3000 -350 3000 350;
+---
+\f C 48; WX 5; N scripts-umarcato; B -2500 0 2500 5500;
+|
+\f C 49; WX 5; N scripts-dmarcato; B -2500 -5500 2500 0;
+|
+\f C 50; WX 4; N scripts-open; B -2000 -2500 2000 2500;
+o
+\f C 51; WX 5; N scripts-stopped; B -2750 -2750 2750 2750;
++
+\f C 52; WX 6; N scripts-upbow; B -3250 0 3250 10400;
+\/
+\f C 53; WX 7; N scripts-downbow; B -3750 0 3750 6666;
+ _
+| |
+\f C 56; WX 10; N scripts-trill; B -5000 0 5000 11250;
+\/\
+\f C 61; WX 5; N scripts-flageolet; B -2666 -2666 2666 2666;
+o
+\f C 81; WX 6; N flags-u3; B 1000 -5000 4000 0;
+\
+ \
+  |
+  |
+ /
+\f C 82; WX 6; N flags-u4; B 1000 -5000 4000 0;
+\
+\\
+ \|
+  |
+ /
+\f C 83; WX 6; N flags-u5; B 1000 -5000 4000 0;
+\
+\\
+\\|
+ \|
+ /
+\f C 84; WX 6; N flags-u6; B 1000 -5000 4000 0;
+\
+\\
+\\|
+\\|
+ /
+\f C 86; WX 7; N flags-d3; B 1000 0 4000 5000;
+ \
+  |
+  |
+ /
+/
+\f C 87; WX 7; N flags-d4; B 1000 5000 3000 0;
+ \
+  |
+ /|
+//
+/
+\f C 88; WX 7; N flags-d5; B 1000 5000 3000 0;
+ \
+ /|
+//|
+//
+/
+\f C 89; WX 7; N flags-d6; B 1000 5000 3000 0;
+ \
+//|
+//|
+//
+/
+\f C 91; WX 13; N clefs-C; B 0 7000 7000 -3000;
+#|  __
+#| *  \ 
+#|     |
+#| ___/ 
+#|<___
+#|    \
+#|     |
+#| *__/
+#|
+\f C 92; WX 10; N clefs-C_change; B 0 7000 7000 -3000;
+   __
+#|*  \
+#| __/
+#|<__
+#|   \
+#|*__/
+\f C 93; WX 10; N clefs-F; B 0 -3000 7000 3000;
+  ___   
+ /   \ .
+ \*   | 
+     / .
+    /   
+   /    
+  /     
+_/      
+\f C 94; WX 8; N clefs-F_change; B 0 7000 7000 -3000;
+ __  
+(* |:
+  /  
+ /
+/    
+\f C 95; WX 1; N clefs-G; B 0 -3000 7000 10000;
+     _
+    / \
+    | /
+    |/
+    |
+   /|
+  / |
+ /  |
+|  .+._ 
+| ( |  |
+ \__|_/
+    |
+  *_|
+\f C 96; WX 10; N clefs-G_change; B 0 7000 7000 -3000;
+   /\ 
+   |/ 
+   /  
+  /|  
+ / |_ 
+| (| \
+ \_|_/
+ *_|  
+\f C 97; WX 17; N timesig-C4/4; B 0 7000 7000 -3000;
+  ___
+ /   \
+|
+ \___/
+\f C 98; WX 17; N timesig-C2/2; B 0 7000 7000 -3000;
+  _|_ 
+ / | \
+|  |  
+ \_|_/
+   |  
+       EndCharMetrics
+       EndFontMetrics %d
+
+       Comment Missing characters
+C 2; WX 7; N rests-0o; B 0 -3125 7500 500;
+C 3; WX 7; N rests-1o; B 0 -500 7500 3125;
+C 4; WX 3; N rests--1; B 0 0 3000 5000;
+C 5; WX 3; N rests--2; B 0 -5000 3000 5000;
+C 6; WX 40; N rests--4; B -20000 -5000 20000 5000;
+C 12; WX 10; N rests-7; B 0 -15000 10447 14208;
+C 54; WX 10; N scripts-reverseturn; B -5468 -2647 5468 2647;
+C 55; WX 10; N scripts-turn; B -5468 -2647 5468 2647;
+C 13; WX 4; N rests-2mensural; B 0 0 4000 4000;
+C 14; WX 4; N rests-3mensural; B 0 0 4000 4000;
+C 15; WX 4; N rests-4mensural; B 0 0 4000 5000;
+C 32; WX 9; N noteheads--1; B 0 -2750 9900 2750;
+C 62; WX 10; N scripts-repeatsign; B -5000 -5000 5000 5000;
+C 63; WX 10; N scripts-segno; B -5000 -7500 5000 7500;
+C 64; WX 10; N scripts-coda; B -5083 -6750 5083 6750;
+C 65; WX 4; N scripts-trilelement; B -3333 -2500 1306 2500;
+C 66; WX 11; N scripts-prall; B -5653 -2500 5653 2500;
+C 67; WX 11; N scripts-mordent; B -5653 -2500 5653 2500;
+C 68; WX 15; N scripts-prallprall; B -7973 -2500 7973 2500;
+C 69; WX 15; N scripts-prallmordent; B -7973 -2500 7973 2500;
+C 70; WX 15; N scripts-upprall; B -7973 -2500 7973 2500;
+C 71; WX 15; N scripts-downprall; B -7973 -2500 7973 2500;
+C 72; WX 15; N scripts-accDiscant; B -7500 0 7500 15000;
+C 73; WX 5; N scripts-accDot; B -2500 0 2500 0;
+C 74; WX 10; N scripts-accFreebase; B -5000 0 5000 10000;
+C 75; WX 20; N scripts-accStdbase; B -10000 0 10000 20000;
+C 76; WX 10; N scripts-accBayanbase; B -5000 0 5000 15000;
+C 77; WX 15; N scripts-accSB; B -7999 0 7999 11999;
+C 78; WX 15; N scripts-accBB; B -7999 0 7999 11999;
+C 79; WX 10; N scripts-accOldEE; B -5000 0 5000 10000;
+C 80; WX 10; N scripts-accOldEES; B -5000 0 5000 10000;
+C 85; WX 9; N flags-ugrace; B -3512 -10800 6169 -5000;
+C 90; WX 10; N flags-dgrace; B -3907 4950 6827 10260;
+C 99; WX 17; N timesig-old4/4; B -8750 -3750 8750 3750;
+C 100; WX 17; N timesig-old2/2; B -8750 -5000 8750 5000;
+C 101; WX 17; N timesig-old3/2; B -8750 -3750 8750 3750;
+C 102; WX 17; N timesig-old6/4; B -8750 -3750 8750 3750;
+C 103; WX 17; N timesig-old9/4; B -8750 -3750 8750 3750;
+C 104; WX 17; N timesig-old3/4; B -8750 -5000 8750 5000;
+C 105; WX 17; N timesig-old6/8; B -8750 -5000 8750 5000;
+C 106; WX 17; N timesig-old9/8; B -8750 -5000 8750 5000;
+C 107; WX 17; N timesig-old4/8; B -8750 -3750 8750 3750;
+C 108; WX 17; N timesig-old6/8alt; B -8750 -3750 8750 3750;
+C 109; WX 17; N timesig-old2/4; B -8750 -5000 8750 5000;
index b1cdd49fbc1befe81933133826ee94c0bc84e406..c7fa397902d35d8277c1c9a1c4c0a993bf1fece3 100644 (file)
@@ -35,9 +35,9 @@ if test = 0:
        input feta-klef;
        input feta-timesig;
 else:
-%      input feta-bolletjes;   
+       input feta-bolletjes;   
 %      input feta-banier;
-       input feta-eindelijk;
+%      input feta-eindelijk;
 %      input feta-klef;
 %      input feta-toevallig;
 %      input feta-schrift;
index 1d3d4ee91ac3a6ea7797bdffcb32685d201874b9..87da9140e04d31c0f2a06d0d58d2c4751eb2ae62 100644 (file)
@@ -25,7 +25,7 @@ global = \notes {
   
 melody = \notes\relative c''{
   \clef violin;
-  \property Voice.verticalDirection = 1
+  \property Voice.verticalDirection = #1
   \property Voice.graceFraction = "1/4"
   r2 r r 
   r2 r r
@@ -111,14 +111,15 @@ accompany = \notes \relative c{
       \context Staff=up <
         \global
         \context Voice=foo {
-         \property Voice.verticalDirection = 1
-         \property Voice.scriptVerticalDirection = 1
+         \property Voice.verticalDirection = #1
+         \property Voice.scriptVerticalDirection = #1
          \melody 
        }
       >
       \context Staff=down <
         \global
        \clef bass;
+       \property Voice.slurVerticalDirection = #1
         \accompany
       >
     >
@@ -139,8 +140,8 @@ accompany = \notes \relative c{
       defaultBarType = "empty";
       \remove "Time_signature_engraver";
 
-      slurVerticalDirection = 1;
-      verticalDirection = -1;
+      slurVerticalDirection = #1
+      verticalDirection = #-1
       beamAutoEnd = #(make-moment 1 2)
     }
   }
index 46767793e7cb04cf8e049b2581aafe7aff6307d4..809e99cace03d8b1583c9603956461cf83ef68e3 100644 (file)
@@ -1,7 +1,7 @@
 # bin/Makefile
 
 depth = ..
-SEXECUTABLES=convert-mudela mudela-book ly2dvi  abc2ly 
+SEXECUTABLES=convert-mudela mudela-book ly2dvi abc2ly as2text
 STEPMAKE_TEMPLATES=script help2man
 HELP2MAN_EXECS = $(SEXECUTABLES)
 
diff --git a/stepmake/stepmake/asciifont-rules.make b/stepmake/stepmake/asciifont-rules.make
new file mode 100644 (file)
index 0000000..4143f14
--- /dev/null
@@ -0,0 +1,3 @@
+$(outdir)/%.afm: %.af
+       grep '[[:cntrl:]]' $< | sed 's/^[[:cntrl:]] *//' > $@
+#      grep '[[:cntrl:]]' $< | sed 's/^. *//' > $@
diff --git a/stepmake/stepmake/asciifont-vars.make b/stepmake/stepmake/asciifont-vars.make
new file mode 100644 (file)
index 0000000..f414fcf
--- /dev/null
@@ -0,0 +1,2 @@
+AF_FILES := $(wildcard *.af)
+EXTRA_DIST_FILES += $(AF_FILES)
index a3aeb73bf6b1c7ff5fec98199ce86d459167413d..a582c885bc9ffd00ebbf55cd88f305caa3595606 100644 (file)
@@ -23,6 +23,6 @@ $(outdir)/%.$(XPM_RESOLUTION)gf: %.mf
 $(outdir)/%.$(XPM_RESOLUTION)pk: $(outdir)/%.$(XPM_RESOLUTION)gf
        gftopk $< $@
 
-%.afm:
-       $(SHELL) $(depth)/buildscripts/tfmtoafm.sh $(shell basename $@ .afm)
-       mv $@ $@.in
+#%.afm:
+#      $(SHELL) $(depth)/buildscripts/tfmtoafm.sh $(shell basename $@ .afm)
+#      mv $@ $@.in