From 7844452985dd9b2437f436cac6daa60922d21605 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 21 Feb 2001 01:15:20 +0100 Subject: [PATCH] release: 1.3.130 ============ * Implemented Phrasing slurs, copied from slur. * More hooks for chord pitch name overrides, see input/tricks/german-chords.ly. 1.3.129.h --- CHANGES | 24 +++- Documentation/user/refman.itely | 177 +++++++++++++++++++++--------- NEWS | 3 +- VERSION | 4 +- input/bugs/forte.ly | 0 input/bugs/lyrics-bar.ly | 0 input/regression/dyn-line.ly | 0 input/test/dynamics.ly | 0 input/tricks/partial-blank.ly | 28 +++++ lily/include/slur-engraver.hh | 0 make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 4 +- scm/basic-properties.scm | 1 + scm/grob-property-description.scm | 2 +- tex/titledefs.tex | 4 + 15 files changed, 186 insertions(+), 69 deletions(-) delete mode 100644 input/bugs/forte.ly delete mode 100644 input/bugs/lyrics-bar.ly delete mode 100644 input/regression/dyn-line.ly delete mode 100644 input/test/dynamics.ly create mode 100644 input/tricks/partial-blank.ly delete mode 100644 lily/include/slur-engraver.hh diff --git a/CHANGES b/CHANGES index 88bfa06c0d..3f03f10d14 100644 --- a/CHANGES +++ b/CHANGES @@ -1,20 +1,32 @@ + 1.3.129.jcn2 ============ * Implemented Phrasing slurs, copied from slur. -1.3.129.jcn1 -============ - * More hooks for chord pitch name overrides, see input/tricks/german-chords.ly. +1.3.129.hwn1 +============ + +* Bugfix: bar lines in lyrics. + +* Bugfix: vertical positioning of isolated dynamics: absolute dynamics +are only supported by the note they are on, in absence of crescendi. + +* Documentation of ancient clefs, custodes (Jurgen Reuter) + +* Small documentation fixes: rehearsal marks, -f option, markup, instrument names + +* Bugfix: rounding errors caused errouneous ledger lines for +#'staff-space = 1.3 + +* Subsubtitles, \bar ""; (Rune Zedeler) + 1.3.129 ======= -1.3.128.jcn2 -============ - * Small doco fixes. * Removed duplicated engraver hierarchies from coriolan and orchestral diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index 917ab40816..6161f908d4 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -35,7 +35,6 @@ has been revised for LilyPond 1.3.125 @menu * Overview:: -* Modifying music:: * Repeats:: * Note entry:: * Music notation:: @@ -116,55 +115,6 @@ can enter and edit them in manageable chunks. -@c . {Modifying music} -@node Modifying music -@section Modifying music -@cindex Modifying music - -FIXME: more verbose titling: -music expressions? -Repeat? -Repeated music? -Repeating music expressions? - -@menu -* Apply:: -@end menu - -@c . {Apply} -@node Apply -@subsection Apply -@cindex Apply -Apply allows a Scheme-function to operate directly on the internal -representation of music. -@example - \apply #@var{func} @var{music} -@end example -The function takes two arguments, being a function and an musical -argument for that function. The function should return a music -expression. - -This example replaces the text string of a script. It also shows a dump -of the music it processes. -@lilypond[verbatim] -#(define (testfunc x) - (if (equal? (ly-get-mus-property x 'text) "foo") - (ly-set-mus-property x 'text "bar")) - ;; recurse - (ly-set-mus-property x 'elements - (map testfunc (ly-get-mus-property x 'elements))) - (display x) - x -) -\score { \notes - \apply #testfunc { c4_"foo" } -} -@end lilypond - -For more information on what is possible, see the @ref{Tricks} and the -automatically generated documentation. - - @c . {Repeats} @node Repeats @@ -2249,6 +2199,7 @@ scheme = \chords { @c . {Transpose} @menu * Rehearsal marks:: +* Instrument names:: * Transpose:: * Multi measure rests:: @end menu @@ -2259,8 +2210,6 @@ partcombine rehearsal marks -bar numbering - tranposing midi property. instrument names @@ -2297,6 +2246,26 @@ incremented. } @end lilypond +@node Instrument names +@subsection Instrument names + +You can specify an instrument name for a staff by setting +@code{Staff.instrument} and @code{Staff.instr}. This will print a string +before the start of the staff. For the first start, @code{instrument} is +used, for the next ones @code{instr} is used. + +@lilypond[verbatim] +\score { \notes { + \property Staff.instrument = "instr " { c''4 } } + \paper { linewidth = -1.; + \translator { \StaffContext + \consists "Instrument_name_engraver"; } } } +@end lilypond + +This requires that you add the @code{Instrument_name_engraver} to the +staff context. + + @node Transpose @subsection Transpose @cindex Transpose @@ -3192,6 +3161,7 @@ called @emph{performers}. * Top level:: * Identifiers:: * Music expressions:: +* Manipulating music expressions:: * Assignments:: * Lexical details:: * Lexical modes:: @@ -3387,6 +3357,45 @@ note head, leading to collisions, so don't use that. +@c . {Manipulating music expressions} +@node Manipulating music expressions +@subsection Manipulating music expressions + +The @code{\apply} mechanism gives you access to the internal +representation of music. You can write Scheme-functions that operate +directly on it. The syntax is +@example + \apply #@var{func} @var{music} +@end example +This means that @var{func} is applied to @var{music}. The function +@var{func} should return a music expression. + +This example replaces the text string of a script. It also shows a dump +of the music it processes, which is useful if you want to know more +about how music is stored. +@lilypond[verbatim] +#(define (testfunc x) + (if (equal? (ly-get-mus-property x 'text) "foo") + (ly-set-mus-property x 'text "bar")) + ;; recurse + (ly-set-mus-property x 'elements + (map testfunc (ly-get-mus-property x 'elements))) + (display x) + x +) +\score { \notes + \apply #testfunc { c4_"foo" } +} +@end lilypond + +For more information on what is possible, see the @ref{Tricks} and the +automatically generated documentation. + +As always: directly accessing internal representations is dangerous: the +implementation is subject to changes, so you should not use this if +possible. + + @c . {Assignments} @node Assignments @subsection Assignments @@ -3773,8 +3782,72 @@ Don't move the finger 2, only text "m.d." ... @end lilypond +@menu +* Text markup:: +@end menu + +@node Text markup +@subsection Text markup + +LilyPond has an internal mechanism to typeset texts: you can +form text markup expressions by composing scheme expressions +in the following way: + +@lilypond[verbatim] +\score { \notes \relative c' { + b-#"text" + c-#'(bold "text") + d-#'(lines "one" (bold "text")) + e-#'(music (named "noteheads-2" "flags-u3")) +} +\paper { linewidth = 10.\cm; } } +@end lilypond + +Formally, Scheme markup text is defined as follows: + +@example +text: string | (markup sentence) +sentence: text | sentence text +markup: property | abbrev | style +property: (@var{key} . @var{value}) +abbrev: @code{rows lines roman music bold italic named super sub text} +style: @var{fontstyle} +@end example + +The @var{key}-@var{value} pair is a grob property. [Why is this +useful?] The following abbreviations are currently defined: + +@table @code +@item rows +horizontal mode: set all text on one line (default) +@item lines + vertical mode: set every text on new line +@item roman + select roman font +@item music + select feta font +@item bold + select bold series +@item italic + select italic shape +@item named + lookup by character name +@item text + plain text lookup (by character value) +@item super + superscript +@item sub + subscript +@end table + + +@var{fontstyle} may be any of @code{finger volta timesig mmrest mark +script large Large dynamic} + +[kern, raise ??] +[I still think that the semantics are weird, but well] @c .{Local emacs vars} @c Local variables: diff --git a/NEWS b/NEWS index 6b2f2ea032..f307b3f3fd 100644 --- a/NEWS +++ b/NEWS @@ -8,8 +8,7 @@ internals: LilyPond is smaller, cleaner, more flexible, etc. - More pervasive GUILE integration resulting in: - - Improved speed (undone for now, by .73 + .74), - with comparable memory footprint + - Improved speed with comparable memory footprint - More tweakability using less memory with the new `property push' mechanism. diff --git a/VERSION b/VERSION index 50b9768c16..2946fc3906 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=129 -MY_PATCH_LEVEL=jcn3 +PATCH_LEVEL=130 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/bugs/forte.ly b/input/bugs/forte.ly deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/input/bugs/lyrics-bar.ly b/input/bugs/lyrics-bar.ly deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/input/regression/dyn-line.ly b/input/regression/dyn-line.ly deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/input/test/dynamics.ly b/input/test/dynamics.ly deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/input/tricks/partial-blank.ly b/input/tricks/partial-blank.ly new file mode 100644 index 0000000000..52131592eb --- /dev/null +++ b/input/tricks/partial-blank.ly @@ -0,0 +1,28 @@ + +%{ When entering half music (I.e. for students to complete by hand) + you need the spacing to correspond to the timing - all measures same length, etc. + This thing implements it by adding invisible staff with lots of fast notes. +%} + +\include "paper16.ly" +\version "1.3.129"; + +quickmeasure = \notes {[\repeat unfold 16 c''16]} +mel = \notes \relative c' {c16 d16 e8 a4 g2 e8 d c2. g'1 e4 d c2} + +\score { +\context PianoStaff \notes < + \context Staff = v < + \clef G; + \context Voice=melo {\mel} + \context Voice=invisible { + \property Voice.NoteHead \override #'transparent = ##t + \property Voice.Stem \override #'transparent = ##t + \property Voice.Beam \override #'transparent = ##t + \repeat unfold 4 \quickmeasure + } + > + \context Staff = empty \notes {\clef F; s1*4} +> +\paper {} +} diff --git a/lily/include/slur-engraver.hh b/lily/include/slur-engraver.hh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index e553ba61ee..6ba4b1d771 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.3.129 -Entered-date: 09FEB01 +Version: 1.3.130 +Entered-date: 21FEB01 Description: Keywords: music notation typesetting midi fonts engraving Author: hanwen@cs.uu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 1000k lilypond-1.3.129.tar.gz + 1000k lilypond-1.3.130.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.3.129.tar.gz + 1000k lilypond-1.3.130.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index 0f599fd7ae..14aed143d1 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,11 +1,11 @@ %define info yes Name: lilypond -Version: 1.3.129 +Version: 1.3.130 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.129.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.130.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond # Icon: lilypond-icon.gif diff --git a/scm/basic-properties.scm b/scm/basic-properties.scm index 6100beea2f..9c809fb6d3 100644 --- a/scm/basic-properties.scm +++ b/scm/basic-properties.scm @@ -32,6 +32,7 @@ (":|" . (":|" . nil)) ("||" . ("||" . nil)) (".|." . (".|." . nil)) + ("" . ("" . "")) ("empty" . ("nil" . nil)) ("brace" . (nil . "brace")) ("bracket" . (nil . "bracket")) diff --git a/scm/grob-property-description.scm b/scm/grob-property-description.scm index 6de59927da..e610eb5a03 100644 --- a/scm/grob-property-description.scm +++ b/scm/grob-property-description.scm @@ -254,8 +254,8 @@ Scheme markup text. It is defined as follows: @example TEXT : STRING | (MARKUP SENTENCE) -MARKUP: PROPERTY | ABBREV SENTENCE: TEXT | SENTENCE TEXT +MARKUP: PROPERTY | ABBREV PROPERTY: (key . value) ABBREV: rows lines roman music bold italic named super sub text, or any font-style diff --git a/tex/titledefs.tex b/tex/titledefs.tex index 8e0bd60b00..1c853c8366 100644 --- a/tex/titledefs.tex +++ b/tex/titledefs.tex @@ -6,6 +6,7 @@ % \def\thetitle{} \def\thesubtitle{} +\def\thesubsubtitle{} \def\thecomposer{} \def\thearranger{} \def\theinstrument{} @@ -20,6 +21,7 @@ % duh. LaTeX has a \title too. \renewcommand*{\title}[1]{\def\thetitle{#1}} \newcommand*{\subtitle}[1]{\def\thesubtitle{#1}} +\newcommand*{\subsubtitle}[1]{\def\thesubsubtitle{#1}} \newcommand*{\composer}[1]{\def\thecomposer{#1}} \newcommand*{\arranger}[1]{\def\thearranger{#1}} \newcommand*{\instrument}[1]{\def\theinstrument{#1}} @@ -30,6 +32,7 @@ % \newcommand*{\lilypondtitle}[1]{\def\thetitle{#1}} \newcommand*{\lilypondsubtitle}[1]{\def\thesubtitle{#1}} +\newcommand*{\lilypondsubsubtitle}[1]{\def\thesubsubtitle{#1}} \newcommand*{\lilypondfooter}[1]{\def\thefooter{#1}} \newcommand*{\lilypondhead}[1]{\def\theheader{#1}} \newcommand*{\lilypondcomposer}[1]{\def\thecomposer{#1}} @@ -49,6 +52,7 @@ \bfseries \ifx\lilypondnull\thetitle\else{\huge\thetitle}\\ \fi \ifx\lilypondnull\thesubtitle\else{\Large\thesubtitle}\\ \fi + \ifx\lilypondnull\thesubsubtitle\else{\large\thesubsubtitle}\\ \fi \end{center} \bigskip % urg -- 2.39.2