From b98cf37cfb6fad97b262e93a1b561db1cae52829 Mon Sep 17 00:00:00 2001 From: fred Date: Wed, 27 Mar 2002 00:58:51 +0000 Subject: [PATCH] lilypond-1.3.142 --- Documentation/topdocs/INSTALL.texi | 28 +++++++ Documentation/user/lilypond.tely | 5 +- input/bugs/crescendo-squash.ly | 9 +++ input/regression/dynamics-broken-hairpin.ly | 12 +++ input/regression/dynamics-line.ly | 3 +- input/regression/percent-repeat.ly | 18 +++++ input/tricks/follow-thread.ly | 4 +- lily/include/lookup.hh | 3 +- lily/include/percent-repeat-item.hh | 25 ++++++ lily/lookup.cc | 18 +++++ lily/multi-measure-rest.cc | 5 +- lily/percent-repeat-engraver.cc | 87 ++++++++++++++++----- lily/percent-repeat-item.cc | 85 ++++++++++++++++++++ lily/system-start-delimiter.cc | 19 +++++ lily/tuplet-engraver.cc | 10 +++ mf/feta-schrift.mf | 19 ----- ps/lily.ps | 66 ++++++++-------- scm/ps.scm | 29 ++++--- scm/tex.scm | 17 ++-- 19 files changed, 359 insertions(+), 103 deletions(-) create mode 100644 input/bugs/crescendo-squash.ly create mode 100644 input/regression/dynamics-broken-hairpin.ly create mode 100644 input/regression/percent-repeat.ly create mode 100644 lily/include/percent-repeat-item.hh create mode 100644 lily/percent-repeat-item.cc diff --git a/Documentation/topdocs/INSTALL.texi b/Documentation/topdocs/INSTALL.texi index 9d7e01ad9d..66141d6c21 100644 --- a/Documentation/topdocs/INSTALL.texi +++ b/Documentation/topdocs/INSTALL.texi @@ -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 diff --git a/Documentation/user/lilypond.tely b/Documentation/user/lilypond.tely index 25830f909d..d0034f88a7 100644 --- a/Documentation/user/lilypond.tely +++ b/Documentation/user/lilypond.tely @@ -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 index 0000000000..b143968366 --- /dev/null +++ b/input/bugs/crescendo-squash.ly @@ -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 index 0000000000..2aef2493fe --- /dev/null +++ b/input/regression/dynamics-broken-hairpin.ly @@ -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; + } +} + diff --git a/input/regression/dynamics-line.ly b/input/regression/dynamics-line.ly index 95f6b6068c..9ab480cb62 100644 --- a/input/regression/dynamics-line.ly +++ b/input/regression/dynamics-line.ly @@ -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 index 0000000000..2080187b99 --- /dev/null +++ b/input/regression/percent-repeat.ly @@ -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 } + + + + }} diff --git a/input/tricks/follow-thread.ly b/input/tricks/follow-thread.ly index 30dfa9d1fc..c09efe2075 100644 --- a/input/tricks/follow-thread.ly +++ b/input/tricks/follow-thread.ly @@ -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 diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index 4a3dea7e0f..8f954757df 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -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 index 0000000000..057144c5d7 --- /dev/null +++ b/lily/include/percent-repeat-item.hh @@ -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 + + */ + +#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 */ + diff --git a/lily/lookup.cc b/lily/lookup.cc index f2e89466b6..b01db45413 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -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); +} diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc index f216aeac8a..890c0d1562 100644 --- a/lily/multi-measure-rest.cc +++ b/lily/multi-measure-rest.cc @@ -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 (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. diff --git a/lily/percent-repeat-engraver.cc b/lily/percent-repeat-engraver.cc index b063ad4660..994288da64 100644 --- a/lily/percent-repeat-engraver.cc +++ b/lily/percent-repeat-engraver.cc @@ -16,6 +16,10 @@ #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 (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 index 0000000000..373404428d --- /dev/null +++ b/lily/percent-repeat-item.cc @@ -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 + + */ +#include + +#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 (); +} + + + + + + + diff --git a/lily/system-start-delimiter.cc b/lily/system-start-delimiter.cc index 39bd68040e..5d4cb3d67a 100644 --- a/lily/system-start-delimiter.cc +++ b/lily/system-start-delimiter.cc @@ -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); diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index 7568a08679..0e7d238247 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -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_); diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf index f4fc744a27..8ddcc5d1d6 100644 --- a/mf/feta-schrift.mf +++ b/mf/feta-schrift.mf @@ -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; diff --git a/ps/lily.ps b/ps/lily.ps index de0f845dd0..b5406ca0ac 100644 --- a/ps/lily.ps +++ b/ps/lily.ps @@ -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 @@ -18,40 +23,34 @@ 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 { @@ -101,6 +100,7 @@ } bind def % simple, but does it work everywhere? +% explain ? --hwn /draw_ez_ball % ch letter_col ball_col font { % font diff --git a/scm/ps.scm b/scm/ps.scm index d17843731e..0f8011bf6d 100644 --- a/scm/ps.scm +++ b/scm/ps.scm @@ -67,11 +67,12 @@ (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 @@ -95,13 +96,11 @@ " " (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) diff --git a/scm/tex.scm b/scm/tex.scm index 6f0e0e69f6..5e358449f9 100644 --- a/scm/tex.scm +++ b/scm/tex.scm @@ -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")) @@ -201,10 +201,9 @@ (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) @@ -226,15 +225,15 @@ (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) -- 2.39.5