]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.142
authorfred <fred>
Wed, 27 Mar 2002 00:58:51 +0000 (00:58 +0000)
committerfred <fred>
Wed, 27 Mar 2002 00:58:51 +0000 (00:58 +0000)
19 files changed:
Documentation/topdocs/INSTALL.texi
Documentation/user/lilypond.tely
input/bugs/crescendo-squash.ly [new file with mode: 0644]
input/regression/dynamics-broken-hairpin.ly [new file with mode: 0644]
input/regression/dynamics-line.ly
input/regression/percent-repeat.ly [new file with mode: 0644]
input/tricks/follow-thread.ly
lily/include/lookup.hh
lily/include/percent-repeat-item.hh [new file with mode: 0644]
lily/lookup.cc
lily/multi-measure-rest.cc
lily/percent-repeat-engraver.cc
lily/percent-repeat-item.cc [new file with mode: 0644]
lily/system-start-delimiter.cc
lily/tuplet-engraver.cc
mf/feta-schrift.mf
ps/lily.ps
scm/ps.scm
scm/tex.scm

index 9d7e01ad9d93ab4decb103739e63cf5a83c86dd2..66141d6c215c27e02c603c1d4fe65d60f2a9923b 100644 (file)
@@ -257,6 +257,27 @@ everything will be compiled, but nothing will be installed.  The
 resulting binaries can be found in the subdirectories @file{out/} (which
 contain all files generated during compilation).
 
+
+@section Emacs mode
+
+
+An emacs mode for LilyPond is included with the source archive as
+@file{lilypond-mode.el} and @file{lilypond-font-lock.el}.  If you have
+an RPM, it is in @file{/usr/share/doc/lilypond-X/}.  You have to install
+it yourself.
+
+Add this to your ~/.emacs or ~/.emacs.el:
+@example 
+    (load-library "lilypond-mode.el")
+    (setq auto-mode-alist
+      (cons '("\\.ly$" . LilyPond-mode) auto-mode-alist))
+    (add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock)))
+@end example
+
+If you have the latest LilyPond-1.3.x Debian package, LilyPond-mode
+is automatically loaded, so you need not modify your ~/.emacs file.
+
+
 @section Configuring for multiple platforms
 
 If you want to build multiple versions of LilyPond with different
@@ -330,6 +351,13 @@ in addition to the those needed for running:
 @item tetex-devel
 @end itemize
 
+@section SuSE
+
+[TODO: document this]
+
+Install @code{tetex}, @code{te_mpost}, @code{te_kpath}.
+
+
 @section Debian GNU/Linux
 
 A Debian package is also available.  You may install it easily by using
index 25830f909d56b36a6ac929e8a031cc2314cc6b1b..d0034f88a75df8aaae3787d7bab65ccbc3c5b858 100644 (file)
@@ -15,7 +15,7 @@
 @titlepage
 @title GNU LilyPond
 @subtitle The music typesetter
-@author Han-Wen Nienhuys, Jan Nieuwenhuizen, Adrian Mariano,  Tom Cato Amundsen
+@author    
 
 
 Copyright @copyright{} 1999--2001 by the authors
@@ -33,7 +33,8 @@ Copyright @copyright{} 1999--2001 by the authors
 @ifinfo
 This file documents GNU LilyPond.
 
-Copyright 1999 Han-Wen Nienhuys, Jan Nieuwenhuizen and Adrian Mariano
+Copyright 1999 Han-Wen Nienhuys, Jan Nieuwenhuizen, Adrian Mariano
+Tom Cato Amundsen.
 
   Permission is granted to copy, distribute and/or modify this document
   under the terms of the GNU Free Documentation License, Version 1.1
