+
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
@menu
* Overview::
-* Modifying music::
* Repeats::
* Note entry::
* Music notation::
-@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
@c . {Transpose}
@menu
* Rehearsal marks::
+* Instrument names::
* Transpose::
* Multi measure rests::
@end menu
rehearsal marks
-bar numbering
-
tranposing midi property.
instrument names
}
@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
* Top level::
* Identifiers::
* Music expressions::
+* Manipulating music expressions::
* Assignments::
* Lexical details::
* Lexical modes::
+@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
@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:
%
\def\thetitle{}
\def\thesubtitle{}
+\def\thesubsubtitle{}
\def\thecomposer{}
\def\thearranger{}
\def\theinstrument{}
% 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}}
%
\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}}
\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