]> git.donarmstrong.com Git - lilypond.git/commitdiff
patch::: 1.3.43.jcn1
authorJan Nieuwenhuizen <janneke@gnu.org>
Wed, 12 Apr 2000 15:11:38 +0000 (17:11 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 12 Apr 2000 15:11:38 +0000 (17:11 +0200)
1.3.43.jcn1
===========

* Added a Piano_pedal_engraver.

* Removed some empty files.

* Created piano pedal symbols: * - . P e d.

* Fixed ps-to-pfa.py to handle multiple unfills.

* 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.

36 files changed:
CHANGES
VERSION
buildscripts/ps-to-pfa.py
input/test/ped.ly [new file with mode: 0644]
input/test/pedal.ly [new file with mode: 0644]
lily/include/axis-group-item.hh
lily/include/axis-group-spanner.hh
lily/include/notename-table.hh
lily/include/priority-halign-engraver.hh
lily/include/rhythmic-head.hh
lily/lexer.ll
lily/lookup.cc
lily/new-span-bar-engraver.cc
lily/notename-table.cc
lily/piano-pedal-engraver.cc [new file with mode: 0644]
lily/piano-pedal-performer.cc
lily/span-score-bar-engraver.cc
ly/engraver.ly
mf/GNUmakefile
mf/feta-accordion.mf
mf/feta-generic.mf
mf/feta-macros.mf
mf/feta-nummer-generic.mf
mf/feta-nummer.mf
mf/feta-params.mf
mf/feta-pendaal.mf [new file with mode: 0644]
mf/feta-schrift.mf
mf/feta-test11.mf [new file with mode: 0644]
mf/feta-test13.mf
mf/feta-test23.mf [new file with mode: 0644]
mf/feta-test26.mf
scm/generic-property.scm
scm/paper.scm
stepmake/stepmake/metafont-vars.make
tex/p.tex [new file with mode: 0644]
tex/pedal.tex [new file with mode: 0644]

diff --git a/CHANGES b/CHANGES
index eabea191bf9b067aea3b043e86a4cc5ded232957..c9d7f0f36a8c63eda828ce8e53dbf8ba915b0e75 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,20 @@
+1.3.43.jcn1
+===========
+
+* Added a Piano_pedal_engraver.
+
+* Removed some empty files.
+
+* Created piano pedal symbols: * - . P e d.
+
+* Fixed ps-to-pfa.py to handle multiple unfills.
+
+* 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.
+
 1.3.43
 ======
 
diff --git a/VERSION b/VERSION
index 5cad32c1ab5b457c05167e0a7e074b6d40355f20..dd77d048bee4ad1ac0eddd91c024b361bf57061d 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PATCH_LEVEL=43
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=jcn1
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index bab745820d330d367b83a040974b8da639da38f0..796c5d8b3770426b7dec2792e60d636da579fedf 100755 (executable)
@@ -122,8 +122,7 @@ end                                         % of font dictionary
        f.write (''
 'exch definefont pop                         % Define the font\n')
 
-
-suspect_re = re.compile ('closepath (.*?) 1 setgray newpath (.*?) closepath fill')
+suspect_re = re.compile ('closepath ((gsave )*fill( grestore stroke)*) 1 setgray newpath (.*?) closepath fill')
 
 def characters (f):
        sys.stderr.write ('[')
@@ -153,7 +152,7 @@ def characters (f):
                        m = suspect_re.search (s)
                        while m:
                                fill = m.group (1)
-                               path = m.group (2)
+                               path = m.group (4)
 
                                # be complicated, in case of gsave/grestore.
                                # vill as quick hack to avoid duple substitutions.
diff --git a/input/test/ped.ly b/input/test/ped.ly
new file mode 100644 (file)
index 0000000..40410a3
--- /dev/null
@@ -0,0 +1,14 @@
+\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;
+}
+}
diff --git a/input/test/pedal.ly b/input/test/pedal.ly
new file mode 100644 (file)
index 0000000..cd73982
--- /dev/null
@@ -0,0 +1,14 @@
+\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;
+}
+}
index 09c7cfafd0cb2ee13152e399db7d99198272b2fd..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-#error
index 65296f81060baccd891380179b283fc7515acef0..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,2 +0,0 @@
-
-#error
index 8b137891791fe96927ad78e64b0aad7bded08bdc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-
index 09c7cfafd0cb2ee13152e399db7d99198272b2fd..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-#error
index 2435085d57cc27e1fae565d887f84c5c6a9743e8..bb34f17efe4692791d876b907e5c95def2ee2a74 100644 (file)
 
 #include "item.hh"
 