diff --git a/input/bugs/crescendo-squash.ly b/input/bugs/crescendo-squash.ly
new file mode 100644 (file)
index 0000000..b143968
--- /dev/null
@@ -0,0 +1,9 @@
+
+
+ % < becomes | 
+\score {\notes { \context Staff < f''1
+   { s4 \< \! s4 } > }
+
+  \paper { linewidth = -1.;  }
+  }
+
diff --git a/input/regression/dynamics-broken-hairpin.ly b/input/regression/dynamics-broken-hairpin.ly
new file mode 100644 (file)
index 0000000..2aef249
--- /dev/null
@@ -0,0 +1,12 @@
+\header{
+texidoc = "Broken crescendi should look be open on one side.";
+}
+
+\score { \notes \relative c'' { 
+    c1 \< \break \! c1  \> \break \! c1 
+  }
+  \paper {
+    linewidth = 10.\cm;
+  }
+}
+  
index 95f6b6068c39edaa93c86f3fc5c7768880558079..9ab480cb625766396e4686941bd880b9384bfec4 100644 (file)
@@ -1,7 +1,8 @@
 \header{
 texidoc=" Dynamics appear below or above the staff.  If multiple
 dynamics are linked with (de)crescendi, they should be on the same
-line. Isolated dynamics may be forced up or down.  ";
+line. Isolated dynamics may be forced up or down.
+ ";
 }
 
 
diff --git a/input/regression/percent-repeat.ly b/input/regression/percent-repeat.ly
new file mode 100644 (file)
index 0000000..2080187
--- /dev/null
@@ -0,0 +1,18 @@
+\header {
+texidoc = "Measure and beat repeats are supported.";
+}
+       
+\score { \notes \relative c' \context Voice { \time 4/4;
+   \repeat "percent" 2 { c2 }
+
+   % the chairman dances
+   \repeat "percent" 2 { g'8 g c, c  }   
+   \repeat "percent" 4 { b8 b8  }
+   \repeat "percent" 2 { c8 d es f g4 r4  }   
+   
+   % riff
+   \repeat "percent" 2 { r8. a16 g8. a16 bes8. a16 f8 d |  a c8 ~ c8 d8 ~ d8 r8 r4 }
+   
+
+
+     }}
index 30dfa9d1fc2a23c8ef9b23e47d7bd14b284e6a93..c09efe20756b2a460b640c3480f0c6996cc1ea0a 100644 (file)
@@ -2,14 +2,14 @@
 \header{
 texidoc="
 Theads can be traced automagically when they switch staffs by setting
-property @code{followThread}.
+property @code{followVoice}.
 ";
 }
 % followThread: connect note heads with line when thread switches staff 
 
 fragment = \notes {
   \context PianoStaff <
-    \property PianoStaff.followThread = ##t
+    \property PianoStaff.followVoice = ##t
     \context Staff \context Voice {
       c'1
       \translator Staff=two
index 4a3dea7e0f9f343cb18e8e1f6d8769e82255b6de..8f954757dff970a0f38bf3d62cac647c5ba4c023 100644 (file)
@@ -24,7 +24,8 @@ struct Lookup
   static Molecule beam (Real, Real, Real) ;
   static Molecule dashed_slur (Bezier, Real thick, Real dash) ;
   static Molecule blank (Box b) ;
-  static Molecule filledbox (Box b) ;  
+  static Molecule filledbox (Box b) ;
+  static Molecule repeat_slash( Real w, Real slope, Real th);
 };
 
 #endif // LOOKUP_HH
diff --git a/lily/include/percent-repeat-item.hh b/lily/include/percent-repeat-item.hh
new file mode 100644 (file)
index 0000000..057144c
--- /dev/null
@@ -0,0 +1,25 @@
+/*   
+  percent-repeat-item.hh -- declare Percent_repeat_item_interface
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef PERCENT_REPEAT_ITEM_HH
+#define PERCENT_REPEAT_ITEM_HH
+
+#include "grob.hh"
+
+class Percent_repeat_item_interface
+{
+public:
+  DECLARE_SCHEME_CALLBACK (beat_slash, (SCM ));  
+  DECLARE_SCHEME_CALLBACK (double_percent, (SCM ));
+  static Molecule x_percent (Grob*,int,Real,Real );
+  static Molecule brew_slash (Grob*);
+};
+
+#endif /* PERCENT_REPEAT_ITEM_HH */
+
index f2e89466b6d91c7a813b25465a36ab9052d10453..b01db45413ca14b3f931ec242ae3804dacf7dc76 100644 (file)
@@ -355,3 +355,21 @@ Lookup::accordion (SCM s, Real staff_space, Font_metric *fm)
   return m;  
 }
 
