summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorJean-Charles Malahieude <lilyfan@orange.fr>2016-09-17 16:05:08 +0200
committerJean-Charles Malahieude <lilyfan@orange.fr>2016-09-17 16:05:08 +0200
commit7738c6fa2759373c05e34b003a7ed521e9382f37 (patch)
tree98cdc4f57245b8ebccc10891717b71a9a5e5fbb1 /Documentation
parent50ee6ceadc8e270a5cdf43279097ce3f3f56914f (diff)
parent39912f861693f1c24b8833e6e9e6ba82eb3e6746 (diff)
Merge branch 'master' into translation
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/changes.tely19
-rw-r--r--Documentation/contributor/programming-work.itexi124
-rw-r--r--Documentation/extending/scheme-tutorial.itely33
-rw-r--r--Documentation/notation/editorial.itely2
-rw-r--r--Documentation/notation/expressive.itely7
-rw-r--r--Documentation/notation/pitches.itely11
-rw-r--r--Documentation/notation/simultaneous.itely4
-rw-r--r--Documentation/notation/text.itely14
-rw-r--r--Documentation/snippets/new/using-marklines-in-a-frenched-score.ly97
-rw-r--r--Documentation/web/news-front.itexi4
-rw-r--r--Documentation/web/news.itexi24
11 files changed, 266 insertions, 73 deletions
diff --git a/Documentation/changes.tely b/Documentation/changes.tely
index fb1a77f633..c9315d59da 100644
--- a/Documentation/changes.tely
+++ b/Documentation/changes.tely
@@ -62,6 +62,25 @@ which scares away people.
@end ignore
@item
+Slurs and phrasing slurs may now be started from individual notes
+in a chord. Several simultanous slurs per @code{Voice} need to be
+distinguished by @code{spanner-id} setting.
+
+@item
+The music and grob property @code{spanner-id} for distinguishing
+simultaneous slurs and phrasing slurs has been changed from a
+string to a @q{key}, a non-negative integer or symbol.
+
+@item
+There is a new command @code{\=} for specifying the
+@code{spanner-id} for simultaneous slurs and phrasing slurs.
+@lilypond[verbatim,quote]
+\fixed c' {
+ <c~ f\=1( g\=2( >2 <c e\=1) a\=2) >
+}
+@end lilypond
+
+@item
Blocks introduced with @code{\header} can be stored in variables
and used as arguments to music and scheme functions and as the
body of @code{#@{@dots{}#@}} constructs. They are represented as
diff --git a/Documentation/contributor/programming-work.itexi b/Documentation/contributor/programming-work.itexi
index 4b0b43dad4..d13b68099c 100644
--- a/Documentation/contributor/programming-work.itexi
+++ b/Documentation/contributor/programming-work.itexi
@@ -367,40 +367,35 @@ If you like using font-lock, you can also add this to your
@end example
-@subheading Indenting with vim
-
-Although emacs indentation is the GNU standard, acceptable
-indentation can usually be accomplished with vim. Some hints for
-vim are as follows:
-
-A workable .vimrc:
-
-@example
-set cindent
-set smartindent
-set autoindent
-set expandtab
-set softtabstop=2
-set shiftwidth=2
-filetype plugin indent on
-set incsearch
-set ignorecase smartcase
-set hlsearch
-set confirm
-set statusline=%F%m%r%h%w\ %@{&ff@}\ %Y\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ %04l,%04v\ %p%%\ [LEN=%L]
-set laststatus=2
-set number
-" Remove trailing whitespace on write
+@subsubheading Indenting with vim
+
+Although emacs indentation is the GNU standard, correct
+indentation for C++ files can be achieved by using the settings
+recommended in the
+@url{https://gcc.gnu.org/wiki/FormattingCodeForGCC, GNU GCC Wiki}.
+Save the following in @file{~/.vim/after/ftplugin/cpp.vim}:
+
+@example
+setlocal cindent
+setlocal cinoptions=>4,n-2,@{2,^-2,:2,=2,g0,h2,p5,t0,+2,(0,u0,w1,m1
+setlocal shiftwidth=2
+setlocal softtabstop=2
+setlocal textwidth=79
+setlocal fo-=ro fo+=cql
+" use spaces instead of tabs
+setlocal expandtab
+" remove trailing whitespace on write
autocmd BufWritePre * :%s/\s\+$//e
@end example
-With this @file{.vimrc}, files can be reindented automatically by
+With these settings, files can be reindented automatically by
highlighting the lines to be indented in visual mode (use V to
-enter visual mode) and pressing @code{=}.
+enter visual mode) and pressing @code{=}, or a single line
+correctly indented in normal mode by pressing @code{==}.
-A @file{scheme.vim} file will help improve the indentation. This
-one was suggested by Patrick McCarty. It should be saved in
-@file{~/.vim/after/syntax/scheme.vim}.
+A @file{scheme.vim} file will help improve the indentation of
+Scheme code. This one was suggested by Patrick McCarty. It
+should be saved in @file{~/.vim/after/syntax/scheme.vim}.
@example
" Additional Guile-specific 'forms'
@@ -417,24 +412,45 @@ syn keyword schemeSyntax define-safe-public define-music-function
syn keyword schemeSyntax def-grace-function
" All of the above should influence indenting too
-set lw+=define-public,define*-public
-set lw+=define*,lambda*,let-keywords*
-set lw+=defmacro,defmacro*,define-macro
-set lw+=defmacro-public,defmacro*-public
-set lw+=use-modules,define-module
-set lw+=define-method,define-class
-set lw+=define-markup-command,define-markup-list-command
-set lw+=define-safe-public,define-music-function
-set lw+=def-grace-function
+setlocal lw+=define-public,define*-public
+setlocal lw+=define*,lambda*,let-keywords*
+setlocal lw+=defmacro,defmacro*,define-macro
+setlocal lw+=defmacro-public,defmacro*-public
+setlocal lw+=use-modules,define-module
+setlocal lw+=define-method,define-class
+setlocal lw+=define-markup-command,define-markup-list-command
+setlocal lw+=define-safe-public,define-music-function
+setlocal lw+=def-grace-function
" These forms should not influence indenting
-set lw-=if
-set lw-=set!
+setlocal lw-=if
+setlocal lw-=set!
" Try to highlight all ly: procedures
syn match schemeFunc "ly:[^) ]\+"
@end example
+For documentation work on texinfo files, identify the file
+extensions used as texinfo files in your @file{.vim/filetype.vim}:
+
+@example
+if exists("did_load_filetypes")
+ finish
+endif
+augroup filetypedetect
+ au! BufRead,BufNewFile *.itely setfiletype texinfo
+ au! BufRead,BufNewFile *.itexi setfiletype texinfo
+ au! BufRead,BufNewFile *.tely setfiletype texinfo
+augroup END
+@end example
+
+and add these settings in @file{.vim/after/ftplugin/texinfo.vim}:
+
+@example
+setlocal expandtab
+setlocal shiftwidth=2
+setlocal textwidth=66
+@end example
@node Naming conventions
@subsection Naming Conventions
@@ -1742,11 +1758,29 @@ Acknowledge functions are called in the order engravers are
@code{\consist}-ed (the only exception is if you set
@code{must-be-last} to @code{#t}).
-If useful things are to be done to the acknowledged grobs, this
-should be deferred until all the acknowledging has finished, i.e.,
-store the acknowledged grobs and process the information in a
-@code{process-acknowledged ()} or @code{stop-translation-timestep ()}
-function.
+There will always be a call to @code{process-acknowledged ()} whenever
+grobs have been created, and @emph{reading} stuff from grobs should be
+delayed until then since other acknowledgers might @emph{write} stuff
+into a grob even after your acknowledger has been called. So the basic
+workflow is to use the various acknowledgers to @emph{record} the grobs
+you are interested in and @emph{write} stuff into them (or do read/write
+stuff that more or less is accumulative and/or really unrelated to other
+engravers), and then use the @code{process-acknowledged ()} hook for
+processing (including @emph{reading}) the grobs you had recorded.
+
+You can create new grobs in @code{process-acknowledged ()}. That will lead
+to a new cycle of @code{acknowledger ()} calls followed by a new cycle of
+@code{process-acknowledged ()} calls.
+
+Only when all those cycles are over is @code{stop-translator-timestep ()}
+called, and then creating grobs is no longer an option. You can still
+@q{process} parts of the grob there (if that means just reading out
+properties and possibly setting context properties based on them) but
+@code{stop-translation-timestep ()} is a cleanup hook, and other engravers
+might have already cleaned up stuff you might have wanted to use.
+Creating grobs in there is not possible since engravers and other code may
+no longer be in a state where they could process them, possibly causing
+a crash.
@node Engraver declaration/documentation
diff --git a/Documentation/extending/scheme-tutorial.itely b/Documentation/extending/scheme-tutorial.itely
index fd0beaa9e1..5984c4f038 100644
--- a/Documentation/extending/scheme-tutorial.itely
+++ b/Documentation/extending/scheme-tutorial.itely
@@ -777,17 +777,28 @@ twentyFour = #(* 2 twelve)
@end example
@noindent
-which would result in the number 24 being stored in the
-LilyPond (and Scheme) variable @code{twentyFour}.
-
-The usual way to refer to LilyPond variables is to call them using a
-backslash, i.e., @code{\twentyFour} (see @ref{LilyPond Scheme syntax}).
-Since this creates a copy of the value for most of LilyPond's internal
-types, in particular music expressions, music functions don't usually
-create copies of material they change. For this reason, music
-expressions given with @code{#} should usually not contain material that
-is not either created from scratch or explicitly copied rather than
-directly referenced.
+which would result in the number @emph{24} being stored in the LilyPond
+(and Scheme) variable @code{twentyFour}.
+
+Scheme allows modifying complex expressions in-place and LilyPond makes
+use of this @q{in-place modification} when using music functions. But
+when music expressions are stored in variables rather than entered
+directly the usual expectation, when passing them to music functions,
+would be that the original value is unmodified. So when referencing a
+music variable with leading backslash (such as @code{\twentyFour}),
+LilyPond creates a copy of that variable's music value for use in the
+surrounding music expression rather than using the variable's value
+directly.
+
+Therefore, Scheme music expressions written with the @code{#} syntax
+should be used for material that is created @q{from scratch} (or that is
+explicitly copied) rather than being used, instead, to directly
+reference material.
+
+@seealso
+Extending:
+@ref{LilyPond Scheme syntax}.
+
@node Input variables and Scheme
@subsection Input variables and Scheme
diff --git a/Documentation/notation/editorial.itely b/Documentation/notation/editorial.itely
index 73e5ffbece..b1fbb8b1c9 100644
--- a/Documentation/notation/editorial.itely
+++ b/Documentation/notation/editorial.itely
@@ -270,7 +270,7 @@ The following shorthand commands are also available:
Font size changes are achieved by scaling the design size that is
closest to the desired size. The standard font size (for
@w{@code{font-size = 0}}) depends on the standard staff height.
-For a 20pt staff, a 11pt font is selected.
+For a 20pt staff, an 11pt font is selected.
@predefined
diff --git a/Documentation/notation/expressive.itely b/Documentation/notation/expressive.itely
index 60f0cc66c0..3c249389c2 100644
--- a/Documentation/notation/expressive.itely
+++ b/Documentation/notation/expressive.itely
@@ -304,7 +304,7 @@ or @notation{decrescendo} mark, it will end at the centre of the note
that has the next @code{\<} or @code{\>} assigned to it. The next
hairpin will then start at the right edge of the same note
instead of the usual left edge had it been terminated with @code{\!}
-before.
+before. A hairpin ending on a downbeat will stop at the preceding bar line.
@lilypond[verbatim,quote]
\relative {
@@ -446,6 +446,8 @@ items such as text scripts, text spanners, and piano pedal marks.
@snippets
+@cindex hairpins at bar lines
+
@lilypondfile[verbatim,quote,texidoc,doctitle]
{setting-hairpin-behavior-at-bar-lines.ly}
@@ -683,7 +685,8 @@ occurences of outer slurs actually indicate phrasing, and phrasing
slurs may overlap a regular slur, see @ref{Phrasing slurs}. When
multiple regular slurs are needed in a single @code{Voice},
matching slur starts and ends need to be labelled by preceding
-them with @code{\=} followed by an identifying number or string.
+them with @code{\=} followed by an identifying key (a symbol or
+non-negative integer).
@lilypond[verbatim,quote]
\fixed c' {
diff --git a/Documentation/notation/pitches.itely b/Documentation/notation/pitches.itely
index 0699239db5..bfed32447e 100644
--- a/Documentation/notation/pitches.itely
+++ b/Documentation/notation/pitches.itely
@@ -903,9 +903,14 @@ music = \relative { c'8. ees16( fis8. a16 b8.) gis16 f8. d16 }
@end lilypond
@knownissues
-Manual ties inside @code{\retrograde} will be broken and
-generate warnings. Some ties can be generated automatically
-by enabling @ref{Automatic note splitting}.
+@code{\retrograde} is a rather simple tool. Since many events are
+@q{mirrored} rather than exchanged, tweaks and directional
+modifiers for opening spanners need to be added at the matching
+closing spanners: @code{^(} needs to be ended by @code{^)}, every
+@code{\<} or @code{\cresc} needs to be ended by @code{\!} or
+@code{\endcr}, every @code{\>} or @code{\decr} needs to be ended
+by @code{\enddecr}. Property-changing commands/overrides with a
+lasting effect will likely cause surprises.
@seealso
Notation Reference:
diff --git a/Documentation/notation/simultaneous.itely b/Documentation/notation/simultaneous.itely
index fc31736c09..d9c7fb42d4 100644
--- a/Documentation/notation/simultaneous.itely
+++ b/Documentation/notation/simultaneous.itely
@@ -559,8 +559,8 @@ upstems, and the even-numbered voices are given downstems:
>>
@end lilypond
-@warning{Lyrics, spanners (such as slurs, ties, hairpins, etc.) cannot be
-created @q{across} voices.}
+@warning{Lyrics and spanners (such as slurs, ties, hairpins, etc.) cannot
+be created @q{across} voices.}
@subsubsubheading Identical rhythms
diff --git a/Documentation/notation/text.itely b/Documentation/notation/text.itely
index 22471b86b3..4d1f44a4e4 100644
--- a/Documentation/notation/text.itely
+++ b/Documentation/notation/text.itely
@@ -121,7 +121,7 @@ Internals Reference:
@knownissues
Checking to make sure that text scripts and lyrics are within the
-margins requires additonal calculations. In cases where slightly faster
+margins requires additional calculations. In cases where slightly faster
performance is desired, use
@example
@@ -505,7 +505,7 @@ Installed Files:
@file{scm/markup.scm}.
@knownissues
-Syntax errors for markup mode can be confusing.
+Syntax error messages for markup mode can be confusing.
@node Selecting font and font size
@@ -543,9 +543,9 @@ Basic font switching is supported in markup mode:
@funindex \magnify
The font size can be altered, relative to the global staff size, in a
-number of different ways
+number of different ways.
-It can be set to predefined size,
+It can be set to predefined size.
@lilypond[quote,verbatim]
\relative b' {
@@ -555,7 +555,7 @@ It can be set to predefined size,
}
@end lilypond
-It can be set relative to its previous value,
+It can be set relative to its previous value.
@lilypond[quote,verbatim]
\relative b' {
@@ -566,7 +566,7 @@ It can be set relative to its previous value,
@end lilypond
It can be increased or decreased relative to the value set by the
-global staff size,
+global staff size.
@lilypond[quote,verbatim]
\relative b' {
@@ -577,7 +577,7 @@ global staff size,
@end lilypond
It can also be set to a fixed point-size, regardless of the global staff
-size,
+size.
@lilypond[quote,verbatim]
\relative b' {
diff --git a/Documentation/snippets/new/using-marklines-in-a-frenched-score.ly b/Documentation/snippets/new/using-marklines-in-a-frenched-score.ly
new file mode 100644
index 0000000000..0fdefc9138
--- /dev/null
+++ b/Documentation/snippets/new/using-marklines-in-a-frenched-score.ly
@@ -0,0 +1,97 @@
+\version "2.19.48"
+\header {
+ lsrtags = "contexts-and-engravers, staff-notation"
+ texidoc = "
+Using @{MarkLine} contexts (such as in
+@uref{http://lsr.di.unimi.it/LSR/Item?id=1010, LSR1010}) in a
+Frenched score can be problematic if all the staves between two
+@code{MarkLine}s are removed in one system. The
+@code{Keep_alive_together_engraver} can be used within each
+@code{StaffGroup} to keep the @code{MarkLine} alive only as long
+as the other staves in the group stay alive.
+"
+ doctitle = "Using marklines in a Frenched score"
+}
+bars = {
+ \tempo "Allegro" 4=120
+ s1*2
+ \repeat unfold 5 { \mark \default s1*2 }
+ \bar "||"
+ \tempo "Adagio" 4=40
+ s1*2
+ \repeat unfold 8 { \mark \default s1*2 }
+ \bar "|."
+}
+winds = \repeat unfold 120 { c''4 }
+trumpet = { \repeat unfold 8 g'2 R1*16 \repeat unfold 4 g'2 R1*8 }
+trombone = { \repeat unfold 4 c'1 R1*8 d'1 R1*17 }
+strings = \repeat unfold 240 { c''8 }
+
+#(set-global-staff-size 16)
+\paper {
+ systems-per-page = 5
+ ragged-last-bottom = ##f
+}
+
+\layout {
+ indent = 15\mm
+ short-indent = 5\mm
+ \context {
+ \name MarkLine
+ \type Engraver_group
+ \consists Output_property_engraver
+ \consists Axis_group_engraver
+ \consists Mark_engraver
+ \consists Metronome_mark_engraver
+ \override VerticalAxisGroup.remove-empty = ##t
+ \override VerticalAxisGroup.remove-layer = #'any
+ \override VerticalAxisGroup.staff-affinity = #DOWN
+ \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.basic-distance = 1
+ keepAliveInterfaces = #'()
+ }
+ \context {
+ \Staff
+ \override VerticalAxisGroup.remove-empty = ##t
+ \override VerticalAxisGroup.remove-layer = ##f
+ }
+ \context {
+ \StaffGroup
+ \accepts MarkLine
+ \consists Keep_alive_together_engraver
+ }
+ \context {
+ \Score
+ \remove Mark_engraver
+ \remove Metronome_mark_engraver
+ }
+}
+
+\score {
+ <<
+ \new StaffGroup = "winds" \with {
+ instrumentName = "Winds"
+ shortInstrumentName = "Winds"
+ } <<
+ \new MarkLine \bars
+ \new Staff \winds
+ >>
+ \new StaffGroup = "brass" <<
+ \new MarkLine \bars
+ \new Staff = "trumpet" \with {
+ instrumentName = "Trumpet"
+ shortInstrumentName = "Tpt"
+ } \trumpet
+ \new Staff = "trombone" \with {
+ instrumentName = "Trombone"
+ shortInstrumentName = "Tbn"
+ } \trombone
+ >>
+ \new StaffGroup = "strings" \with {
+ instrumentName = "Strings"
+ shortInstrumentName = "Strings"
+ } <<
+ \new MarkLine \bars
+ \new Staff = "strings" { \strings }
+ >>
+ >>
+}
diff --git a/Documentation/web/news-front.itexi b/Documentation/web/news-front.itexi
index 69d6fb2dfc..d9a715518b 100644
--- a/Documentation/web/news-front.itexi
+++ b/Documentation/web/news-front.itexi
@@ -9,10 +9,10 @@
@c used for news about the upcoming release; see CG 10.2
@newsItem
-@subheading LilyPond 2.19.46 released @emph{July 26, 2016}
+@subheading LilyPond 2.19.48 released @emph{September 13, 2016}
We are happy to announce the release of LilyPond
-2.19.46. This release includes a number of enhancements, and contains some
+2.19.48. This release includes a number of enhancements, and contains some
work in progress. You will have access to the very latest features, but
some may be incomplete, and you may encounter bugs and crashes. If you
require a stable version of LilyPond, we recommend using the 2.18
diff --git a/Documentation/web/news.itexi b/Documentation/web/news.itexi
index dfff7af3d0..990d92ceaa 100644
--- a/Documentation/web/news.itexi
+++ b/Documentation/web/news.itexi
@@ -27,6 +27,30 @@ NOTE:
@end ignore
@newsItem
+@subheading LilyPond 2.19.47 released @emph{August 31, 2016}
+
+We are happy to announce the release of LilyPond
+2.19.47. This release includes a number of enhancements, and contains some
+work in progress. You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes. If you
+require a stable version of LilyPond, we recommend using the 2.18
+version.
+
+@newsEnd
+
+@newsItem
+@subheading LilyPond 2.19.46 released @emph{July 26, 2016}
+
+We are happy to announce the release of LilyPond
+2.19.46. This release includes a number of enhancements, and contains some
+work in progress. You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes. If you
+require a stable version of LilyPond, we recommend using the 2.18
+version.
+
+@newsEnd
+
+@newsItem
@subheading LilyPond 2.19.45 released @emph{July 09, 2016}
We are happy to announce the release of LilyPond