+/*
+  Why don't I have a 
+  VIRTUAL_COPY_CONS (Score_element);
+  see also note-head, rest.
+  ?
+*/
 
 class Rhythmic_head : public Item
 {
index 1f75b5d39be343abb967de051c805834056c70cc..23692d60d74c93cc9041d9c20594094494ad5cf6 100644 (file)
@@ -25,7 +25,6 @@
 #include <stdio.h>
 #include <ctype.h>
 
-#include "notename-table.hh"
 #include "lily-guile.hh"
 #include "string.hh"
 #include "string-convert.hh"
index 8be036fa7805a66e99fe1f24b4a1fea3f09c343f..166af27043c12223fa57c58a0d667fe424853e7a 100644 (file)
@@ -365,11 +365,11 @@ Lookup::accordion (SCM s, Real staff_space) const
 
   if (sym == "Discant")
     {
-      Molecule r = afm_find("scripts-accDiscant");
+      Molecule r = afm_find("accordion-accDiscant");
       m.add_molecule(r);
       if (reg.left_str(1) == "F")
        {
-         Molecule d = afm_find("scripts-accDot");
+         Molecule d = afm_find("accordion-accDot");
          d.translate_axis(staff_space * 2.5 PT, Y_AXIS);
          m.add_molecule(d);
          reg = reg.right_str(reg.length_i()-1);
@@ -397,27 +397,27 @@ Lookup::accordion (SCM s, Real staff_space) const
        }
       if (eflag & 0x02)
        {
-         Molecule d = afm_find("scripts-accDot");
+         Molecule d = afm_find("accordion-accDot");
          d.translate_axis(staff_space * 1.5 PT, Y_AXIS);
          m.add_molecule(d);
        }
       if (eflag & 0x04)
        {
-         Molecule d = afm_find("scripts-accDot");
+         Molecule d = afm_find("accordion-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("scripts-accDot");
+         Molecule d = afm_find("accordion-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("scripts-accDot");
+         Molecule d = afm_find("accordion-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);
@@ -427,7 +427,7 @@ Lookup::accordion (SCM s, Real staff_space) const
        }
       if (reg.left_str(1) == "S")
        {
-         Molecule d = afm_find("scripts-accDot");
+         Molecule d = afm_find("accordion-accDot");
          d.translate_axis(0.5 * staff_space PT, Y_AXIS);
          m.add_molecule(d);
          reg = reg.right_str(reg.length_i()-1);
@@ -435,29 +435,29 @@ Lookup::accordion (SCM s, Real staff_space) const
     }
   else if (sym == "Freebase")
     {
-      Molecule r = afm_find("scripts-accFreebase");
+      Molecule r = afm_find("accordion-accFreebase");
       m.add_molecule(r);
       if (reg.left_str(1) == "F")
        {
-         Molecule d = afm_find("scripts-accDot");
+         Molecule d = afm_find("accordion-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("scripts-accDot");
+         Molecule d = afm_find("accordion-accDot");
          d.translate_axis(staff_space * 0.5 PT, Y_AXIS);
          m.add_molecule(d);
        }
     }
   else if (sym == "Bayanbase")
     {
-      Molecule r = afm_find("scripts-accBayanbase");
+      Molecule r = afm_find("accordion-accBayanbase");
       m.add_molecule(r);
       if (reg.left_str(1) == "T")
        {
-         Molecule d = afm_find("scripts-accDot");
+         Molecule d = afm_find("accordion-accDot");
          d.translate_axis(staff_space * 2.5 PT, Y_AXIS);
          m.add_molecule(d);
          reg = reg.right_str(reg.length_i()-1);
@@ -465,14 +465,14 @@ Lookup::accordion (SCM s, Real staff_space) const
       /* include 4' reed just for completeness. You don't want to use this. */
       if (reg.left_str(1) == "F")
        {
-         Molecule d = afm_find("scripts-accDot");
+         Molecule d = afm_find("accordion-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("scripts-accDot");
+         Molecule d = afm_find("accordion-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);
@@ -482,7 +482,7 @@ Lookup::accordion (SCM s, Real staff_space) const
        }
       if (reg.left_str(1) == "E")
        {
-         Molecule d = afm_find("scripts-accDot");
+         Molecule d = afm_find("accordion-accDot");
          d.translate_axis(staff_space * 0.5 PT, Y_AXIS);
          m.add_molecule(d);
          reg = reg.right_str(reg.length_i()-1);
@@ -490,25 +490,25 @@ Lookup::accordion (SCM s, Real staff_space) const
     }
   else if (sym == "Stdbase")
     {
-      Molecule r = afm_find("scripts-accStdbase");
+      Molecule r = afm_find("accordion-accStdbase");
       m.add_molecule(r);
       if (reg.left_str(1) == "T")
        {
-         Molecule d = afm_find("scripts-accDot");
+         Molecule d = afm_find("accordion-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("scripts-accDot");
+         Molecule d = afm_find("accordion-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("scripts-accDot");
+         Molecule d = afm_find("accordion-accDot");
          d.translate_axis(staff_space * 2 PT, Y_AXIS);
          d.translate_axis(staff_space PT, X_AXIS);
          m.add_molecule(d);
@@ -516,14 +516,14 @@ Lookup::accordion (SCM s, Real staff_space) const
        }
       if (reg.left_str(1) == "E")
        {
-         Molecule d = afm_find("scripts-accDot");
+         Molecule d = afm_find("accordion-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("scripts-accDot");
+         Molecule d = afm_find("accordion-accDot");
          d.translate_axis(staff_space * 0.5 PT, Y_AXIS);
          m.add_molecule(d);
          reg = reg.right_str(reg.length_i()-1);
@@ -533,22 +533,22 @@ Lookup::accordion (SCM s, Real staff_space) const
      for the rectangle */
   else if (sym == "SB")
     {
-      Molecule r = afm_find("scripts-accSB");
+      Molecule r = afm_find("accordion-accSB");
       m.add_molecule(r);
     }
   else if (sym == "BB")
     {
-      Molecule r = afm_find("scripts-accBB");
+      Molecule r = afm_find("accordion-accBB");
       m.add_molecule(r);
     }
   else if (sym == "OldEE")
     {
-      Molecule r = afm_find("scripts-accOldEE");
+      Molecule r = afm_find("accordion-accOldEE");
       m.add_molecule(r);
     }
   else if (sym == "OldEES")
     {
-      Molecule r = afm_find("scripts-accOldEES");
+      Molecule r = afm_find("accordion-accOldEES");
       m.add_molecule(r);
     }
   return m;  
index 8b137891791fe96927ad78e64b0aad7bded08bdc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-
index 8b137891791fe96927ad78e64b0aad7bded08bdc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-
diff --git a/lily/piano-pedal-engraver.cc b/lily/piano-pedal-engraver.cc
new file mode 100644 (file)
index 0000000..6d0327d
--- /dev/null
@@ -0,0 +1,246 @@
+/*   
+  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;
+}
index f5cfd9089587c05076fb5a470062cffd504faa9f..444028b8dee20d7640061a05615ddae086d5081a 100644 (file)
@@ -15,7 +15,7 @@
 /*
   TODO:
     sostenuto
-    una-chorda ?
+    una-chorda / tre-corde
  */
 
 /**
@@ -36,27 +36,27 @@ protected:
 
 private:
   Link_array<Audio_piano_pedal> audio_p_arr_;
-  Span_req* span_start_req_l_;
-  Drul_array<Span_req*> span_req_l_drul_;
+  Span_req* sustain_start_req_l_;
+  Drul_array<Span_req*> sustain_req_l_drul_;
 };
 
 ADD_THIS_TRANSLATOR (Piano_pedal_performer);
 
 Piano_pedal_performer::Piano_pedal_performer ()
 {
-  span_req_l_drul_[START] = 0;
-  span_req_l_drul_[STOP] = 0;
-  span_start_req_l_ = 0;
+  sustain_req_l_drul_[START] = 0;
+  sustain_req_l_drul_[STOP] = 0;
+  sustain_start_req_l_ = 0;
 }
 
 void
 Piano_pedal_performer::do_process_music ()
 {
-  if (span_req_l_drul_[STOP])
+  if (sustain_req_l_drul_[STOP])
     {
-      if (!span_start_req_l_)
+      if (!sustain_start_req_l_)
        {
-         span_req_l_drul_[STOP]->warning (_ ("can't find start of piano_pedal"));
+         sustain_req_l_drul_[STOP]->warning (_ ("can't find start of piano_pedal"));
        }
       else
        {
@@ -64,12 +64,12 @@ Piano_pedal_performer::do_process_music ()
          p->type_b_ = false;
          audio_p_arr_.push (p);
        }
-      span_start_req_l_ = 0;
+      sustain_start_req_l_ = 0;
     }
 
-  if (span_req_l_drul_[START])
+  if (sustain_req_l_drul_[START])
     {
-      span_start_req_l_ = span_req_l_drul_[START];
+      sustain_start_req_l_ = sustain_req_l_drul_[START];
       Audio_piano_pedal* p = new Audio_piano_pedal;
       p->type_b_ = true;
       audio_p_arr_.push (p);
@@ -87,8 +87,8 @@ Piano_pedal_performer::do_pre_move_processing ()
 void
 Piano_pedal_performer::do_post_move_processing ()
 {
-  span_req_l_drul_[STOP] = 0;
-  span_req_l_drul_[START] = 0;
+  sustain_req_l_drul_[STOP] = 0;
+  sustain_req_l_drul_[START] = 0;
 }
 
 bool
@@ -96,9 +96,9 @@ Piano_pedal_performer::do_try_music (Music* r)
 {
   if (Span_req * s = dynamic_cast<Span_req*>(r))
     {
-      if (s-> span_type_str_ == "sustain")
+      if (s->span_type_str_ == "sustain")
        {
-         span_req_l_drul_[s->span_dir_] = s;
+         sustain_req_l_drul_[s->span_dir_] = s;
          return true;
        }
     }
index 8b137891791fe96927ad78e64b0aad7bded08bdc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-
index 68a8c9df2e149cb79699642d9dd072455e1acf9e..28594619039a6a475cbe8ffb9323047e01436d8c 100644 (file)
@@ -144,6 +144,7 @@ VoiceContext = \translator {
        \consists "Melisma_engraver";
        textScriptPadding = #3.0
        \consists "Text_engraver";
+       \consists "Piano_pedal_engraver";
        \consists "Script_engraver";
        \consists "Script_column_engraver";
        \consists "Rhythmic_column_engraver";
index 4549535290795d1fd6bab790c163ef4f80ecec19..2cbdcded23de56ab6df7ce43f2d9fba1b84cabab 100644 (file)
@@ -3,14 +3,18 @@
 depth = ..
 
 STEPMAKE_TEMPLATES=metafont metapost asciifont install install-out
+include $(depth)/make/stepmake.make 
 
 AF_FILES = $(wildcard *.af) 
 
 EXTRA_DIST_FILES += README feta.tex
 
-FET_FILES = $(wildcard feta[0-9]*.mf)
-FONT_FILES = $(wildcard feta*[0-9].mf)
-XPM_FONTS = feta20
+# 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
 
 LOG_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.log))
 TEXTABLES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.tex))
@@ -18,6 +22,11 @@ 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)) 
 
+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)
@@ -42,9 +51,7 @@ INSTALLATION_OUT_FILES3=$(TFM_FILES)
 INSTALLATION_OUT_DIR4=$(datadir)/pfa
 INSTALLATION_OUT_FILES4=$(PFA_FILES)
 
-
 export MFINPUTS:=.:$(MFINPUTS)
-include $(depth)/make/stepmake.make 
 
 default: $(ALL_GEN_FILES)
 
index e08c90bf009866e07955d68c4a2f6ff9b38ae674..c06618dc37341594f15c05b153ba85a569c21450 100644 (file)
@@ -1,5 +1,7 @@
 % -*- Fundamental -*-
 
+fet_begingroup("accordion")
+
 accreg_dot_size# := .5staff_space#;
 accreg_linethickness# := 1.3stafflinethickness#;
 
@@ -150,16 +152,28 @@ def def_some_vars =
 enddef;
 
 def print_penpos (suffix $)=
-       message str $ &": ("&decimal x.$.l&", "&decimal y.$.l&"); ("&decimal x.$.r&", "&decimal y.$.r&");";
+       message "z"&str $ &"l = ("&decimal x.$.l&", "&decimal y.$.l&"); z"&str $ &"r = ("&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);
 
-       penstroke z10e--z11e{right}..z12e..z13e{left}--z14e;
+       %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;
 
        penstroke z13e{right}..z15e{up}..z16e{left}--z17e;
        penstroke z18e--z19e;
@@ -283,3 +297,5 @@ fet_beginchar("accOldEES", "accOldEES", "accOldEES")
        currentpicture := currentpicture shifted (-w/2, -shy*h);
        currentpicture := currentpicture shifted (0, r);
 fet_endchar;
+
+fet_endgroup("accordion")
index 94c8c67611edbb8778ccb66c8025d0e5edb1d821..4d01e53bf7c427fb2ebce86c8aab89247432ab6b 100644 (file)
@@ -22,8 +22,7 @@ make_pen_stack;
 make_picture_stack;
 input feta-params;
 
-
-
+font_x_height  staff_space#;
 
 if test = 0: 
        input feta-eindelijk;
@@ -34,13 +33,17 @@ if test = 0:
        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
index 47e415c70da45a5b36dfeb607bd5b35305389a80..814c82a16dbc77649a3197b3903c33285a72fc17 100644 (file)
@@ -214,7 +214,11 @@ def draw_bulb(expr turndir, zl, zr, bulb_rad, radius_factor)=
        save rad, ang;
 
        ang = angle(zr-zl);
-       z0 = zr + bulb_rad * (zl-zr)/length(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);
+
        rad =  bulb_rad;
 
        z1 = z0 + radius_factor* rad * dir(ang + turndir* 100);
index cdd56736c3843e1304e2214fe34375547fd196e1..c171f9b42d624a1890c9ee68635fd2722eb0dad8 100644 (file)
@@ -5,14 +5,16 @@ test:=0;
 
 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;
index b66cc177a57ba098ebbd0644685fd76c306e28c7..a7664589eff43aa50624e68165de664fdb0a8085 100644 (file)
@@ -6,7 +6,7 @@
 % 
 % (c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 
-fet_begingroup("nummer")
+fet_begingroup("number")
 
 define_pixels(height,thick,thick,thin,hair,flare);
 define_pixels(foot_top,foot_width);
@@ -85,7 +85,8 @@ save dot_diam;
 dot_diam# = 7/8flare#;
 define_pixels(dot_diam);
 
-code := 43;
+
+code := 43;  % , = 44 
 
 % urg
 fet_beginchar("Numeral comma", ",", "comma")
@@ -121,7 +122,7 @@ fet_endchar;
 
 % skip slash
 
-code := 47;
+code := 47; % 0 = 48
 
 fet_beginchar("Numeral 0", "0", "zero")
 %      set_char_box(0, 4/5height#*widen, 0, height#);
@@ -416,5 +417,5 @@ fet_beginchar("Numeral 9", "9", "nine")
        currentpicture := currentpicture shifted (w,h);
 fet_endchar;
 
-fet_endgroup("nummer")
+fet_endgroup("number")
 
index 21b365958f6df4ed5ee2c29d1104e92de9bb18cc..702604002ac6788fdc2aedc31968270b15da30d5 100644 (file)
@@ -4,7 +4,7 @@ stafflines = 5;
 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
@@ -39,4 +39,10 @@ overdone_heads = 0.0;
 %
 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);
diff --git a/mf/feta-pendaal.mf b/mf/feta-pendaal.mf
new file mode 100644 (file)
index 0000000..2cdbddc
--- /dev/null
@@ -0,0 +1,262 @@
+% 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")
+
index b72653b4adca3bbd42124292c43041f581c4a429..481e378e501d2b81d860d94a778ce696b2eb807e 100644 (file)
@@ -699,7 +699,6 @@ fet_beginchar("Coda", "coda", "coda")
 fet_endchar;
 
 input feta-slag;
-input feta-accordion;
 
 fet_endgroup("scripts");
 
diff --git a/mf/feta-test11.mf b/mf/feta-test11.mf
new file mode 100644 (file)
index 0000000..eaaa862
--- /dev/null
@@ -0,0 +1,21 @@
+% 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.
+
index 3d2ed3cea24a5753346a70045d28856d0e9be4d3..ce1e04cf856b0ec7a8a1e2f21bf61d1c2a402586 100644 (file)
@@ -2,8 +2,8 @@
 % part of LilyPond's pretty-but-neat music font
 
 input feta-autometric;
-fet_beginfont("feta-test", 16);
-staffsize#:=16pt#;
+fet_beginfont("feta-test", 13);
+staffsize#:=13pt#;
 test:=1;
 
 % smoked cheese
diff --git a/mf/feta-test23.mf b/mf/feta-test23.mf
new file mode 100644 (file)
index 0000000..e4656d6
--- /dev/null
@@ -0,0 +1,22 @@
+% 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.
+
index e51a6ce12a319b519a6cf6c2bdd7d828dd2c0d59..212d63fa4a7bf31af8424b81c6defd99d2263704 100644 (file)
@@ -2,7 +2,7 @@
 % part of LilyPond's pretty-but-neat music font
 
 input feta-autometric;
-fet_beginfont("feta-test", 16);
+fet_beginfont("feta-test", 26);
 staffsize#:=26pt#;
 test:=1;
 
index 554408caffd6325f867686baa9272a921c5e1d73..adbf00a735192e837f14a02b2674ff13bf9bac97 100644 (file)
                     )
        ))
 
+(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
index a615f9564f13c9b38b8d4c16a9d3164cb2920d43..c5bdbbeba4b577fae647d11ab15850adfe31ddc6 100644 (file)
        (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))))
+
index 7beeca41101efd215390e7aba7b5578880e776a7..96af1473119e62441b59c86ec34651393d2ff7a3 100644 (file)
@@ -1,6 +1,5 @@
 
 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))
diff --git a/tex/p.tex b/tex/p.tex
new file mode 100644 (file)
index 0000000..2f61694
--- /dev/null
+++ b/tex/p.tex
@@ -0,0 +1,39 @@
+% 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
diff --git a/tex/pedal.tex b/tex/pedal.tex
new file mode 100644 (file)
index 0000000..a4c7616
--- /dev/null
@@ -0,0 +1,62 @@
+% 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