+/*
+  TODO: should use slope instead?  Angle gives nasty rad <-> degree
+  conversions.
+*/
+Molecule
+Lookup::repeat_slash (Real w, Real s, Real t)
+{
+  SCM wid = gh_double2scm (w);
+  SCM sl = gh_double2scm (s);
+  SCM thick = gh_double2scm (t);
+  SCM slashnodot = gh_list (ly_symbol2scm ("repeat-slash"),
+                           wid, sl, thick, SCM_UNDEFINED);
+
+  Box b (Interval (0, w + sqrt (sqr(t/s) + sqr (t))),
+        Interval (0, w * s));
+
+  return Molecule (b, slashnodot);
+}
index f216aeac8a4988af1471d56d05778d38ec9afe95..890c0d1562901f24928140aea8ccd0361ce30ce0 100644 (file)
@@ -19,6 +19,8 @@
 #include "spanner.hh"
 #include "staff-symbol-referencer.hh"
 #include "text-item.hh"
+#include "percent-repeat-item.hh"
+
 
 void
 Multi_measure_rest::set_interface (Grob*me)
@@ -36,12 +38,13 @@ MAKE_SCHEME_CALLBACK (Multi_measure_rest,percent,1);
 SCM
 Multi_measure_rest::percent (SCM smob)
 {
+  
   Grob *me = unsmob_grob (smob);
   Spanner *sp = dynamic_cast<Spanner*> (me);
   
   Font_metric *musfont = Font_interface::get_default_font (me);
                        
-  Molecule r (musfont->find_by_name ("scripts-repeatsign"));
+  Molecule r = Percent_repeat_item_interface::x_percent (me, 1,  0.75, 1.6);
 
   // ugh copy & paste.
   
index b063ad46603f8399b47daae86cc85f7023bae8d0..994288da6406d9f4def48db2467390392af9e4c0 100644 (file)
 #include "spanner.hh"
 #include "item.hh"
 #include "percent-repeat-iterator.hh"
+#include "bar.hh"
+
+#include "score-engraver.hh"
+#include "translator-group.hh"
 
 /**
   This acknowledges repeated music with "percent" style.  It typesets
@@ -52,7 +56,9 @@ protected:
     MEASURE,
     DOUBLE_MEASURE,
   } repeat_sign_type_ ;
-  
+
+  Item * beat_slash_;
+  Item * double_percent_;
   Spanner * perc_p_;
   Spanner * finished_perc_p_;
   Item * stem_tremolo_;
@@ -70,6 +76,9 @@ Percent_repeat_engraver::Percent_repeat_engraver ()
   perc_p_  = finished_perc_p_ = 0;
   repeat_ =0;
   stem_tremolo_ = 0;
+
+  beat_slash_ = 0;
+  double_percent_ = 0;
 }
 
 bool
@@ -89,25 +98,25 @@ Percent_repeat_engraver::try_music (Music * m)
       stop_mom_ = start_mom_ + Moment (count) * body_length_;
       next_moment_ = start_mom_ + body_length_;
 
-      SCM m = get_property ("timeSignatureFraction");
-      Moment mlen (1,
-                 gh_scm2int (gh_cdr (m)));
+      SCM m = get_property ("measureLength");
+      Moment meas_len;
+      if (unsmob_moment (m))
+       meas_len = *unsmob_moment (m);
 
-      if (mlen == body_length_)
+      if (body_length_ < meas_len &&
+         meas_len.mod_rat (body_length_) == Moment (0,0))
        repeat_sign_type_ = BEAT;
+      else if (meas_len == body_length_)
+       repeat_sign_type_ = MEASURE;
+      else if (Moment (2)* meas_len == body_length_)
+       {
+         repeat_sign_type_ = DOUBLE_MEASURE;
+         next_moment_ += meas_len ;
+       }
       else
        {
-         mlen *= gh_scm2int (gh_car (m));
-         if (mlen == body_length_)
-           repeat_sign_type_ = MEASURE;
-         else if (Moment (2)* mlen == body_length_)
-           repeat_sign_type_ = DOUBLE_MEASURE;
-
-         if (repeat_sign_type_ != MEASURE)
-           {
-             warning (_ ("Don't know yet how to handle this percent repeat."));
-             return false;
-           }
+         warning (_ ("Don't know how to handle a percent repeat of this length."));
+         return false;
        }
 
       repeat_ = rp;
@@ -138,7 +147,8 @@ Percent_repeat_engraver::process_music ()
     {
       if (repeat_sign_type_ == BEAT)
        {
-         ;
+         beat_slash_ = new Item (get_property ("RepeatSlash"));
+         announce_grob (beat_slash_, repeat_);
        }
       else if (repeat_sign_type_ == MEASURE)
        {
@@ -149,10 +159,31 @@ Percent_repeat_engraver::process_music ()
          perc_p_->set_bound (LEFT, unsmob_grob (col));
          announce_grob (perc_p_, repeat_);
        }
+      else if (repeat_sign_type_ == DOUBLE_MEASURE)
+       
+       {
+         double_percent_ = new Item (get_property ("DoublePercentRepeat"));
+         announce_grob (double_percent_, repeat_);
+
+      /*
+       forbid breaks on a % line. Should forbid all breaks, really.
+       */
+         Score_engraver * e = 0;
+         Translator * t  =  daddy_grav_l ();
+         for (; !e && t;  t = t->daddy_trans_l_)
+           {
+             e = dynamic_cast<Score_engraver*> (t);
+           }
 
+         if (!e)
+           programming_error ("No score engraver!");
+         else
+           e->forbid_breaks ();        // guh. Use properties!      
+       }
       next_moment_ = next_moment_ + body_length_;
     }
 }
+
 void
 Percent_repeat_engraver::finalize ()
 {
@@ -174,22 +205,38 @@ Percent_repeat_engraver::typeset_perc ()
       typeset_grob (finished_perc_p_);
       finished_perc_p_ = 0;
     }
+
+  if (beat_slash_)
+    {
+      typeset_grob (beat_slash_);
+      beat_slash_ = 0;
+    }
+
+  if (double_percent_)
+    {
+      typeset_grob (double_percent_);
+      double_percent_ = 0;
+    }
 }
 
 
 void
 Percent_repeat_engraver::acknowledge_grob (Grob_info info)
 {
+
 }
 
 
 void
 Percent_repeat_engraver::start_translation_timestep ()
 {
-  if (perc_p_ && stop_mom_ == now_mom ())
+  if (stop_mom_ == now_mom ())
     {
-      finished_perc_p_ = perc_p_;
-      typeset_perc ();
+      if (perc_p_)
+       {
+         finished_perc_p_ = perc_p_;
+         typeset_perc ();
+       }
       repeat_ = 0;
       perc_p_ = 0;
       repeat_sign_type_ = UNKNOWN;
diff --git a/lily/percent-repeat-item.cc b/lily/percent-repeat-item.cc
new file mode 100644 (file)
index 0000000..3734044
--- /dev/null
@@ -0,0 +1,85 @@
+/*   
+  percent-repeat-item.cc --  implement Percent_repeat_item_interface
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+#include <math.h>
+
+#include "grob.hh"
+#include "lookup.hh"
+#include "molecule.hh"
+#include "font-interface.hh"
+#include "font-metric.hh" 
+#include "percent-repeat-item.hh"
+
+
+Molecule
+Percent_repeat_item_interface::brew_slash ( Grob *me)
+{
+  Real slope = gh_scm2double (me->get_grob_property ("slope"));
+  Real wid = 2.0 / slope;
+
+  /*
+    todo: check out if in staff-rule thickness normally.
+   */
+  Real thick = gh_scm2double (me->get_grob_property ("thickness"));
+  Molecule m = Lookup::repeat_slash (wid, slope, thick);
+  m.translate_axis (-m.extent (Y_AXIS).center (), Y_AXIS);
+  return m;
+}
+
+/*
+  todo: use grob props for dot_neg_kern, slash_neg_kern?
+ */
+Molecule
+Percent_repeat_item_interface::x_percent (Grob *me, int count,
+                                         Real dot_neg_kern,
+                                         Real slash_neg_kern)
+{
+  Molecule m ;
+  Molecule s = brew_slash (me);
+
+  for (int i  = count; i--;)
+    {
+      m.add_at_edge (X_AXIS, RIGHT, s, -slash_neg_kern);
+    }
+  Molecule d1 = Font_interface::get_default_font (me)->find_by_name ("dots-dot");
+  Molecule d2  =  d1;
+  d1.translate_axis (0.5, Y_AXIS );
+  d2.translate_axis (-0.5, Y_AXIS);
+  
+  m.add_at_edge (X_AXIS, LEFT, d1, -dot_neg_kern);
+  m.add_at_edge (X_AXIS, RIGHT, d2, -dot_neg_kern);
+
+  return m;
+}
+
+MAKE_SCHEME_CALLBACK(Percent_repeat_item_interface,double_percent,1);
+SCM
+Percent_repeat_item_interface::double_percent (SCM grob)
+{
+  Grob *me = unsmob_grob (grob);
+  Molecule m = x_percent (me, 2, 0.75, 1.6);
+  m.translate_axis (- m.extent (X_AXIS).center (), X_AXIS);
+  return m.smobbed_copy ();
+}
+
+MAKE_SCHEME_CALLBACK(Percent_repeat_item_interface,beat_slash,1);
+SCM
+Percent_repeat_item_interface::beat_slash (SCM grob)
+{
+  Grob *me = unsmob_grob (grob);
+  Molecule m = brew_slash (me);
+
+  return m.smobbed_copy ();
+}
+
+
+
+
+
+
+
index 39bd68040ece1a7a93e956dfcb71acdb1cdd8000..5d4cb3d67a9aeac9c9803d150fecaf928e975db3 100644 (file)
@@ -32,6 +32,25 @@ System_start_delimiter::staff_bracket (Grob*me,Real height)
                    me->get_grob_property ("bracket-thick"),
                    SCM_UNDEFINED);
 
+  /*
+TODO: sort this out.
+    
+Another thing:
+In system-start-delimiter.cc I see the line
+
+  Real h = height + 2 * arc_height;
+
+But I really think that you mean
+
+ Real h = height + 2 * arc_width;
+
+(arc_height changes the x-axis-size of arc ; arc_width changes the
+y-axis-size)
+Will not fix it since I'm not sure.
+
+-Rune
+  
+   */
   Real h = height + 2 * arc_height;
   Box b (Interval (0, 1.5), Interval (-h/2, h/2));
   Molecule mol (b, at);
index 7568a08679c7bffe6c4588c6a1f8b7b7be0b9376..0e7d238247e9a529c9ea35a334c7542ef9a36286 100644 (file)
@@ -110,6 +110,16 @@ Tuplet_engraver::acknowledge_grob (Grob_info i)
     }
   else if (Beam::has_interface (i.elem_l_))
     {
+      /*
+       TODO:
+       
+       ugh, superfluous. Should look at
+
+       tuplet -> note-column -> stem -> beam
+
+       to find the beam(s) of a tuplet
+       */
+      
       for (int j = 0; j < started_span_p_arr_.size (); j++)
        if (started_span_p_arr_[j]) 
          Tuplet_bracket::add_beam (started_span_p_arr_[j],i.elem_l_);
index f4fc744a2792bd7579a8212ae00d70b89cfc325e..8ddcc5d1d658603c0088304c4825e99222d64581 100644 (file)
@@ -585,25 +585,6 @@ fet_beginchar("Flageolet", "flageolet", "flageolet")
        draw z1..z2..z3..z4..cycle;
 fet_endchar;
 
-fet_beginchar("Repeatsign", "repeatsign", "repeatsign")
-       set_char_box(staff_space#, staff_space#, staff_space#, staff_space#);
-
-       save dot_diam;
-       2 dot_diam# = staff_space# - stafflinethickness#;
-       define_pixels(dot_diam);
-
-       penpos1(dot_diam,0);
-       z1l=(-b,-d);
-       penpos2(dot_diam,0);
-       z2r=(w,h);
-       filldraw z1l--z2l{right}--z2r{down}--z1r{right}--cycle;
-        penlabels (1,2);
-
-       pickup pencircle scaled dot_diam;
-        draw (-staff_space/2, staff_space/2);
-        draw (staff_space/2, -staff_space/2);
-fet_endchar;
-
 fet_beginchar("Segno", "segno", "segno")
        save thin, thick, ball_diam, darkness, pointheight;
        save wd, ht, thick_nibangle, ball_nib_thick;
index de0f845dd0f4d0d579ebbf49aac907269225b088..b5406ca0ac9089afe7a030e5ef7afe374e7b71d7 100644 (file)
@@ -5,6 +5,11 @@
 % round cappings 
 1 setlinecap
 
+/euclidean_length  
+{ 
+       1 copy mul exch 1 copy mul add sqrt 
+} bind def 
+
 /draw_beam % width slope thick 
 { 
         2 div /beam_thick exch def 
         closepath fill 
 } bind def 
 
-/draw_decrescendo %  width height cons thick 
-{ 
-       setlinewidth 
-       /cresc_cont exch def 
-       /cresc_ht exch def 
-       /cresc_wd exch def 
-
-       cresc_wd cresc_cont moveto 
-       0 cresc_ht lineto 
-       stroke 
-       cresc_wd cresc_cont neg moveto 
-       0 cresc_ht neg lineto 
-       stroke 
-} bind def 
-
-/draw_crescendo % width height cons thick 
-{ 
-       setlinewidth 
-       /cresc_cont exch def 
-       /cresc_ht exch def 
-       /cresc_wd exch def 
-
-       0 cresc_cont moveto 
-       cresc_wd cresc_ht lineto 
-       stroke 
-       0 cresc_cont neg moveto 
-       cresc_wd cresc_ht neg lineto 
-       stroke 
-} bind def 
+/draw_repeat_slash % width slope thick
+{
+  /beamthick exch def
+  /slope exch def
+  /width exch def
+  beamthick beamthick slope div euclidean_length
+    /xwid exch def 
+  0 0 moveto
+  xwid 0  rlineto
+  width slope width mul rlineto
+  xwid neg 0 rlineto
+%  width neg width angle sin mul neg rlineto
+  closepath fill
+} bind def
 
-/lily_distance  
-{ 
-       1 copy mul exch 1 copy mul add sqrt 
-} bind def 
+/draw_hairpin % width start_h end_h thick
+{
+  setlinewidth
+  /end_h exch def 
+  /start_h exch def
+  /wid exch def
+  0 start_h moveto
+  wid end_h lineto
+  stroke
+  0 start_h neg moveto
+  wid end_h neg lineto
+  stroke
+} bind def
 
 /draw_tuplet % height gap dx dy thick dir 
 { 
 } bind def
 
 % simple, but does it work everywhere?
+% explain ? --hwn
 /draw_ez_ball % ch letter_col ball_col font
 {
        % font
index d17843731e1ae15371cef24c0f2658d18e842233..0f8011bf6d858406ca0f47f7f9a363c417352bb0 100644 (file)
   (define (char i)
     (invoke-char " show" i))
 
-  (define (crescendo thick w h cont )
-    (string-append 
-     (numbers->string (list w h (inexact->exact cont) thick))
-     " draw_crescendo"))
 
+  (define (hairpin thick width starth endh )
+    (string-append 
+     (numbers->string (list width starth endh thick))
+     " draw_hairpin"))
+  
   ;; what the heck is this interface ?
   (define (dashed-slur thick dash l)
     (string-append 
      " "
      (ly-number->string off)
      " ] 0 draw_dashed_line"))
-
-  (define (decrescendo thick w h cont)
-    (string-append 
-     (numbers->string (list w h (inexact->exact cont) thick))
-     " draw_decrescendo"))
-
-
+  
+  (define (repeat-slash wid slope thick)
+   (string-append (numbers->string (list wid slope thick))
+    " draw_repeat_slash"))
+  
   (define (end-output)
     "\nshowpage\n")
   
@@ -208,12 +207,11 @@ lilypondpaperoutputscale lilypondpaperoutputscale scale
            (define tuplet ,tuplet)
            (define bracket ,bracket)
            (define char ,char)
-           (define crescendo ,crescendo)
+           (define hairpin ,hairpin)
            (define volta ,volta)
            (define bezier-sandwich ,bezier-sandwich)
            (define dashed-line ,dashed-line) 
            (define dashed-slur ,dashed-slur) 
-           (define decrescendo ,decrescendo) 
            (define end-output ,end-output)
            (define experimental-on ,experimental-on)
            (define filledbox ,filledbox)
@@ -231,20 +229,21 @@ lilypondpaperoutputscale lilypondpaperoutputscale scale
            (define stem ,stem)
            (define stop-line ,stop-line)
            (define stop-last-line ,stop-line)
+           (define repeat-slash ,repeat-slash)
            (define text ,text)
            (define no-origin ,no-origin)
            (define define-origin ,define-origin)
            (define ez-ball ,ez-ball)
            ))
+       ((eq? action-name 'repeat-slash) repeat-slash)
        ((eq? action-name 'tuplet) tuplet)
        ((eq? action-name 'beam) beam)
        ((eq? action-name 'bezier-sandwich) bezier-sandwich)
        ((eq? action-name 'bracket) bracket)
        ((eq? action-name 'char) char)
-       ((eq? action-name 'crescendo) crescendo)
        ((eq? action-name 'dashed-line) dashed-line) 
        ((eq? action-name 'dashed-slur) dashed-slur) 
-       ((eq? action-name 'decrescendo) decrescendo)
+       ((eq? action-name 'hairpin) hairpin)
        ((eq? action-name 'experimental-on) experimental-on)
        ((eq? action-name 'filledbox) filledbox)
        ((eq? action-name 'ez-ball) ez-ball)    
index 6f0e0e69f6e5de44392d15ef2083ec7af1ff825f..5e358449f90b47f247d427acd6d339c8d175ad37 100644 (file)
@@ -47,8 +47,8 @@
   (define (dashed-slur thick dash l)
     (embedded-ps ((ps-scm 'dashed-slur)  thick dash l)))
 
-  (define (crescendo thick w h cont)
-    (embedded-ps ((ps-scm 'crescendo) thick w h cont)))
+  (define (hairpin thick w sh eh)
+    (embedded-ps ((ps-scm 'hairpin) thick w sh eh)))
 
   (define (char i)
     (string-append "\\char" (inexact->string i 10) " "))
@@ -56,9 +56,6 @@
   (define (dashed-line thick on off dx dy)
     (embedded-ps ((ps-scm 'dashed-line) thick on off dx dy)))
 
-  (define (decrescendo thick w h cont)
-    (embedded-ps ((ps-scm 'decrescendo) thick w h cont)))
-
   (define (font-load-command name-mag command)
     (string-append
      "\\font\\" command "="
@@ -86,6 +83,9 @@
   (define (experimental-on)
     "")
 
+  (define (repeat-slash w a t)
+    (embedded-ps ((ps-scm 'repeat-slash) w a t)))
+  
   (define (font-switch i)
     (string-append
      "\\" (font i) "\n"))
            (define bezier-sandwich ,bezier-sandwich)
            (define bracket ,bracket)
            (define char ,char)
-           (define crescendo ,crescendo)
            (define dashed-line ,dashed-line) 
            (define dashed-slur ,dashed-slur) 
-           (define decrescendo ,decrescendo
+           (define hairpin ,hairpin
            (define end-output ,end-output)
            (define experimental-on ,experimental-on)
            (define filledbox ,filledbox)
            (define volta ,volta)
            (define define-origin ,define-origin)
            (define no-origin ,no-origin)
+           (define repeat-slash ,repeat-slash)
            ))
 
        ((eq? action-name 'beam) beam)
        ((eq? action-name 'tuplet) tuplet)
        ((eq? action-name 'bracket) bracket)
-       ((eq? action-name 'crescendo) crescendo)
+       ((eq? action-name 'hairpin) hairpin)
        ((eq? action-name 'dashed-line) dashed-line) 
        ((eq? action-name 'dashed-slur) dashed-slur) 
-       ((eq? action-name 'decrescendo) decrescendo) 
        ((eq? action-name 'end-output) end-output)
        ((eq? action-name 'experimental-on) experimental-on)
        ((eq? action-name 'font-def) font-def)