@c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
\key c \minor
}
-\new Score <<
- \new Staff \with {
+\score {
+ <<
+ \new Staff \with {
fontSize = #-4
\override StaffSymbol #'staff-space = #(magstep -4)
\override StaffSymbol #'thickness = #(magstep -3)
g8.(^> b16 c ees) g8-.^> r r
R2.
}
- \new PianoStaff <<
- \set PianoStaff.instrumentName = #"Piano"
- \new Staff \relative c' {
- \global
- s2.
- s4. s8 r8 r16 <c f aes c>
- <c f aes c>4.^> <c ees g>8 r r
- }
- \new Staff \relative c {
- \global
- \clef "bass"
- << {
+ \new PianoStaff <<
+ \set PianoStaff.instrumentName = #"Piano"
+ \new Staff \relative c' {
+ \global
+ s2.
+ s4. s8 r8 r16 <c f aes c>
+ <c f aes c>4.^> <c ees g>8 r r
+ }
+ \new Staff \relative c {
+ \global
+ \clef "bass"
+ <<
+ {
\once \override DynamicText #'X-offset = #-3
<ees g c>2.~->^\f
<ees g c>4.~ <ees g c>8
} \\ {
<c g c,>2.~
<c g c,>4.~ <c g c,>8
- } >>
- r8 r16 <f, c' aes'>16
- <f c' aes'>4.-> <c' g'>8 r r
- }
+ }
+ >>
+ r8 r16 <f, c' aes'>16
+ <f c' aes'>4.-> <c' g'>8 r r
+ }
+ >>
>>
>>
+}
@end lilypond
@end ignore
d4 r4 r8 d'16 c bes8 c16 d
ees8 d c ees a, r r4
}
+
partIII = \relative c' {
\voiceOne
r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a
}
+
partIV = \relative c {
\voiceTwo
d4 r r2
@lilypond
collide = \once \override NoteColumn #'force-hshift = #0
-\new Score <<
- \new Voice = "sample" \relative c''{
- \key g \minor
- <<
- { \voiceOne g4 \collide g4 }
- \new Voice { \voiceTwo bes \collide bes }
- >>
- }
- \new Lyrics \lyricsto "sample" \lyricmode { "good " " bad" }
->>
+
+\score {
+ <<
+ \new Voice = "sample" \relative c''{
+ \key g \minor
+ <<
+ { \voiceOne g4 \collide g4 }
+ \new Voice { \voiceTwo bes \collide bes }
+ >>
+ }
+ \new Lyrics \lyricsto "sample" \lyricmode { "good " " bad" }
+ >>
+}
@end lilypond
@item Finale positioniert alle Pausen an einer festen Position auf
ausgerichtet, beim zweiten nach oben (rechts).
@lilypond[quote,ragged-right]
-\new Score \with {
- \override SpacingSpanner #'spacing-increment = #3
- \override TimeSignature #'transparent = ##t
-} \relative c' {
- \stemDown <e g b>4_>-\arpeggio
- \override Arpeggio #'direction = #RIGHT
- \stemUp <e g b>4^>-\arpeggio
+\score {
+ \relative c' {
+ \stemDown <e g b>4_>-\arpeggio
+ \override Arpeggio #'direction = #RIGHT
+ \stemUp <e g b>4^>-\arpeggio
+ }
+ \layout {
+ \context {
+ \Score
+ \override SpacingSpanner #'spacing-increment = #3
+ \override TimeSignature #'transparent = ##t
+ }
+ }
}
@end lilypond
\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: 4f7427e7a314a71bde16559247885544256b8213
+ Translation of GIT committish: 144cd434d02e6d90b2fb738eeee99119a7c5e1d2
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
- Guide, node Updating translation committishes..
+ Guide, node Updating translation committishes.
@end ignore
@setfilename lilypond-extending.info
-@settitle Extending LilyPond
+@settitle LilyPond erweitern
@documentencoding UTF-8
@documentlanguage de
@afourpaper
@menu
* Scheme-Übung:: Programmieren innerhalb von LilyPond.
* Schnittstellen für Programmierer:: Wie man mit Scheme kommunizieren kann.
-* LilyPond Scheme interfaces:: Information in die Noten senden und aus den Noten erhalten.
+* LilyPond Scheme-Schnittstellen:: Information in die Noten senden und aus den Noten erhalten.
Anhänge
@c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: 3d7ffa1f82bb44673134b28becf7898482fe7316
+ Translation of GIT committish: 144cd434d02e6d90b2fb738eeee99119a7c5e1d2
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Fortgeschrittene Anpassungen können mithilfe der Programmiersprache
Scheme vorgenommen werden. Wenn Sie Scheme nicht kennen, gibt
es eine grundlegende Einleitung in LilyPonds
-@rlearning{Scheme-Übung}.
+@ref{Scheme-Übung}.
@menu
* Musikalische Funktionen::
-* Schnittstelle für Programmierer::
-* Komplizierte Funktionen erstellen::
-* Programmierungsschnittstelle für Textbeschriftungen::
+* Textbeschriftungsfunktionen::
* Kontexte für Programmierer::
-* Scheme-Vorgänge als Eigenschaften::
-* Scheme-Code anstelle von \tweak verwenden::
+* Callback-Funktionen::
+* Scheme-Code innerhalb LilyPonds::
* Schwierige Korrekturen::
@end menu
@translationof Music functions
Dieser Abschnitt behandelt die Erstellung von musikalischen Funktionen
-innerhalb von LilyPond.
+innerhalb von LilyPond. @emph{Musikalische Funktionen} sind Scheme-Prozeduren,
+die musikalische Ausdrücke automatisch erstellen können und dadurch die
+Eingabedatei maßgeblich vereinfachen können.
@menu
-* Überblick über musikalische Funktionen::
+* Syntax der musikalischen Funktionen::
* Einfache Ersetzungsfunktionen::
-* Paarige Ersetzungsfunktionen::
+* Mittlere Ersetzungsfunktionen::
* Mathematik in Funktionen::
-* Leere Funktionen::
* Funktionen ohne Argumente::
-* Überblick über vorhandene musikalische Funktionen::
+* Leere Funktionen::
@end menu
-@node Überblick über musikalische Funktionen
-@subsection Überblick über musikalische Funktionen
-@translationof Overview of music functions
+@node Syntax der musikalischen Funktionen
+@subsection Syntax der musikalischen Funktionen
+@translationof Music function syntax
-Es ist einfach, eine Funktion zu erstellen, die Variablen
-im LilyPond-Code ersetzt. Die allgemeine Form derartiger
-Funktionen ist
+Die allgemeine Form von musikalischen Funktionen ist:
@example
function =
-#(define-music-function (parser location @var{var1} @var{var2}...@var{vari}... )
- (@var{var1-type?} @var{var2-type?}...@var{vari-type?}...)
- #@{
- @emph{...Noten...}
- #@})
+#(define-music-function
+ (parser location @var{Arg1} @var{Arg2} @dots{})
+ (@var{Typ1?} @var{Typ2?} @dots{})
+ @var{Noten})
@end example
@noindent
wobei
@multitable @columnfractions .33 .66
-@item @var{vari} @tab die @var{i}te Variable
-@item @var{vari-type?} @tab die Art der @var{i}ten Variable
-@item @var{...Noten...} @tab normaler LilyPond-Code, in dem Variablen
-wie @code{#$var1} usw. benutzt werden.
-@end multitable
+@item @var{ArgN}
+@tab das @var{n}te Argument
-Die folgenden Eingabetypen können als Variablen in einer musikalischen
-Funktion benutzt werden. Diese Liste ist nicht vollständig -- siehe
-auch andere Dokumentationen über Scheme für weitere Variablenarten.
+@item @var{TypN?}
+@tab ein Scheme-Typenprädikat (engl. type predicate), für welches
+@code{@var{ArgN}} @code{#t} ausgeben muss
+
+@item @var{...Noten...}
+@tab ein musikalischer Ausdruck, optional in Scheme geschrieben, mit allem
+LilyPond-Code in Raute/geschweifte Klammer eingeschlossen
+(@tie{}@w{@code{#@{@dots{}#@}}}@tie{}). Innerhalb der LilyPond-Codeumgebungen
+wird @code{$} eingesetzt, um auf Funktionsargumente zu verweisen (etwa
+@samp{$Arg1}), oder ein neuer Scheme-Ausdruck muss begonnen werden,
+der die Funktionsargumente enthält (etwa @w{@samp{$(cons Arg1 Arg2)}}).
-@multitable @columnfractions .33 .66
-@headitem Eingabetyp @tab @var{vari-type?}-Notation
-@item Ganzzahl @tab @code{integer?}
-@item Float (Dezimalzahl) @tab @code{number?}
-@item Zeichenkette @tab @code{string?}
-@item Textbeschriftung @tab @code{markup?}
-@item Musikalischer Ausdruck @tab @code{ly:music?}
-@item Ein Variablenpaar @tab @code{pair?}
@end multitable
-Die Argumente @code{parser} und @code{location} sind zwingend erforderlich
-und werden in einigen fortgeschrittenen Situationen eingesetzt. Das
-Argument @code{parser} wird benutzt, um auf den Wert einer weiteren
-LilyPond-Variable zuzugreifen. Das Argument @code{location} wird
-benutzt, um den @qq{Ursprung} des musikalischen Ausdrucks zu definieren, der von
-der musikalischen Funktion erzeugt wird. Das hilft, wenn ein
-Syntaxfehler auftaucht: in solchen Fällen kann LilyPond mitteilen,
-an welcher Stelle in der Eingabedatei sich der Fehler befindet.
+Eine Liste der möglichen Typenprädikate findet sich in
+@ruser{Vordefinierte Typenprädikate}. Durch den Benutzer definierte
+Typenprädikate sind auch erlaubt.
+@seealso
-@node Einfache Ersetzungsfunktionen
-@subsection Einfache Ersetzungsfunktionen
-@translationof Simple substitution functions
+Notationsreferenz:
+@ruser{Vordefinierte Typenprädikate}.
-Hier ist ein einfaches Beispiel:
+Installierte Dateien:
+@file{lily/music-scheme.cc},
+@file{scm/c++.scm},
+@file{scm/lily.scm}.
-@lilypond[quote,verbatim,ragged-right]
-padText = #(define-music-function (parser location padding) (number?)
- #{
- \once \override TextScript #'padding = #$padding
- #})
-
-\relative c''' {
- c4^"piu mosso" b a b
- \padText #1.8
- c4^"piu mosso" d e f
- \padText #2.6
- c4^"piu mosso" fis a g
-}
-@end lilypond
-Musikalische Ausdrücke können auch ersetzt werden:
-
-@lilypond[quote,verbatim,ragged-right]
-custosNote = #(define-music-function (parser location note)
- (ly:music?)
- #{
- \once \override Voice.NoteHead #'stencil =
- #ly:text-interface::print
- \once \override Voice.NoteHead #'text =
- \markup \musicglyph #"custodes.mensural.u0"
- \once \override Voice.Stem #'stencil = ##f
- $note
- #})
-
-{ c' d' e' f' \custosNote g' }
-@end lilypond
-
-Mehrere Variablen können benutzt werden:
+@node Einfache Ersetzungsfunktionen
+@subsection Einfache Ersetzungsfunktionen
+@translationof Simple substitution functions
-@lilypond[quote,verbatim,ragged-right]
-tempoPadded = #(define-music-function (parser location padding tempotext)
- (number? string?)
-#{
- \once \override Score.MetronomeMark #'padding = $padding
- \tempo \markup { \bold $tempotext }
-#})
+Einfache Ersetzungsfunktionen sind musikalische Funktionen, deren
+musikalische Ausgabe-Funktion im LilyPond-Format geschrieben ist
+und Funktionsargumente in der Ausgabefunktion enthält. Sie werden
+beschrieben in @ruser{Beispiele der Ersetzungsfunktionen}
-\relative c'' {
- \tempo \markup { "Low tempo" }
- c4 d e f g1
- \tempoPadded #4.0 #"High tempo"
- g4 f e d c1
-}
-@end lilypond
+@node Mittlere Ersetzungsfunktionen
+@subsection Mittlere Ersetzungsfunktionen
+@translationof Intermediate substitution functions
-@node Paarige Ersetzungsfunktionen
-@subsection Paarige Ersetzungsfunktionen
-@translationof Paired substitution functions
+Mittlere Ersetzungsfunktionen setzen sich aus einer Mischung von
+Scheme-Code und LilyPond-Code in der musikalischen Ausgabe-Funktion
+zusammen.
Einige @code{\override}-Befehle benötigen ein Zahlenpaar
-(als @code{cons}-Zelle in Scheme bezeichnet). Um beide Zahlen
-einer Funktion zuzuweisen, kann entweder die Variable @code{pair?}
-benutzt werden oder die @code{cons} in die musikalische Funktion
-eingefügt werden.
+(als @code{cons}-Zelle in Scheme bezeichnet).
+
+Das Paar kann direkt an die musikalische Funktion
+mit der Variable @code{pair?} weitergeleitet werden:
-@quotation
@example
manualBeam =
-#(define-music-function (parser location beg-end)
- (pair?)
-#@{
- \once \override Beam #'positions = #$beg-end
-#@})
-
-\relative @{
+#(define-music-function
+ (parser location beg-end)
+ (pair?)
+ #@{
+ \once \override Beam #'positions = $beg-end
+ #@})
+
+\relative c' @{
\manualBeam #'(3 . 6) c8 d e f
@}
@end example
-@end quotation
-@noindent
-oder
+Anstelle dessen können auch die Zahlen, aus denen das Paar besteht,
+einzeln als eigenständige Argumente weitergeleitet und der
+Scheme-Code, der das Paar erstellt, in die musikalische Funktion
+augenommen werden:
@lilypond[quote,verbatim,ragged-right]
manualBeam =
-#(define-music-function (parser location beg end)
- (number? number?)
-#{
- \once \override Beam #'positions = #(cons $beg $end)
-#})
-
-\relative {
+#(define-music-function
+ (parser location beg end)
+ (number? number?)
+ #{
+ \once \override Beam #'positions = $(cons beg end)
+ #})
+
+\relative c' {
\manualBeam #3 #6 c8 d e f
}
@end lilypond
auch Scheme-Programmcode enthalten:
@lilypond[quote,verbatim,ragged-right]
-AltOn = #(define-music-function (parser location mag) (number?)
- #{ \override Stem #'length = #$(* 7.0 mag)
+AltOn =
+#(define-music-function
+ (parser location mag)
+ (number?)
+ #{
+ \override Stem #'length = $(* 7.0 mag)
\override NoteHead #'font-size =
- #$(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) #})
+ $(inexact->exact (* (/ 6.0 (log 2.0)) (log mag)))
+ #})
AltOff = {
\revert Stem #'length
\revert NoteHead #'font-size
}
-{ c'2 \AltOn #0.5 c'4 c'
- \AltOn #1.5 c' c' \AltOff c'2 }
+\relative c' {
+ c2 \AltOn #0.5 c4 c
+ \AltOn #1.5 c c \AltOff c2
+}
@end lilypond
@noindent
zu integrieren:
@lilypond[quote,verbatim,ragged-right]
-withAlt = #(define-music-function (parser location mag music) (number? ly:music?)
- #{ \override Stem #'length = #$(* 7.0 mag)
+withAlt =
+#(define-music-function
+ (parser location mag music)
+ (number? ly:music?)
+ #{
+ \override Stem #'length = $(* 7.0 mag)
\override NoteHead #'font-size =
- #$(inexact->exact (* (/ 6.0 (log 2.0)) (log mag)))
+ $(inexact->exact (* (/ 6.0 (log 2.0)) (log mag)))
$music
\revert Stem #'length
- \revert NoteHead #'font-size #})
+ \revert NoteHead #'font-size
+ #})
-{ c'2 \withAlt #0.5 {c'4 c'}
- \withAlt #1.5 {c' c'} c'2 }
+\relative c' {
+ c2 \withAlt #0.5 { c4 c }
+ \withAlt #1.5 { c c } c2
+}
@end lilypond
-@node Leere Funktionen
-@subsection Leere Funktionen
-@translationof Void functions
-
-Eine musikalische Funktion muss einen musikalischen Ausdruck
-ausgeben, aber in manchen Fällen müssen Funktionen erstellt werden,
-die keine Notation enthalten (wie etwa eine Funktion, mit der
-man @qq{Point and Click} ausschalten kann). Um das vornehmen zu
-können, wird ein @code{leere}r musikalischer Ausdruck ausgegeben.
-
-Das ist der Grund, warum die Form, die ausgegeben wird,
-@code{(make-music ...)} heißt. Wird die Eigenschaft
-@code{'void} (engl. für @qq{leer}) auf @code{#t} gesetzt, wird der
-Parser angewiesen, den ausgegebenen musikalischen Ausdruck zu ignorieren.
-Der maßgebliche Teil der @code{'void}-Funktion ist also die Verarbeitung,
-die die Funktion vornimmt, nicht der musikalische Ausdruck, der ausgegeben
-wird.
-
-@example
-noPointAndClick =
-#(define-music-function (parser location) ()
- (ly:set-option 'point-and-click #f)
- (make-music 'SequentialMusic 'void #t))
-...
-\noPointAndClick % disable point and click
-@end example
-
-
@node Funktionen ohne Argumente
@subsection Funktionen ohne Argumente
@translationof Functions without arguments
@example
displayBarNum =
-#(define-music-function (parser location) ()
+#(define-music-function
+ (parser location)
+ ()
(if (eq? #t (ly:get-option 'display-bar-numbers))
#@{ \once \override Score.BarNumber #'break-visibility = ##f #@}
#@{#@}))
aufgerufen werden.
-@node Überblick über vorhandene musikalische Funktionen
-@subsection Überblick über vorhandene musikalische Funktionen
-@translationof Overview of available music functions
-
-@c fixme ; this should be move somewhere else?
-Die folgenden Befehle sind musikalische Funktionen:
-
-@include identifiers.tely
-
-
-
-@node Schnittstelle für Programmierer
-@section Schnittstelle für Programmierer
-@translationof Programmer interfaces
-
-Dieser Abschnitt zeigt, wie LilyPond und
-Scheme gemischt werden können.
-
-@menu
-* Eingabevariablen und Scheme::
-* Interne Repräsentation der Musik::
-@end menu
-
-
-@node Eingabevariablen und Scheme
-@subsection Eingabevariablen und Scheme
-@translationof Input variables and Scheme
-
-Das Eingabeformat unterstützt die Notation von Variablen: im
-folgenden Beispiel wird ein musikalischer Ausdruck einer Variable
-mit der Bezeichnung @code{traLaLa} zugewiesen:
-
-@example
-traLaLa = @{ c'4 d'4 @}
-@end example
-
-Der Geltungsbereich von Variablen ist beschränkt: im folgenden
-Beispiel enthält die @code{\layout}-Umgebung auch eine
-@code{traLaLa}-vVariable, die unabhängig von der äußeren
-@code{\traLaLa}-Variable ist:
-
-@example
-traLaLa = @{ c'4 d'4 @}
-\layout @{ traLaLa = 1.0 @}
-@end example
-
-Grundsätzlich ist jede Eingabedatei ein Geltungsbereich, und
-alle @code{\header}-, @code{\midi}- und @code{\layout}-Umgebungen
-sind Geltungsbereiche, die unterhalb des globalen Geltungsbereiches
-angeordnet sind.
-
-Sowohl Variablen als auch Geltungsbereiche sind in Form des
-GUILE-Modulsystems implementiert. Ein anonymes Scheme-Modul
-wird an jeden Geltungsbereich angehängt. Eine Zuweisung der Form
-
-@example
-traLaLa = @{ c'4 d'4 @}
-@end example
-
-@noindent
-wird intern in die Scheme-Definition
-
-@example
-(define traLaLa @var{Scheme-Wert von `@code{... }'})
-@end example
-@noindent
-umgewandelt.
-
-Das bedeutet, dass Eingabe- und Scheme-Variablen frei vermischt
-werden können. Im nächsten Beispiel wird ein Notenfragment in
-der Variable @code{traLaLa} gespeichert und mithilfe von Scheme
-dupliziert. Das Ergebnis wird in eine @code{\score}-Umgebung
-mit der zweiten Variable @code{twice} integriert:
-
-@lilypond[verbatim]
-traLaLa = { c'4 d'4 }
-
-%% dummy action to deal with parser lookahead
-#(display "this needs to be here, sorry!")
-
-#(define newLa (map ly:music-deep-copy
- (list traLaLa traLaLa)))
-#(define twice
- (make-sequential-music newLa))
-
-{ \twice }
-@end lilypond
-
-In diesem Beispiel geschieht die Zuweisung, nachdem der Parser
-festgestellt hat, dass nichts interessantes mehr nach
-@code{traLaLa = @{ ... @}} vorkommt. Ohne die Pseudovariable
-in dem Beispiel würde die @code{newLa}-Definition ausgeführt
-werden, bevor @code{traLaLa} definiert ist, was zu einem
-Syntax-Fehler führen würde.
-
-Das obige Beispiel zeigt, wie man musikalische Ausdrücke
-von der Eingabe in den Scheme-Interpretierer @qq{exportieren}
-kann. Es geht auch in die andere Richtung. Indem man einen
-Scheme-Wert in die Funktion @code{ly:export} einpackt, wird
-der Scheme-Wert interpretiert als ob er in LilyPond-Syntax
-notiert worden wäre. Anstatt @code{\twice} zu definieren,
-hätte man also auch schreiben können:
+@node Leere Funktionen
+@subsection Leere Funktionen
+@translationof Void functions
-@example
-...
-@{ #(ly:export (make-sequential-music (list newLa))) @}
-@end example
+Eine musikalische Funktion muss einen musikalischen Ausdruck
+ausgeben, aber in manchen Fällen müssen Funktionen erstellt werden,
+die keine Noten enthalten (wie etwa eine Funktion, mit der
+man @qq{Point and Click} ausschalten kann). Um das vornehmen zu
+können, wird ein @code{leere}r musikalischer Ausdruck ausgegeben.
-Scheme-Code wird sofort ausgewertet, wenn der Parser darauf
-stößt. Um Scheme-Code in einem Makro zu definieren (das dann
-erst später aufgerufen werden soll), müssen leere Funktionen
-benutzt werden (siehe @ref{Leere Funktionen}) oder das Folgende:
+Das ist der Grund, warum die Form, die ausgegeben wird,
+@w{@code{(make-music @dots{})}} heißt. Wird die Eigenschaft
+@code{'void} (engl. für @qq{leer}) auf @code{#t} gesetzt, wird der
+Parser angewiesen, den ausgegebenen musikalischen Ausdruck zu ignorieren.
+Der maßgebliche Teil der @code{'void}-Funktion ist also die Verarbeitung,
+die die Funktion vornimmt, nicht der musikalische Ausdruck, der ausgegeben
+wird.
@example
-#(define (nopc)
- (ly:set-option 'point-and-click #f))
-
+noPointAndClick =
+#(define-music-function
+ (parser location)
+ ()
+ (ly:set-option 'point-and-click #f)
+ (make-music 'SequentialMusic 'void #t))
...
-#(nopc)
-@{ c'4 @}
-@end example
-
-@knownissues
-
-Scheme- und LilyPond-Variablen können im LilyPond-Modus mit der
-@code{--safe}-Option nicht vermischt werden.
-
-
-@node Interne Repräsentation der Musik
-@subsection Interne Repräsentation der Musik
-@translationof Internal music representation
-
-Wenn ein musikalischer Ausdruck ausgewertet wird, wird er in eine
-Anzahl von musikalischen Scheme-Objekten konvertiert. Die Eigenschaft, die ein
-musikalisches Objekt definiert, ist, dass es Zeit einnimmt. Zeit ist
-eine rationale Zahl, die die Länge eines Stückes in ganzen Noten
-misst.
-
-Ein musikalisches Objekt hat drei Typusarten:
-@itemize
-@item
-musikalische Bezeichnung: Jeder musikalische Ausdruck hat eine Bezeichnung.
-Eine Note beispielsweise führt zu einem @rinternals{NoteEvent} und
-@code{\simultaneous} führt zu @rinternals{SimultaneousMusic}. Eine Liste
-aller möglichen Ausdrücke findet sich in der Referenz der Interna, unter
-@rinternals{Music expressions}.
-
-@item
-@q{Typ} oder Schnittstelle: Jede musikalische Bezeichnung hat mehrere
-@qq{Typen} oder Schnittstellten, beispielsweise ist eine Note ein
-@code{event}, ober sie ist auch ein @code{note-event}, ein
-@code{rhythmic-event} und ein @code{melodic-event}. Alle diese
-Notationsklassen finden sich in der Referenz der Interna unter
-@rinternals{Music classes}.
-
-@item
-C++-Objekt: Jedes musikalische Objekt wird von einem Objekt der
-C++-Klasse @code{Music} repräsentiert.
-@end itemize
-
-Die eigentlich Information eines musikalischen Ausdrucks ist in
-Eigenschaften gespeichert. Ein @rinternals{NoteEvent} hat zum
-Beispiel @code{pitch}- und @code{duration}-Eigenschaften, die
-die Tonhöhe und die Dauer dieser Note speichern. Eine Liste aller
-verfügbaren Eigenschaften findet sich in der Referenz der Interna unter
-@rinternals{Music properties}.
-
-Ein zusammengesetzter musikalischer Ausdruck ist ein musikalisches
-Objekt, das andere Objekte in seinen Eigenschaften enthält. Eine Liste
-der Objekte kann in der @code{elements}-Eigenschaft eines
-musikalischen Objektes gespeichert werden, oder ein einziges
-@qq{Kind}-Objekt in der @code{element}-Eigenschaft. Sa hat etwa
-@rinternals{SequentialMusic} seine @qq{Kinder} in @code{elements},
-und @rinternals{GraceMusic} hat sein einziges Argument in
-@code{element}. Der Hauptteil einer Wiederholung wird in der
-@code{element}-Eigenschaft von @rinternals{RepeatedMusic} gespeichert,
-und die Alternativen in @code{elements}.
-
-
-
-@node Komplizierte Funktionen erstellen
-@section Komplizierte Funktionen erstellen
-@translationof Building complicated functions
-
-Dieser Abschnitt zeigt, wie man Information zusammensucht,
-um komplizierte musikalische Funktionen zu erstellen.
-
-@menu
-* Musikalische Funktionen darstellen::
-* Eigenschaften von Musikobjekten::
-* Verdoppelung einer Note mit Bindebögen (Beispiel)::
-* Artikulationszeichen zu Noten hinzufügen (Beispiel)::
-@end menu
-
-
-@node Musikalische Funktionen darstellen
-@subsection Musikalische Funktionen darstellen
-@translationof Displaying music expressions
-
-@cindex interne Speicherung
-@cindex Musikausdrücke anzeigen
-@cindex Anzeigen von Musikausdrücken
-
-@funindex displayMusic
-@funindex \displayMusic
-
-Wenn man eine musikalische Funktion erstellt, ist es oft
-hilfreich sich anzuschauen, wie musikalische Funktionen
-intern gespeichert werden. Das kann mit der Funktion
-@code{\displayMusic} erreicht werden:
-
-@example
-@{
- \displayMusic @{ c'4\f @}
-@}
-@end example
-
-@noindent
-zeigt:
-
-@example
-(make-music
- 'SequentialMusic
- 'elements
- (list (make-music
- 'EventChord
- 'elements
- (list (make-music
- 'NoteEvent
- 'duration
- (ly:make-duration 2 0 1 1)
- 'pitch
- (ly:make-pitch 0 0 0))
- (make-music
- 'AbsoluteDynamicEvent
- 'text
- "f")))))
-@end example
-
-Normalerweise gibt LilyPond diese Ausgabe auf der Konsole mit
-allen anderen Nachrichten aus. Um die wichtigen Nachrichten
-in einer Datei zu speichern, kann die Ausgabe in eine Datei
-umgeleitet werden:
-
-@example
-lilypond file.ly >display.txt
-@end example
-
-Mit etwas Umformatierung ist die gleiche Information sehr viel
-einfacher zu lesen:
-
-@example
-(make-music 'SequentialMusic
- 'elements (list (make-music 'EventChord
- 'elements (list (make-music 'NoteEvent
- 'duration (ly:make-duration 2 0 1 1)
- 'pitch (ly:make-pitch 0 0 0))
- (make-music 'AbsoluteDynamicEvent
- 'text "f")))))
-@end example
-
-Eine musikalische @code{@{ ... @}}-Sequenz hat die Bezeichnung
-@code{SequentialMusic} und ihre inneren Ausdrücke werden als
-Liste in seiner @code{'elements}-Eigenschaft gespeichert. Eine
-Note ist als als ein @code{EventChord}-Ausdruck dargestellt,
-der ein @code{NoteEvent}-Objekt (welches Dauer und
-Tonhöhe speichert) und zusätzliche Information enthält (in
-diesem Fall ein @code{AbsoluteDynamicEvent} mit einer
-@code{"f"}-Text-Eigenschaft.
-
-
-@node Eigenschaften von Musikobjekten
-@subsection Eigenschaften von Musikobjekten
-@translationof Music properties
-
-Das @code{NoteEvent}-Objekt ist das erste Objekt der
-@code{'elements}-Eigenschaft von @code{someNote}.
-
-@example
-someNote = c'
-\displayMusic \someNote
-===>
-(make-music
- 'EventChord
- 'elements
- (list (make-music
- 'NoteEvent
- 'duration
- (ly:make-duration 2 0 1 1)
- 'pitch
- (ly:make-pitch 0 0 0))))
-@end example
-
-Die @code{display-scheme-music}-Funktion ist die Funktion, die von
-@code{\displayMusic} eingesetzt wird, um die Scheme-Repräsentation
-eines musikalischen Ausdrucks anzuzeigen.
-
-@example
-#(display-scheme-music (first (ly:music-property someNote 'elements)))
-===>
-(make-music
- 'NoteEvent
- 'duration
- (ly:make-duration 2 0 1 1)
- 'pitch
- (ly:make-pitch 0 0 0))
-@end example
-
-Danach wird die Tonhöhe der Note von der @code{'pitch}-Eigenschaft
-des @code{NoteEvent}-Objektes gelesen:
-
-@example
-#(display-scheme-music
- (ly:music-property (first (ly:music-property someNote 'elements))
- 'pitch))
-===>
-(ly:make-pitch 0 0 0)
-@end example
-
-Die Tonhöhe einer Note kann geändert werden, indem man diese
-@code{'pitch}-Eigenschaft umdefiniert:
-
-@funindex \displayLilyMusic
-@funindex displayLilyMusic
-
-@example
-#(set! (ly:music-property (first (ly:music-property someNote 'elements))
- 'pitch)
- (ly:make-pitch 0 1 0)) ;; Die Tonhöhen auf d' verändern.
-\displayLilyMusic \someNote
-===>
-d'
-@end example
-
-
-@node Verdoppelung einer Note mit Bindebögen (Beispiel)
-@subsection Verdoppelung einer Note mit Bindebögen (Beispiel)
-@translationof Doubling a note with slurs (example)
-
-In diesem Abschnitt soll gezeigt, werden, wie man eine
-Funktion erstellt, die eine Eingabe wie @code{a}
-nach @code{a( a)} umdefiniert. Dazu wird zuerst die
-interne Repräsentation der Musik betrachtet, die
-das Endergebnis darstellt:
-
-@example
-\displayMusic@{ a'( a') @}
-===>
-(make-music
- 'SequentialMusic
- 'elements
- (list (make-music
- 'EventChord
- 'elements
- (list (make-music
- 'NoteEvent
- 'duration
- (ly:make-duration 2 0 1 1)
- 'pitch
- (ly:make-pitch 0 5 0))
- (make-music
- 'SlurEvent
- 'span-direction
- -1)))
- (make-music
- 'EventChord
- 'elements
- (list (make-music
- 'NoteEvent
- 'duration
- (ly:make-duration 2 0 1 1)
- 'pitch
- (ly:make-pitch 0 5 0))
- (make-music
- 'SlurEvent
- 'span-direction
- 1)))))
-@end example
-
-Eine schlechte Nachricht ist, dass die
-@code{SlurEvent}-Ausdrücke @qq{innerhalb}
-der Noten (bzw. innerhalb der
-@code{EventChord}-Ausdrücke) hinzugefügt werden müssen.
-
-Jetzt folgt eine Betrachtung der Eingabe:
-
-@example
-(make-music
- 'SequentialMusic
- 'elements
- (list (make-music
- 'EventChord
- 'elements
- (list (make-music
- 'NoteEvent
- 'duration
- (ly:make-duration 2 0 1 1)
- 'pitch
- (ly:make-pitch 0 5 0))))))
-@end example
-
-In der gewünschten Funktion muss also dieser Ausdruck
-kopiert werden (sodass zwei Noten vorhanden sind, die
-eine Sequenz bilden), dann müssen @code{SlurEvent}
-zu der @code{'elements}-Eigenschaft jeder Noten hinzugefügt
-werden, und schließlich muss eine @code{SequentialMusic}
-mit den beiden @code{EventChords} erstellt werden.
-
-@example
-doubleSlur = #(define-music-function (parser location note) (ly:music?)
- "Return: @{ note ( note ) @}.
- `note' is supposed to be an EventChord."
- (let ((note2 (ly:music-deep-copy note)))
- (set! (ly:music-property note 'elements)
- (cons (make-music 'SlurEvent 'span-direction -1)
- (ly:music-property note 'elements)))
- (set! (ly:music-property note2 'elements)
- (cons (make-music 'SlurEvent 'span-direction 1)
- (ly:music-property note2 'elements)))
- (make-music 'SequentialMusic 'elements (list note note2))))
+\noPointAndClick % Point and Click ausschalten
@end example
-@node Artikulationszeichen zu Noten hinzufügen (Beispiel)
-@subsection Artikulationszeichen zu Noten hinzufügen (Beispiel)
-@translationof Adding articulation to notes (example)
-
-Am einfachsten können Artikulationszeichen zu Noten
-hinzugefügt werden, indem man zwei musikalische Funktionen
-in einen Kontext einfügt, wie erklärt in
-@ref{Kontexte erstellen}. Hier soll jetzt eine musikalische
-Funktion entwickelt werden, die das vornimmt.
-
-Eine @code{$variable} innerhalb von @code{#@{...#@}} ist das
-gleiche wie die normale Befehlsform @code{\variable} in
-üblicher LilyPond-Notation. Es ist bekannt dass
-
-@example
-@{ \music -. -> @}
-@end example
-
-@noindent
-in LilyPond nicht funktioniert. Das Problem könnte vermieden
-werden, indem das Artikulationszeichen an eine Pseudonote
-gehängt wird:
-
-@example
-@{ << \music s1*0-.-> @}
-@end example
-
-@noindent
-aber in diesem Beispiel soll gezeigt werden, wie man das in
-Scheme vornimmt. Zunächst wird die Eingabe und die gewünschte
-Ausgabe examiniert:
-
-@example
-% Eingabe
-\displayMusic c4
-===>
-(make-music
- 'EventChord
- 'elements
- (list (make-music
- 'NoteEvent
- 'duration
- (ly:make-duration 2 0 1 1)
- 'pitch
- (ly:make-pitch -1 0 0))))
-=====
-% gewünschte Ausgabe
-\displayMusic c4->
-===>
-(make-music
- 'EventChord
- 'elements
- (list (make-music
- 'NoteEvent
- 'duration
- (ly:make-duration 2 0 1 1)
- 'pitch
- (ly:make-pitch -1 0 0))
- (make-music
- 'ArticulationEvent
- 'articulation-type
- "marcato")))
-@end example
-
-Dabei ist zu sehen, dass eine Note (@code{c4}) als @code{EventChord}
-repräsentiert ist, mit einem @code{NoteEvent}-Ausdruck in ihrer
-Elementenliste. Um eine Marcato-Artikulation hinzuzufügen, muss
-ein @code{ArticulationEvent}-Ausdruck zu der Elementeigenschaft
-des @code{EventChord}-Ausdrucks hinzugefügt werden.
-Um diese Funktion zu bauen, wird folgendermaßen begonnen:
-
-@example
-(define (add-marcato event-chord)
- "Add a marcato ArticulationEvent to the elements of `event-chord',
- which is supposed to be an EventChord expression."
- (let ((result-event-chord (ly:music-deep-copy event-chord)))
- (set! (ly:music-property result-event-chord 'elements)
- (cons (make-music 'ArticulationEvent
- 'articulation-type "marcato")
- (ly:music-property result-event-chord 'elements)))
- result-event-chord))
-@end example
-
-Die erste Zeile definiert eine Funktion in Scheme: Die Bezeichnung
-der Funktion ist @code{add-marcato} und sie hat eine Variable
-mit der Bezeichnung @code{event-chord}. In Scheme geht der Typ
-einer Variable oft direkt aus der Bezeichnung hervor (das ist auch
-eine gute Methode für andere Programmiersprachen).
-
-@example
-"Add a marcato..."
-@end example
-
-@noindent
-ist eine (englische) Beschreibung, was diese Funktion tut. Sie ist
-nicht unbedingt notwendig, aber genauso wie klare Variablen-Bezeichnungen
-ist auch das eine gute Methode.
-
-@example
-(let ((result-event-chord (ly:music-deep-copy event-chord)))
-@end example
-
-@code{let} wird benutzt, um die lokalen Variablen zu definieren. Hier
-wird eine lokale Variable benutzt: @code{result-event-chord}. Sie erhält
-den Wert @code{(ly:music-deep-copy event-chord)}. @code{ly:music-deep-copy}
-ist eine LilyPond-spezifische Funktion, die wie alle Funktionen mit dem
-Präfix @code{ly:} versehen ist. Sie wird benutzt, um eine Kopie eines
-musikalischen Ausdrucks anzufertigen. Hier wird @code{event-chord}
-(der Parameter der Funktion) kopiert. Die Funktion soll ja nur ein
-Artikulationszeichen an einen @code{EventChord} gehängt werden, deshalb ist es besser,
-den @code{EventChord}, der als Argument gegeben wurde, nicht zu
-verändern, weil er woanders benutzt werden könnte.
-
-Jetzt gibt es @code{result-event-chord}, wobei es sich um einen
-@code{NoteEventChord}-Ausdruck handelt, welcher gleichzeitig eine Kopie
-von @code{event-chord} ist. Das Makro wird seiner Eigenschaftsliste
-hinzugefügt:
-
-@example
-(set! place new-value)
-@end example
-
-Was in diesem Fall @qq{gesetzt} werden soll (@qq{place}) ist die
-@q{elements}-Eigenschaft des @code{result-event-chord}-Ausdrucks.
-
-@example
-(ly:music-property result-event-chord 'elements)
-@end example
-
-@code{ly:music-property} ist die Funktion, mit der musikalische
-Eigenschaften erreicht werden können (die @code{'elements},
-@code{'duration}, @code{'pitch} usw., die in der Ausgabe von
-@code{\displayMusic} weiter oben angezeigt werden). Der neue
-Wert ist, was ehemals die Elementeigenschaft war, mit einem
-zusätzlichen Element: dem @code{ArticulationEvent}-Ausdruck,
-der aus der Ausgabe von
-@code{\displayMusic} kopiert werden kann:
-
-@example
-(cons (make-music 'ArticulationEvent
- 'articulation-type "marcato")
- (ly:music-property result-event-chord 'elements))
-@end example
-
-@code{cons} wird benutzt, um ein Element zu einer Liste hinzuzufügen,
-ohne dass die originale Liste verändert wird. Das ist es, was die
-Funktion tun soll: die gleiche Liste, aber mit dem neuen
-@code{ArticulationEvent}-Ausdruck. Die Reihenfolge innerhalb
-der Elementeeigenschaft ist hier nicht relevant.
-
-Wenn schließlich die Marcato-Artikulation zu der entsprechenden
-@code{elements}-Eigenschaft hinzugefügt ist, kann
-@code{result-event-chord} ausgegeben werden, darum die letzte Zeile
-der Funktion.
-
-Jetzt wird die @code{add-marcato}-Funktion in eine musikalische
-Funktion umgewandelt:
-
-@example
-addMarcato = #(define-music-function (parser location event-chord)
- (ly:music?)
- "Add a marcato ArticulationEvent to the elements of `event-chord',
- which is supposed to be an EventChord expression."
- (let ((result-event-chord (ly:music-deep-copy event-chord)))
- (set! (ly:music-property result-event-chord 'elements)
- (cons (make-music 'ArticulationEvent
- 'articulation-type "marcato")
- (ly:music-property result-event-chord 'elements)))
- result-event-chord))
-@end example
-
-Eine Überprüfung, dass die Funktion richtig arbeitet, geschieht
-folgendermaßen:
-
-@example
-\displayMusic \addMarcato c4
-@end example
-
-
-@node Programmierungsschnittstelle für Textbeschriftungen
-@section Programmierungsschnittstelle für Textbeschriftungen
-@translationof Markup programmer interface
+@node Textbeschriftungsfunktionen
+@section Textbeschriftungsfunktionen
+@translationof Markup functions
Textbeschriftungselemente sind als besondere Scheme-Funktionen
-definiert, die ein Stencil-Objekt erstellen, dem eine Anzahl
+definiert, die ein @code{Stencil}-Objekt erstellen, dem eine Anzahl
an Argumenten übergeben wird.
@menu
* Beschriftungskonstruktionen in Scheme::
* Wie Beschriftungen intern funktionieren::
* Neue Definitionen von Beschriftungsbefehlen::
-* Neue Definitionen von Beschriftungsbefehlen für Listen::
+* Neue Definitionen von Beschriftungslistenbefehlen::
@end menu
@item @code{\markup Text1} @tab @code{(markup Text1)}
@item @code{\markup @{ Text1 Text2 ... @}} @tab
@code{(markup Text1 Text2 ... )}
-@item @code{\Befehl} @tab @code{#:Befehl}
+@item @code{\Beschriftungsbefehl} @tab @code{#:Beschriftungsbefehl}
@item @code{\Variable} @tab @code{Variable}
@item @code{\center-column @{ ... @}} @tab @code{#:center-column ( ... )}
@item @code{Zeichenkette} @tab @code{"Zeichenkette"}
-@item @code{#scheme-arg} @tab @code{scheme-arg}
+@item @code{#scheme-Arg} @tab @code{scheme-Arg}
@end multitable
@end quotation
@subsection Neue Definitionen von Beschriftungsbefehlen
@translationof New markup command definition
+Dieser Abschnitt behandelt die Definition von neuen Textbeschriftungsbefehlen.
+
+@menu
+* Syntax der Definition von Textbeschriftungsbefehlen::
+* Über Eigenschaften::
+* Ein vollständiges Bespiel::
+* Eingebaute Befehle anpassen::
+@end menu
+
+@node Syntax der Definition von Textbeschriftungsbefehlen
+@unnumberedsubsubsec Syntax der Definition von Textbeschriftungsbefehlen
+@translationof Markup command definition syntax
+
Neue Textbeschriftungsbefehle können mit dem
@code{define-markup-command}-Scheme-Makro definiert werden.
@lisp
-(define-markup-command (@var{befehl-bezeichnung} @var{layout} @var{props} @var{arg1} @var{arg2} ...)
- (@var{arg1-type?} @var{arg2-type?} ...)
+(define-markup-command (@var{befehl-bezeichnung} @var{layout} @var{props} @var{Arg1} @var{Arg2} ...)
+ (@var{Arg1-typ?} @var{Arg2-typ?} ...)
+ [ #:properties ((@var{Eigenschaft1} @var{Standard-Wert1})
+ ...) ]
..Befehlkörper..)
@end lisp
Die Argumente sind:
@table @var
-@item argi
-@var{i}te Befehlsargument
-@item argi-type?
-eine Eigenschaft für das @var{i}te Argument
-@item layout
+@item @var{befehl-bezeichnung}
+die Bezeichnung des Befehls
+
+@item @var{layout}
die @q{layout}-Definition
+
@item props
-eine Liste an alists, in der alle aktiven Eigenschaften enthalten sind
+eine Liste an assoziativen Listen, in der alle aktiven Eigenschaften enthalten sind
+
+@item @var{argi}
+das @var{i}te Befehlsargument
+
+@item @var{argi-type?}
+eine Eigenschaft für das @var{i}te Argument
@end table
-Als einfaches Beispiel soll gezeigt werden, wie man einen
-@code{\smallcaps}-Befehl hinzufügen kann, der die Kapitälchen
-für die Schriftzeichen auswählt. Normalerweise würde man Kapitälchen
-folgendermaßen auswählen:
+Wenn der Befehl Eigenschaften des @code{props}-Arguments benutzt,
+kann das @code{#:properties}-Schlüsselwort benutzt werden um zu
+bestimmen, welche Eigenschaften mit welchen Standard-Werten benutzt
+werden.
-@example
-\markup @{ \override #'(font-shape . caps) Text-in-Kapitälchen @}
-@end example
+Argumente werden nach ihrem Typ unterschieden:
-@noindent
-Damit wird die Kapitälchenschriftart ausgewählt, indem die
-@code{font-shape}-Eigenschaft auf @code{#'caps} gesetzt wird,
-während @code{Text-in-caps} interpretiert wird.
+@itemize
+@item eine Textbeschriftung entspricht einem Typenprädikat @code{markup?};
+@item eine Textbeschriftungsliste entspricht einem Typenprädikat
+@code{markup-list?};
+@item jedes andere Scheme-Objekt entspricht Typenprädikaten wie etwa
+@code{list?}, @code{number?}, @code{boolean?}, usw.
+@end itemize
-Damit diese Funktion als @code{\smallcaps}-Befehl zur Verfügung
-gestellt werden kann, muss eine Funktion mit @code{define-markup-command}
-definiert werden. Der Befehl braucht ein Argument vom Typ @code{markup}.
-Darum sollte der Beginn der Funktion lauten:
+Es gibt keine Einschränkung in der Reihenfolge der Argumente (nach
+den Standard-Argumenten @code{layout} und @code{props}). Textbeschriftungsfunktionen,
+die als letztes Argument eine Textbeschriftung haben, haben die
+Besonderheit, dass sie auf Textbeschriftungslisten angewendet werden
+können, und das Resultat ist eine Textbeschriftungsliste, in der
+die Textbeschriftungsfuktion (mit den angegebenen Argumenten am Anfang)
+auf jedes Element der originalen Textbeschriftungsliste angewendet
+wurde.
-@example
-(define-markup-command (smallcaps layout props argument) (markup?)
-@end example
+Da das Wiederholen der Argumente am Anfang bei der Anwendung einer
+Textbeschriftungsfunktion auf eine Textbeschriftungsliste for allem
+für Scheme-Argumente sparsam ist, kann man Leistungseinbußen vermeiden,
+indem man nur Scheme-Argumente für die Argumente am Anfang einsetzt,
+wenn es sich um Textbeschriftungsfunktionen handelt, die eine Textbeschriftung
+als letztes Argument haben.
-@noindent
-Was jetzt folgt, ist der eigentliche Inhalt des Befehls: das
-@code{argument} soll als Beschriftung (markup) interpretiert werden,
-also:
+@node Über Eigenschaften
+@unnumberedsubsubsec Über Eigenschaften
+@translationof On properties
-@example
-(interpret-markup layout @dots{} argument)
-@end example
+Die @code{layout}- und @code{props}-Argumente der Textbeschriftungsbefehle
+bringen einen Kontext für die Interpretation der Beschriftung:
+Schriftgröße, Zeilenlänge usw.
-@noindent
-Diese Interpretation sollte @code{'(font-shape . caps)} zu den
-aktiven Eigenschaften hinzufügen, weshalb wir das Folgende anstelle
-der @dots{} in dem Beispiel einfügen:
+Das @code{layout}-Argument greift auf Eigenschaften zu, die in der
+@code{paper}-Umgebung definiert werden, indem man die @code{ly:output-def-lookup}-Funktion
+benutzt. Beispielsweise liest man die Zeilenlänge (die gleiche, die auch in
+Partituren benutzt wird) aus mit:
@example
-(cons (list '(font-shape . caps) ) props)
+(ly:output-def-lookup layout 'line-width)
@end example
-@noindent
-Die Variable @code{props} ist eine Liste an alists, und mit @code{cons}
-wird ihr eine zusätzliche Einstellung hinzugefügt.
+Das @code{props}-Argument stellt einige Eigenschaften für die Textbeschriftungsbefehle
+zur Verfügung. Beispielsweise wenn der Überschrifttext einer
+@code{book}-Umgebung interpretiert wird, werden alle Variablen, die
+in der @code{\header}-Umgebung definiert werden, automatisch zu @code{props}
+hinzugefügt, sodass die Beschriftung auf Titel, Komponist usw. der
+@code{book}-Umgebung zugreifen kann. Das ist auch eine Möglichkeit, das
+Verhalten eines Beschriftungsbefehls zu konfigurieren: Wenn etwa ein
+Befehl die Schriftgröße während der Verarbeitung einsetzt, wird die
+Schriftgröße aus den @code{props} ausgelesen und nicht mit einem eigenen
+@code{font-size}-Argument definiert. Beim Aufruf des Beschriftungsbefehls
+kann der Wert der Schriftgröße geändert werden, womit sich auch das Verhalten
+des Befehls verändert. Benutzen Sie das @code{#:properties}-Schlüsselwort
+von @code{define-markup-command} um zu definieren, welche Eigenschaften aus den
+@code{props}-Argumenten ausgelesen werden sollen.
-Man könnte sich auch vorstellen, dass ein Rezitativ einer Oper
-gesetzt werden soll, und ein Befehl wäre sehr bequem, mit dem
-man die Namen der Charaktere auf eine eigene Art darstellen könnte.
-Namen sollen in Kapitälchen gesetzt werden und etwas nach links und
-oben verschoben werden. Man kann also einen @code{\character}-Befehl
-definieren, der die nötige Verschiebung berücksichtigt und
-den neuen @code{\smallcaps}-Befehl einsetzt:
+Das Beispiel im nächsten Abschnitt illustriert, wie man auf Eigenschaften
+in einem Beschriftungsbefehl zugreifen und sie verändern kann.
-@example
-#(define-markup-command (character layout props name) (string?)
- "Print the character name in small caps, translated to the left and
- top. Syntax: \\character #\"name\""
+
+@node Ein vollständiges Bespiel
+@unnumberedsubsubsec Ein vollständiges Bespiel
+@translationof A complete example
+
+Das folgende Beispiel definiert einen Beschriftungsbefehl, der einen
+doppelten Kasten um einen Text zeichnet.
+
+Zuerst wollen wir ein annäherndes Ergebnis mit Textbeschriftungen definieren.
+Nach Stöbern in @ruser{Textbeschriftungsbefehle} finden wir den Befehl
+@code{\box}:
+
+@lilypond[quote,verbatim,ragged-right]
+\markup \box \box HELLO
+@end lilypond
+
+Wir wollen aber etwas mehr Abstand (engl. padding) zwischen dem Text und dem Kasten.
+Nach der Dokumentation von @code{\box} hat der Befehl eine
+@code{box-padding}-Eigenschaft, die den Standardwert von 0.2 hat. Die
+Dokumentation zeit auch, wir man den Wert verändert:
+
+@lilypond[quote,verbatim,ragged-right]
+\markup \box \override #'(box-padding . 0.6) \box A
+@end lilypond
+
+Auch der Abstand zwischen den zwei Kästen ist uns zu klein und soll auch
+vergrößert werden:
+
+@lilypond[quote,verbatim,ragged-right]
+\markup \override #'(box-padding . 0.4) \box \override #'(box-padding . 0.6) \box A
+@end lilypond
+
+Diese lange Textbeschriftung immer wieder schreiben zu müssen, ist
+anstrengend. Hier kömmt ein Textbeschriftungsbefehl ins Spiel. Wir
+schreiben uns alle einen @code{double-box}-Beschriftungsbefehl, der
+ein Argument annimmt (den Text). Er zeichnet zwei Kästen mit genügend Abstand:
+
+@lisp
+#(define-markup-command (double-box layout props text) (markup?)
+ "Draw a double box around text."
(interpret-markup layout props
- (markup #:hspace 0 #:translate (cons -3 1) #:smallcaps name)))
-@end example
+ (markup #:override '(box-padding . 0.4) #:box
+ #:override '(box-padding . 0.6) #:box text)))
+@end lisp
-Hier ist eine Komplikation, die erklärt werden muss: Text über oder
-unter dem Notensystem wird vertikal verschoben um in einem bestimmten
-Abstand von dem System und den Noten zu sein (das wird als @qq{padding}
-bezeichnet). Um sicherzugehen, dass dieser Mechanismus nicht die
-vertikale Verschiebung von @code{#:translate} annulliert, wird
-die leere Zeichenkette (@code{#:hspace 0}) vor den zu verschiebenden
-Text gesetzt. Das @code{#:hspace 0} wird jetzt also über die Noten
-gesetzt und @code{name} dann relativ zu der leeren Zeichenkette
-verschoben. Im Endeffekt wird der Text nach links oben verschoben.
+@code{text} ist die Bezeichnung des Arguments dieses Befehls,
+und @code{markup?} ist seine Art: hiermit wird der Befehl als
+Beschriftungsbefehl identifiziert. Die @code{interpret-markup}-Funktion
+wird in den meisten Beschriftungsbefehlen benutzt: sie erstellt einen
+Stencil, wobei @code{layout}, @code{props} und eine Beschriftung benutzt
+werden. In unserem Fall wird diese Beschriftung durch das
+@code{markup}-Scheme-Makro erstellt, siehe auche @ref{Beschriftungskonstruktionen in Scheme}.
+Die Transformation des @code{\markup}-Ausdrucks in einen
+Scheme-Beschriftungsausdruck geschieht durch umschreiben des LilyPond-Codes
+in Scheme-Code.
-Das Resultat sieht folgendermaßen aus:
+Der neue Befehl kann wie folgt benutzt werden:
@example
-@{
- c''^\markup \character #"Cleopatra"
- e'^\markup \character #"Giulio Cesare"
-@}
+\markup \double-box A
@end example
-@lilypond[quote,ragged-right]
-#(define-markup-command (smallcaps layout props str) (string?)
- "Print the string argument in small caps. Syntax: \\smallcaps #\"string\""
+Es wäre schön, den @code{double-box}-Befehl noch konfigurierbar zu gestalten:
+in unserem Fall sind die Werte von @code{box-padding} direkt definiert und
+können nicht mehr vom Benutzer verändert werden. Es wäre auch besser, wenn
+der Abstand zwischen den beiden Kästen vom Abstand zwischen dem inneren Kasten
+und dem Text unterschieden werden könnte. Eine neue Eigenschaft muss also
+definiert werden: @code{inter-box-padding} für den Abstand zwischen den Kästen.
+@code{box-padding} wird für den inneren Abstand benutzt. Der neue Befehl wird
+so definiert:
+
+@lisp
+#(define-markup-command (double-box layout props text) (markup?)
+ #:properties ((inter-box-padding 0.4)
+ (box-padding 0.6))
+ "Draw a double box around text."
(interpret-markup layout props
- (make-line-markup
- (map (lambda (s)
- (if (= (string-length s) 0)
- s
- (markup #:large (string-upcase (substring s 0 1))
- #:translate (cons -0.6 0)
- #:tiny (string-upcase (substring s 1)))))
- (string-split str #\Space)))))
-
-#(define-markup-command (character layout props name) (string?)
- "Print the character name in small caps, translated to the left and
- top. Syntax: \\character #\"name\""
+ (markup #:override `(box-padding . ,inter-box-padding) #:box
+ #:override `(box-padding . ,box-padding) #:box text)))
+@end lisp
+
+In diesem Code wird das @code{#:properties}-Schlüsselwort benutzt, sodass
+die Eigenschaften @code{inter-box-padding} und @code{box-padding} aus dem
+@code{props}-Argument ausgelesen werden, und Standardwerte werden gegeben,
+falls die Eigenschaften nicht definiert sein sollten.
+
+Dann werden diese Werte benutzt, um die @code{box-padding}-Eigenschaft
+zu verändert, die von beiden @code{\box}-Befehlen benutzt wird. Beachten
+Sie Akzent und das Komma des @code{\override}-Arguments: hiermit kann man
+einen Variablenwert in einen wörtlichen Ausdruck überführen.
+
+Jetzt kann der Befehl in Beschriftungen benutzt werden und der Abstand
+der Kästen kann angepasst werden:
+
+@lilypond[quote,verbatim,ragged-right]
+#(define-markup-command (double-box layout props text) (markup?)
+ #:properties ((inter-box-padding 0.4)
+ (box-padding 0.6))
+ "Draw a double box around text."
(interpret-markup layout props
- (markup #:hspace 0 #:translate (cons -3 1) #:smallcaps name)))
+ (markup #:override `(box-padding . ,inter-box-padding) #:box
+ #:override `(box-padding . ,box-padding) #:box text)))
-{
- c''^\markup \character #"Cleopatra" c'' c'' c''
- e'^\markup \character #"Giulio Cesare" e' e' e'
-}
+\markup \double-box A
+\markup \override #'(inter-box-padding . 0.8) \double-box A
+\markup \override #'(box-padding . 1.0) \double-box A
@end lilypond
-In diesen Befehlen wurden Kapitälchen eingesetzt, aber es kann
-vorkommen, dass die Schriftart keine Kapitälchen zur Verfügung
-stellt. In diesem Fall können die Kapitälchen nachempfunden
-werden, indem man Großbuchstaben setzt, deren Anfangsbuchstabe
-etwas größer gesetzt wird:
+@node Eingebaute Befehle anpassen
+@unnumberedsubsubsec Eingebaute Befehle anpassen
+@translationof Adapting builtin commands
-@example
-#(define-markup-command (smallcaps layout props str) (string?)
- "Print the string argument in small caps."
- (interpret-markup layout props
- (make-line-markup
- (map (lambda (s)
- (if (= (string-length s) 0)
- s
- (markup #:large (string-upcase (substring s 0 1))
- #:translate (cons -0.6 0)
- #:tiny (string-upcase (substring s 1)))))
- (string-split str #\Space)))))
-@end example
+Ein guter Weg, einen neuen Beschriftungsbefehl zu schreiben, ist es, als Vorbild
+einen existierenden zu nehmen. Die meisten Beschriftungsbefehle, die
+LilyPond mitbringt, finden sich in der Datei
+@file{scm/@/define@/-markup@/-commands@/.scm}.
-Der @code{smallcaps}-Befehl spaltet die Argumente zuerst in
-Einzelstücke auf, die von Leerzeichen getrennt sind
-(@code{(string-split str #\Space)}); für jedes Einzelstück
-wird dann eine Beschriftung aufgebaut, deren erster Buchstabe
-vergrößert wird und als Versalbuchstabe gesetzt wird
-(@code{#:large (string-upcase (substring s 0 1))}), und eine
-zweite Versalbuchstaben gesetzt werden
-(@code{#:tiny (string-upcase (substring s 1))}). Wenn
-LilyPond ein Leerzeichen zwischen Beschriftungen einer Zeile
-entdeckt, wird die zweite Beschriftung nach links verschoben
-(@code{#:translate (cons -0.6 0) ...}). Dann werden die
-Beschriftungen für jedes Einzelstück in eine Zeile gesetzt
-@code{(make-line-markup ...)}. Schließlich wird die resultierende
-Beschriftung an die @code{interpret-markup}-Funktion zusammen
-mit den Argumenten @code{layout} und @code{props} weitergereicht.
-
-Achtung: ist gibt keinen internen Befehl @code{\smallCaps}, der
-benutzt werden kann, um Text in Kapitälchen zu setzen. Siehe auch
-@ref{Text markup commands}.
+Man könnte beispielsweise den Befehl @code{\draw-line}, der eine Linie
+zeichnet, anpassen, sodass er eine Doppellinie zeichnet. Der
+Befehl @code{\draw-line} ist wie folgend definiert (Dokumentation entfernt):
-@knownissues
+@lisp
+(define-markup-command (draw-line layout props dest)
+ (number-pair?)
+ #:category graphic
+ #:properties ((thickness 1))
+ "..documentation.."
+ (let ((th (* (ly:output-def-lookup layout 'line-thickness)
+ thickness))
+ (x (car dest))
+ (y (cdr dest)))
+ (make-line-stencil th 0 0 x y)))
+@end lisp
-Im Moment sind die möglichen Kombinationen von Argumenten (nach den
-Standardargumenten @var{layout} und @var{props}), die mit
-@code{define-markup-command} definiert werden, wie folgt
-limitiert:
-
-@table @asis
-@item (kein Argument)
-@itemx @var{list}
-@itemx @var{markup}
-@itemx @var{markup markup}
-@itemx @var{scm}
-@itemx @var{scm markup}
-@itemx @var{scm scm}
-@itemx @var{scm scm markup}
-@itemx @var{scm scm markup markup}
-@itemx @var{scm markup markup}
-@itemx @var{scm scm scm}
-@end table
+Um einen neuen Befehl, der auf einem existierenden basiert, zu definieren,
+wird die Befehlsdefinition kopiert und die Bezeichnung des Befehls
+geändert. Das @code{#:category}-Schlagwort kann entfernt werden,
+weil es nur zur Erstellung der LilyPond-Dokumentation eingesetzt wird
+und keine Bedeutung für selbstdefinierte Befehle hat.
-@noindent
-Hier stellt @var{scm} native Scheme-Datentypen dar wie
-@q{number} oder @q{string}.
+@lisp
+(define-markup-command (draw-double-line layout props dest)
+ (number-pair?)
+ #:properties ((thickness 1))
+ "..documentation.."
+ (let ((th (* (ly:output-def-lookup layout 'line-thickness)
+ thickness))
+ (x (car dest))
+ (y (cdr dest)))
+ (make-line-stencil th 0 0 x y)))
+@end lisp
-Es ist beispielsweise nicht möglich, einen Beschriftungsbefehl
-@code{foo} mit vier Argumenten in folgender Weise zu nutzen:
+Dann braucht man eine Eigenschaft, um den Abstand zwischen den zwei
+Linien zu definieren, als @code{line-gap} bezeichnet und etwa mit
+dem Standardwert 0.6:
-@example
-#(define-markup-command (foo layout props
- num1 str1 num2 str2)
- (number? string? number? string?)
- ...)
-@end example
+@lisp
+(define-markup-command (draw-double-line layout props dest)
+ (number-pair?)
+ #:properties ((thickness 1)
+ (line-gap 0.6))
+ "..documentation.."
+ ...
+@end lisp
-@noindent
-Wenn es folgendermaßen eingesetzt wird:
+Schließlich wird der Code, der die zwei Linien zeichnet, hinzugefügt.
+Zwei Aufrufe an @code{make-line-stencil} werden benutzt, um beide Linien
+zu zeichnen, und die beiden sich daraus ergebenden Stencils werden mit
+@code{ly:stencil-add} kombiniert:
-@example
-\markup \foo #1 #"bar" #2 #"baz"
-@end example
+@lilypond[quote,verbatim,ragged-right]
+#(define-markup-command (my-draw-line layout props dest)
+ (number-pair?)
+ #:properties ((thickness 1)
+ (line-gap 0.6))
+ "..documentation.."
+ (let* ((th (* (ly:output-def-lookup layout 'line-thickness)
+ thickness))
+ (dx (car dest))
+ (dy (cdr dest))
+ (w (/ line-gap 2.0))
+ (x (cond ((= dx 0) w)
+ ((= dy 0) 0)
+ (else (/ w (sqrt (+ 1 (* (/ dx dy) (/ dx dy))))))))
+ (y (* (if (< (* dx dy) 0) 1 -1)
+ (cond ((= dy 0) w)
+ ((= dx 0) 0)
+ (else (/ w (sqrt (+ 1 (* (/ dy dx) (/ dy dx))))))))))
+ (ly:stencil-add (make-line-stencil th x y (+ dx x) (+ dy y))
+ (make-line-stencil th (- x) (- y) (- dx x) (- dy y)))))
+
+\markup \my-draw-line #'(4 . 3)
+\markup \override #'(line-gap . 1.2) \my-draw-line #'(4 . 3)
+@end lilypond
-@cindex Scheme signature
-@cindex Signatur, Scheme
-@noindent
-beschwert sich @command{lilypond}, dass @code{foo} wegen einer unbekannten
-Scheme Signatur nicht analysiert werden kann.
-@node Neue Definitionen von Beschriftungsbefehlen für Listen
-@subsection Neue Definitionen von Beschriftungsbefehlen für Listen
+@node Neue Definitionen von Beschriftungslistenbefehlen
+@subsection Neue Definitionen von Beschriftungslistenbefehlen
@translationof New markup list command definition
Beschriftungslistenbefehle können mit dem Scheme-Makro
args)))))
@end example
-Neben den üblichen @code{layout} und @code{props}-Argumenten, nimmt der
+Neben den üblichen @code{layout} und @code{props}-Argumenten nimmt der
@code{paragraph}-Beschriftungslistenbefehl als Argument eine Beschriftungsliste,
die @code{args} genannt wird. Das Prädikat für Beschriftungslisten ist
@code{markup-list?}.
@funindex \applyOutput
Der vielfältigste Weg, ein Objekt zu beeinflussen, ist
-@code{\applyOutput}. Die Syntax lautet:
+@code{\applyOutput}. Das funktioniert, indem ein musikalisches
+Ereignis in den angegebenen Kontext eingefügt wird
+(@rinternals{ApplyOutputEvent}). Die Syntax lautet:
@example
\applyOutput @var{Kontext} @var{proc}
wobei @var{proc} eine Scheme-Funktion ist, die drei Argumente
benötigt.
-Während der Interpretation wird die Funktion @var{proc} für
-jedes Layoutobjekt aufgerufen, dass im Kontext @var{Kontext}
+Während der Interpretation wird die Funktion @code{@var{proc}} für
+jedes Layoutobjekt aufgerufen, dass im Kontext @code{@var{Kontext}}
vorgefunden wird, und zwar mit folgenden Argumenten:
@itemize
der musikalische Ausdruck oder das Objekt, das für seine Erstellung
verantwortlich war, in der Objekteigenschaft @code{cause}.
Für einen Notenkopf beispielsweise ist das ein
-@rinternals{NoteHead}-Ereignis, und für einen Notenhals
-(ein @rinternals{Stem}-Objekt) ist es ein @rinternals{NoteHead}-Objekt.
+@rinternals{NoteHead}-Ereignis, und für einen Notenhals ist es
+ein @rinternals{Stem}-Objekt.
Hier ist eine Funktion, die mit @code{\applyOutput} benutzt
-werden kann; sie macht Notenköpfe auf der Mittellinie unsichtbar:
+werden kann; sie macht Notenköpfe auf und neben der Mittellinie unsichtbar:
@lilypond[quote,verbatim,ragged-right]
#(define (blanker grob grob-origin context)
(if (and (memq 'note-head-interface (ly:grob-interfaces grob))
- (eq? (ly:grob-property grob 'staff-position) 0))
+ (< (abs (ly:grob-property grob 'staff-position)) 2))
(set! (ly:grob-property grob 'transparent) #t)))
-\relative {
- e4 g8 \applyOutput #'Voice #blanker b d2
+\relative c' {
+ a'4 e8 <<\applyOutput #'Voice #blanker a c d>> b2
}
@end lilypond
-@node Scheme-Vorgänge als Eigenschaften
-@section Scheme-Vorgänge als Eigenschaften
-@translationof Scheme procedures as properties
+@node Callback-Funktionen
+@section Callback-Funktionen
+@translationof Callback functions
-Eigenschaften (wie Dicke, Richtung usw.) können mit
-@code{\override} auf feste Werte gesetzt werden, etwa:
+Eigenschaften (wie Dicke (@code{thickness}), Richtung (@code{direction})
+usw.) können mit @code{\override} auf feste Werte gesetzt werden, etwa:
@example
\override Stem #'thickness = #2.0
Resultat der Funktion ausgegeben wird und nicht das
@code{simple-closure}-Objekt.
+Aus dem Callback heraus kann man eine Beschriftung am einfachsten mit
+@code{grob-interpret-markup} auswerten. Beispielsweise:
+
+@example
+mein-callback = #(lambda (grob)
+ (grob-interpret-markup grob (markup "foo")))
+@end example
+
+
+
+
+
-@node Scheme-Code anstelle von \tweak verwenden
-@section Scheme-Code anstelle von @code{ weak} verwenden
-@translationof Using Scheme code instead of \tweak
+@node Scheme-Code innerhalb LilyPonds
+@section Scheme-Code innerhalb LilyPonds
+@translationof Inline Scheme code
Der hauptsächliche Nachteil von @code{\tweak} ist seine
syntaktische Inflexibilität. Folgender Code beispielsweise
@end itemize
Diese Funktion muss in @rinternals{Tie} (Bindebogen) installiert
-werden, und der letzte Teil eines gebrochenen Bindebogens wird
-nach oben verschoben.
+werden, damit der letzte Teil eines gebrochenen Bindebogens
+neu ausgerichtet wird.
@lilypond[quote,verbatim,ragged-right]
#(define (my-callback grob)
auch das alte @code{after-line-breaking}-Callback aufrufen,
wenn es vorhanden ist. Wenn diese Funktion etwa mit
@code{Hairpin} (Crescendo-Klammer) eingesetzt wird, sollte auch
-@code{ly:hairpin::after-line-breaking} aufgerufen werden.
+@code{ly:spanner::kill-zero-spanned-time} aufgerufen werden.
@item
innerhalb der @code{\context}-Umgebung funktioniert.
@end itemize
+
+
+
+@node LilyPond Scheme-Schnittstellen
+@chapter LilyPond Scheme-Schnittstellen
+@translationof LilyPond Scheme interfaces
+
+Dieses Kapitel behandelt die verschiedenen Werkzeuge, die LilyPond als
+Hilfe für Scheme-Programmierer zur Verfügung stellt, um Information in
+den Musik-Stream zu senden und aus ihm herauszubekommen.
+
+TODO: was gehört hier eigentlich hin?
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: 3d7aec6a2b5f3910f8d5a43e58cb5c741d3fcc77
+ Translation of GIT committish: 144cd434d02e6d90b2fb738eeee99119a7c5e1d2
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@c \version "2.12.0"
@node Scheme-Übung
-@appendix Scheme-Übung
+@chapter Scheme-Übung
@translationof Scheme tutorial
@funindex #
@cindex GUILE
@cindex Scheme, in einer LilyPond-Datei
@cindex LISP
+@cindex Auswertung von Scheme-Code
LilyPond verwendet die Scheme-Programmiersprache sowohl als Teil
der Eingabesyntax als auch als internen Mechanismus, um Programmmodule
@qq{R5RS}-Standard von Scheme befindet sich unter der Adresse
@uref{http://www.schemers.org/Documents/Standards/R5RS/}.
+
+@menu
+* Einleitung in Scheme::
+* Scheme in LilyPond::
+* Komplizierte Funktionen erstellen::
+@end menu
+
+@node Einleitung in Scheme
+@section Einleitung in Scheme
+@translationof Introduction to Scheme
+
+Wir wollen mit einer Einführung in Scheme beginnen. Für diese kurze Einfürung
+soll der GUILE-Interpreter genommen werden, um zu erforschen, wie die Sprache
+funktioniert. Nach besserer Bekanntschaft mit Scheme soll gezeigt werden, wie
+die Sprache in LilyPond-Dateien eingefügt werden kann.
+
+@menu
+* Scheme-Sandkasten::
+* Scheme-Variablen::
+* Einfache Scheme-Datentypen::
+* Zusammengesetzte Scheme-Datentypen::
+* Berechnungen in Scheme::
+* Scheme-Prozeduren::
+* Scheme-Konditionale::
+@end menu
+
+@node Scheme-Sandkasten
+@subsection Scheme-Sandkasten
+@translationof Scheme sandbox
+
Die LilyPond-Installation enthält gleichzeitig auch die
Guile-Implementation von Scheme. Auf den meisten Systemen kann
man in einer Scheme-sandbox experimentieren, indem man ein
einigen Systemen, insbesondere unter Windows, muss man evtl.
die Umgebungsvariable @code{GUILE_LOAD_PATH} auf das Verzeichnis
@code{../usr/shr/guile/1.8} innerhalb des LilyPond-Installationsverzeichnisses
-setzen (der vollständige Pfad ist erklärt in @ref{Other sources of information}).
+setzen (der vollständige Pfad ist erklärt in @rlearning{Mehr Information}).
Alternativ können Windows-Benutzer auch einfach @qq{Ausführen} im
Startmenü wählen und @code{guile} schreiben.
+Wenn guile einmal läuft, erhält man die Eingabeaufforderung von guile:
+
+@lisp
+guile>
+@end lisp
+
+Man kann Scheme-Ausdrucke hier eingeben und mit Scheme experimentieren.
+
+
+@node Scheme-Variablen
+@subsection Scheme-Variablen
+@translationof Scheme variables
+
+Scheme-Variablen können jedlichen gültigen Scheme-Wert erhalten, auch
+Scheme-Prozeduren.
+
+Scheme-Variablen werden mit @code{define} definiert:
+
+@lisp
+guile> (define a 2)
+guile>
+@end lisp
+
+Scheme-Variablen können an der Guile-Eingabeaufforderung ausgewertet werden,
+indem man einfach die Variable eintippt.
+
+@lisp
+guile> a
+2
+guile>
+@end lisp
+
+Scheme-Variablen können auf dem Bildschirm ausgegeben werden, indem man
+@code{display} zum Anzeigen benutzt:
+
+@lisp
+guile> (display a)
+2guile>
+@end lisp
+
+Sowohl der Wert @code{2} als auch die Eingabeaufforderung @code{guile}
+werden auf der gleichen Zeile ausgegeben. Das kann man vermeiden, indem
+man eine @code{newline}-Prozedur für eine Leerzeile aufruft oder das
+Zeichen für eine neue Zeile anzeigen lässt:
+
+@lisp
+guile> (display a)(newline)
+2
+guile> (display a)(display "\n")
+2
+guile>
+@end lisp
+
+Wenn eine Variable einmal erstellt wurde, kann ihr Wert durch @code{set!}
+verändert werden:
+
+@lisp
+guile> (set! a 12345)
+guile> a
+12345
+guile>
+@end lisp
+
+@node Einfache Scheme-Datentypen
+@subsection Einfache Scheme-Datentypen
+@translationof Scheme simple data types
+
Das Grundlegendste an einer Sprache sind Daten: Zahlen, Zeichen,
Zeichenketten, Listen usw. Hier ist eine Liste der Datentypen, die für
LilyPond-Eingabedateien relevant sind.
@item Zahlen
Zahlen werden wie üblich eingegeben, @code{1} ist die (ganze)
-Zahl Eins, während @code{-1.5} ist eine Gleitkommazahl (also
-eine nicht-ganze).
+Zahl Eins, während @code{-1.5} eine Gleitkommazahl (also
+eine nicht-ganze) ist.
@item Zeichenketten
Zeichenketten werden in doppelte Anführungszeichen gesetzt:
eine Zeichenkette"
@end example
+@noindent
+und die Zeichen für eine neue Zeile am Ende jeder Zeile werden auch
+in die Zeichenkette aufgenommen.
+
+Zeichen für eine neue Zeile können auch hinzugefügt werden, indem man
+@code{\n} in die Zeichenkette aufnimmt.
+
+@example
+"das\nist eine\nmehrzeilige Zeichenkette"
+@end example
+
Anführungszeichen und neue Zeilen können auch mit sogenannten
Fluchtsequenzen eingefügt werden. Die Zeichenkette
@code{a sagt "b"} wird wie folgt eingegeben:
"a sagt \"b\""
@end example
-Neue Zeilen und Backslashe werden mit @code{\n} bzw. @code{\\}
-eingegeben.
@end table
-In einer Notationsdatei werden kleine Scheme-Abschnitte mit der
-Raute (@code{#}) eingeleitet. Die vorigen Beispiele heißen also in
-LilyPond:
+Weitere zusätzliche Scheme-Datentypen, die hier nicht besprochen wurden,
+finden sich in einer vollständigen Liste der Scheme-Datentypen in der
+Guile-Referenzanleitung:
+@uref{http://www.gnu.org/software/guile/manual/html_node/Simple-Data-Types.html}.
+
+
+@node Zusammengesetzte Scheme-Datentypen
+@subsection Zusammengesetzte Scheme-Datentypen
+@translationof Scheme compound data types
+
+Es gibt auch zusammengesetzte Datentypen in Scheme. Die Datentypen, die in
+LilyPond häufig benutzt werden, beinhalten Paare, Listen, assoziative Listen
+und Hash-Tabellen.
+
+@subheading Paare (pair)
+
+Der wichtigeste zusammengesetzte Datentyp in Scheme ist ein Paar (@code{pair}).
+Wie aus dem Namen schon hervorgeht, besteht ein Paar aus zwei zusammengeschweißten
+Werten. Die Prozedur um ein Paar zu erstellen ist @code{cons}.
+
+@lisp
+guile> (cons 4 5)
+(4 . 5)
+guile>
+@end lisp
+
+Das Paar wird dargestellt als zwei Elemente, von Klammern umgeben
+und durch Leerzeichen und einen Punkt (@code{.}) getrennt. Der Punkt ist
+@emph{kein} Dezimalpunkt, sondern markiert die Gruppe als Paar.
+
+Paare können auch wörtlich eingegeben werden, indem man ihnen voraus ein
+einfaches Anführungszeichen (@code{'} setzt.
+
+@lisp
+guile> '(4 . 5)
+(4 . 5)
+guile>
+@end lisp
+
+Beide Elemente eines Paares können beliebige gültige Scheme-Werte sein:
+
+@lisp
+guile> (cons #t #f)
+(#t . #f)
+guile> '("blah-blah" . 3.1415926535)
+("blah-blah" . 3.1415926535)
+guile>
+@end lisp
+
+Das erste Element eines Paares kann mit der Prozedur @code{car},
+das zweite mit der Prozedur @code{cdr} angesprochen werden.
+
+@lisp
+guile> (define mypair (cons 123 "hello there")
+... )
+guile> (car mypair)
+123
+guile> (cdr mypair)
+"hello there"
+guile>
+@end lisp
+
+@noindent
+
+Achtung: @code{cdr} wird ausgeprochen wie "kudd-err", nach Sussman und
+Abelson, siehe
+@uref{http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-14.html#footnote_Temp_133}
+
+@subheading Listen (list)
+
+Ein sehr häufiger Datentyp in Scheme ist die Liste (@emph{list}). Formal
+gesehen wird eine Liste entweder als leere Liste definiert
+(repräsentiert als @code{'()}), oder als ein Paar, dessen @code{cdr}
+eine Liste ist.
+
+Es gibt viele Arten, Listen zu erstellen. Die vielleicht häufigste Methode
+ist die @code{list}-Prozedur:
+
+@lisp
+guile> (list 1 2 3 "abc" 17.5)
+(1 2 3 "abc" 17.5)
+@end lisp
+
+Wie man sehen kann, wird eine Liste dargestellt in Form der einzelnen
+Elemente, getrennt durch ein Leerzeichen und als Gruppe in Klammern eingeschlossen.
+Anders als bei einem Paar, befindet sich kein Punkt zwischen den Elementen.
+
+Eine Liste kann auch als wörtliche Liste notiert werden, indem man die
+enthaltenen Elemente in Klammern einschließt und ein einfaches Anführungszeichen
+voranschreibt:
+
+@lisp
+guile> '(17 23 "foo" "bar" "bazzle")
+(17 23 "foo" "bar" "bazzle")
+@end lisp
+
+Listen haben eine zentrale Stellung in Scheme. Scheme wird als Dialekt
+von Lisp angesehen, und das Wort @qq{lisp} steht für @qq{List Processing}.
+Scheme-Ausdrücke sind immer Listen.
+
+@subheading Assoziative Listen (alist)
+
+Eine besonderer Listentyp ist die @emph{assoziative Liste} oder @emph{alist}.
+Eine Alist wird benutzt, um Daten zum einfachen Abrufen zu speichern.
+
+Alisten sind Listen, deren Elemente als Paare kommen. Der @code{car}-Teil
+jedes Elements wird als @emph{Schlüssel} (key) bezeichnet, der
+@code{cdr}-Teil jedes Elements wird @emph{Wert} (value) genannt.
+Die Scheme-Prozedur @code{assoc} wird benutzt, um einen Eintrag aus einer
+Aliste aufzurufen, und mit @code{cdr} wird sein Wert abgefragt:
+
+@lisp
+guile> (define my-alist '((1 . "A") (2 . "B") (3 . "C")))
+guile> my-alist
+((1 . "A") (2 . "B") (3 . "C"))
+guile> (assoc 2 my-alist)
+(2 . "B")
+guile> (cdr (assoc 2 my-alist))
+"B"
+guile>
+@end lisp
+
+Alisten werden sehr viel in LilyPond genutzt, um Eigenschaften und
+andere Daten zu speichern.
+
+@subheading Hash-Tabellen (hash table)
+
+Eine Datenstruktur, die ab und zu in LilyPond eingesetzt wird.
+Eine Hash-Tabelle ähnelt einem Array, aber die Indexe des Arrays
+können beliebige Scheme-Werte sein, nicht nur Integre.
+
+Hash-Tabellen sind effizienter als Alisten, wenn man viele Daten
+speichern will und die Daten sich oft ändern.
+
+Die Syntax, mit der Hash-Tabellen erstellt werden, ist etwas komplex,
+aber man kann Beispiele hierzu im LilyPond-Quellcode finden.
+
+@lisp
+guile> (define h (make-hash-table 10))
+guile> h
+#<hash-table 0/31>
+guile> (hashq-set! h 'key1 "val1")
+"val1"
+guile> (hashq-set! h 'key2 "val2")
+"val2"
+guile> (hashq-set! h 3 "val3")
+"val3"
+@end lisp
+
+Werte werden aus den Hash-Tabellen mit @code{hashq-ref} ausgelesen.
+
+@lisp
+guile> (hashq-ref h 3)
+"val3"
+guile> (hashq-ref h 'key2)
+"val2"
+guile>
+@end lisp
+
+Schlüssel und Werte werden als Paar mit @code{hashq-get-handle} ausgelesen.
+Das ist die beste Art, weil hier @code{#f} ausgegeben wird, wenn ein
+Schlüssel nicht gefunden werden kann.
+
+@lisp
+guile> (hashq-get-handle h 'key1)
+(key1 . "val1")
+guile> (hashq-get-handle h 'frob)
+#f
+guile>
+@end lisp
+
+
+@node Berechnungen in Scheme
+@subsection Berechnungen in Scheme
+@translationof Calculations in Scheme
+
+@ignore
+We have been using lists all along. A calculation, like @code{(+ 1 2)}
+is also a list (containing the symbol @code{+} and the numbers 1
+and@tie{}2). Normally lists are interpreted as calculations, and the
+Scheme interpreter substitutes the outcome of the calculation. To enter a
+list, we stop the evaluation. This is done by quoting the list with a
+quote @code{'} symbol. So, for calculations do not use a quote.
+
+Inside a quoted list or pair, there is no need to quote anymore. The
+following is a pair of symbols, a list of symbols and a list of lists
+respectively,
@example
-##t ##f
-#1 #-1.5
-#"Das ist eine Zeichenkette"
-#"Das
-ist
-eine Zeichenkette"
+#'(stem . head)
+#'(staff clef key-signature)
+#'((1) (2))
+@end example
+@end ignore
+
+Scheme kann verwendet werden, um Berechnungen durchzuführen. Es
+verwendet eine @emph{Präfix}-Syntax. Um 1 und@tie{}2 zu addieren, muss
+man @code{(+ 1 2)} schreiben, und nicht @math{1+2}, wie in traditioneller
+Mathematik.
+
+@lisp
+guile> (+ 1 2)
+3
+@end lisp
+
+Berechnungen können geschachtelt werden und das Ergebnis einer Berechnung
+kann für eine neue Berechnung eingesetzt werden.
+
+@lisp
+guile> (+ 1 (* 3 4))
+13
+@end lisp
+
+Diese Berechnungen sind Beispiele von Auswertungen. Ein Ausdruck
+wie @code{(* 3 4)} wird durch seinen Wert @code{12} ersetzt.
+
+Scheme-Berechnungen können zwischen Integren und Nich-Integren
+unterscheiden. Integre Berechnungen sind exakt, während Nicht-Integre
+nach den passenden Genauigkeitseinschränkungen berechnet werden:
+
+@lisp
+guile> (/ 7 3)
+7/3
+guile> (/ 7.0 3.0)
+2.33333333333333
+@end lisp
+
+Wenn der Scheme-Berechner einen Ausdruck antrifft, der eine Liste darstellt,
+wird das erste Element der Liste als Prozedur behandelt, die mit
+Argumenten des Restes der Liste ausgewertet werden. Darum sind alle
+Operatoren in Scheme vorangestellt.
+
+Wenn das erste Element eines Scheme-Ausdrucks, der eine Liste darstellt,
+@emph{kein} Operator oder keine Prozedur ist, gibt es einen Fehler:
+
+@lisp
+guile> (1 2 3)
+
+Backtrace:
+In current input:
+ 52: 0* [1 2 3]
+
+<unnamed port>:52:1: In expression (1 2 3):
+<unnamed port>:52:1: Wrong type to apply: 1
+ABORT: (misc-error)
+guile>
+@end lisp
+
+Hier kann man sehen, dass Scheme versucht hat, 1 als einen Operator oder
+eine Prozedur zu behandeln, was aber nicht möglich war. Darum der Fehler
+"Wrong type to apply: 1".
+
+Wenn man also eine Liste erstellen will, braucht man also einen Listen-Operator
+oder man muss die Liste als wörtliches Zitat schreiben, sodass Scheme sie
+nicht auszuwerten versucht.
+
+@lisp
+guile> (list 1 2 3)
+(1 2 3)
+guile> '(1 2 3)
+(1 2 3)
+guile>
+@end lisp
+
+Dieser Fehler kann durchaus vorkommen, wenn man Scheme unter LilyPond
+einsetzt.
+
+@ignore
+The same assignment can be done in completely in Scheme as well,
+
+@example
+#(define twentyFour (* 2 twelve))
+@end example
+
+@c this next section is confusing -- need to rewrite
+
+The @emph{name} of a variable is also an expression, similar to a
+number or a string. It is entered as
+
+@example
+#'twentyFour
+@end example
+
+@funindex #'symbol
+@cindex quoting in Scheme
+
+The quote mark @code{'} prevents the Scheme interpreter from substituting
+@code{24} for the @code{twentyFour}. Instead, we get the name
+@code{twentyFour}.
+@end ignore
+
+
+@node Scheme-Prozeduren
+@subsection Scheme-Prozeduren
+@translationof Scheme procedures
+
+Scheme-Prozeduren sind ausführbare Scheme-Ausdrücke, die einen
+Wert ausgeben, der das Resultat ihrer Ausführung darstellt. Sie können
+auch Variablen verändern, die außerhalb dieser Prozedur definiert wurden.
+
+@subheading Prozeduren definieren
+
+Prozeduren werden in Scheme mit @code{define} definiert:
+
+@example
+(define (function-name arg1 arg2 ... argn)
+ scheme-expression-that-gives-a-return-value)
+@end example
+
+Beispielsweise könnte man eine Prozedur definieren, die den Durchschnitt
+berechnet:
+
+@lisp
+guile> (define (average x y) (/ (+ x y) 2))
+guile> average
+#<procedure average (x y)>
+@end lisp
+
+Wenn die Prozedur einmal definiert ist, wird sie aufgerufen indem man
+die Prozedur und die Argumente in eine Liste schreibt. Man könnte also den
+Durchschnitt von 3 und 12 berechnen:
+
+@lisp
+guile> (average 3 12)
+15/2
+@end lisp
+
+@subheading Prädikate
+
+Scheme-Prozeduren, die Boolsche Werte ausgeben, werden oft als Prädikate
+(predicate) bezeichnet. Es herrscht die Übereinkunft, Prädikat-Bezeichnungen
+mit einem Fragezeichen abzuschließen:
+
+@lisp
+guile> (define (less-than-ten? x) (< x 10))
+guile> (less-than-ten? 9)
+#t
+guile> (less-than-ten? 15)
+#f
+@end lisp
+
+@subheading Wiedergabe-Werte
+
+Scheme-Prozeduren geben immer einen Wiedergabe-Wert (return value) aus, welcher
+der Wert des letzten Ausdrucks ist, der in der Prozedur ausgeführt wurde. Der
+Wiedergabewert kann ein beliebiger gültiger Scheme-Wert sein, auch eine
+komplexe Datenstruktur oder eine Prozedur.
+
+Manchmal würden Benutzer gerne mehrere Scheme-Ausdrucke in einer Prozedur haben.
+Es gibt zwei Arten, wie merhere Ausdrücke kombiniert werden können. Die erste
+Art ist die @code{begin}-Prozedur, der es ermöglicht, dass mehrere Ausdrücke
+ausgewertet werden und den Wert des letzten Ausdrucks wiedergibt.
+
+@lisp
+guile> (begin (+ 1 2) (- 5 8) (* 2 2))
+4
+@end lisp
+
+Die andere Art, mehrere Ausdrücke zu kombinieren, ist eine @code{let}-Umgebung.
+In dieser Umgebung wird eine Serie von Verbindungen erstellt, und dann wird eine
+Sequenz von Ausdrücken ausgewertet, die diese Bindungen einschließen können.
+Der Wiedergabewert der let-Umgebung ist der Wiedergabewert der letzten Aussage
+in der let-Umgebung:
+
+@lisp
+guile> (let ((x 2) (y 3) (z 4)) (display (+ x y)) (display (- z 4))
+... (+ (* x y) (/ z x)))
+508
+@end lisp
+
+
+@node Scheme-Konditionale
+@subsection Scheme-Konditionale
+@translationof Scheme conditionals
+
+@subheading if
+
+Scheme hat eine @code{if}-Prozedur:
+
+@example
+(if test-expression true-expression false-expression)
+@end example
+
+@var{test-expression} ist ein Ausdruck, der einen Booleschen
+Wert zurück gibt. Wenn @var{test-expression} den Wert @code{#t}
+ausgibt, gibt die if-Prozedur den Wert von @var{true-expression} aus,
+in allen anderen Fällen den Wert von @var{false-expression}.
+
+@lisp
+guile> (define a 3)
+guile> (define b 5)
+guile> (if (> a b) "a is greater than b" "a is not greater than b")
+"a is not greater than b"
+@end lisp
+
+@subheading cond
+
+Eine andere konditionale Prozedur in Scheme ist
+@code{cond}:
+
+@example
+(cond (test-expression-1 result-expression-sequence-1)
+ (test-expression-2 result-expression-sequence-2)
+ ...
+ (test-expression-n result-expression-sequence-n))
+@end example
+
+Beispielsweise:
+
+@lisp
+guile> (define a 6)
+guile> (define b 8)
+guile> (cond ((< a b) "a is less than b")
+... ((= a b) "a equals b")
+... ((> a b) "a is greater than b"))
+"a is less than b"
+@end lisp
+
+
+
+@node Scheme in LilyPond
+@section Scheme in LilyPond
+@translationof Scheme in LilyPond
+
+@menu
+* LilyPond Scheme-Syntax::
+* LilyPond-Variablen::
+* Eingabe-Variablen und Scheme::
+* Objekteigenschaften::
+* Zusammengesetzte LilyPond-Variablen::
+* Interne musikalische Repräsentation::
+@end menu
+
+@node LilyPond Scheme-Syntax
+@subsection LilyPond Scheme-Syntax
+@translationof LilyPond Scheme syntax
+
+Der Guile-Auswerter ist ein Teil von LilyPond, sodass Scheme also auch in
+normale LilyPond-Eingabedateien eingefügt werden kann. Das Rautenzeichen
+(@code{#}) wird benutzt, um dem LilyPond-Parser mitzuteilen, dass der nächste
+Wert ein Scheme-Wert ist.
+
+Wenn der Parser eine Raute sieht, wird der Eingabe-Code an den Guile-Auswerter
+weitergereicht, der den Scheme-Ausdruck auswertet. Der Auswerter behandelt
+die Eingabe so lange, bis er zum Ende eines Scheme-Ausdrucks kommt.
+
+Scheme-Prozeduren können in LilyPond-Eingabedateien definiert werden:
+
+@example
+#(define (average a b c) (/ (+ a b c) 3))
@end example
LilyPond-Kommentare (@code{%} oder @code{%@{ %@}}) können innerhalb
selten benutzt und nie im Quellcode
von LilyPond
!#
-+@end example
+@end example
+
+Für den Rest dieses Abschnitts soll angenommen werden, dass die Daten in
+einer LilyPond-Eingabedatei notiert werden sollen, sodass immer @code{#}
+vor die Scheme-Ausdrücke gestellt wird.
-Mehrere aufeinander folgende Scheme-Ausdrücke in einer Notationsdatei
-können kombiniert werden, wenn man @code{begin} einsetzt. Das
-erlaubt es, die Anzahl an Rauten auf eins zu begrenzen.
+Alle Scheme-Ausdrücke auf oberster Ebene in einer LilyPond-Eingabedatei
+können in einen einzigen Scheme-Ausdruck zusammengefasst werden mit
+@code{begin}:
@example
#(begin
(define bar 1))
@end example
-Wenn @code{#} von einer öffnenden Klammer, @code{(}, gefolgt wird, wie
-in dem Beispiel oben, bleibt der Parser im Scheme-Modus bis eine
-passende schließende Klammer, @code{)}, gefunden wird, sodass keine
-weiteren @code{#}-Zeichen benötigt werden, um einen Scheme-Abschnitt
-anzuzeigen.
-Für den Rest dieses Abschnitts nehmen wir an, dass die Daten immer in
-einer LilyPond-Datei stehen, darum wird immer die Raute verwendet.
+@node LilyPond-Variablen
+@subsection LilyPond-Variablen
+@translationof LilyPond variables
-Scheme kann verwendet werden, um Berechnungen durchzuführen. Es
-verwendet eine @emph{Präfix}-Syntax. Um 1 und@tie{}2 zu addieren, muss
-man @code{(+ 1 2)} schreiben, und nicht @math{1+2}, wie in traditioneller
-Mathematik.
+LilyPond-Variablen werden intern als Scheme-Variablen gespeichert. Darum
+ist
-@lisp
-#(+ 1 2)
- @result{} #3
-@end lisp
+@example
+Zwoelf = 12
+@end example
-Der Pfeil @result{} zeigt an, dass das Ergebnis der Auswertung von
-@code{(+ 1 2)} @code{3}@tie{}ist. Berechnungen können geschachtelt
-werden und das Ergebnis einer Berechnung kann für eine neue
-Berechnung eingesetzt werden.
+@noindent
+das Gleiche wie
-@lisp
-#(+ 1 (* 3 4))
- @result{} #(+ 1 12)
- @result{} #13
-@end lisp
+@example
+#(define Zwoelf 12)
+@end example
-Diese Berechnungen sind Beispiele von Auswertungen. Ein Ausdruck
-wie @code{(* 3 4)} wird durch seinen Wert @code{12} ersetzt. Ähnlich
-verhält es sich mit Variablen. Nachdem eine Variable definiert ist:
+Das bedeutet, dass Scheme-Ausdrücke auf LilyPond-Variablen zugreifen können.
+Man könnte also schreiben:
@example
-zwoelf = #12
+Vierundzwanzig = #(* 2 Zwoelf)
@end example
@noindent
-kann man sie in Ausdrücken weiterverwenden:
+was zur Folge hätte, dass die Zahl 24 in der LilyPond (und Scheme-)Variablen
+@code{Vierundzwanzig} gespeichert wird.
+
+
+@node Eingabe-Variablen und Scheme
+@subsection Eingabe-Variablen und Scheme
+@translationof Input variables and Scheme
+
+Das Eingabeformat unterstützt die Notation von Variablen: Im folgenden
+Beispiel wird ein musikalischer Ausdruck einer Variablen mit der
+Bezeichnung @code{traLaLa} zugewiesen:
@example
-vierundzwanzig = #(* 2 zwoelf)
+traLaLa = @{ c'4 d'4 @}
+@end example
+
+Variablen haben beschränkte Geltungsbereiche: im unten stehenden Beispiel
+enthält auch die @code{\layout}-Umgebung eine @code{traLaLa}-Variable,
+die sich aber von der @code{traLaLa}-Variable auf oberster Ebene unterscheidet:
+
+@example
+traLaLa = @{ c'4 d'4 @}
+\layout @{ traLaLa = 1.0 @}
+@end example
+
+Jede Eingabedatei ist solch ein Gültigkeitsbereich, und alle
+@code{\header}-, @code{\midi}- und @code{\layout}-Umgebungen
+sind Gültigkeitsbereiche, die in diesen obersten Gültigkeitsbereich
+eingebettet sind.
+
+Sowohl Variablen als auch Gültigkeitsbereiche sind im Guile Modulsystem
+eingebaut. Ein anonymes Scheme-Modul wird jedem Gültigkeitsbereich
+angehängt. Eine Zuweisen in der Form von
+
+@example
+traLaLa = @{ c'4 d'4 @}
+@end example
+
+@noindent
+wird intern in die Scheme-Definition
+
+@example
+(define traLaLa @var{Scheme-Wert von `@code{... }'})
@end example
@noindent
-Die 24 wird in der Variablen @code{vierundzwanzig} gespeichert.
-Die gleiche Zuweisung kann auch vollständig in Scheme geschrieben
-werden:
+konvertiert.
+
+Das bedeutet, dass LilyPond-Variablen und Scheme-Variablen frei gemischt
+werden können. Im folgenden Beispiel wird ein Notenfragment in der
+Variable @code{traLaLa} gespeichert und mit Scheme dupliziert. Das
+Resultat wird in eine @code{\score}-Umgebung mit einer weiteren
+Variable @code{twice} importiert:
+
+@lilypond[verbatim]
+traLaLa = { c'4 d'4 }
+
+%% dummy action to deal with parser lookahead
+#(display "this needs to be here, sorry!")
+
+#(define newLa (map ly:music-deep-copy
+ (list traLaLa traLaLa)))
+#(define twice
+ (make-sequential-music newLa))
+
+{ \twice }
+@end lilypond
+
+In diesem Beispiel geschieht die Zuweisung, nachdem der Parser sichergestellt
+hat, dass nichts interessantes mehr nach @code{traLaLa = @{ ... @}} passiert.
+Ohne die Dummy-Aussage in dem Beispiel würde die @code{newLa}-Definition ausgeführt,
+bevor @code{traLaLa} definiert ist, was einen Syntax-Fehler hervorrufen würde.
+
+Das Beispiel zeigt, wie man musikalische Ausdrücke aus der Eingabe in den
+Scheme-Auswerter @qq{exportieren} kann. Es geht auch andersherum. Indem
+man Scheme-Werten in die Funktion @code{ly:export} einschließt, wird ein
+Scheme-Wert interpretiert, als ob er in LilyPond-Syntax eingeben wäre.
+Anstatt @code{\twice} zu definieren, könne man also auch schreiben:
@example
-#(define vierundzwanzig (* 2 zwoelf))
+...
+@{ #(ly:export (make-sequential-music (list newLa))) @}
@end example
-Der @emph{Name} einer Variable ist auch ein Ausdruck, genauso wie
-eine Zahl oder eine Zeichenkette. Er wird wie folgt eingegeben:
+Scheme-Code wird sofort interpretiert, wenn der Parser darauf stößt. Um
+Scheme-Code als Makro zu definieren (das später aufgerufen werden soll),
+muss man @ref{Leere Funktionen} benutzen oder
@example
-#'vierundzwanzig
+#(define (nopc)
+ (ly:set-option 'point-and-click #f))
+
+...
+#(nopc)
+@{ c'4 @}
@end example
-@funindex #'symbol
-@cindex Zitieren in Scheme
+@knownissues
+
+Scheme- und LilyPond-Variablen können nicht gemischt werden, wenn man die
+@code{--safe}-Option benutzt.
-Das Apostroph @code{'} verhindert, dass bei der Scheme-Auswertung
- @code{vierundzwanzig} durch @code{24} ersetzt wird. Anstatt dessen erhalten
- wir die Bezeichnung @code{vierundzwanzig}.
-Diese Syntax wird sehr oft verwendet, weil es manche
-Einstellungsveränderungen erfordern, dass Scheme-Werte einer
-internen Variable zugewiesen werden, wie etwa
+@node Objekteigenschaften
+@subsection Objekteigenschaften
+@translationof Object properties
+
+Objekteigenschaften werden in LilyPond in Form von Alisten-Ketten
+gespeichert, also als Listen von Alisten. Eigenschaften werden
+geändert, indem man Werte an den Anfang der Eigenschaftsliste
+hinzufügt. Eigenschaften werden gelesen, indem Werte aus der
+Aliste gelesen werden.
+
+Ein neuer Wert für eine Eigenschaft kann gesetzt werden, indem man
+der Alist einen Wert mit Schlüssel und dem Wert zuweist. Die
+LilyPond-Syntax hierfür ist:
@example
\override Stem #'thickness = #2.6
@end example
-Diese Anweisung verändert die Erscheinung der Notenhälse. Der Wert
-@code{2.6} wird der Variable @code{thickness} (Dicke) eines
-@code{Stem}-(Hals)-Objektes gleichgesetzt.
+Diese Anweisung verändert die Erscheinung der Notenhälse. Der Alist-Eintrag
+@code{'(thickness . 2.6)} wird zu der Eigenschaftsliste eines
+@code{Stem}-(Hals-)Objektes hinzugefügt.
@code{thickness} wird relativ zu den Notenlinien errechnet, in diesem
Fall sind die Hälse also 2,6 mal so dick wie die Notenlinien. Dadurch
werden Hälse fast zweimal so dick dargestellt, wie sie normalerweise sind.
Um zwischen Variablen zu unterscheiden, die in den Quelldateien direkt
-definiert werden (wie @code{vierundzwanzig} weiter oben), und zwischen denen,
+definiert werden (wie @code{Vierundzwanzig} weiter oben), und zwischen denen,
die für interne Objekte zuständig sind, werden hier die ersteren
-@qq{Bezeichner} genannt, die letzteren dagegen @qq{Eigenschaften}.
+@qq{Variablen} genannt, die letzteren dagegen @qq{Eigenschaften}.
Das Hals-Objekt hat also eine @code{thickness}-Eigenschaft, während
-@code{vierundzwanzig} ein Bezeichner ist.
+@code{Vierundzwanzig} eine Variable ist.
@cindex Eigenschaften versus Bezeichner
@cindex Bezeichner versus Eigenschaften
-Sowohl zweidimensionale Abstände (X- und Y-Koordinaten) als auch
-Größen von Objekten (Intervalle mit linker und rechter Begrenzung) werden
-als @code{pairs} (Paare) eingegeben. Ein Paar@footnote{In der
-Scheme-Terminologie wird ein Paar @code{cons} genannt und seine
-zwei Elemente @code{car} und @code{cdr}.} wird als @code{(erster . zweiter)}
-eingegeben und sie müssen mit dem Apostroph eingeleitet werden, genauso
-wie Symbole:
+
+@node Zusammengesetzte LilyPond-Variablen
+@subsection Zusammengesetzte LilyPond-Variablen
+@translationof LilyPond compound variables
+
+@subheading Abstände (offset)
+
+
+
+Zweidimensionale Abstände (X- und Y-Koordinaten) werden
+als @code{pairs} (Paare) gespeichert. Der @code{car}-Wert des
+Abstands ist die X-Koordinate und der @code{cdr}-Wert die
+Y-Koordinate.
@example
\override TextScript #'extra-offset = #'(1 . 2)
@end example
-Hierdurch wird das Paar (1, 2) mit der Eigenschaft @code{extra-offset}
+Hierdurch wird das Paar @code{(1 . 2)} mit der Eigenschaft @code{extra-offset}
des TextScript-Objektes verknüpft. Diese Zahlen werden in
Systembreiten gemessen, so dass der Befehl das Objekt eine Systembreite
nach rechts verschiebt und zwei Breiten nach oben.
-Die zwei Elemente eines Paares können von beliebigem Inhalt sein, etwa
+Prozeduren, um mit Abständen zu arbeiten, finden sich in @file{scm/lily-library.scm}.
+
+@subheading Bereiche (extend)
+
+Paare werden auch benutzt, um Intervalle zu speichern, die einen Zahlenbereich
+vom Minimum (dem @code{car}) bis zum Maximum (dem @code{cdr}) darstellen.
+Intervalle werden benutzt, um die X- und Y-Ausdehnung von druckbaren
+Objekten zu speichern. Bei X-Ausdehnungen ist @code{car} die linke
+X-Koordinate und @code{cdr} die rechte X-Koordinate. Für Y-Ausdehnungen
+ist @code{car} die untere Koordinate und @code{cdr} die obere Koordinate.
+
+Prozeduren, um mit Intervallen zu arbeiten, finden sich in
+@file{scm/lily-library.scm}. Diese Prozeduren sollten benutzt, wenn es möglich
+ist, um den Code konsistent zu halten.
+
+@subheading Eigenschafts-Alisten (property alist)
+
+Eine Eigenschafts-Aliste ist eine LilyPond-Datenstruktur, die eine Aliste
+darstellt, deren Schlüssel Eigenschaften sind und deren Werte
+Scheme-Ausdrücke sind, die den erwünschen Wert der Eigenschaft ausgeben.
+
+LilyPond-Eigenschaften sind Scheme-Symbole, wie etwa @code{'thickness}
+(Dicke).
+
+@subheading Alisten-Ketten (alist chains)
+
+Eine Alisten-Kette ist eine Liste, die Eigenschafts-Alisten enthält.
+
+Die Menge aller Eigenschaften, die sich auf einen Grob auswirken, wird
+typischerweise in einer Alisten-Kette gespeichert. Um den Wert einer
+bestimmten Eigenschaft zu finden, die ein Grob haben soll, wird jede
+Liste in der Kette nach einander durchsucht, wobei nach einem Eintrag
+geschaut wird, der den Eigenschaftsschlüssel enthält. Der erste
+gefundene Alisten-Eintrag wird benutzt und dessen Wert ist der
+Wert der Eigenschaft.
+
+Die Scheme-Prozedur @code{chain-assoc-get} wird normalerweise benutzt,
+um Grob-Eigenschaftenwerte zu erhalten.
+
+
+@node Interne musikalische Repräsentation
+@subsection Interne musikalische Repräsentation
+@translationof Internal music representation
+
+Intern werden Noten als Scheme-Liste dargestellt. Die Liste enthält
+verschiedene Elemente, die die Druckausgabe beeinflussen. Parsen
+nennt man den Prozess, der die Noten aus der LilyPond-Repräsentation
+in die interne Scheme-Repräsentation überführt.
+
+Wenn ein musikalischer Ausdruck geparst wird, wird er in eine Gruppe
+von Scheme-Musikobjekten konvertiert. Die definierende Eigenschaft
+eines Musikobjektes ist, dass es Zeit einnimmt. Die Zeit, die
+ein Objekt braucht, wird Dauer (engl. @emph{duration}) genannt.
+Dauern werden in rationalen Zahlen ausgedrückt, die die Länge des
+Musikobjekts in Ganzen Noten angeben.
+
+Ein Musikobjekt hat drei Typen:
+
+@itemize
+@item
+Musikbezeichnung (music name): Jeder Musikausdruck hat eine Bezeichnung. Eine
+Note beispielsweise erzeugt ein @rinternals{NoteEvent} und @code{\simultaneous}
+produziert @rinternals{SimultaneousMusic}. Eine Liste aller möglichen
+Ausdrücke findet sich in der Referenz der Interna, unter
+@rinternals{Music expressions}.
+
+@item
+Typ (type) oder Schnittstelle (interface): Jede Musikbezeichnung hat mehrere
+Typen oder Schnittstellen, beispielsweise eine Note ist ein Ereignis (@code{event}),
+aber auch ein Notenereignis (@code{note-event}), ein rhythmisches Ereignis
+(@code{rhythmic-event}) und ein Melodieereignis (@code{melodic-event}).
+Alle Musikklassen sind in der Referenz der Interna aufgelistet, unter
+@rinternals{Music classes}.
+
+@item
+C++-Objekt: Jedes Musikobjekt ist durch ein Objekt der C++-Klasse @code{Music}
+repräsentiert.
+@end itemize
+
+Die eigentliche Information eines musikalischen Ausdrucks wird in Eigenschaften
+gespeichert. Ein @rinternals{NoteEvent} beispielsweise hat die Eigenschaften
+Tonhöhe (@code{pitch}) und Dauer (@code{duration}), die die Dauer und die
+Tonhöhe der Note speichern. Eine Liste aller möglichen Eigenschaften findet
+sich in der Referenz der Interna, unter
+@rinternals{Music properties}.
+
+Ein zusammengesetzter musikalischer Ausdruck ist ein Musikobjekt, das andere
+Musikobjekte als Eigenschaften enthält. Eine Liste an Objekten kann in der
+@code{elements}-Eigenschaft eines Musikobjekts bzw. ein einziges
+Ableger-Musikelement in der @code{element}-Eigenschaft gespeichert werden.
+@rinternals{SequentialMusic} beispielsweise hat sein einziges Argument in
+@code{element}. Der Körper einer Wiederholung wird in der @code{element}-Eigenschaft
+von @rinternals{RepeatedMusic} gespeichert, und die alternativen Endungen
+in @code{elements}.
+
+
+@node Komplizierte Funktionen erstellen
+@section Komplizierte Funktionen erstellen
+@translationof Building complicated functions
+
+Dieser Abschnitt zeigt, wie man Information zusammensucht,
+um komplizierte musikalische Funktionen zu erstellen.
+
+@menu
+* Musikalische Funktionen darstellen::
+* Eigenschaften von Musikobjekten::
+* Verdoppelung einer Note mit Bindebögen (Beispiel)::
+* Artikulationszeichen zu Noten hinzufügen (Beispiel)::
+@end menu
+
+
+@node Musikalische Funktionen darstellen
+@subsection Musikalische Funktionen darstellen
+@translationof Displaying music expressions
+
+@cindex interne Speicherung
+@cindex Musikausdrücke anzeigen
+@cindex Anzeigen von Musikausdrücken
+
+@funindex displayMusic
+@funindex \displayMusic
+
+Wenn man eine musikalische Funktion erstellt, ist es oft
+hilfreich sich anzuschauen, wie musikalische Funktionen
+intern gespeichert werden. Das kann mit der Funktion
+@code{\displayMusic} erreicht werden:
@example
-#'(1 . 2)
-#'(#t . #f)
-#'("blah-blah" . 3.14159265)
+@{
+ \displayMusic @{ c'4\f @}
+@}
@end example
-Eine Liste wird eingegeben, indem die Elemente der Liste in Klammern
-geschrieben werden, mit einem Apostroph davor. Beispielsweise:
+@noindent
+zeigt:
@example
-#'(1 2 3)
-#'(1 2 "string" #f)
+(make-music
+ 'SequentialMusic
+ 'elements
+ (list (make-music
+ 'EventChord
+ 'elements
+ (list (make-music
+ 'NoteEvent
+ 'duration
+ (ly:make-duration 2 0 1 1)
+ 'pitch
+ (ly:make-pitch 0 0 0))
+ (make-music
+ 'AbsoluteDynamicEvent
+ 'text
+ "f")))))
@end example
-Die ganze Zeit wurde hier schon Listen benutzt. Eine Berechnung,
-wie @code{(+ 1 2)}, ist auch eine Liste (welche das Symbol @code{+}
-und die Nummern 1 und@tie{}2 enthält. Normalerweise werden Listen
-als Berechnungen interpretiert und der Scheme-Interpreter ersetzt
-die Liste mit dem Ergebnis der Berechnung. Um eine Liste an sich
-einzugeben, muss die Auswertung angehalten werden. Das geschieht,
-indem der Liste ein Apostroph vorangestellt wird. Für Berechnungen
-kann man also den Apostroph nicht verwenden.
+Normalerweise gibt LilyPond diese Ausgabe auf der Konsole mit
+allen anderen Nachrichten aus. Um die wichtigen Nachrichten
+in einer Datei zu speichern, kann die Ausgabe in eine Datei
+umgeleitet werden:
+
+@example
+lilypond file.ly >display.txt
+@end example
-Innerhalb einer zitierten Liste (also mit Apostroph) muss man keine
-Anführungszeichen mehr setzen. Im Folgenden ein Symbolpaar, eine
-Symbolliste und eine Liste von Listen:
+Mit etwas Umformatierung ist die gleiche Information sehr viel
+einfacher zu lesen:
@example
-#'(stem . head)
-#'(staff clef key-signature)
-#'((1) (2))
+(make-music 'SequentialMusic
+ 'elements (list (make-music 'EventChord
+ 'elements (list (make-music 'NoteEvent
+ 'duration (ly:make-duration 2 0 1 1)
+ 'pitch (ly:make-pitch 0 0 0))
+ (make-music 'AbsoluteDynamicEvent
+ 'text "f")))))
+@end example
+
+Eine musikalische @code{@{ ... @}}-Sequenz hat die Bezeichnung
+@code{SequentialMusic} und ihre inneren Ausdrücke werden als
+Liste in seiner @code{'elements}-Eigenschaft gespeichert. Eine
+Note ist als als ein @code{EventChord}-Ausdruck dargestellt,
+der ein @code{NoteEvent}-Objekt (welches Dauer und
+Tonhöhe speichert) und zusätzliche Information enthält (in
+diesem Fall ein @code{AbsoluteDynamicEvent} mit einer
+@code{"f"}-Text-Eigenschaft.
+
+
+@node Eigenschaften von Musikobjekten
+@subsection Eigenschaften von Musikobjekten
+@translationof Music properties
+
+Das @code{NoteEvent}-Objekt ist das erste Objekt der
+@code{'elements}-Eigenschaft von @code{someNote}.
+
+@example
+someNote = c'
+\displayMusic \someNote
+===>
+(make-music
+ 'EventChord
+ 'elements
+ (list (make-music
+ 'NoteEvent
+ 'duration
+ (ly:make-duration 2 0 1 1)
+ 'pitch
+ (ly:make-pitch 0 0 0))))
+@end example
+
+Die @code{display-scheme-music}-Funktion ist die Funktion, die von
+@code{\displayMusic} eingesetzt wird, um die Scheme-Repräsentation
+eines musikalischen Ausdrucks anzuzeigen.
+
+@example
+#(display-scheme-music (first (ly:music-property someNote 'elements)))
+===>
+(make-music
+ 'NoteEvent
+ 'duration
+ (ly:make-duration 2 0 1 1)
+ 'pitch
+ (ly:make-pitch 0 0 0))
+@end example
+
+Danach wird die Tonhöhe der Note von der @code{'pitch}-Eigenschaft
+des @code{NoteEvent}-Objektes gelesen:
+
+@example
+#(display-scheme-music
+ (ly:music-property (first (ly:music-property someNote 'elements))
+ 'pitch))
+===>
+(ly:make-pitch 0 0 0)
@end example
+Die Tonhöhe einer Note kann geändert werden, indem man diese
+@code{'pitch}-Eigenschaft umdefiniert:
+
+@funindex \displayLilyMusic
+@funindex displayLilyMusic
+
+@example
+#(set! (ly:music-property (first (ly:music-property someNote 'elements))
+ 'pitch)
+ (ly:make-pitch 0 1 0)) ;; Die Tonhöhen auf d' verändern.
+\displayLilyMusic \someNote
+===>
+d'
+@end example
+
+
+@node Verdoppelung einer Note mit Bindebögen (Beispiel)
+@subsection Verdoppelung einer Note mit Bindebögen (Beispiel)
+@translationof Doubling a note with slurs (example)
+
+In diesem Abschnitt soll gezeigt, werden, wie man eine
+Funktion erstellt, die eine Eingabe wie @code{a}
+nach @code{a( a)} umdefiniert. Dazu wird zuerst die
+interne Repräsentation der Musik betrachtet, die
+das Endergebnis darstellt:
+
+@example
+\displayMusic@{ a'( a') @}
+===>
+(make-music
+ 'SequentialMusic
+ 'elements
+ (list (make-music
+ 'EventChord
+ 'elements
+ (list (make-music
+ 'NoteEvent
+ 'duration
+ (ly:make-duration 2 0 1 1)
+ 'pitch
+ (ly:make-pitch 0 5 0))
+ (make-music
+ 'SlurEvent
+ 'span-direction
+ -1)))
+ (make-music
+ 'EventChord
+ 'elements
+ (list (make-music
+ 'NoteEvent
+ 'duration
+ (ly:make-duration 2 0 1 1)
+ 'pitch
+ (ly:make-pitch 0 5 0))
+ (make-music
+ 'SlurEvent
+ 'span-direction
+ 1)))))
+@end example
+
+Eine schlechte Nachricht ist, dass die
+@code{SlurEvent}-Ausdrücke @qq{innerhalb}
+der Noten (bzw. innerhalb der
+@code{EventChord}-Ausdrücke) hinzugefügt werden müssen.
+
+Jetzt folgt eine Betrachtung der Eingabe:
+
+@example
+(make-music
+ 'SequentialMusic
+ 'elements
+ (list (make-music
+ 'EventChord
+ 'elements
+ (list (make-music
+ 'NoteEvent
+ 'duration
+ (ly:make-duration 2 0 1 1)
+ 'pitch
+ (ly:make-pitch 0 5 0))))))
+@end example
+
+In der gewünschten Funktion muss also dieser Ausdruck
+kopiert werden (sodass zwei Noten vorhanden sind, die
+eine Sequenz bilden), dann müssen @code{SlurEvent}
+zu der @code{'elements}-Eigenschaft jeder Noten hinzugefügt
+werden, und schließlich muss eine @code{SequentialMusic}
+mit den beiden @code{EventChords} erstellt werden.
+
+@example
+doubleSlur = #(define-music-function (parser location note) (ly:music?)
+ "Return: @{ note ( note ) @}.
+ `note' is supposed to be an EventChord."
+ (let ((note2 (ly:music-deep-copy note)))
+ (set! (ly:music-property note 'elements)
+ (cons (make-music 'SlurEvent 'span-direction -1)
+ (ly:music-property note 'elements)))
+ (set! (ly:music-property note2 'elements)
+ (cons (make-music 'SlurEvent 'span-direction 1)
+ (ly:music-property note2 'elements)))
+ (make-music 'SequentialMusic 'elements (list note note2))))
+@end example
+
+
+@node Artikulationszeichen zu Noten hinzufügen (Beispiel)
+@subsection Artikulationszeichen zu Noten hinzufügen (Beispiel)
+@translationof Adding articulation to notes (example)
+
+Am einfachsten können Artikulationszeichen zu Noten
+hinzugefügt werden, indem man zwei musikalische Funktionen
+in einen Kontext einfügt, wie erklärt in
+@ruser{Kontexte erstellen}. Hier soll jetzt eine musikalische
+Funktion entwickelt werden, die das vornimmt.
+
+Eine @code{$variable} innerhalb von @code{#@{...#@}} ist das
+gleiche wie die normale Befehlsform @code{\variable} in
+üblicher LilyPond-Notation. Es ist bekannt dass
+
+@example
+@{ \music -. -> @}
+@end example
+
+@noindent
+in LilyPond nicht funktioniert. Das Problem könnte vermieden
+werden, indem das Artikulationszeichen an eine Pseudonote
+gehängt wird:
+
+@example
+@{ << \music s1*0-.-> @}
+@end example
+
+@noindent
+aber in diesem Beispiel soll gezeigt werden, wie man das in
+Scheme vornimmt. Zunächst wird die Eingabe und die gewünschte
+Ausgabe examiniert:
+
+@example
+% Eingabe
+\displayMusic c4
+===>
+(make-music
+ 'EventChord
+ 'elements
+ (list (make-music
+ 'NoteEvent
+ 'duration
+ (ly:make-duration 2 0 1 1)
+ 'pitch
+ (ly:make-pitch -1 0 0))))
+=====
+% gewünschte Ausgabe
+\displayMusic c4->
+===>
+(make-music
+ 'EventChord
+ 'elements
+ (list (make-music
+ 'NoteEvent
+ 'duration
+ (ly:make-duration 2 0 1 1)
+ 'pitch
+ (ly:make-pitch -1 0 0))
+ (make-music
+ 'ArticulationEvent
+ 'articulation-type
+ "marcato")))
+@end example
+Dabei ist zu sehen, dass eine Note (@code{c4}) als @code{EventChord}
+repräsentiert ist, mit einem @code{NoteEvent}-Ausdruck in ihrer
+Elementenliste. Um eine Marcato-Artikulation hinzuzufügen, muss
+ein @code{ArticulationEvent}-Ausdruck zu der Elementeigenschaft
+des @code{EventChord}-Ausdrucks hinzugefügt werden.
+
+Um diese Funktion zu bauen, wird folgendermaßen begonnen:
+
+@example
+(define (add-marcato event-chord)
+ "Add a marcato ArticulationEvent to the elements of `event-chord',
+ which is supposed to be an EventChord expression."
+ (let ((result-event-chord (ly:music-deep-copy event-chord)))
+ (set! (ly:music-property result-event-chord 'elements)
+ (cons (make-music 'ArticulationEvent
+ 'articulation-type "marcato")
+ (ly:music-property result-event-chord 'elements)))
+ result-event-chord))
+@end example
+
+Die erste Zeile definiert eine Funktion in Scheme: Die Bezeichnung
+der Funktion ist @code{add-marcato} und sie hat eine Variable
+mit der Bezeichnung @code{event-chord}. In Scheme geht der Typ
+einer Variable oft direkt aus der Bezeichnung hervor (das ist auch
+eine gute Methode für andere Programmiersprachen).
+
+@example
+"Add a marcato..."
+@end example
+
+@noindent
+ist eine (englische) Beschreibung, was diese Funktion tut. Sie ist
+nicht unbedingt notwendig, aber genauso wie klare Variablen-Bezeichnungen
+ist auch das eine gute Methode.
+
+@example
+(let ((result-event-chord (ly:music-deep-copy event-chord)))
+@end example
+
+@code{let} wird benutzt, um die lokalen Variablen zu definieren. Hier
+wird eine lokale Variable benutzt: @code{result-event-chord}. Sie erhält
+den Wert @code{(ly:music-deep-copy event-chord)}. @code{ly:music-deep-copy}
+ist eine LilyPond-spezifische Funktion, die wie alle Funktionen mit dem
+Präfix @code{ly:} versehen ist. Sie wird benutzt, um eine Kopie eines
+musikalischen Ausdrucks anzufertigen. Hier wird @code{event-chord}
+(der Parameter der Funktion) kopiert. Die Funktion soll ja nur ein
+Artikulationszeichen an einen @code{EventChord} gehängt werden, deshalb ist es besser,
+den @code{EventChord}, der als Argument gegeben wurde, nicht zu
+verändern, weil er woanders benutzt werden könnte.
+
+Jetzt gibt es @code{result-event-chord}, wobei es sich um einen
+@code{NoteEventChord}-Ausdruck handelt, welcher gleichzeitig eine Kopie
+von @code{event-chord} ist. Das Makro wird seiner Eigenschaftsliste
+hinzugefügt:
+
+@example
+(set! place new-value)
+@end example
+
+Was in diesem Fall @qq{gesetzt} werden soll (@qq{place}) ist die
+@q{elements}-Eigenschaft des @code{result-event-chord}-Ausdrucks.
+
+@example
+(ly:music-property result-event-chord 'elements)
+@end example
+
+@code{ly:music-property} ist die Funktion, mit der musikalische
+Eigenschaften erreicht werden können (die @code{'elements},
+@code{'duration}, @code{'pitch} usw., die in der Ausgabe von
+@code{\displayMusic} weiter oben angezeigt werden). Der neue
+Wert ist, was ehemals die Elementeigenschaft war, mit einem
+zusätzlichen Element: dem @code{ArticulationEvent}-Ausdruck,
+der aus der Ausgabe von
+@code{\displayMusic} kopiert werden kann:
+
+@example
+(cons (make-music 'ArticulationEvent
+ 'articulation-type "marcato")
+ (ly:music-property result-event-chord 'elements))
+@end example
+
+@code{cons} wird benutzt, um ein Element zu einer Liste hinzuzufügen,
+ohne dass die originale Liste verändert wird. Das ist es, was die
+Funktion tun soll: die gleiche Liste, aber mit dem neuen
+@code{ArticulationEvent}-Ausdruck. Die Reihenfolge innerhalb
+der Elementeeigenschaft ist hier nicht relevant.
+
+Wenn schließlich die Marcato-Artikulation zu der entsprechenden
+@code{elements}-Eigenschaft hinzugefügt ist, kann
+@code{result-event-chord} ausgegeben werden, darum die letzte Zeile
+der Funktion.
+
+Jetzt wird die @code{add-marcato}-Funktion in eine musikalische
+Funktion umgewandelt:
+
+@example
+addMarcato = #(define-music-function (parser location event-chord)
+ (ly:music?)
+ "Add a marcato ArticulationEvent to the elements of `event-chord',
+ which is supposed to be an EventChord expression."
+ (let ((result-event-chord (ly:music-deep-copy event-chord)))
+ (set! (ly:music-property result-event-chord 'elements)
+ (cons (make-music 'ArticulationEvent
+ 'articulation-type "marcato")
+ (ly:music-property result-event-chord 'elements)))
+ result-event-chord))
+@end example
+
+Eine Überprüfung, dass die Funktion richtig arbeitet, geschieht
+folgendermaßen:
+
+@example
+\displayMusic \addMarcato c4
+@end example
+
+
+
+
+
+
+@ignore
@menu
* Optimierungen mit Scheme::
@end menu
-@node Optimierungen mit Scheme
-@appendixsec Optimierungen mit Scheme
-@translationof Tweaking with Scheme
+@c node Optimierungen mit Scheme
+@c appendixsec Optimierungen mit Scheme
+@c translationof Tweaking with Scheme
Wir haben gesehen wie LilyPond-Eingabe massiv beeinflusst
werden kann, indem Befehle wie etwa
@c This isn't a valid example with skylining
@c It works fine without padText -td
-@ignore
+
@lilypond[quote,verbatim,ragged-right]
padText = #(define-music-function (parser location padding) (number?)
#{
c4^"piu mosso" fis a g
}
@end lilypond
-@end ignore
+
Es kann auch benutzt werden, um Befehle zu erstellen:
\pattern {d16 dis} { ais16-> b\p }
}
@end lilypond
-
+@end ignore
@c This file is part of community.itexi and ../topdocs/AUTHORS.itexi
@ignore
- Translation of GIT committish: 144cd434d02e6d90b2fb738eeee99119a7c5e1d2
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@item John Mandereau:
@email{john.mandereau@@free.fr},
-Translation meister
+Translations
@item Patrick McCarty:
SVG guru, bug squad member, bug squasher, text handling
Core developer, Frog meister
@item Francisco Vila:
-Translations
+Translation Meister
@item Valentin Villenave:
LSR editor and Bug squad member
@item Pedro Kroeger:
Build meister
+@item John Mandereau:
+@email{john.mandereau@@free.fr},
+Translation meister
+
@item Graham Percival:
@uref{http://percival-music.ca},
Bug meister, Grand Documentation Project leader
@funindex GrandStaff
@funindex ChoirStaff
-Glossar: @rglos{brace}.
+Glossar:
+@rglos{brace},
+@rglos{staff},
+@rglos{system}.
Musik für das Klavier wird üblicherweise auf zwei Systemen notiert,
die durch eine @notation{geschweifte Klammer} verbunden sind
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
beginnt, den @var{muskalischen Ausdruck} innerhalb dieses
Kontexts auszuwerten.
-(Beachten Sie, dass man normalerweise keinen @code{\new Score}-Befehl
-braucht: der Partitur-(Score)-Kontext der obersten Ebene wird
-normalerweise automatisch erstellt, wenn der musikalische Ausdruck
-innerhalb der @code{\score}-Umgebung interpretiert wird. Der
-einzige Grund, einen @code{Score}-Kontext explizit mit
-@code{\new Score} zu erstellen ist es, wenn man eine @code{\with}-Umgebung
-beginnen will, in der man eine oder mehrere Partitur-weite
-Standardwerte definiert werden. Information über die Benutzung
-von @code{\with}-Umgebungen finden sich unter der Unterüberschrift
-@qq{Kontexteigenschaften mit @code{\\with} setzen} in
-@ref{Kontexteigenschaften verändern}.)
+@warning{Der @bs{}@code{new Score}-Befehl sollte nicht benutzt werden,
+weil der Partitur-(Score)-Kontext der obersten Ebene
+normalerweise automatisch erstellt wird, wenn der musikalische Ausdruck
+innerhalb der @code{\score}-Umgebung interpretiert wird. Standard-Werte
+von Kontexteigenschaften, die für einen bestimmten @code{Score} gelten
+sollen, können innerhalb der @bs{}@code{layout}-Umgebung definiert werden.
+Siehe @ref{Kontexteigenschaften verändern}.}
Wir haben schon viele explizite Beispiel gesehen, in denen
neue @code{Staff}- und @code{Voice}-Kontexte erstellt wurden, aber
>>
@end lilypond
-Oder, wenn das @code{\override} für die Eigenschaft auf alle
-Notensysteme innerhalb der Partitur gelten soll, kann es auch
-direkt an ein @code{\new Score} gehängt werden, wie etwa hier:
-
-@lilypond[quote,verbatim,ragged-right]
-\score {
- \new Score \with { extraNatural = ##f } <<
- \new Staff {
- \relative c'' {
- gis4 ges aes ais
- }
- }
- \new Staff {
- \relative c'' {
- gis4 ges aes ais
- }
- }
- >>
-}
-@end lilypond
-
Eigenschaften, die auf diese Arte gesetzt werden, können immer noch
dynamisch mit dem @code{\set}-Befehl geändert werden und mit
@code{\unset} auf ihre Standardeinstellungen zurückgesetzt werden,
von einer @code{\layout}-Umgebung steht. Jede @code{\context}-Umgebung
wirkt sich auf alle Kontexte dieses Types aus, welche sich in der
aktuellen Partitur befinden (d. h. innerhalb einer @code{\score}-
-oder @code{\book}-Umgebung. Hier ist ein Beispiel, wie man diese
+oder @code{\book}-Umgebung). Hier ist ein Beispiel, wie man diese
Funktion anwendet:
@lilypond[verbatim,quote]
}
@end lilypond
+Wenn die Veränderung der Eigenschaft sich auf alle Systeme einer
+@code{score}-Umgebung beziehen soll:
+
+@lilypond[quote,verbatim]
+\score {
+ <<
+ \new Staff {
+ \relative c'' {
+ gis4 ges aes ais
+ }
+ }
+ \new Staff {
+ \relative c'' {
+ gis4 ges aes ais
+ }
+ }
+ >>
+ \layout {
+ \context {
+ \Score extraNatural = ##f
+ }
+ }
+}
+@end lilypond
+
@noindent
Kontext-Eigenschaften, die auf diese Weise gesetzt werden, können für
bestimmten Kontexte überschrieben werden, indem die
} % end Score context
@end lilypond
+@seealso
+Glossar:
+@rglos{system}.
+
@node Tipparbeit durch Variablen und Funktionen ersparen
@subsection Tipparbeit durch Variablen und Funktionen ersparen
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: 940a3955254888e14a8c5ef7e835225e5cc3852c
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.12.0"
+@c \version "2.13.36"
@node Vorwort
@unnumbered Vorwort
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: 144cd434d02e6d90b2fb738eeee99119a7c5e1d2
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@ The `line-width' is for \header.
@li lypond[quote,verbatim,ragged-right,line-width]
-\version "2.12.0"
+\version "2.13.36"
\header {
dedication = "dedication"
title = "Title"
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: 4f7427e7a314a71bde16559247885544256b8213
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
das im zweiten Beispiel, in dem der @code{stencil} entfernt
wurde, nicht passiert.
+@seealso
+Glossar:
+@rglos{system}.
+
@node Variablen für Optimierungen einsetzen
@subsection Variablen für Optimierungen einsetzen
ragt, wird durch diese Tests die Zeile gerade so weit komprimiert,
dass sie sich innerhalb der Ränder befindet.
+Damit diese Tests immer funktionieren, müssen sie aktiviert werden,
+indem die @bs{}@code{override}-Befehle in einer @code{context}-Umgebung
+innerhalb der @code{layout}-Umgebung notiert werden und nicht innerhalb
+der Noten:
+
@example
-\new Score \with @{
+\score @{
+ @{ @dots{}Noten@dots{} @}
+ \layout @{
+ \context @{
+ \Score
% Um sicher zu gehen, dass Texte und Liedtext
% innerhalb der Papierränder bleiben
\override PaperColumn #'keep-inside-line = ##t
\override NonMusicalPaperColumn #'keep-inside-line = ##t
-@} @{
- ...
+ @}
+ @}
@}
@end example
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Ein @code{Score}-Kontext wird eingerichtet, wenn eine
@code{\score @{@dots{}@}} oder @code{\layout @{@dots{}@}}-Umgebung
-interpretiert wird, oder explizit mit dem @code{\new Score}-Befehl.
-
+interpretiert wird.
@node Oberste Kontexte -- Container für Systeme
@unnumberedsubsubsec Oberste Kontexte -- Container für Systeme
@cindex Taktarten, mehrere in Partitur
@cindex Taktarten, unterschiedliche per System
-@lilypond[quote,relative=1,ragged-right,verbatim,fragment]
-\new Score \with {
- \remove "Timing_translator"
- \remove "Default_bar_line_engraver"
-} <<
+@lilypond[quote,verbatim]
+\score {
+ <<
+ \new Staff \with {
+ \consists "Timing_translator"
+ \consists "Default_bar_line_engraver"
+ } {
+ \time 3/4
+ c4 c c c c c
+ }
\new Staff \with {
\consists "Timing_translator"
\consists "Default_bar_line_engraver"
} {
- \time 3/4
+ \time 2/4
c4 c c c c c
}
- \new Staff \with {
- \consists "Timing_translator"
- \consists "Default_bar_line_engraver"
- } {
- \time 2/4
- c4 c c c c c
- }
>>
+\layout {
+ \context {
+ \Score
+ \remove "Timing_translator"
+ \remove "Default_bar_line_engraver"
+ }
+ }
+}
@end lilypond
@knownissues
sie dann in der @code{\context}-Definition anzuwenden, indem man die
Variable aufruft.
-Der Befehl @code{\RemoveEmptyStaffContext} überschreibt die
+Der Befehl @code{\Staff \RemoveEmptyStaves} überschreibt die
aktuellen Einstellungen für @code{Staff}. Wenn die Einstellungen
-für Systeme verändert werden sollen, die @code{\RemoveEmptyStaffContext}
+für Systeme verändert werden sollen, die @code{\Staff \RemoveEmptyStaves}
benutzen, müssen die Veränderungen gemacht werden, nachdem
-@code{\RemoveEmptyStaffContext} aufgerufen wurde, etwa:
+@code{\Staff \RemoveEmptyStaves} aufgerufen wurde, etwa:
@example
\layout @{
\context @{
- \RemoveEmptyStaffContext
+ \Staff \RemoveEmptyStaves
\override Stem #'thickness = #4.0
@}
(script-priority . 100)
(stencil . ,ly:text-interface::print)
(direction . ,ly:script-interface::calc-direction)
- (font-encoding . fetaNumber)
+ (font-encoding . fetaText)
(font-size . -5) ; don't overlap when next to heads.
(meta . ((class . Item)
(interfaces . (finger-interface
@lilypond[quote,fragment,verbatim,relative=2]
\override Slur #'thickness = #3.0
c8[( c
-\override Beam #'thickness = #0.6
+\override Beam #'beam-thickness = #0.6
c8 c])
@end lilypond
Man erreicht ihn mit dem Befehl @code{\markup}. Die Eingabe wird
entsprechend der Syntax für Textbeschriftung interpretiert, siehe
-@ref{Text markup commands}.
+@ref{Textbeschriftungsbefehle}.
@c silly work-around for texinfo broken-ness
@c (@strong{Note...} causes a spurious cross-reference in Info)
in den Unterlisten @code{left-broken} bzw. @code{right-broken}
von @code{bound-details} abgelegt. Zum Beispiel:
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@lilypond[relative=2,ragged-right,verbatim,quote]
\override Glissando #'breakable = ##t
\override Glissando #'(bound-details right-broken Y) = #-3
c1 \glissando \break
gesetzt werden, wird das Symbol am Rand vertikal entsprechend
des Endpunktes der Linie verschoben:
-@lilypond[relative=1,fragment,verbatim]
+@lilypond[relative=1,quote,verbatim]
\override TextSpanner
#'(bound-details left stencil-align-dir-y) = #-2
\override TextSpanner
Hier einige Beispiele, welche Linienstile möglich sind
und wie sie verändert werden können:
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@lilypond[relative=2,ragged-right,verbatim,quote]
d2 \glissando d'2
\once \override Glissando #'style = #'dashed-line
d,2 \glissando d'2
Realzeit für jedes graphische Objekt errechnet, aber
es ist möglich, sie manuell vorzugeben:
-@c FIXME Complete
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@c TODO Complete
+@lilypond[relative=2,ragged-right,verbatim,quote]
e2 \glissando f
\once \override Glissando #'(bound-details right Y) = #-2
e2 \glissando f
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
g1
c1
}
- \new Score \chordmode {
+ \chordmode {
c1
r1
g1
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@funindex finger
Fingersatzanweisungen können folgenderweise notiert werden:
-@var{Note}-@var{Zahl}
+@samp{Note}-@var{Zahl}
@lilypond[verbatim,quote,relative=2]
c4-1 d-2 f-4 e-3
Die ganze Farbpalette, die für X11 definiert ist, kann mit der
Scheme-Funktion @code{x11-color} benutzt werden. Diese Funktion
-hat ein Argument: entweder ein Symbol in der Form @var{'FooBar}
-oder eine Zeichenkette in der Form @code{"FooBar"}. Die erste
+hat ein Argument: entweder ein Symbol in der Form @code{'@var{FooBar}}
+oder eine Zeichenkette in der Form @code{"@var{FooBar}"}. Die erste
Form ist schneller zu schreiben und effizienter. Mit der zweiten
Form ist es allerdings möglich, auch Farbbezeichnungen einzusetzen,
die aus mehr als einem Wort bestehen.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Darstellungsarten: normal, knapp und ausführlich. Die drei
Arten erzeugen die gleiche Ausgabe, aber mit jeweils mehr oder
weniger Einzelheiten. Einzelheiten zu Textbeschriftungsbefehlen
-findet sich in @ref{Text markup commands}.
+findet sich in @ref{Textbeschriftungsbefehle}.
Die Standard-Bunddiagrammbeschriftung beinhaltet die Saitennummer
und die Bundnummer für jeden Punkt, der notiert werden soll.
@seealso
Notationsreferenz:
-@ref{Text markup commands}.
+@ref{Textbeschriftungsbefehle}.
Schnipsel:
@rlsr{Fretted strings}.
\storePredefinedDiagram #default-fret-table <c e g c' e'>
#guitar-tuning
- #"x;3-1-(;5-2;5-3;5-4;3-1-1);"
+ #"x;3-1-(;5-2;5-3;5-4;3-1-1-);"
<<
\context ChordNames {
\chordmode {
>>
@end lilypond
+@funindex minimumFret
+
Der kleinste Bund, der benutzt wird, um Saiten und Bünde im
FretBoard-Kontext zu errechnen, kann mit der
@code{minimumFret}-Eigenschaft gesetzt werden.
<g-\rightHandFinger #3 >
<c-\rightHandFinger #4 >
<c,-\rightHandFinger #1 e-\rightHandFinger #2
- g-\rightHandFinger #3 c-\rightHandFinger #4 >1
+ g-\rightHandFinger #3 c-\rightHandFinger #4 >1
@end lilypond
Zur Erleichterung kann der Befehl @code{\rightHandFinger} zu ein paar
@menu
* Position und Barré anzeigen::
* Flageolett und gedämpfte Noten::
+* Powerakkorde anzeigen::
@end menu
@node Position und Barré anzeigen
Das Beispiel zeigt, wie man Griff- und Barréposition
notieren kann.
-@lilypond[quote,ragged-right,fragment,verbatim,relative=0]
+@lilypond[quote,ragged-right,verbatim,relative=0]
\clef "treble_8"
b16 d g b e
\textSpannerDown
\override TextSpanner #'(bound-details left text) = #"XII "
- g16\startTextSpan
- b16 e g e b g\stopTextSpan
+g16\startTextSpan
+b16 e g e b g\stopTextSpan
e16 b g d
@end lilypond
@rlsr{Fretted strings}.
+@node Powerakkorde anzeigen
+@unnumberedsubsubsec Powerakkorde anzeigen
+@translationof Indicating power chords
+
+@funindex powerChords
+@funindex \powerChords
+
+@cindex Powerakkorde
+@cindex Powerchords
+
+Powerakkorde und ihre Symbole können im Akkordmodus oder als Akkordkonstruktionen
+gesetzt werden:
+
+@lilypond[quote,ragged-right,verbatim]
+ChordsAndSymbols = {
+ \chordmode {
+ \powerChords
+ e,,1:1.5
+ a,,1:1.5.8
+ \set minimumFret = #8
+ c,1:1.5
+ f,1:1.5.8
+ }
+ \set minimumFret = #5
+ <a, e>1
+ <g d' g'>1
+}
+\score {
+ <<
+ \new ChordNames {
+ \ChordsAndSymbols
+ }
+ \new Staff {
+ \clef "treble_8"
+ \ChordsAndSymbols
+ }
+ \new TabStaff {
+ \ChordsAndSymbols
+ }
+ >>
+}
+@end lilypond
+
+Powerakkord-Symbole werden automatisch ausgeschaltet, wenn einer der anderen
+normalen Akkord-Modifikatoren verwendet wird:
+
+@lilypond[quote,ragged-right,verbatim]
+mixedChords = \chordmode {
+ c,1
+ \powerChords
+ b,,1:1.5
+ fis,,1:1.5.8
+ g,,1:m
+}
+\score {
+ <<
+ \new ChordNames {
+ \mixedChords
+ }
+ \new Staff {
+ \clef "treble_8"
+ \mixedChords
+ }
+ \new TabStaff {
+ \mixedChords
+ }
+ >>
+}
+@end lilypond
+
+@seealso
+Glossar:
+@rglos{power chord}.
+
+Notationsreferenz:
+@ref{Erweiterte und modifizierte Akkorde},
+@ref{Akkordbezeichnungen drucken}.
+
+Schnipsel:
+@rlsr{Fretted strings}.
+
+
+
+
@node Banjo
@subsection Banjo
@translationof Banjo
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Eine MIDI-Ausgabe wird nur erstellt, wenn die @code{\midi}-Umgebung
in eine Partiturumgebung eingefügt wird, die mit dem Befehl
-@code{\score} beginnt. Wenn eine Partitur explizit etwa mit
-@code{\new Score} begonnen wird, und sich die MIDI-Umgebung hierin
-befindet, wird keine Ausgabe produziert. Eine Lösung ist es, sowohl
-die @code{\new Score}- als auch die @code{\midi}-Umgebungen in eine
-@code{\score}-Umgebung einzuschließen.
+@code{\score} beginnt.
@example
\score @{
- \new Score @{ @dots{}Noten@dots{} @}
+ @{ @dots{}Noten@dots{} @}
\midi @{ @}
@}
@end example
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: 144cd434d02e6d90b2fb738eeee99119a7c5e1d2
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@tab
Molldreiklang, große Septime
@tab
-@code{maj7.3-}
+@code{m7+}
@tab
@lilypond[line-width=3\cm,noragged-right, notime]
\chordmode {
- c1:maj7.5-
+ c1:m7+
}
@end lilypond
}
@end lilypond
+@item
+Powerakkord (zweistimmig)
+@tab
+Perfekte Quinte
+@tab
+@code{1.5}
+@tab
+@lilypond[line-width=3\cm,noragged-right, notime]
+\chordmode {
+ \powerChords
+ c1:1.5
+}
+@end lilypond
+
+@item
+Powerakkord (dreistimmig)
+@tab
+Perfekte Quinte, Oktave
+@tab
+@code{1.5.8}
+@tab
+@lilypond[line-width=3\cm,noragged-right, notime]
+\chordmode {
+ \powerChords
+ c1:1.5.8
+}
+@end lilypond
+
@end multitable
@include identifiers.tely
-@node Vordefinierte Typprädikate
-@appendixsec Vordefinierte Typprädikate
+@node Vordefinierte Typenprädikate
+@appendixsec Vordefinierte Typenprädikate
@translationof Predefined type predicates
@include type-predicates.tely
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@item unfold (aufklappen)
Die wiederholte Musik wird ausgeschrieben, so oft, wie es durch
-@var{Wiederholungszähler} definiert wird. Das erspart Arbeit,
+@code{@var{Wiederholungszähler}} definiert wird. Das erspart Arbeit,
wenn repetitive Musik notiert wird.
@item percent (Prozent-Wiederholung)
@end example
@noindent
-wobei @var{musikAusdr} ein musikalischer Ausdruck ist.
+wobei @code{@var{musikAusdr}} ein musikalischer Ausdruck ist.
Wiederholung ohne alternativen Schluß:
@end example
@noindent
-wobei @var{musikAusdr} ein musikalischer Ausdruck ist.
+wobei @code{@var{musikAusdr}} ein musikalischer Ausdruck ist.
Wenn
es mehr Wiederholungen gibt, als Alternativen angegeben sind, erhalten
@end example
@noindent
-wobei @var{musikAusdr} ein musikalischer Ausdruck ist und
-@var{Wiederholungszähler} die Anzahl bezeichnet, mit der
-@var{musikAusdr} wiederholt wird.
+wobei @code{@var{musikAusdr}} ein musikalischer Ausdruck ist und
+@code{@var{Wiederholungszähler}} die Anzahl bezeichnet, mit der
+@code{@var{musikAusdr}} wiederholt wird.
@lilypond[verbatim,quote,relative=2]
\repeat unfold 2 { c4 d e f }
Die Syntax lautet:
@example
-@code{\repeat percent @var{Wiederholungszahl} @var{musikAusdr}}
+\repeat percent @var{Wiederholungszahl} @var{musikAusdr}
@end example
@noindent
-wobei @var{musikAusdr} ein musikalischer Ausdruck ist.
+wobei @code{@var{musikAusdr}} ein musikalischer Ausdruck ist.
Muster, die kürzer als ein Takt sind, werden mit Schrägstrichen
ersetzt:
@funindex :
Die gleiche Darstellung wird erreicht, indem nach der Note
-@qq{@code{:}[@var{Zahl}]} geschrieben wird. Die Zahl zeigt
+@code{:@var{Zahl}} geschrieben wird. Die Zahl zeigt
die Dauer der Unterteilung an, und sie muss mindestens den
Wert 8 haben. Ein Wert von 8 ergibt einen Balken durch den
Notenhals. Wenn die Zahl ausgelassen wird, wird der letzte
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: 144cd434d02e6d90b2fb738eeee99119a7c5e1d2
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@rinternals{Tie}.
@knownissues
-
Der Wechsel zwischen Systemen bei aktiver Überbindung produziert keinen
gekrümmten Bogen.
@funindex breve
Pausen werden wie Noten eingegeben, ihre Bezeichnung ist @code{r}.
-Dauern, die länger als eine Ganze sind, haben die gezeigten
+Dauern, die länger als eine Ganze sind, haben die
vordefinierten Befehle:
@c \time 16/1 is used to avoid spurious bar lines
@c and long tracts of empty measures
-@lilypond[quote,verbatim]
+@lilypond[quote,verbatim,relative=2]
\new Staff {
% These two lines are just to prettify this example
\time 16/1
@lilypond[quote,verbatim,relative=2]
<<
{
- \repeat unfold 8 {a4}
+ \repeat unfold 8 { a4 }
}
{
a4 \skip 2 a |
Die Platzhalterpause mit @code{s} erstellt @code{Staff}- und
@code{Voice}-Kontext, wenn es erforderlich ist, genauso wie Noten und Pausen.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
s1 s s
@end lilypond
Der Überspringungsbefehl (@code{\skip}) ist einfach ein leerer Platzhalter.
Durch ihn wird überhaupt nichts gesetzt, auch keine transparenten Objekte.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
% This is valid input, but does nothing
\skip 1 \skip1 \skip 1
@end lilypond
eine ganze Anzahl an Taktlängen sein, weshalb Punktierungen
und Brüche recht häufig eingesetzt werden müssen.
-@lilypond[quote,fragment,verbatim]
+@lilypond[quote,relative=2,verbatim]
\compressFullBarRests
\time 2/4
R1 | R2 |
Eine Ganztaktpause wird abhängig von der Taktart entweder als
Ganze oder Brevis-Pause gesetzt, zentriert im Takt.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
\time 4/4
R1 |
\time 6/4
Mehrtaktpausensymbol beinhaltet, wobei die Anzahl der Takte
der Pausendauer über dem Pausenzeichen ausgegeben wird:
-@lilypond[quote,fragment,verbatim]
+@lilypond[quote,relative=2,verbatim]
% Default behavior
\time 3/4 r2. | R2.*2 |
\time 2/4 R2 |
vordefinierte Befehl @code{\fermataMarkup} fügt eine
Fermate ein.
-@lilypond[quote,ragged-right,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
\compressFullBarRests
\time 3/4
R2.*10^\markup { \italic "ad lib." }
nicht ignoriert werden. Siehe auch das folgende Beispiel.
}
-@lilypond[quote,ragged-right,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
% This fails, as the wrong object name is specified
\override TextScript #'padding = #5
R1^"wrong"
-% This is correct and works
+% This is the correct object name to be specified
\override MultiMeasureRestText #'padding = #5
R1^"right"
@end lilypond
@cindex Ganztaktpausen und Fingersatz
@knownissues
-
Wenn man versucht, mit Fingersatz (etwa @code{R1*10-4} Zahlen
über Ganztaktpausen zu setzen, kann die Zahl des Fingersatzes
(4) mit der Taktanzahl (10) zusammenstoßen.
#'(3 1) % beatStructure
#'() % beamExceptions
\time 4/4
- \repeat unfold 8 c8 |
+ \repeat unfold 8 { c8 } |
}
}
@end lilypond
Standard zurückgesetzt werden:
@lilypond[quote,verbatim]
-
\score{
\relative c' {
- \repeat unfold 8 c8 |
+ \repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
- #'Score
- #'(4 . 4)
- #'(1 . 4)
- #'(3 1)
- #'((end . (((1 . 8) . (3 1)))))
+ #'Score % context
+ #'(4 . 4) % timeSignatureFraction
+ #'(1 . 4) % baseMomentFraction
+ #'(3 1) % beatStructure
+ #'((end . (((1 . 8) . (3 1))))) % beamExceptions
\time 4/4
- \repeat unfold 8 c8 |
+ \repeat unfold 8 { c8 } |
\revertTimeSignatureSettings #'Score #'(4 . 4)
\time 4/4
- \repeat unfold 8 c8 |
+ \repeat unfold 8 { c8 } |
}
}
@end lilypond
@code{\cadenzaOff} kann dieses Verhalten ausgeschaltet und
wieder angeschaltet werden.
-@lilypond[verbatim,quote,relative=2,fragment]
+@lilypond[verbatim,relative=2,quote]
c4 d e d
\cadenzaOn
-c4 c d8 d d f4 g4.
+c4 c d8[ d d] f4 g4.
\cadenzaOff
\bar "|"
d4 e d c
\override Score.BarNumber #'break-visibility = #all-visible
c4 d e d
\cadenzaOn
-c4 c d8 d d f4 g4.
+c4 c d8[ d d] f4 g4.
\cadenzaOff
\bar "|"
d4 e d c
@end lilypond
+@cindex Bebalkung in Kadenzen
+@cindex Bebalken in taktloser Musik
+@cindex Kadenzen, Bebalkung
+@cindex Balken in Kadenzen
+@cindex Taktlose Musik, Bebalkung
+
+@lilypond[verbatim,relative=2,quote]
+\repeat unfold 8 { c8 }
+\cadenzaOn
+\repeat unfold 5 { c8 }
+\bar"|"
+\cadenzaOff
+\repeat unfold 8 { c8 }
+@end lilypond
+
+Automatische Bebalkung wird durch @code{\cadenzeOn} ausgestellt und durch
+@code{\cadenzaOff} wieder angestellt. Darum müssen alle Balken in Kadenzen
+manuell eingegeben werden (siehe @ref{Manuelle Balken}).
+
Diese vordefinierten Befehle wirken sich auf alle Systeme in der
Partitur aus, auch wenn sie nur in einer einzigen Stimme notiert werden.
Um dieses Verhalten zu ändern, müsen Sie @code{Timing_translator}
Notationsreferenz:
@ref{Sichtbarkeit von Objekten},
-@ref{Polymetrische Notation}.
+@ref{Polymetrische Notation}
+@ref{Manuelle Balken}.
Schnipsel:
@rlsr{Rhythms}.
Sie ein Stück mit @code{cadenzaOn} beginnen wollen, weil sonst
ein seltsamer Fehler auftreten kann.
-@lilypond[verbatim,relative=2,fragment]
-\new Voice \relative c'{
- \cadenzaOn
- c16^"Solo Free Time" d e f g2. \bar "||"
- \cadenzaOff
-}
-@end lilypond
+@example
+\new Voice @{
+ \relative c' @{
+ \cadenzaOn
+ c16[^"Solo Free Time" d e f] g2.
+ \bar "||"
+ \cadenzaOff
+ @}
+@}
+@end example
@node Polymetrische Notation
weil die Skalierung sich auch auf die automatische Bebalkung
auswirkt.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
\relative c' <<
\new Staff {
\time 3/4
@lilypond[quote,verbatim,relative=2]
\time 2/4 c8 c c c
-\time 6/8 c c c c8. c16 c8
+\time 6/8 c8 c c c8. c16 c8
@end lilypond
Wenn diese automatischen Entscheidungen nicht gut genug sind, können
@funindex \set
@funindex set
-Die Platzierung der automatischen Bebalkung wird entsprechend
-der Kontexteigenschaften @code{baseMoment}, @code{beatStructure}, @code{beamExceptions} und @code{autoBeaming} entschieden.
+In den meisten Fällen enden automatische Balken am Ende eines Taktes.
+Die Endpunkte für Schläge werden durch die Kontexteigenschaften
+@code{baseMoment} und @code{beatStructure} bestimmt. @code{beatStructure}
+ist eine Scheme-Liste, die die Länge jedes Schlages im Takt in
+Einheiten von @code{baseMoment} angibt. Der Standard von
+@code{baseMoment} ist Eins durch den Numerator der Taktangabe. Der
+Standardwert jeder Längeneinheit @code{baseMoment} ist ein
+einzelner Taktschlag.
-Die folgenden Regeln, in der Reihenfolge ihrer Priorität, gelten, wenn das Aussehen der Balken bestimmt wird:
-
-@itemize
-
-@item
-Wenn ein manueller Balken mit @code{[...]} definiert ist, wird er gesetzt, andernfalls
-
-@item
-wenn @code{\autoBeamOff} eingeschaltet ist, werden keine Balken gesetzt, andernfalls
-
-@item
-wenn eine Balkenendung-Regel für einen größeren Balkentyp in
-@code{beamExceptions} definiert ist, wird es verwendet, um die
-gültigen Plätze für Balkenenden zu berechnen, andernfalls
-
-@item
-benutze die Werte von @code{baseMoment} und @code{beatStructure},
-um die Enden der Balken im Takt zu definieren und beende Balken
-am Ende jedes Taktes.
-
-@end itemize
-
-Der Balkentyp ist die Dauer Dauer der kürzesten Note in einer
-bebalkten Gruppe. Wenn keine Balkenendungsregeln für einen
-Balkentyp definiert sind, wird die Regel für den kleinsten
-Balkentyp größer als der aktuelle Balken benutzt.
-
-@i{@strong{Die Gruppierung von Taktzeiten verändern}}
-
-Standardmäßig wird @code{baseMoment} (Grundschlag) durch die
-Taktart definiert, normalerweise als 1 über dem Nenner der
-Taktart. Ausnahmen dieses Standardverhaltens finden sich in
-@file{scm/@/time@/-signature@/-settings@/.scm}. Wie der Wert
-von @code{baseMoment} für eine bestimmte Taktart geändert wird,
-siehe @ref{Taktangabe}.
-
-@code{baseMoment} ist ein @emph{Momentum}, eine Einheit musikalischer
-Dauer. Eine Menge der Art @emph{Momentum} wird durch die
-Scheme-Funktion @code{ly:make-moment} erstellt. Für mehr Information
-zu dieser Funktion, siehe @ref{Verwaltung der Zeiteinheiten}.
-
-Besondere (das heißt andere als zum Ende eines Grundschlags)
-Bebalkungsregeln werden in der @code{beamExceptions}-Eigenschaft
-gespeichert. Standardwerte von @code{beamExceptions} werden durch
-den @code{\time}-Befehl festgelegt. Standardwerte von
-@code{beamExceptions} für eine Taktart werden in der Datei
-@file{scm/@/time@/-signature@/-settings@/.scm} festgelegt. Einträge
-in @code{beamExceptions} werden nach Regeltyp und Balkentyp
-indiziert.
-
-Der Regeltyp sollte für Balkenende-Regeln @code{#'end} lauten.
-
-Die Endungs- und Unterteilungsregeln bestehen aus einer
-Scheme-Aliste (oder Liste von Paaren), die den Balkentyp und
-die Gruppierung, die auf diesen Balkentyp angewendet werden
-soll, anzeigt.
-
-@example
-#'((beam-type1 . grouping-1)
- (beam-type2 . grouping-2)
- (beam-type3 . grouping-3))
-@end example
-
-Balkentyp ist ein Scheme-Paar, das die Dauer des Balkens
-anzeigt, etwa @code{(1 . 16)}.
-
-Die Balkengruppierung ist eine Scheme-Liste, die die Gruppierungsart
-für einen Balkentyp darstellt. Die Gruppierung wird in Einheiten
-von @code{beatLength} dargestellt.
-
-Zur Referenz finden sich die Standard-Bebalkunsregeln in der Datei
-@file{scm/time-signature-settings.scm}.
-
-Alternative Werte für @code{beamExceptions} können mit dem
-@code{\set}-Befehl definiert werden.
-
-@warning{
-Ein @code{beamExceptions}-Wert muss eine @emph{vollständige}
-Ausnahmeliste sein. Das heißt, das jede Ausnahme, die angewendet
-werden soll, auch in den Einstellungen enthalten sein muss. Es
-ist nicht möglich, nur eine Ausnahme hinzuzufügen, zu ändern oder
-zu entfernen. Während das seltsam erscheinen kann, bedeutet es,
-dass die aktuellen Bebalkunsregeln nicht bekannt sein müssen, um
-eine neue Regel zu definieren.}
@lilypond[quote,relative=2,verbatim]
\time 5/16
-c8^"beats" c16 c8 |
-\set beatStructure = #'(2 3)
-c8^"(2+3)" c16 c8
-\set beatStructure = #'(3 2)
-c8^"(3+2)" c16 c8
+c16^"default" c c c c |
+\set Timing.beatStructure = #'(2 3)
+c16^"(2+3)" c c c c |
+\set Timing.beatStructure = #'(3 2)
+c16^"(3+2)" c c c c |
@end lilypond
Balkenregelveränderungen können auf bestimmte Kontexte beschränkt
@lilypond[quote,verbatim,relative=2]
\time 7/8
% rhythm 3-1-1-2
-% Context Voice specified -- does not work correctly
+% Context applied to Voice by dafault -- does not work correctly
% Because of autogenerated voices, all beating will
% be at baseMoment (1 . 8)
\set beatStructure = #'(3 1 1 2)
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
@end lilypond
-@funindex revertBeamSettings
+Der Wert von @code{baseMoment} kann angepasst werden, um das
+Bebalkungsverhalten zu ändern, wenn gewünscht. In diesem Fall
+muss der Wert von @code{beatStructure} so gesetzt werden, dass
+er kompatibel mit dem neuen Wert von @code{baseMoment} ist.
+
+@lilypond[quote,verbatim,relative=2]
+\time 5/8
+\set Timing.baseMoment = #(ly:make-moment 1 16)
+\set Timing.beatStructure = #'(7 3)
+\repeat unfold 10 { a16 }
+@end lilypond
+
+@code{baseMoment} ist ein @i{Moment}, eine Einheit an musikalischer
+Dauer. Eine Anzahl vom Typus @i{Moment} wird durch die Scheme-Funktion
+@code{ly:make-moment} erstellt. Zu mehr Information über diese Funktion
+siehe @ref{Verwaltung der Zeiteinheiten}.
+
+Der Standardwert von @code{baseMoment} ist Eins durch den Denominator
+der Taktangabe. Alle Ausnahmen dieses Standards finden sich in der Datei
+@file{scm/@/time@/-signature@/-settings@/.scm}.
+
+Besondere automatische Bebalkungsregeln (außer dass ein Balken auf einem
+Taktschlag aufhört) sind in der @code{beamExceptions}-Eigenschaft
+definiert.
+
+@lilypond[quote,relative=2,verbatim]
+\time 3/16
+\set Timing.beatStructure = #'(2 1)
+\set Timing.beamExceptions =
+ #'( ;start of alist
+ (end . ;entry for end of beams
+ ( ;start of alist of end points
+ ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16
+ ))) %close all entries
+c16 c c |
+\repeat unfold 6 { c32 } |
+@end lilypond
+
+@code{beamExceptions} ist eine Aliste mit einem Schlüssel der Regeltypen
+(rule-type) und einem Wert der Bebalkungsregeln (beaming-rules).
+
+Im Moment ist der einzige mögliche rule-type @code{#'end} für ein
+Balkenende.
-Balkenregeln können rückgängig gemacht und das Standardverhalten
-wieder hergestellt werden. Das erreicht man durch erneutes
-Setzen der Taktart.
+Beaming-rules ist eine Scheme-Aliste (oder eine paarige Liste), die
+den Balkentyp und die Gruppierung anzeigt, die auf Balken angewendet
+werden, welche Noten mit einer kürzesten Dauer des Balkentyps enthalten.
+
+@example
+#'((beam-type1 . grouping-1)
+ (beam-type2 . grouping-2)
+ (beam-type3 . grouping-3))
+@end example
+
+Beam-type ist ein Scheme-Paar, das die Dauer eines Balkens anzeigt,
+etwa @code{(1 . 16)} für ein Sechszehntel.
+
+Grouping ist eine Scheme-Liste, die die auf den Balken anzuwendene
+Gruppierung anzeigt. Die Gruppierung wird in Einheiten des
+Balkentyps angegeben.
+
+@warning{Ein @code{beamExceptions}-Wert muss eine @emph{vollständige}
+Ausnahme-Liste sein. Das heißt, dass jede Ausnahme, die angewendet werden
+soll, auch in die Einstellungen mit aufgenommen werden muss. Es ist nicht
+möglich, nur eine der Einstellungen zu ändern, zu entfernen oder hinzuzufügen.
+Das mag seltsam erscheinen, bedeutet aber, dass die aktuellen
+Balkenregeln bekann sein müssen, um ein neues Bebalkungsmuster definieren zu können.}
+
+Wenn die Taktart geändert wird, werden neue Standardwerte für
+@code{Timing.baseMoment}, @code{Timing.beatStructure} und
+@code{Timing.beamExceptions} definiert. Wenn die Taktart
+definiert wird, werden die automatischen Bebalkungsregeln für den
+@code{Timing}-Kontext auf den Standard zurückgesetzt.
@lilypond[quote,verbatim,relative=2]
-\time 4/4
-\repeat unfold 8 {a8}
-% eliminate beam exception that groups beats 1, 2 and 3, 4
-\set Timing.beamExceptions = #'()
-\repeat unfold 8 {a8}
+\time 6/8
+\repeat unfold 6 { a8 }
+% group (4 + 2)
+\set Timing.beatStructure = #'(4 2)
+\repeat unfold 6 { a8 }
% go back to default behavior
-\time 4/4
-\repeat unfold 8 {a8}
+\time 6/8
+\repeat unfold 6 { a8 }
@end lilypond
+Diese automatischen Standardeinstellungen für die Bebalkung einer
+Taktart werden in der Datei @file{scm/@/time@/-signature@/-settings@/.scm}
+bestimmt. Die automatischen Bebalkungsregeln für eine Taktart
+können nach der Beschreibung in @ref{Taktangabe} geändert werden.
+
+@i{@strong{Wie die automatische Bebalkung funktioniert}}
+
+Wenn die automatische Bebalkung aktiviert ist, wird die Platzierung
+der automatischen Balken durch die Kontexteigenschaften
+@code{baseMoment}, @code{beatStructure} und @code{beamExceptions}
+bestimmt.
+
+Die folgenden Regeln, in der Reihenfolge ihrer Priorität, gelten, wenn das Aussehen der Balken bestimmt wird:
+
+@itemize
+
+@item
+Wenn ein manueller Balken mit @code{[...]} definiert ist, wird er gesetzt, andernfalls
+
+@item
+wenn eine Balkenendung-Regel für den Balkentyp in
+@code{beamExceptions} definiert ist, wird sie verwendet, um die
+gültigen Plätze für Balkenenden zu berechnen, andernfalls
+
+@item
+wenn eine Balkenendung-Regel für einen größeren Balkentyp
+in @code{beamExceptions} definiert ist, wird sie verwendet,
+um die gültigen Plätze für Balkenenden zu berechnen, andernfalls
+
+@item
+benutze die Werte von @code{baseMoment} und @code{beatStructure},
+um die Enden der Balken im Takt zu definieren und beende Balken
+am Ende jedes Taktes.
+
+@end itemize
+
+In den oben genannten Regeln ist der Balkentyp die Dauer der
+kürzesten Note der bebalkten Gruppe.
+
+Zur Erinnerung: die Standardbebalkungsregeln finden sich in der Datei
+@file{scm/time-signature-settings.scm}.
+
@snippets
@knownissues
-
Wenn eine Partitur endet, während ein automatischer Balken noch
nicht beendet wurde und weiterhin Noten erwartet, wird dieser
letzte Balken nicht ausgegeben. Das Gleiche gilt auch für
-polyphone Stimmen, die mit der @code{<<
-@dots{} \\ @dots{} >>}-Konstruktion notiert wurden. Wenn eine
+polyphone Stimmen, die mit der
+@code{<< @dots{} \\ @dots{} >>}-Konstruktion notiert wurden. Wenn eine
polyphone Stimme endet, während ein Balken noch weitere Noten
erwartet, wird der Balken nicht gesetzt. Eine Notlösung für
dieses Probelm ist, den letzten Balken in der Stimme oder
@code{]} (AltGr+8 bzw. 9) markiert.
@lilypond[quote,relative=1,verbatim]
-{
- r4 r8[ g' a r8] r8 g[ | a] r8
-}
+r4 r8[ g' a r] r g[ | a] r
@end lilypond
@cindex manuelle Balken, Richtung zuweisen
@lilypond[quote,verbatim,relative=2]
c4 d8[
\grace { e32[ d c d] }
-e8] e8[ e
+e8] e[ e
\grace { f16 }
e8 e]
@end lilypond
a1 \bar ":|.|:"
b1 \bar ":|.:"
c1 \bar ":|"
-d1
+e1
@end lilypond
Zusätzliche kann ein Taktstrich auch nur als kleines Komma gesetzt
@cindex Zusammenstöße, Taktnummern
@knownissues
-
Taktnummern können mit der oberen Ecke der Klammer zu Beginn des
Systems zusammenstoßen. Um das zu verhindert, kann die
@code{padding}-Eigenschaft von @code{BarNumer} verwendet werden,
@lilypond[quote,verbatim]
pipeSymbol = \bar "||"
{
- c'2 c'2 |
- c'2 c'2
- c'2 | c'2
- c'2 c'2
+ c'2 c' |
+ c'2 c'
+ c'2 | c'
+ c'2 c'
}
@end lilypond
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Stücken explizite Stimmenkontexte zu erstellen, wie erklärt in@rlearning{Kontexte und Engraver} und
@rlearning{Stimmen explizit beginnen}.
+@strong{@i{Stimmen-Anordnung}}
+
+Wenn mehrere Stimmen notiert werden, sollte folgende Anordnung eingehalten
+werden:
+
+@example
+Stimme 1: höchste
+Stimme 2: tiefste
+Stimme 3: zweithöchste
+Stimme 4: zweittiefste
+Stimme 5: dritthöchste
+Stimme 6: dritttiefste
+usw.
+@end example
+
+Auch wenn das erst nicht einleuchtend erscheint, erleichtert es den
+automatischen Layoutprozess doch sehr. Die ungeraden Stimmen erhalten
+Hälse nach oben, die graden Stimmen Hälse nach unten:
+
+@lilypond[quote,verbatim]
+\new Staff <<
+ \time 2/4
+ { f''2 } % 1: highest
+ \\
+ { c'2 } % 2: lowest
+ \\
+ { d''2 } % 3: second-highest
+ \\
+ { e'2 } % 4: second-lowest
+ \\
+ { b'2 } % 5: third-highest
+ \\
+ { g'2 } % 6: third-lowest
+>>
+@end lilypond
+
@strong{@i{Identische Rhythmen}}
Wenn parallele Abschnitte gesetzt werden sollen,
>>
@end lilypond
-Die Befehle @code{\shiftOn}, @code{\shiftOnn} und @code{\shiftOnnn}
-bezeichnen den Grad, mit dem Noten der aktuellen Stimme verschoben
-werden sollen. Die äußeren Stimmen (normalerweise Stimme eins und
-zwei) haben diese Funktion standardmäßig ausgeschaltet
-(@code{\shiftOff}), während die inneren Stimmen (drei und vier)
-ein @code{\shiftOn} eingestellt haben (Verschiebung an). Die
-Befehle @code{\shiftOnn} und @code{\shiftOnnn} stellen weitere
-Verschiebungesebenen dar.
+Der @code{shiftOn}-Befehl ermöglicht die Noten einer Stimme zu verschieben,
+erzwingt dieses Verhalten aber nicht. Wenn @code{shiftOn} auf eine Stimme
+angewendet wird, eine Note oder ein Akkord in der Stimme wird nur verschoben,
+wenn sein Hals mit dem Hals der Note einer anderen Stimme kollidieren würde,
+und nur, wenn der Hals der Kollisionsnote in die gleiche Richtung zeigt.
+Der @code{shiftOff}-Befehl verhindert, dass eine derartige Verschiebung
+stattfinden kann.
+
+Die äußeren Stimmen (also normalerweise Stimmen 1 und 2) haben als Standard
+@code{shiftOff} eingestellt, während die inneren Stimmen (3 und mehr)
+@code{shiftOn} definiert haben. Wenn eine Verschiebung stattfindet, werden
+Stimmen mit den Hälsen nach oben (also ungerade Stimmen) nach rechts verschoben,
+während Stimmen mit den Hälsen nach unten (also gerade Stimmen) nach links
+verschoben werden.
+
+Hier ein Beispiel, das verstehen hilft, wie ein verkürzter polyphonischer
+Abschnitt intern ausgeweitet wird.
+
+@warning{Wenn Sie drei oder mehr Stimmen haben, sollte die vertikale Anordnung
+der Stimmen in der Eingabedatei nicht die gleiche sein wie die vertikale
+Anordnung der Stimmen im Notensystem!}
+
+@lilypond[quote,verbatim]
+\new Staff \relative c'' {
+ %% abbreviated entry
+ <<
+ { f2 } % 1: highest
+ \\
+ { g,2 } % 2: lowest
+ \\
+ { d'2 } % 3: upper middle
+ \\
+ { b2 } % 4: lower middle
+ >>
+ %% internal expansion of the above
+ <<
+ \new Voice = "1" { \voiceOne \shiftOff f'2 }
+ \new Voice = "2" { \voiceTwo \shiftOff g,2 }
+ \new Voice = "3" { \voiceThree \shiftOn d'2 } % shifts right
+ \new Voice = "4" { \voiceFour \shiftOn b2 } % shifts left
+ >>
+}
+@end lilypond
+
+Zwei zusätzliche Befehle, @code{shiftOnn} und @code{shiftOnnn} stellen
+weitere Verschiebungsebenen zu verfügung, die vorübergehend eingesetzt
+werden können um Zusammenstöße in komplizierten Situationen aufzulösen.
+Siehe auch @rlearning{Beispiel aus dem Leben}.
Noten werden nur verschmolzen, wenn ihre Hälse in entgegengesetzte
Richtungen zeigen (also etwa wie @code{Voice} 1 und 2 in den
@rinternals{RestCollision}.
@knownissues
-
@ignore
@c TODO investigate! Sometimes it works, sometimes not. --FV
The requirements for successfully merging different note heads that
@noindent
Ein @code{\relative}-Abschnitt, der sich außerhalb von@code{\partcombine} befindet, hat keinen Einfluss auf
-die Tonhöhen von @var{musikAusdr1} oder @var{musikAusdr2}.
+die Tonhöhen von @code{@var{musikAusdr1}} oder @code{@var{musikAusdr2}}.
@snippets
@noindent
Eine ausführliche Liste der @code{\markup}-Befehle findet sich in
-@ref{Text markup commands}.
+@ref{Textbeschriftungsbefehle}.
@seealso
Notationsreferenz:
-@ref{Text markup commands}.
+@ref{Textbeschriftungsbefehle}.
Schnipsel:
@rlsr{Text}.
@end itemize
Eine vollständige Liste der Beschriftungslistenbefehle findet sich in
-@ref{Text markup list commands}.
+@ref{Textbeschriftungslistenbefehle}.
@seealso
Notationsreferenz:
-@ref{Text markup list commands}.
+@ref{Textbeschriftungslistenbefehle}.
Schnipsel:
@rlsr{Text}.
Erweitern:
-@rextend{Neue Definitionen von Beschriftungsbefehlen für Listen}.
+@rextend{Neue Definitionen von Beschriftungslistenbefehlen}.
Referenz der Interna:
@rinternals{TextScript}.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
* lilypond-book aufrufen::
* Dateiendungen::
* lilypond-book-Vorlagen::
+* Das Inhaltsverzeichnis flexibel einsetzen::
* Alternative Methoden Text und Musik zu kombinieren::
@end menu
@end verbatim
+@node Das Inhaltsverzeichnis flexibel einsetzen
+@section Das Inhaltsverzeichnis flexibel einsetzen
+@translationof Sharing the table of contents
+
+Diese Funktionen existieren schon im OrchestraLily-Paket:
+
+@example
+@url{http://repo.or.cz/w/orchestrallily.git}
+@end example
+
+Um den Text flexibler behandeln zu können, bevorzugen manche Benutzer es,
+das Inhaltsverzeichnis aus LilyPond zu exportieren und dann mit
+@LaTeX{} einzulesen.
+
+@subsubheading Das Ihaltsverzeichnis (ToC) aus LilyPond exportieren
+
+Hier wird angenommen, dass in Ihrer Partitur mehrere Sätze vorkommen, die
+sich alle in der selben LilyPond-Datei befinden.
+
+@smallexample
+#(define (oly:create-toc-file layout pages)
+ (let* ((label-table (ly:output-def-lookup layout 'label-page-table)))
+ (if (not (null? label-table))
+ (let* ((format-line (lambda (toc-item)
+ (let* ((label (car toc-item))
+ (text (caddr toc-item))
+ (label-page (and (list? label-table)
+ (assoc label label-table)))
+ (page (and label-page (cdr label-page))))
+ (format #f "~a, section, 1, @{~a@}, ~a" page text label))))
+ (formatted-toc-items (map format-line (toc-items)))
+ (whole-string (string-join formatted-toc-items ",\n"))
+ (output-name (ly:parser-output-name parser))
+ (outfilename (format "~a.toc" output-name))
+ (outfile (open-output-file outfilename)))
+ (if (output-port? outfile)
+ (display whole-string outfile)
+ (ly:warning (_ "Unable to open output file ~a for the TOC information") outfilename))
+ (close-output-port outfile)))))
+
+\paper @{
+ #(define (page-post-process layout pages) (oly:create-toc-file layout pages))
+@}
+@end smallexample
+
+@subsubheading Das Inhaltsverzeichnis in LaTeX importieren
+
+In der LaTeX-Datei sollte folgendes enthalten:
+
+@c no, this doesn't require the smallexample, but since the other
+@c two blocks on this page use it, I figured I might as well
+@c user it here as well, for consistency. -gp
+@smallexample
+\usepackage@{pdfpages@}
+\includescore@{nameofthescore@}
+@end smallexample
+
+@noindent
+wobei @code{\includescore} wiefolgt definiert ist:
+
+@smallexample
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \includescore@{PossibleExtension@}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Read in the TOC entries for a PDF file from the corresponding .toc file.
+% This requires some heave latex tweaking, since reading in things from a file
+% and inserting it into the arguments of a macro is not (easily) possible
+
+% Solution by Patrick Fimml on #latex on April 18, 2009:
+% \readfile@{filename@}@{\variable@}
+% reads in the contents of the file into \variable (undefined if file
+% doesn't exist)
+\newread\readfile@@f
+\def\readfile@@line#1@{%
+@{\catcode`\^^M=10\global\read\readfile@@f to \readfile@@tmp@}%
+\edef\do@{\noexpand\g@@addto@@macro@{\noexpand#1@}@{\readfile@@tmp@}@}\do%
+\ifeof\readfile@@f\else%
+\readfile@@line@{#1@}%
+\fi%
+@}
+\def\readfile#1#2@{%
+\openin\readfile@@f=#1 %
+\ifeof\readfile@@f%
+\typeout@{No TOC file #1 available!@}%
+\else%
+\gdef#2@{@}%
+\readfile@@line@{#2@}%
+\fi
+\closein\readfile@@f%
+@}%
+
+
+\newcommand@{\includescore@}[1]@{
+\def\oly@@fname@{\oly@@basename\@@ifmtarg@{#1@}@{@}@{_#1@}@}
+\let\oly@@addtotoc\undefined
+\readfile@{\oly@@xxxxxxxxx@}@{\oly@@addtotoc@}
+\ifx\oly@@addtotoc\undefined
+\includepdf[pages=-]@{\oly@@fname@}
+\else
+\edef\includeit@{\noexpand\includepdf[pages=-,addtotoc=@{\oly@@addtotoc@}]
+@{\oly@@fname@}@}\includeit
+\fi
+@}
+@end smallexample
+
+
@node Alternative Methoden Text und Musik zu kombinieren
@section Alternative Methoden Text und Musik zu kombinieren
@translationof Alternate methods of mixing text and music
\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: 4f7427e7a314a71bde16559247885544256b8213
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@divId{quickSummary}
@subheading Was ist LilyPond?
-LilyPond ist ein Open Source Notensatzprogramm, dass es sich zum Ziel gemacht hat, Notendruck von der bestmöglichen Qualität zu erstellen. Dieses Open Source Programm ermöglicht, die Ästhetik handgestochenen traditionellen Notensatzes mit computergesetzen Noten zu erreichen.
+LilyPond ist ein Notensatzprogramm, dass es sich zum Ziel gemacht hat, Notendruck von der bestmöglichen Qualität zu erstellen. Mit dem Programm wird es
+möglich, die Ästhetik handgestochenen traditionellen Notensatzes mit computergesetzen Noten zu erreichen. LilyPond ist ein Open Source-Programm
+und Teil des @uref{http://gnu.org,GNU Projekts}.
@divClass{align-right}
Lesen Sie mehr in der @ref{Einleitung}!
@end macro
+@ifhtml
+@macro contactUsAbout{topic}
+
+@divClass{heading-center}
+@divClass{contactBox}
+Wenn Sie irgendein \Thema\ hier vermissen, teilen Sie das uns
+bitte mit und beachten Sie die Anleitung dazu unter
+@ref{Fehlerberichte}.
+
+@divEnd
+@divEnd
+
+@end macro
+@end ifhtml
+
+@ifnothtml
+@macro contactUsAbout{topic}
+@cartouche
+Wenn Sie die Erwähnung von \topic\ hier vermissen, teilen Sie das uns
+bitte mit und beachten Sie die Anleitung dazu unter
+@ref{Fehlerberichte}.
+
+@end cartouche
+
+@end macro
+@end ifnothtml
+
+
@include web/introduction.itexi
@include web/download.itexi
@c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@warning{Hier handelt es sich um nicht stabile Entwicklerversionen.
Wenn Sie nicht genau wissen, wie man LilyPond installiert und
-benutzt, empfehlen wir ausdrücklich, die stabilen @ref{Download}-Versionen
-zu benutzen und die stabilen @ref{Handbücher} zu lesen.}
+benutzt, empfehlen wir ausdrücklich, die @ref{Download, stabilen Download}-Versionen
+zu benutzen und die @ref{Handbücher, stabilen Handbücher} zu lesen.}
@divEnd
@subsubheading Alle Versionen
@itemize
-@item @uref{http://lilypond.org/test, Archiv der Regressionsteste}:
-Vergleiche zweier Versionen.
+@item @uref{http://lilypond.org/test, Vergleiche zweier Versionen}:
+
+@item @uref{http://lilypond.org/download/binaries/test-output/,
+Archiv aller Regressionsteste}
+
@end itemize
@divEnd
@divEnd
@divEnd
+@contactUsAbout{wissenschaftliche Aufsätzen}
+
@node Ältere Neuigkeiten
@unnumberedsec Ältere Neuigkeiten
@c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@item
@sourceimage{logo-macosx,,,}
@downloadStableDarwinNormal
-Für Intel-Prozessoren (wenn Sie Zweifel haben, benutzen Sie diese Version).
+Für MacOS X 10.4 und höher auf Intel-Prozessoren (wenn Sie Zweifel haben, benutzen Sie diese Version).
@item
@sourceimage{logo-macosx,,,}
@downloadStableDarwinPPC
-Für G3 und G4 Prozessoren (alte Apple-Computer).
+Für MacOS X 10.4 oder höher auf G3 und G4 Prozessoren (alte Apple-Computer).
@end itemize
@c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: 144cd434d02e6d90b2fb738eeee99119a7c5e1d2
+ Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Kommentare von zwei Orchsterbibliothekaren, die sich über die Benutzung von
Software zur Unterhaltung ihrer Bibliotheken unterhalten.
+ @item
+June 2009
+
+In einem @uref{http://news.lilynet.net/Free-Music-Now, Artikel}
+in der Jahreszeitschrift der @emph{National Conservatory Parent
+Association} erklärt der französischer Komponist und LilyPond-Mitarbeiter
+Valentin Villenave wie freie Lizenzen und insbesondere mit LilyPond
+gesetzte Partituren dazu beitragen, dass notierte Musik allen zugänglich
+gemacht wird.
+
@item
Februar 2008
\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: d9d72186ca281ea763cb2d50446a113ab0a26779
+ Translation of GIT committish: f6deb2ea10fb60c6b1afa9c1a78d7256d3be789f
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@end ignore
+@item
+Ahora el barrado automático se desactiva mediante @code{\cadenzaOn} y
+se habilita con @code{\cadenzaOff}. Hay que indicar el barrado de las
+cadencias manualmente. Asimismo, si se usa una cadencia en una pieza
+con el barrado automático desactivado, tiene que desactivarse de nuevo
+después de la cadencia.
+
@item
Ahora el usuario puede especificar el nombre de la tabla
predeterminada de diagramas de posiciones de acordes. Esto permite la
-\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
Translation of GIT committish: 3b870eb9ab448ebc11a2d6283ad35796b22351aa
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: fb382fd467dea1bf5c5735cf4b5c59935fbd40a8
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Grabado musical
@chapter Grabado musical
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: efdc514b7a7357d67c6e0f3927c38b70d645f9c7
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Lista de referencias bibliográficas
@chapter Lista de referencias bibliográficas
-\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
Translation of GIT committish: 3b870eb9ab448ebc11a2d6283ad35796b22351aa
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of extending.tely
@ignore
- Translation of GIT committish: 87a9977bbd54e3822338e290716845d8e2e304e3
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Interfaces para programadores
@chapter Interfaces para programadores
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: fe2cae0fa47ec4ec0184e6b3d15572fbcba881cf
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Tutorial de Scheme
@appendix Tutorial de Scheme
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of web/download.itexi and
@c learning/tutorial.itely
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of web/community.itexi and
@c contributor/introduction.itely
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: fe2cae0fa47ec4ec0184e6b3d15572fbcba881cf
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@ignore
Tutorial guidelines: (different from policy.txt!)
}
@end lilypond
+
@node Grupos de pentagramas
@subsection Grupos de pentagramas
@translationof Staff groups
@funindex ChoirStaff
Glosario musical:
-@rglos{brace}.
+@rglos{brace},
+@rglos{staff},
+@rglos{system}.
La música para piano se compone tipográficamente en forma de dos
pentagramas unidos mediante una @notation{llave}. El aspecto impreso
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: fe2cae0fa47ec4ec0184e6b3d15572fbcba881cf
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Conceptos fundamentales
interpretar la @var{expresión_musical} que está dentro de ese
contexto.
-(Observe que normalmente no se necesita una instrucción @code{\new
-Score}, pues el contexto esencial del nivel superior, @code{Score}, se
-crea automáticamente cuando se interpreta la expresión musical que
-está dentro del bloque @code{\score}. La única razón para crear un
-contexto @code{Score} explícitamente utilizando @code{\new Score} es
-introducir un bloque @code{\with} en el que se pueden especificar uno
-o más valores predeterminados de propiedades de contexto para toda la
-partitura. Se puede encontrar más información sobre el uso de los
-bloques @code{\with} bajo el epígrafe @qq{Setting context properties
-with @code{\\with} } en @ref{Modificar las propiedades de los
-contextos}).
-
+@warning{No se debe usar @bs{}@code{new Score} porque el contexto
+@code{Score} esencial del nivel superior ya se crea automáticamente al
+interpretarse la expresión musical que está dentro del bloque
+@bs{}@code{score}. Los valores predeterminados de propiedades de
+contexto válidos para toda la partitura se pueden cambiar dentro del
+bloque @bs{}@code{layout}. Véase @ref{Modificar las propiedades de
+los contextos}.}
En las secciones anteriores ha podido ver muchos ejemplos prácticos que
creaban nuevos contextos de @code{Staff} y de @code{Voice}, pero para
>>
@end lilypond
-O bien, si la sobreescritura de la propiedad se va a aplicar a todos
-los pentagramas de la partitura, se puede añadir a una instrucción
-@code{\new Score} explícita, como se ve a continuación:
-
-@lilypond[quote,verbatim,ragged-right]
-\score {
- \new Score \with { extraNatural = ##f } <<
- \new Staff {
- \relative c'' {
- gis4 ges aes ais
- }
- }
- \new Staff {
- \relative c'' {
- gis4 ges aes ais
- }
- }
- >>
-}
-@end lilypond
-
Las propiedades ajustadas de esta manera aún pueden cambiarse
dinámicamente utilizando @code{\set} y ser devueltas al valor
predeterminados que se estableció en el bloque @code{\with} mediante
}
@end lilypond
+Si se quiere aplicar la sobreescritura de propiedades a todos los
+pentagramas de la partitura:
+
+@lilypond[quote,verbatim]
+\score {
+ <<
+ \new Staff {
+ \relative c'' {
+ gis4 ges aes ais
+ }
+ }
+ \new Staff {
+ \relative c'' {
+ gis4 ges aes ais
+ }
+ }
+ >>
+ \layout {
+ \context {
+ \Score extraNatural = ##f
+ }
+ }
+}
+@end lilypond
+
@noindent
Las propiedades de contexto establecidas de esta forma se pueden
sobreescribir para ejemplares concretos de contextos mediante
} % end Score context
@end lilypond
+@seealso
+Glosario musical:
+@rglos{system}.
@node Ahorrar tecleo mediante variables y funciones
@subsection Ahorrar tecleo mediante variables y funciones
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 3dd9b13331489a191d0e901245cc98476e5fcac1
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Preámbulo
@unnumbered Preámbulo
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 66bd391a59ab23b366bd0d534123768fc92006f4
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Plantillas
@appendix Plantillas
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 9e1b534c81e101c449acfa176f923be57cbcaea5
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@include included/generating-output.itexi
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Tutorial
@chapter Tutorial
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: cd6d449de0bfc3236b87fbec08389697be8cae81
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Trucar la salida
@chapter Trucar la salida
línea fuerza una colocación muy alta de la indicación de tempo que
sigue, mientras que la segunda (con el sello suprimido) no lo hace.
+@seealso
+Glosario musical:
+@rglos{system}.
+
+
@node Uso de variables para los trucos
@subsection Uso de variables para los trucos
@translationof Using variables for tweaks
@end lilypond
Se pueden encontrar ejemplos adicionales que muestran la utilización
-de estos interfaces programables, en @rextendnamed{Callback
-functions,Funciones de callback}.
+de estos interfaces programables, en
+@rextendnamed{Callback functions,Funciones de callback}.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c vim: foldmethod=marker
@ignore
- Translation of GIT committish: 0f160f02f8fcf7859e18ab1ea0be1e3d69953879
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Notación antigua
@section Notación antigua
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
-Translation of GIT committish: cd6d449de0bfc3236b87fbec08389697be8cae81
+Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Cambiar los valores por omisión
@chapter Cambiar los valores por omisión
decisiones de disposición da acceso efectivo a las interioridades del
programa, lo que requiere código de Scheme como entrada. Los
elementos de Scheme se inauguran dentro de un archivo @code{.ly} con
-el símbolo de cuadradillo @code{#}.@footnote{@rextend{Tutorial de
-Scheme} contiene un breve tutorial sobre la introducción de números,
+el símbolo de cuadradillo @code{#}.@footnote{@rextend{Tutorial de Scheme}
+contiene un breve tutorial sobre la introducción de números,
listas, cadenas y símbolos en Scheme.}
@menu
Esta variante se usa con expresiones musicales que se pueden
interpretar en varios niveles. Por ejemplo, la instrucción
-@code{\applyOutput} (véase @rextend{Ejecutar una función sobre todos
-los objetos de la presentación}). Sin una instrucción @code{\context}
+@code{\applyOutput} (véase
+@rextend{Ejecutar una función sobre todos los objetos de la presentación}).
+Sin una instrucción @code{\context}
explícita, normalmente se aplicaría a @code{Voice}
@example
La instrucción @code{\RemoveEmptyStaves} sobreescribe nuestros ajustes
en curso para el contexto @code{\Staff}. Si queremos cambiar los
valores predeterminados para un pentagrama que utilice
-@code{\RemoveEmptyStaves}, debe hacerlo después de llamar a
+@code{\RemoveEmptyStaves}, debemos hacerlo después de llamar a
@code{\RemoveEmptyStaves}, o sea
@example
El flujo musical que se genera a partir de una sección de un archivo
de entrada (incluido cualquier elemento insertado automáticamente)
-puede examinarse, véase @rextend{Presentación de las expresiones
-musicales}. Esto puede ser de utilidad en la determinación de lo que
+puede examinarse, véase @rextend{Presentación de las expresiones musicales}.
+Esto puede ser de utilidad en la determinación de lo que
puede modificarse por medio de una instrucción @code{\tweak}.
@rlsr{Tweaks and overrides}.
Extender:
-@rextend{Interfaces for programmers}.
+@rextend{Interfaces para programadores}.
Referencia de funcionamiento interno:
@rinternals{All layout objects}.
Los argumentos @code{parser} y @code{location} son necesarios, y se
utilizan en algunas situaciones avanzadas como se encuentra descrito
-en @rextend{Music function syntax}. Para las funciones de
-sustitución, tan sólo hemos de asegurarnos de incluirlos.
+en @rextend{Sintaxis de las funciones musicales}. Para las funciones
+de sustitución, tan sólo hemos de asegurarnos de incluirlos.
También es necesaria la lista de predicados de tipo. Algunos de los
predicados de tipo más comunes que se utilizan en las funciones
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 3dd9b13331489a191d0e901245cc98476e5fcac1
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@c TODO: add tablature.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 6e36ca8cc133568378f03e519d2d44a3eeb6abf8
+ Translation of GIT committish: d7f5cebae73078d1919381df574c69323043a224
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Notación de acordes
@section Notación de acordes
<c e g>2 <g' b d>
@end lilypond
+@noindent
Para evitar este comportamiento podemos crear explícitamente el
contexto de @code{Staff}:
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 3dd9b13331489a191d0e901245cc98476e5fcac1
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Música contemporánea
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is included from notation.itely
@ignore
- Translation of GIT committish: 8e0330b913e0c7494282e6b00cebbf4dcee79b50
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Anotaciones editoriales
@section Anotaciones editoriales
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 8e0330b913e0c7494282e6b00cebbf4dcee79b50
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Expresiones
@section Expresiones
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: a90b4f6c28f125d797df443241501a679c900424
+ Translation of GIT committish: 2ca56357edecc917e7d9f09941f0953497e2d52b
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Instrumentos de cuerda con trastes
@section Instrumentos de cuerda con trastes
\storePredefinedDiagram #default-fret-table <c e g c' e'>
#guitar-tuning
- #"x;3-1-(;5-2;5-3;5-4;3-1-1);"
+ #"x;3-1-(;5-2;5-3;5-4;3-1-1-);"
<<
\context ChordNames {
\chordmode {
>>
@end lilypond
+@funindex minimumFret
+
El traste mínimo que usar en el cálculo de cuerdas y trastes para el
contexto FretBoard se puede fijar con la propiedad @code{minimumFret}.
<g-\rightHandFinger #3 >
<c-\rightHandFinger #4 >
<c,-\rightHandFinger #1 e-\rightHandFinger #2
- g-\rightHandFinger #3 c-\rightHandFinger #4 >1
+ g-\rightHandFinger #3 c-\rightHandFinger #4 >1
@end lilypond
Por brevedad, se puede escribir @code{\rightHandFinger} como algo más
@menu
* Indicar la posición y la cejilla::
* Indicar armónicos y notas tapadas::
+* Indicación de acordes de potencia o de quinta vacía::
@end menu
Este ejemplo muestra cómo incluir indicaciones de posición y cejilla
de guitarra:
-@lilypond[quote,ragged-right,fragment,verbatim,relative=0]
+@lilypond[quote,ragged-right,verbatim,relative=0]
\clef "treble_8"
b16 d g b e
\textSpannerDown
\override TextSpanner #'(bound-details left text) = #"XII "
- g16\startTextSpan
- b16 e g e b g\stopTextSpan
+g16\startTextSpan
+b16 e g e b g\stopTextSpan
e16 b g d
@end lilypond
@ref{Estilos de cabezas de nota}.
+@node Indicación de acordes de potencia o de quinta vacía
+@unnumberedsubsubsec Indicación de acordes de potencia o de quinta vacía
+@translationof Indicating power chords
+
+@funindex powerChords
+@funindex \powerChords
+
+@cindex potencia, acordes de
+@cindex acordes de potencia
+@cindex acordes de quinta vacía
+@cindex quinta vacía, acordes de
+@cindex vacía, acordes de quinta
+
+Los acordes de quinta vacía o acordes de potencia (@emph{power
+chords}) y sus símbolos se pueden tipografiar en el modo de acordes o
+como construcciones de acorde normales:
+
+@lilypond[quote,ragged-right,verbatim]
+ChordsAndSymbols = {
+ \chordmode {
+ \powerChords
+ e,,1:1.5
+ a,,1:1.5.8
+ \set minimumFret = #8
+ c,1:1.5
+ f,1:1.5.8
+ }
+ \set minimumFret = #5
+ <a, e>1
+ <g d' g'>1
+}
+\score {
+ <<
+ \new ChordNames {
+ \ChordsAndSymbols
+ }
+ \new Staff {
+ \clef "treble_8"
+ \ChordsAndSymbols
+ }
+ \new TabStaff {
+ \ChordsAndSymbols
+ }
+ >>
+}
+@end lilypond
+
+Los símbolos de acordes de quinta vacía se desactivan automáticamente
+tan pronto como se utiliza cualquiera de los otros modificadores de
+acorde:
+
+@lilypond[quote,ragged-right,verbatim]
+mixedChords = \chordmode {
+ c,1
+ \powerChords
+ b,,1:1.5
+ fis,,1:1.5.8
+ g,,1:m
+}
+\score {
+ <<
+ \new ChordNames {
+ \mixedChords
+ }
+ \new Staff {
+ \clef "treble_8"
+ \mixedChords
+ }
+ \new TabStaff {
+ \mixedChords
+ }
+ >>
+}
+@end lilypond
+
+@seealso
+Glosario musical:
+@rglos{power chord}.
+
+Referencia de la notación:
+@ref{Acordes extendidos y alterados},
+@ref{Impresión de los nombres de acorde}.
+
+Fragmentos de código:
+@rlsr{Fretted strings}.
+
+
@node Banjo
@subsection Banjo
@translationof Banjo
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: cd6d449de0bfc3236b87fbec08389697be8cae81
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Entrada y salida generales
@chapter Entrada y salida generales
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: fe2cae0fa47ec4ec0184e6b3d15572fbcba881cf
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Teclados y otros instrumentos de varios pentagramas
@section Teclados y otros instrumentos de varios pentagramas
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 05321651998ea6b04cd6649f5d4dcdd9b102d7f5
+ Translation of GIT committish: b1bddd0e522d91483a4cd70baaa2e7e229fc786d
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Tablas del manual sobre notación
@appendix Tablas del manual sobre notación
@tab
Tríada menor con séptima mayor
@tab
-@code{maj7.3-}
+@code{m7+}
@tab
@lilypond[line-width=3\cm,noragged-right, notime]
\chordmode {
- c1:maj7.3-
+ c1:m7+
}
@end lilypond
}
@end lilypond
+@item
+Acorde de potencia o de quinta vacía (de dos notas)
+@tab
+Perfect fifth
+@tab
+@code{1.5}
+@tab
+@lilypond[line-width=3\cm,noragged-right, notime]
+\chordmode {
+ \powerChords
+ c1:1.5
+}
+@end lilypond
+
+@item
+Acorde de potencia o de quinta vacía (de tres notas)
+@tab
+Perfect fifth, octave
+@tab
+@code{1.5.8}
+@tab
+@lilypond[line-width=3\cm,noragged-right, notime]
+\chordmode {
+ \powerChords
+ c1:1.5.8
+}
+@end lilypond
@end multitable
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 3dd9b13331489a191d0e901245cc98476e5fcac1
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Notación musical
@chapter Notación musical
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: fe2cae0fa47ec4ec0184e6b3d15572fbcba881cf
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Percusión
@section Percusión
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 8e0330b913e0c7494282e6b00cebbf4dcee79b50
+ Translation of GIT committish: 7a57acf2755504cfb0813ca02662ad43e7456506
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Alturas
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 8e0330b913e0c7494282e6b00cebbf4dcee79b50
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Repeticiones
@section Repeticiones
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Duraciones
@section Duraciones
@c \time 16/1 is used to avoid spurious bar lines
@c and long tracts of empty measures
-@lilypond[fragment,quote,verbatim]
+@lilypond[quote,verbatim,relative=2]
\new Staff {
% These two lines are just to prettify this example
\time 16/1
@lilypond[quote,verbatim,relative=2]
<<
{
- \repeat unfold 8 {a4}
+ \repeat unfold 8 { a4 }
}
{
a4 \skip 2 a |
@code{Staff} y @code{Voice} si no existe ninguno, igual que las notas
y los silencios normales:
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
s1 s s
@end lilypond
@code{\skip} tan sólo desplaza un tiempo musical; no produce ninguna
salida, de ninguna clase.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
% This is valid input, but does nothing
\skip 1 \skip1 \skip 1
@end lilypond
silencio multi-compás debe ser siempre un número entero de compases,
por lo que con frecuencia han de utilizarse puntillos o fracciones:
-@lilypond[quote,fragment,verbatim]
+@lilypond[quote,verbatim,relative=2]
\compressFullBarRests
\time 2/4
R1 | R2 |
redonda o de breve, centrado en el compás, según el tipo de compás
vigente.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
\time 4/4
R1 |
\time 6/4
presentar como un solo compás que contiene un símbolo de silencio
multicompás, con el número de compases impreso encima del compás:
-@lilypond[quote,fragment,verbatim]
+@lilypond[quote,verbatim,relative=2]
% Default behavior
\time 3/4 r2. | R2.*2 |
\time 2/4 R2 |
proporciona la instrucción predefinida @code{\fermataMarkup} para
añadir calderones.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
\compressFullBarRests
\time 3/4
R2.*10^\markup { \italic "ad lib." }
dirigidas hacia el objeto correcto, o se ignorarán. Véase el ejemplo
siguiente.}
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
% This fails, as the wrong object name is specified
\override TextScript #'padding = #5
R1^"wrong"
-% This is correct and works
+% This is the correct object name to be specified
\override MultiMeasureRestText #'padding = #5
R1^"right"
@end lilypond
#'(3 1) % beatStructure
#'() % beamExceptions
\time 4/4
- \repeat unfold 8 c8 |
+ \repeat unfold 8 { c8 } |
}
}
@end lilypond
@lilypond[quote,verbatim]
\score{
\relative c' {
- \repeat unfold 8 c8 |
+ \repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
#'Score % context
#'(4 . 4) % timeSignatureFraction
#'(3 1) % beatStructure
#'((end . (((1 . 8) . (3 1))))) % beamExceptions
\time 4/4
- \repeat unfold 8 c8 |
+ \repeat unfold 8 { c8 } |
\revertTimeSignatureSettings #'Score #'(4 . 4)
\time 4/4
- \repeat unfold 8 c8 |
+ \repeat unfold 8 { c8 } |
}
}
@end lilypond
@lilypond[verbatim,relative=2,quote]
c4 d e d
\cadenzaOn
-c4 c d8 d d f4 g4.
+c4 c d8[ d d] f4 g4.
\cadenzaOff
\bar "|"
d4 e d c
\override Score.BarNumber #'break-visibility = #all-visible
c4 d e d
\cadenzaOn
-c4 c d8 d d f4 g4.
+c4 c d8[ d d] f4 g4.
\cadenzaOff
\bar "|"
d4 e d c
pieza con @code{\cadenzaOn}, pues en caso contrario pueden
ocurrir algunos errores extraños.
-@lilypond[verbatim,relative=2,quote]
-\new Voice \relative c'{
- \cadenzaOn
- c16^"Solo Free Time" d e f g2. \bar "||"
- \cadenzaOff
-}
-@end lilypond
+@example
+\new Voice @{
+ \relative c' @{
+ \cadenzaOn
+ c16[^"Solo Free Time" d e f] g2.
+ \bar "||"
+ \cadenzaOff
+ @}
+@}
+@end example
@node Notación polimétrica
@unnumberedsubsubsec Notación polimétrica
forma manual, pues el escalado de las duraciones afecta a las reglas
de barrado automático.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
\relative c' <<
\new Staff {
\time 3/4
c1 f g c
}
}
-
\new Voice \with {
\consists Pitch_squash_engraver
} \relative c'' {
@lilypond[quote,verbatim,relative=2]
\time 2/4 c8 c c c
-\time 6/8 c c c c8. c16 c8
+\time 6/8 c8 c c c8. c16 c8
@end lilypond
Cuando estas decisiones automáticas no son lo bastante buenas, se
@lilypond[quote,relative=2,verbatim]
\time 5/16
-c8^"beats" c16 c8 |
-\set beatStructure = #'(2 3)
-c8^"(2+3)" c16 c8
-\set beatStructure = #'(3 2)
-c8^"(3+2)" c16 c8
+c16^"default" c c c c |
+\set Timing.beatStructure = #'(2 3)
+c16^"(2+3)" c c c c |
+\set Timing.beatStructure = #'(3 2)
+c16^"(3+2)" c c c c |
@end lilypond
Los cambios en los ajustes de barrado se pueden limitar a contextos
@lilypond[quote,verbatim,relative=2]
\time 7/8
% rhythm 3-1-1-2
-% Context Voice specified -- does not work correctly
+% Change applied to Voice by default -- does not work correctly
% Because of autogenerated voices, all beating will
% be at baseMoment (1 . 8)
\set beatStructure = #'(3 1 1 2)
ajuste de la indicación de compás.
@lilypond[quote,verbatim,relative=2]
-\time 4/4
-\repeat unfold 8 {a8}
-% eliminate beam exception that groups beats 1, 2 and 3, 4
-\set Timing.beamExceptions = #'()
-\repeat unfold 8 {a8}
+\time 6/8
+\repeat unfold 6 { a8 }
+% group (4 + 2)
+\set Timing.beatStructure = #'(4 2)
+\repeat unfold 6 { a8 }
% go back to default behavior
-\time 4/4
-\repeat unfold 8 {a8}
+\time 6/8
+\repeat unfold 6 { a8 }
@end lilypond
@code{[} y @code{]}
@lilypond[quote,relative=1,verbatim]
-r4 r8[ g' a r8] r8 g[ | a] r8
+r4 r8[ g' a r] r g[ | a] r
@end lilypond
@cindex barras manuales, abreviatura de dirección
@lilypond[quote,verbatim,relative=2]
c4 d8[
\grace { e32[ d c d] }
-e8] e8[ e
+e8] e[ e
\grace { f16 }
e8 e]
@end lilypond
@lilypond[quote,verbatim]
pipeSymbol = \bar "||"
{
- c'2 c'2 |
- c'2 c'2
- c'2 | c'2
- c'2 c'2
+ c'2 c' |
+ c'2 c'
+ c'2 | c'
+ c'2 c'
}
@end lilypond
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 8e0330b913e0c7494282e6b00cebbf4dcee79b50
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@c Translation status: post-GDP
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: af3c4ca42e348ec53b5034c50f3eeb435f7db05e
+ Translation of GIT committish: 7477d35aa8f656fa4ed82e186ad97109ee4fe108
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@subsection Formateo de las páginas
@translationof Page formatting
+@funindex \paper
+
Los márgenes, encabezamientos y pies de página y otras variables de
diseño de página se establecen automáticamente de acuerdo con el
tamaño del papel.
que se pueden alterar.
@menu
-* Dimensiones verticales::
+* Dimensiones verticales fijas::
+* Dimensiones verticales flexibles::
* Dimensiones horizontales::
* Otras variables de diseño de página::
@end menu
-@node Dimensiones verticales
-@unnumberedsubsubsec Dimensiones verticales
-@translationof Vertical dimensions
+@node Dimensiones verticales fijas
+@unnumberedsubsubsec Dimensiones verticales fijas
+@translationof Fixed vertical dimensions
-Estas variables se utilizan para establecer las diferentes dimensiones
-verticales de la página:
+@table @code
+@item paper-height
+@funindex paper-height
-@funindex \paper
+Altura de la página. Valor predeterminado: altura del tamaño actual
+del papel. Para ver más detalles, consulte @ref{Tamaño del papel}.
-@table @code
+@item top-margin
+@funindex top-margin
-@item markup-system-spacing
-@funindex markup-system-spacing
+Margen entre el extremo superior de la página y la parte superior del
+área imprimible. Valor predeterminado: @code{5\mm}.
+
+@item bottom-margin
+@funindex bottom-margin
+
+Margen entre el extremo inferior del área imprimible y la parte
+inferior de la página. Valor predeterminado: @code{6\mm}.
+@end table
+
+
+@node Dimensiones verticales flexibles
+@unnumberedsubsubsec Dimensiones verticales flexibles
+@translationof Flexible vertical dimensions
+
+En casi todos los casos es preferible que las distancias verticales
+entre ciertos elementos (como márgenes, títulos, sistemas y las
+distintas partituras) sean flexibles, de manera que se amplíen y
+compriman adecuadamente dependiendo de la situación. Están
+disponibles un cierto número de variables del bloque @code{\paper}
+(relacionadas más abajo) para realizar un ajuste fino del
+comportamiento de estas dimensiones frente a su ampliación o
+compresión.
+
+Observe que las variables de @code{\paper} que se estudian en esta
+sección no controlan el espaciado de los pentagramas que están dentro
+de los sistemas individuales. El espaciado dentro de los sistemas se
+controla por medio de propiedades de grob, con ajustes que se escriben
+normalmente dentro de un bloque @code{\score}, y no dentro del bloque
+@code{\paper}. Véase @ref{Espaciado vertical entre sistemas}.
-Especifica cómo calcular el espacio entre un título (o un elemento de
-marcado del nivel superior) y el sistema que le sigue. Es una lista
-asociativa con cinco componentes:
-@itemize @bullet
-@item @var{space}:
-cantidad de espacio que puede ensancharse entre la línea base de un
-título y el centro del pentagrama que le sigue;
-@item @var{padding}:
-cantidad mínima de espacio vacío que se debe dejar entre un título y
-el pentagrama que le sigue;
-@item @var{stretchability}:
-facilidad con que el espacio ensanchable aumenta cuando se estira una
-página. Si es cero, la distancia al pentagrama siguiente no se
-ensancha en absoluto;
-@item @var{minimum-distance}:
-distancia mínima que poner entre la línea de base de un título y el
-centro del pentagrama que le sigue. Se diferencia de @var{padding} en
-que la altura de un pentagrama no tiene ningún efecto sobre la
-aplicación de @var{minimum-distance} (mientras que la altura del
-pentagrama es crucial para @var{padding}).
+
+@subsubheading Esctructura de las listas-A de espaciado para las variables de @code{\paper}
+
+Cada una de estas variables es una lista-A (lista asociativa) que
+contiene cuatro @emph{claves}:
+
+@itemize
+@item @code{padding} (relleno):
+mínimo espacio vertical vacío necesario entre dos elementos, medido en
+espacios de pentagrama. Se puede pensar como la altura mínima de un
+rectángulo invisible que abarca desde el punto más a la izquierda
+hasta el situado más a la derecha de los elementos combinados.
+
+@item @code{space} (espacio):
+distancia vertical predeterminada, medida en espacios de pentagrama,
+entre los @emph{puntos de referencia} de los dos elementos, cuando no
+resulte ninguna colisión, y no se produzca ninguna ampliación o
+compresión. El punto de referencia de un elemento de marcado (de
+título o del nivel jerárquico superior) es su punto más alto, y el
+punto de referencia de un sistema es la línea central del pentagrama
+más cercano. Los valores de @code{space} menores de @code{padding} o
+de @code{minimum-distance} no son significativos, porque la distancia
+resultante nunca será menor de @code{padding} o de
+@code{minimum-distance}.
+
+@item @code{minimum-distance} (distancia mínima):
+la distancia vertical mínima requerida, medida en espacios de
+pentagrama, entre los puntos de referencia de los dos elementos,
+cuando se produce una compresión. Los valores de
+@code{minimum-distance} menores de @code{padding} no son
+significativos, porque la distancia resultante nunca será menor de
+@code{padding}.
+
+@item @code{stretchability} (ampliabilidad):
+medida sin unidades de la propensión relativa de esta dimensión a
+ampliarse. Si es cero, la distancia no se ampliará (a no ser que
+resultasen colisiones). Si es positiva, la significación del valor de
+ampliabilidad de una dimensión concreta depende solamente de su
+relación con los valores de @code{stretchability} de las otras
+dimensiones. Por ejemplo, si una dimensión tiene el doble de
+@code{stretchability} que otra, se ampliará con el doble de facilidad.
+Los valores deben ser no negativos y finitos. El valor @code{+inf.0}
+desencadena un error de programación y se ignora, pero se puede usar
+@code{1.0e7} para un muelle casi infinitamente ampliable. Si no se
+fija un valor, el valor predeterminado se establece a @code{space}.
+Observe que la propensión de la dimensión a @emph{comprimirse} no se
+puede establecer directamente por el usuario y es igual a
+(@code{space}@tie{}@minus{}@tie{}@code{minimum-distance}).
+@end itemize
+
+Si una página tiene un margen inferior no justificado, la distancia
+resultante es la mayor de:
+
+@itemize
+@item @code{space},
+@item @code{minimum-distance}, y
+@item @code{padding} más la menor distancia necesaria para eliminar las colisiones.
@end itemize
-Por ejemplo, los valores predeterminados son:
+
+@subsubheading Modificación de las listas-A de espaciado para variables de @code{\paper}
+
+Para fijar o modificar una sola clave para una variable de dimensión,
+utilice una declaración anidada:
@example
-markup-system-spacing = #'((space . 2) (padding . 0.5))
+\paper @{
+ system-system-spacing #'space = #10
+@}
@end example
+Esto actualiza la clave especificada sin alterar ninguna de las otras
+claves ya establecidas para la misma variable. Para redefinir
+completamente una variable con una declaración, defínala como una
+lista-A:
-Si una página tiene la parte de abajo no ajustada, @var{space} no se
-ensancha. Concretamente, la distancia que resulta sobre esta página
-es la mayor de
-@itemize @bullet
-@item @var{space},
-@item @var{minimum-distance}, y
-@item @var{padding} más la menor distancia necesaria para eliminar la superposición.
-@end itemize
+@example
+\paper @{
+ system-system-spacing =
+ #'((padding . 1)
+ (space . 12)
+ (minimum-distance . 8)
+ (stretchability . 12))
+@}
+@end example
+
+Sin embargo, observe que cualquier clave que no esté relacionada en la
+definición de una lista-A aún se sobreescribirá; se restablecerán al
+valor cero (excepto @code{stretchability}, que toma el valor de
+@code{space}). Así, las dos declaraciones siguientes son equivalentes:
+
+@example
+system-system-spacing =
+ #'((space . 10))
+
+system-system-spacing =
+ #'((padding . 0)
+ (space . 10)
+ (minimum-distance . 0)
+ (stretchability . 10))
+@end example
+
+Una consecuencia posiblemente no intencionada del ejemplo anterior es
+la eliminación de los valores predeterminados para @code{padding} y
+@code{minimum-distance}. Definir una variable como una lista-A (de
+cualquier tamaño) siempre restablece todos sus valores de clave
+predeterminados. Los ajustes predeterminados para las dimensiones
+flexibles verticales de @code{\paper} están definidas en
+@file{ly/paper-defaults-init.ly}.
+
+
+@subsubheading Variables de dimensión de @code{\paper} verticales flexibles
+
+Los nombres de estas variables siguen el formato
+@code{@var{superior}-@var{inferior}-spacing}, donde
+@code{@var{superior}} e @code{@var{inferior}} son los elementos que
+van a ser espaciados. Cada distancia se mide entre los puntos de
+referencia de los dos elementos: el punto de referencia de un elemento
+de marcado (de título o de nivel superior) es su punto más alto, y el
+punto de referencia de un sistema es la línea central de pentagrama
+más cercano. Observe que en estos nombres de variable, el término
+@q{@code{markup}} se refiere tanto a @emph{elementos de marcado de
+título} (@code{bookTitleMarkup} o @code{scoreTitleMarkup}) como a
+@emph{elementos de marcado del nivel superior} (véase @ref{Estructura
+del archivo}).
+
+@table @code
+@item markup-system-spacing
+@funindex markup-system-spacing
+
+distancia entre un elemento de marcado (de título o del nivel
+superior) y el sistema que le sigue.
@item score-markup-spacing
@funindex score-markup-spacing
-Especifica el espacio entre un sistema y el título (o elemento de
-marcado del nivel superior) que le sigue. Las distancias se miden a
-partir del centro del último pentagrama del sistema hasta la línea de
-base del título que le sigue. Véase @var{markup-system-spacing}.
+distancia entre el último sistema de una partitura y el elemento de
+marcado (de título o del nivel superior) que le sigue.
@item score-system-spacing
@funindex score-system-spacing
-Especifica el espacio entre dos sistemas si están en diferentes
-partituras, pero no hay ningún título entre ellas. Véase
-@var{markup-system-spacing}.
+distancia entre el último sistema de una partitura y el primer sistema
+de la partitura que le sigue, cuando no existe ningún elemento de
+marcado (de título o del nivel superior) entre ellos.
@item system-system-spacing
@funindex system-system-spacing
-Especifica el espacio entre el centro del pentagrama inferior de un
-sistema y el centro del pentagrama superior del sistema siguiente.
-Véase @var{markup-system-spacing}.
+distancia entre dos sistemas dentro de la misma partitura.
@item markup-markup-spacing
@funindex markup-markup-spacing
-Especifica el espacio entre dos títulos (o elementos de marcado del
-nivel superior). Las distancias se miden a partir de la línea de base
-de del primer título hasta la línea de base del segundo. Véase
-@var{markup-system-spacing}.
-
-@item bottom-margin
-@funindex bottom-margin
-
-Margen entre el pie y el final de la página. Valor predeterminado:
-@code{6\mm}.
+distancia entre dos elementos de marcado (de título o del nivel
+superior).
@item last-bottom-spacing
@funindex last-bottom-spacing
-Especifica el espacio desde el centro del último pentagrama (o la
-línea de base del último elemento de marcado del nivel superior) hasta
-el final del área imprimible (es decir, el límite superior del margen
-inferior). Véase @var{markup-system-spacing}.
-
-@item top-markup-spacing
-@funindex top-markup-spacing
-
-Especifica el espacio desde el principio del área imprimible (es
-decir, el límite inferior del margen superior) hasta la línea de base
-del título. Véase @var{markup-system-spacing}.
+distancia desde el último sistema o elemento de marcado del nivel
+superior en una página, hasta la parte inferior de la zona imprimible
+(es decir, el extremo superior del margen inferior).
@item top-system-spacing
@funindex top-system-spacing
-Especifica el espacio desde el principio del área imprimible (es
-decir, el límite inferior del margen superior) hasta el centro del
-primer pentagrama. Sólo tiene efecto si no hay ningún título al
-principio de la página (en cuyo caso se utiliza en su lugar
-@var{top-markup-spacing}). Véase @var{markup-system-spacing}.
+distancia desde la parte superior de la zona imprimible (es decir, el
+extremo inferior del margen superior) hasta el primer sistema de una
+página, cuando no hay ningún elemento de marcado (de título o del
+nivel superior) entre los dos.
-@item paper-height
-@funindex paper-height
-
-Altura de la página. Predeterminado: altura del tamaño actual del
-papel. Para ver más detalles, consulte @ref{Tamaño del papel}.
-
-@item top-margin
-@funindex top-margin
-
-Margen entre el encabezamiento y la parte alta del papel.
-Predeterminado: @code{5\mm}.
+@item top-markup-spacing
+@funindex top-markup-spacing
+distancia desde el extremo superior de la zona imprimible (es decir,
+el extremo inferior del margen superior) hasta el primer elemento de
+marcado (de título o del nivel superior) sobre una página, cuando no
+hay ningún sistema entre los dos.
@end table
Se pueden definir valores del bloque @code{\paper} en Scheme. En tal
caso, @code{mm}, @code{in}, @code{pt}, y @code{cm} son variables que
están definidas en @file{paper-defaults.ly} con valores en milímetros.
-Por ello el valor 2 cm se debe multiplicar en el siguiente ejemplo:
+Por ello el valor @w{@code{2 cm}} se debe multiplicar en el siguiente ejemplo:
@example
\paper @{
@}
@end example
-También podemos definir estos valores en Scheme. En tal caso,
-@code{mm}, @code{in}, @code{pt} y @code{cm} son variables definidas en
-@file{paper@/-defaults@/-init@/.ly} con valores en milímetros. Es la
-razón por la que el valor se debe multiplicar en el ejemplo
-
-@example
-\paper @{
- #(define bottom-margin (* 2 cm))
-@}
-@end example
-
-El encabezamiento y el pie se crean por parte de las funciones
-@code{make-footer} y @code{make-header}, definidas en @code{\paper}.
-Las implementaciones predeterminadas están en
-@file{ly/@/paper@/-defaults@/-init@/.ly} y en
-@file{ly/@/titling@/-init@/.ly}.
-
-La propia disposición de la página se realiza por parte de dos
-funciones del bloque @code{\paper}, @code{page-music-height} y
-@code{page-make-stencil}. La primera dice al algoritmo de saltos de
-línea cuánto espacio se puede emplear en la página, y la segunda crea
-la página en sí dado el sistema que poner en ella.
-
-
@seealso
Referencia de la notación:
@ref{Espaciado vertical entre sistemas}.
@}
@end example
-
Esto hace sencillas de introducir a las instrucciones @code{\break} y
@code{\pageBreak}, pero mezcla la escritura de música con información
que especifica cómo se debe disponer la música sobre la página.
\layout {
\context {
\Lyrics
- % By default, Lyrics are placed close together. Here, we allow them to
+ % By default, Lyrics are placed close together. Here, we allow them to
% be stretched more widely.
\override VerticalAxisGroup
#'inter-loose-line-spacing #'stretchability = #1000
media del pentagrama inferior de un sistema hasta la línea del
pentagrama superior del sistema siguiente, tanto si hay letra debajo
del sistema superior como si no. Consulte @ref{Dimensiones
-verticales} para ver una descripción de cada una de dichas variables.
+verticales flexibles} para ver una descripción de cada una
+de dichas variables.
Aún hay otras dos variables del bloque @code{\paper} que afectan al
espaciado vertical: si @var{ragged-bottom} está ajustado a @code{##t},
@c stretch as the previous line. eTeX uses \lastlinefit to
@c interpolate between both these solutions.
-@c interesting! -FV
-
@example
\layout @{
indent = #0
}
@end lilypond
+
@noindent
Todas las dimensiones de disposición se muestran en espacios de
pentagrama, independientemente de las unidades especificadas en los
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 3dd9b13331489a191d0e901245cc98476e5fcac1
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Notación especializada
@chapter Notación especializada
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 8e0330b913e0c7494282e6b00cebbf4dcee79b50
+ Translation of GIT committish: fbc66ca73dac98eb538791022eeab66e7d5c3c1a
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Notación de los pentagramas
@section Notación de los pentagramas
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: ab33677eec38b683b5a5223bf7aa5f4bed38549c
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Instrumentos de cuerda sin trastes
@section Instrumentos de cuerda sin trastes
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 01097a2a0d059f418cf7803d6c83c41ecc639110
+ Translation of GIT committish: 23e9acfb081e6d194b63fa185bf54b34bb425c59
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
-
+@c \version "2.13.36"
@node Música vocal
@section Música vocal
@translationof References for vocal music
Esta sección indica dónde encontrar los detalles de las cuestiones de
-notación que pueden surgir en cualquie tipo de música vocal.
+notación que pueden surgir en cualquier tipo de música vocal.
@itemize
Glosario musical:
@rglos{ambitus}.
+Fragmentos de código:
+@rlsr{Vocal music}.
@node Introducir la letra
@unnumberedsubsubsec Introducir la letra
@translationof Entering lyrics
@cindex letra
-@funindex \lyricmode
+@cindex lyrics, entering
+@cindex entering lyrics
+@cindex punctuation in lyrics
+@cindex lyrics punctuation
+@cindex spaces in lyrics
+@cindex quotes in lyrics
@cindex puntuación
@cindex espacios, en la letra
@cindex comillas, en la letra
+@funindex \lyricmode
-@c FIXME: this section is to be rewritten.
-Dado que los archivos de entrada de LilyPond son de texto, existe al
-menos un asunto que tener en cuenta al trabajar con música vocal: los
-textos de las canciones se deben interpretar como texto, no como
-notas. Por ejemplo, la entrada@tie{}@code{d} debe interpretarse como
-una sílaba de una sola letra, no como la nota@tie{}Re. Por tanto se
-hace necesario utilizar un modo especial para la letra, ya sea
-explícitamente o mediante el uso de métodos abreviados.
+@c TODO should we explain hyphens here
La letra de las canciones se introduce en un modo de entrada especial
que se inicia mediante la palabra clave @code{\lyricmode}, o bien
-mediante @code{\addlyrics} ó @code{\lyricsto}. En este modo puede
-introducir la letra, con puntuación y acentos, y el carácter @code{d}
-no se analiza como una nota, sino más bien como una sílaba de una sola
-letra. Las sílabas se introducen como las notas, pero con texto en
-lugar de alturas de nota. Por ejemplo,
+mediante @code{\addlyrics} ó @code{\lyricsto}. En este modo especial
+de entrada, el carácter @code{d} no se analiza como una nota, sino más
+bien como una sílaba de una sola letra. Dicho de otra forma, las
+sílabas se introducen como las notas, pero la altura de las notas se
+sustituye por texto.
+Por ejemplo:
+
+@c TODO translate -FV
@example
-\lyricmode @{ Cam-4 pa-4 ni- ta del- lu- gar2 @}
+\lyricmode @{ Three4 blind mice,2 three4 blind mice2 @}
@end example
+
Existen dos métodos principales para especificar la colocación
-horizontal de las sílabas, bien especificando la duración de cada
-sílaba de forma explícita, como en el ejemplo anterior, o bien
-alineando automáticamente la letra a la melodía o a cualquier otra
-voz, usando @code{\addlyrics} o @code{\lyricsto}.
-@c TODO: broken
-@c For more details see @ref{The Lyrics context}.
-
-Una palabra o sílaba de la letra comienza con un carácter alfabético,
-y termina con cualquier espacio o dígito. Los caracteres que siguen
-pueden ser cualesquiera excepto un dígito o un espacio.
-
-Cualquier carácter excepto un dígito o un espacio en blanco se
-considera parte de una sílaba; esto tiene una importante consecuencia,
-y es que una palabra puede terminar en @code{@}}, lo que con
-frecuencia conduce al siguiente error:
+horizontal de las sílabas: mediante la indicación de la duración de
+cada sílaba explícitamente, como en el ejemplo anterior, o dejando que
+la letra se alinee automáticamente con una melodía u otra voz de
+música, utilizando @code{\addlyrics} o @code{\lyricsto}. El primer
+método se describe a continuación bajo el epígrafe @ref{Duración
+manual de las sílabas}. El segundo método se describe en
+@ref{Duración automática de las sílabas}.
+
+Una palabra o sílaba de la letra comienza con un carácter alfabético
+(y algunos otros caracteres, véase más abajo) y termina con un espacio
+o un dígito. El resto de los caracteres dentro de la sílaba pueden
+ser cualesquier caracteres que no sean dígitos o espacios.
+
+A causa de que cualquier carácter que no es un dígito o un espacio se
+considera parte de la sílaba, una palabra es válida incluso si termina
+con @code{@}}, lo que a menudo lleva al siguiente fallo:
@example
-\lyricmode @{ la- la@}
+\lyricmode @{ la la la@}
@end example
En este ejemplo, el símbolo @code{@}} se encuentra incluido dentro de
la sílaba final, por tanto la llave de apertura no se compensa con la
correspondiente llave de cierre y el archivo de entrada probablemente
-no se podrá procesar.
+no se podrá procesar. En vez de ello, las llaves siempre deben ir
+rodeadas por espacios:
+@example
+\lyricmode @{ la la la @}
+@end example
+@cindex sobreescrituras en el modo de letra
@funindex \property dentro de \lyricmode
-@noindent
-De forma similar, un punto que sigue a una secuencia alfabética queda
-incluido dentro de la cadena resultante. Como consecuencia, se deben
-insertar espacios antes y después de los comandos de propiedades:
-@emph{no} escriba
+De forma similar, en el modo de letra, un punto ortográfico se
+incluirá dentro de la secuencia alfabética a la que sigue. Como
+consecuencia, se deben insertar espacios antes y después del punto
+dentro de las instrucciones @code{\override}. @emph{No} escriba lo
+siguiente:
@example
\override Score.LyricText #'font-shape = #'italic
\override Score . LyricText #'font-shape = #'italic
@end example
-Para escribir letra con caracteres de una lengua no inglesa, o que
-tenga caracteres acentuados o especiales (como el símbolo del corazón
-o comillas inclinadas), introduzca simplemente los caracteres
-directamente en el archivo de entrada y guárdelo con una codificación
-utf-8. Consulte @ref{Codificación del texto}, para ver más información.
+Los signos de puntuación, las letras con caracteres acentuados o de
+cualquier idioma distinto del inglés, o los caracteres especiales
+(como el símbolo del corazón o las comillas inclinadas), se pueden
+insertar directamente en el archivo de entrada, siempre que éste se
+grabe con la codificación UTF-8. Para más información, consulte
+@ref{Codificación del texto}.
-@c FIXME: quotes.
-
-@lilypond[quote,ragged-right,fragment,verbatim]
-\relative c' { e4 f e d e f e2 }
-\addlyrics { He said: “Let my peo ple go”. }
+@lilypond[quote,verbatim]
+\relative c'' { d8 c16 a bes8 f e' d c4 }
+\addlyrics { „Schad’ um das schö -- ne grü -- ne Band, }
@end lilypond
-Para utilizar comillas normales en la letra, escriba una barra
-invertida antes de las comillas. Por ejemplo,
+Se pueden usar las comillas normales dentro de la letra, pero deben ir
+precedidas por el carácter de barra invertida y la sílaba en su
+conjunto se debe encerrar en otro par de comillas. Por ejemplo,
-@lilypond[quote,ragged-right,fragment,verbatim]
+@lilypond[quote,verbatim]
\relative c' { \time 3/4 e4 e4. e8 d4 e d c2. }
-\addlyrics { "\"I" am so lone- "ly\"" said she }
+\addlyrics { "\"I" am so lone -- "ly,\"" said she }
@end lilypond
La definición completa del comienzo de una palabra en el modo Lyrics
-(letra) es algo más compleja.
-
-Una palabra en el modo Lyrics comienza por: un carácter alfabético,
-@code{_}, @code{?}, @code{!}, @code{:}, @code{'}, los caracteres de
-control desde @code{^A} hasta @code{^F}, desde @code{^Q} hasta
-@code{^W}, @code{^Y}, @code{^^}, cualquier carácter de 8 bits con
-código ASCII por encima del 127, o una combinación de dos caracteres
-consistente en la combinación de una barra invertida seguida por
-@code{`}, @code{'}, @code{"} ó @code{^}.
+(letra) es algo más compleja. Una palabra en el modo Lyrics comienza
+por: un carácter alfabético, @code{_}, @code{?}, @code{!}, @code{:},
+@code{'}, los caracteres de control desde @code{^A} hasta @code{^F},
+desde @code{^Q} hasta @code{^W}, @code{^Y}, @code{^^}, cualquier
+carácter de 8 bits con código ASCII por encima del 127, o una
+combinación de dos caracteres consistente en la combinación de una
+barra invertida seguida por @code{`}, @code{'}, @code{"} ó @code{^}.
@c " to balance double quotes for not-so-bright context-sensitive editors
-Para definir identificadores que contengan letra, se debe usar la
-función @code{lyricmode}.
-
-@example
-verseOne = \lyricmode @{ Joy to the world the Lord is come @}
-\score @{
- <<
- \new Voice = "one" \relative c'' @{
- \autoBeamOff
- \time 2/4
- c4 b8. a16 g4. f8 e4 d c2
- @}
- \addlyrics @{ \verseOne @}
- >>
-@}
-@end example
-
-
@seealso
+Manual de aprendizaje:
+@rlearning{Canciones}.
+
Referencia de la notación:
-@ref{Tipografías}.
+@ref{Duración automática de las sílabas},
+@ref{Tipografías},
+@ref{Modos de entrada},
+@ref{Duración manual de las sílabas}.
Referencia de funcionamiento interno:
-@rinternals{LyricText},
-@rinternals{LyricSpace}.
+@rinternals{LyricText}.
@node Alineación de la letra a una melodía
@unnumberedsubsubsec Alineación de la letra a una melodía
@translationof Aligning lyrics to a melody
+@cindex letra, alineación a una melodía
+@cindex @code{associatedVoice}
@funindex \lyricmode
@funindex \addlyrics
@funindex \lyricsto
-La alineación del texto con las melodías se puede hacer
-automáticamente, pero si especificamos las duraciones de las sílabas
-también puede hacerse de forma manual. La alineación y el
-tipografiado de la letra se preparan con la ayuda de saltos o
-@i{skips}, guiones y líneas extensoras.
-
-La letra se imprime a través de su interpretación dentro del contexto
-llamado @code{Lyrics}; véase @rinternals{Lyrics} para más información.
+La letra se imprime mediante su interpretación dentro del contexto
+llamado @code{Lyrics}, véase @ref{Explicación de los contextos}.
@example
-\new Lyrics \lyricmode @dots{}
+\new Lyrics \lyricmode @{ @dots{} @}
@end example
-Existen dos métodos principales para especificar la colocación
-horizontal de las sílabas:
+La letra se puede alinear con la melodía de dos maneras principales:
@itemize
+
@item
-alineando automáticamente el texto a una melodía o a otra voz,
-utilizando @code{\addlyrics} o @code{\lyricsto}
+Se puede alinear la letra automáticamente, tomándose las duraciones de
+las sílabas de otra voz de música, o (en circunstancias especiales)
+una melodía asociada, usando @code{\addlyrics}, @code{\lyricsto}, o
+estableciendo el valor de la propiedad @code{associatedVoice}. Para
+ver más detalles, consulte @ref{Duración automática de las sílabas}.
+
+@lilypond[quote,ragged-right,verbatim]
+<<
+ \new Staff <<
+ \time 2/4
+ \new Voice = "one" \relative c'' {
+ \voiceOne
+ c4 b8. a16 g4. r8 a4 ( b ) c2
+ }
+ \new Voice = "two" \relative c' {
+ \voiceTwo
+ s2 s4. f8 e4 d c2
+ }
+ >>
+
+% takes durations and alignment from notes in "one"
+ \new Lyrics \lyricsto "one" {
+ Life is __ _ love, live __ life.
+ }
+
+% takes durations and alignment from notes in "one" initially
+% then switches to "two"
+ \new Lyrics \lyricsto "one" {
+ No more let
+ \set associatedVoice = "two" % must be set one syllable early
+ sins and sor -- rows grow.
+ }
+>>
+@end lilypond
+
+La primera línea de letra muestra la forma normal de introducir la
+letra.
+
+La segunda línea de texto muestra cómo se puede cambiar la voz de la
+que se toman las duraciones para las sílabas. Esto es útil si el
+texto de las distintas estrofas corresponde a las mismas notas de
+formas diferentes, y todas las duraciones están disponibles dentro de
+contextos de voz. Para ver más detalles, consulte @ref{Versos}.
@item
-o especificando la duración de cada sílaba explícitamente, utilizando
-@code{\lyricmode}
+El texto se puede alinear independientemente de la duración de
+cualquier nota si las duraciones de de las sílabas se especifican
+explícitamente, y se escriben con @code{\lyricmode}.
+
+@lilypond[quote,ragged-right,verbatim]
+<<
+ \new Voice = "one" \relative c'' {
+ \time 2/4
+ c4 b8. a16 g4. f8 e4 d c2
+ }
+
+% uses previous explicit duration of 2;
+ \new Lyrics \lyricmode {
+ Joy to the earth!
+ }
+
+% explicit durations, set to a different rhythm
+ \new Lyrics \lyricmode {
+ Life4 is love,2. live4 life.2
+ }
+>>
+@end lilypond
+
+El primer verso no está alineado con las notas porque no se
+especificaron las duraciones, y se utiliza el valor previo de 2
+(blanca) para todas las sílabas.
+
+El segundo verso muestra cómo las palabras se pueden alinear de forma
+independiente de las notas. Esto es útil si el texto de los distintos
+versos se corresponde con las notas de maneras diferentes, pero las
+duraciones requeridas no están disponibles en un contexto de música.
+Para ver más detalles, consulte @ref{Duración manual de las sílabas}.
+Esta técnica también es útil cuando se quiere preparar un diálogo
+encima de la música; para ver ejemplos que lo muestran, consulte
+@ref{Diálogos encima de la música}.
+
+Cuando se escriben de esta forma, las sílabas del texto se alinean por
+la izquierda con las notas, de forma predeterminada, pero se pueden
+centrar sobre las notas de una melodía especificando una voz asociada,
+si existe. Para ver más detalles, consulte @ref{Duración manual de
+las sílabas}.
+
@end itemize
-El contexto @code{Voice} que contiene la melodía con la que se está
-alineando la letra no debe haber @qq{muerto}, o se perderá la letra
-después de ese punto. Esto puede ocurrir si existen períodos en los
-que dicha voz no tiene nada que hacer. Para ver métodos de mantener
-vivos los contextos, consulte @ref{Mantener vivos los contextos}.
+@seealso
+Manual de aprendizaje:
+@rlearning{Alineación de la letra a una melodía}.
+Referencia de funcionamiento interno:
+@rinternals{Lyrics}.
@node Duración automática de las sílabas
@unnumberedsubsubsec Duración automática de las sílabas
@translationof Automatic syllable durations
-@cindex sílabas, duraciones automáticas
+@cindex sílabas, duración automática de las
@cindex letra y melodías
+@cindex associatedVoice
+@funindex \addlyrics
+@funindex \lyricsto
-La letra se puede alinear automáticamente bajo una melodía dada. Esto
-se consigue combinando la melodía y el texto con la expresión
-@code{\lyricsto}
+Las sílabas de la letra se pueden alinear automáticamente con las
+notas de una melodía de tres formas:
-@example
-\new Lyrics \lyricsto @var{nombre} @dots{}
-@end example
+@itemize
-@noindent
-Esto alinea la letra a las notas del contexto de @code{Voice}
-llamado @var{nombre}, que debe existir previamente. Por ello la
-@code{Voice} normalmente se especifica en primer lugar, y después se
-especifica la letra con @code{\lyricsto}. La instrucción
-@code{\lyricsto} cambia automáticamente al modo @code{\lyricmode}, por
-lo que la palabra clave @code{\lyricmode} se puede omitir.
-
-El ejemplo siguiente utiliza comandos diferentes para introducir la
-letra.
+@item
+especificando por su nombre el contexto Voice que contiene la melodía,
+con @code{\lyricsto},
-@lilypond[quote,fragment,ragged-right,verbatim]
-<<
- \new Voice = "one" \relative c'' {
- \autoBeamOff
- \time 2/4
- c4 b8. a16 g4. f8 e4 d c2
- }
+@item
+introduciendo la letra con @code{\addlyrics} y colocándola
+inmediatamente después del contexto de voz que contiene la melodía,
+
+@item
+estableciendo un valor para la propiedad @code{associatedVoice}, la
+alineación de la letra se puede mover a un contexto de voz distinto,
+especificado por su nombre, en cualquier momento musical.
+
+@end itemize
+
+En los tres métodos se pueden trazar guiones de separación entre las
+sílabas de una palabra y líneas extensoras después del final de una
+palabra. Para ver más detalles, véase @ref{Líneas de extensión y
+guiones}.
+
+El contexto @code{Voice} que contiene la melodía con que se está
+alineando la letra, no debe haber @qq{muerto}, o se perderá la letra a
+partir de este punto. Esto puede ocurrir si existen períodos en que
+dicha voz no tiene nada que hacer. Para ver métodos para mantener
+vivos los contextos, consulte @ref{Mantener vivos los contextos}.
+
+@subheading Uso de @code{\lyricsto}
-% not recommended: left-aligned syllables
- \new Lyrics \lyricmode { Joy4 to8. the16 world!4. the8 Lord4 is come.2 }
+@cindex \lyricsto
+@funindex \lyricsto
-% wrong: durations needed
- \new Lyrics \lyricmode { Joy to the earth! the Sa -- viour reigns. }
+Las sílabas de la letra se pueden alinear automáticamente bajo las
+notas de una melodía especificando por su nombre el contexto de voz
+que contiene la melodía, con @code{\lyricsto}:
-%correct
- \new Lyrics \lyricsto "one" { No more let sins and sor -- rows grow. }
+@lilypond[quote,verbatim,relative=2]
+<<
+ \new Voice = "melody" {
+ a4 a a a
+ }
+ \new Lyrics \lyricsto "melody" {
+ These are the words
+ }
>>
@end lilypond
-El segundo verso no está bien alineado porque las duraciones
-no se han especificado. Una solución para eso sería usar @code{\lyricsto}.
+@noindent
+Esto alinea las sílabas con las notas del contexto @code{Voice}
+nombrado, que debe existir previamente. Por tanto, normalmente se
+especifica primero el contexto @code{Voice} seguido del contexto
+@code{Lyrics}. La letra en sí sigue a la instrucción
+@code{\lyricsto}. La instrucción @code{\lyricsto} invoca
+automáticamente el modo de letra, por lo que la palabra clave
+@code{\lyricmode} se puede omitir. De forma predeterminada, la letra
+se coloca por debajo de las notas. Para otras colocaciones, consulte
+@ref{Posicionamiento vertical de la letra}.
+
+
+@subheading Uso de @code{\addlyrics}
@cindex \addlyrics
+@funindex \addlyrics
-El comando @code{\addlyrics} es realmente tan sólo una forma cómoda de
-escribir una estructura de LilyPond más complicada que establece la
-letra.
+La instrucción @code{\addlyrics} es realmente tan sólo una forma
+cómoda de escribir una estructura de LilyPond más complicada que
+establece la letra.
@example
@{ MÚSICA @}
He aquí un ejemplo:
-@lilypond[ragged-right,verbatim,fragment,quote]
-\time 3/4
-\relative c' { c2 e4 g2. }
-\addlyrics { play the game }
+@lilypond[verbatim,quote]
+{
+ \time 3/4
+ \relative c' { c2 e4 g2. }
+ \addlyrics { play the game }
+}
@end lilypond
Se pueden añadir más versos poniendo más secciones @code{\addlyrics}:
@end lilypond
La instrucción @code{\addlyrics} no es capaz de manejar situaciones de
-polifonía. Para estos casos debería usar @code{\lyricsto} y
-@code{\lyricmode}, para ver más detalles consulte @ref{Introducir la
-letra}.
+polifonía. Para estos casos debería usar @code{\lyricsto}.
+@subheading Uso de @code{associatedVoice}
+
+Se puede cambiar la melodía a la que se alinea la letra mediante el
+establecimiento de la propiedad @code{associatedVoice},
+
+@example
+\set associatedVoice = #"lala"
+@end example
+
+@noindent
+
+El valor de la propiedad (aquí: @code{"lala"}) debe ser el nombre de
+un contexto @code{Voice}. Por razones técnicas, la instrucción
+@code{\set} se debe escribir una sílaba antes de aquella a la que se
+quiere aplicar el cambio de voz.
+
+He aquí un ejemplo que muestra su uso:
+
+@lilypond[quote,ragged-right,verbatim]
+<<
+ \new Staff <<
+ \time 2/4
+ \new Voice = "one" \relative c'' {
+ \voiceOne
+ c4 b8. a16 g4. r8 a4 ( b ) c2
+ }
+ \new Voice = "two" \relative c' {
+ \voiceTwo
+ s2 s4. f8 e8 d4. c2
+ }
+ >>
+% takes durations and alignment from notes in "one" initially
+% then switches to "two"
+ \new Lyrics \lyricsto "one" {
+ No more let
+ \set associatedVoice = "two" % must be set one syllable early
+ sins and sor -- rows grow.
+ }
+>>
+@end lilypond
+
+@seealso
+Referencia de la notación:
+@ref{Líneas de extensión y guiones},
+@ref{Mantener vivos los contextos}.
@node Duración manual de las sílabas
@unnumberedsubsubsec Duración manual de las sílabas
@translationof Manual syllable durations
-El texto también se puede introducir sin @code{\addlyrics} ni
-@code{\lyricsto}. En este caso, las sílabas se escriben como notas
-(pero con las alturas sustituidas por texto) y la duración de cada
-sílaba se debe escribir explícitamente. Por ejemplo:
+En ciertas músicas vocales complejas puede ser deseable colocar la
+letra de forma completamente independiente de las notas. En este
+caso, no use @code{\lyricsto} ni @code{\addlyrics} y no establezca un
+valor para @code{associatedVoice}. Las sílabas se escriben como notas
+-- pero sustituyendo los nombres de las notas por texto -- y la
+duración de cada sílaba se escribe explícitamente después de la
+sílaba.
-@example
-play2 the4 game2.
-sink2 or4 swim2.
-@end example
+De forma predeterminada, las sílabas se alinean por la izquierda con
+el momento musical correspondiente. Se pueden trazar líneas
+separadores entre las sílabas, como es usual, pero no se pueden trazar
+líneas extensoras cuando no hay una voz asociada.
-La alineación respecto de una melodía se puede especificar con la
-propiedad @code{associatedVoice},
+He aquí dos ejemplos:
-@example
-\set associatedVoice = #"lala"
-@end example
+@lilypond[relative=1,verbatim,quote]
+<<
+ \new Voice = "melody" {
+ \time 3/4
+ c2 e4 g2 f
+ }
+ \new Lyrics \lyricmode {
+ play1 the4 game4
+ }
+>>
+@end lilypond
-@noindent
-El valor de la propiedad (aquí: @code{"lala"}) ha de ser el nombre de
-un contexto de @code{Voice}. Sin este ajuste, las líneas de
-extensión no se formatearán correctamente.
-Presentamos a continuación un ejemplo que muestra el uso de las
-duraciones manuales de las sílabas del texto:
+@lilypond[quote,verbatim,ragged-right]
+<<
+ \new Staff {
+ \relative c'' {
+ c2 c2
+ d1
+ }
+ }
+ \new Lyrics {
+ \lyricmode {
+ I2 like4. my8 cat!1
+ }
+ }
+ \new Staff {
+ \relative c' {
+ c8 c c c c c c c
+ c8 c c c c c c c
+ }
+ }
+>>
+@end lilypond
+
+Esta técnica es muy útil cuando se escriben diálogos encima de la
+música, véase @ref{Diálogos encima de la música}.
+
+Para centrar las sílabas sobre las notas en sus momentos musicales
+correspondientes, ajuste @code{associatedVoice} al nombre del contexto
+de voz que contiene dichas notas. Cuando está establecido el valor de
+@code{associatedVoice}, se pueden usar tanto dobles guiones como
+dobles barras bajas para trazar correctamente guiones separadores y
+líneas extensoras bajos los melismas.
-@lilypond[relative=1,ragged-right,verbatim,fragment,quote]
-<< \new Voice = "melody" {
+@lilypond[relative=1,verbatim,quote]
+<<
+ \new Voice = "melody" {
\time 3/4
- c2 e4 g2.
- }
- \new Lyrics \lyricmode {
- \set associatedVoice = #"melody"
- play2 the4 game2.
- } >>
+ c2 e4 g f g
+ }
+ \new Lyrics \lyricmode {
+ \set associatedVoice = #"melody"
+ play2 the4 game2. __
+ }
+>>
@end lilypond
+@c TODO see also feature request 707 - show how to do this with manual durations
@seealso
Referencia de la notación:
@cindex espacios en la letra
@cindex comillas en la letra
-Para asignar más de una sílaba a una única nota con espacioes entre
+Para asignar más de una sílaba a una única nota con espacios entre
las sílabas, podemos encerrar la frase entre comillas o utilizar un
carácter de guión bajo @code{_}. De forma alternativa, podemos usar
el símbolo de tilde curva (@code{~}) para obtener una ligadura de
@rinternals{LyricCombineMusic}.
-@c Here come the section which used to be "Melismata"
-@c the new title might be more self-explanatory
-
-
@node Varias notas sobre una sílaba
@unnumberedsubsubsec Varias notas sobre una sílaba
@translationof Multiple notes to one syllable
@cindex melisma
@cindex melismata
@cindex fraseo, en la letra
+@funindex \melisma
+@funindex \melismaEnd
A veces, y sobre todo en la música medieval, varias notas se cantan
sobre una sílaba única; tales vocalizaciones reciben el nombre de
-melismas, o melismata.
-
-@c this method seems to be the simplest; therefore
-@c it might be better to present it first - vv
-
-Podemos definir los melismas completamente dentro de la letra,
-escribiendo un guión bajo @code{_} por cada nota que se quiere añadir
-al melisma.
-
-@c FIXME: clarify: __ is used to crate a lyric extender,
-@c _ is used to add a note to a melisma, so both __ and _ are needed.
-
-@c verbose! --FV
-@c duplicated: TODO fix
-Además, podemos hacer que se imprima una línea extensora para indicar
-el melisma en la partitura, escribiendo un doble guión bajo junto a la
-primera sílaba del melisma. Este ejemplo presenta los tres elementos
-que se usan con este fin (todos ellos circundados por espacios):
-guiones dobles para separar las sílabas de una palabra, guiones bajos
-para añadir notas al melisma, y un doble guión bajo para poner una
-línea extensora.
-
-@c wrong: extender line only on last syllable of a word. Change example
-@lilypond[relative=1,verbatim,fragment,quote]
-{ \set melismaBusyProperties = #'()
- c d( e) f f( e) e e }
-\addlyrics
- { Ky -- _ _ ri __ _ _ _ e }
-@end lilypond
-
-En este caso también podemos tener ligaduras de unión y de expresión
-en la melodía, si establecemos @code{melismaBusyProperties}, como se
-hizo en el ejemplo anterior.
-
-Sin embargo la instrucción @code{\lyricsto} también puede detectar los
-melismas automáticamente: sólo pone una sílaba debajo de un grupo de
-notas unidas mediante ligadura de unión o de expresión. Si quiere
-forzar que un grupo de notas sin ligadura sea un melisma, inserte
-@code{\melisma} después de la primera nota del grupo, y
-@code{\melismaEnd} después de la última, p.ej.:
-
-@lilypond[quote,relative=2,ragged-right,fragment,verbatim]
+melismas, o melismata. La sílaba de un melisma se suele alinear por
+la izquierda con la primera nota del melisma.
+
+Cuando se produce un melisma sobre una sílaba distinta de la última de
+una palabra, dicha sílaba se suele unir a la siguiente con un guión
+separador. Esto se indica en el código de entrada escribiendo un
+doble guión, @code{--}, inmediatamente después de la sílaba.
+
+De forma alternativa, cuando se produce un melisma sobre la última o
+sobre la única sílaba de una palabra, se suele trazar una línea
+extensora desde el final de la sílaba hasta la última nota del
+melisma. Esto se indica en el código de entrada escribiendo una doble
+barra baja o carácter de subrayado, @code{__}, inmediatamente después
+de la palabra.
+
+Existen cinco formas de indicar los melismas:
+
+@itemize
+
+@item
+Se crean melismas automáticamente sobre las notas unidas mediante
+ligadura de unión:
+
+@lilypond[quote,relative=2,verbatim]
+<<
+ \new Voice = "melody" {
+ \time 3/4
+ f4 g2 ~ |
+ g4 e2 ~ |
+ e8
+ }
+ \new Lyrics \lyricsto "melody" {
+ Ky -- ri -- e __
+ }
+>>
+@end lilypond
+
+@item
+Se pueden crear melismas automáticamente a partir de la música
+escribiendo ligaduras de expresión sobre las notas de cada melisma.
+Ésta es la forma usual de escribir la letra:
+
+@lilypond[quote,relative=2,verbatim]
+<<
+ \new Voice = "melody" {
+ \time 3/4
+ f4 g8 ( f e f )
+ e8 ( d e2 )
+ }
+ \new Lyrics \lyricsto "melody" {
+ Ky -- ri -- e __
+ }
+>>
+@end lilypond
+
+@item
+Se considera que las notas forman un melisma cuando se unen
+manualmente mediante barra, siempre y cuando el barrado automático
+esté desactivado. Véase @ref{Establecer el comportamiento de las
+barras automáticas}.
+
+@lilypond[quote,relative=2,verbatim]
<<
- \new Voice = "lala" {
+ \new Voice = "melody" {
+ \time 3/4
+ \autoBeamOff
+ f4 g8[ f e f]
+ e2.
+ }
+ \new Lyrics \lyricsto "melody" {
+ Ky -- ri -- e
+ }
+>>
+@end lilypond
+
+Claramente, esto no es adecuado para los melismas formados por notas
+de duración más larga que la corchea.
+
+@item
+Un grupo de notas sin ligadura de expresión se trata como un melisma
+si están comprendidas entre @code{\melisma} y @code{\melismaEnd}.
+
+@lilypond[quote,relative=2,verbatim]
+<<
+ \new Voice = "melody" {
\time 3/4
f4 g8
\melisma
f e f
\melismaEnd
- e2
+ e2.
}
- \new Lyrics \lyricsto "lala" {
- la di __ daah
+ \new Lyrics \lyricsto "melody" {
+ Ky -- ri -- e
}
>>
@end lilypond
-Además, las notas se consideran un melisma si están unidas manualmente
-mediante una barra, y el barrado automático
-(véase @ref{Establecer el comportamiento de las barras automáticas})
-está desactivado.
+Observe que este método no se puede usar para indicar dos melismas si
+el primero va seguido inmediatamente por el otro.
-@lilypond[quote,relative=2,ragged-right,fragment,verbatim]
+@item
+Se puede definir un melisma enteramente dentro de la letra escribiendo
+un carácter de barra baja suelto, @code{_}, por cada nota adicional
+que se quiere añadir al melisma.
+
+@lilypond[verbatim, quote, relative=2]
<<
- \new Voice = "lala" {
+ \new Voice = "melody" {
\time 3/4
- \autoBeamOff
- f4 g8[ f e f]
- e2
+ f4 g8 f e f
+ e8 d e2
}
- \new Lyrics \lyricsto "lala" {
- la di __ daah
+ \new Lyrics \lyricsto "melody" {
+ Ky -- ri -- _ _ _ e __ _ _
}
>>
@end lilypond
-@c FIXME: this now links to LM -vv
+@end itemize
-@cindex SATB
-@cindex coral, partitura
+Es posible tener ligaduras de unión o de expresión y barras manuales
+en la melodía sin que indiquen melisma. Para hacerlo, ajuste el valor
+de @code{melismaBusyProperties} e indique los melismas mediante barras
+bajas sueltas dentro de la letra, una barra baja por cada nota
+adicional:
-Hay un ejemplo completo de una disposición de partitura SATB
-en @rlearning{Conjuntos vocales}.
+@lilypond[relative=1,verbatim,quote]
+<<
+ \new Voice = "melody" {
+ \time 3/4
+ \set melismaBusyProperties = #'()
+ c4 d ( e )
+ g8 [ f ] f4( e)
+ d e ~ e
+ }
+ \new Lyrics \lyricsto "melody" {
+ Ky -- _ _ _ _ ri -- _ _ e __ _
+ }
+>>
+@end lilypond
+Se pueden usar otros valores para @code{melismaBusyProperties} si
+queremos incluir o excluir las ligaduras de unión, ligaduras de
+expresión o barras de la detección automática de los melismas; véase
+@code{melismaBusyProperties} en el apartado @rinternals{Tunable
+context properties}.
@predefined
-@funindex \melisma
+
+@code{\autoBeamOff},
+@code{\autoBeamOn},
@code{\melisma},
-@funindex \melismaEnd
@code{\melismaEnd}.
-@endpredefined
+@seealso
+Glosario musical:
+@rglos{melisma}.
+
+Manual de aprendizaje:
+@rlearning{Alineación de la letra a una melodía}.
-@c @seealso
-@c @lsr{vocal,lyric@/-combine.ly}.
+Referencia de la notación:
+@ref{Alineación de la letra a una melodía},
+@ref{Duración automática de las sílabas},
+@ref{Establecer el comportamiento de las barras automáticas}.
+Referencia de funcionamiento interno:
+@rinternals{Tunable context properties}.
@knownissues
-Los melismas no se detectan automáticamente, y las líneas de extensión
-se deben insertar a mano.
+No se crean automáticamente líneas extensoras bajo los melismas; se
+deben insertar manualmente con un doble guión bajo.
@node Saltar notas
@unnumberedsubsubsec Saltar notas
en la letra. Por cada @code{\skip}, el texto se retrasa en una nota.
La instrucción @code{\skip} debe ir seguida de una duración válida,
pero esta duración se ignora cuando se usa @code{\skip} en las letras
-cuya duración se toma de las notas de una melodía asociada por medio de
-@code{\addlyrics} o de @code{\lyricsto}.
+cuya duración se toma de las notas de una melodía asociada por medio
+de @code{\addlyrics} o de @code{\lyricsto}.
@lilypond[verbatim,ragged-right,quote]
\relative c' { c c g' }
@cindex extensora, línea
@cindex línea de extensión
+@c TODO cf Multiple notes to one syllable; should this be merged in?
+
@c leave this as samp. -gp
Los melismas se indican mediante una línea horizontal centrada entre
una sílaba y la siguiente. Esta línea recibe el nombre de línea de
se ajustará en función del espacio que exista entre ellas.
En la música grabada de modo muy apretado, se pueden quitar los
-guiones. Se puede controlar si esto ocurre o no, mediante la
-@code{minimum-distance} (distancia mínima entre las dos sílabas) y la
-@code{minimum-length} (umbral por debajo del cual se suprimen los
-guiones).
+guiones. Se puede controlar si esto ocurre o no, mediante las
+propiedades @code{minimum-distance} (distancia mínima entre las dos
+sílabas) y la @code{minimum-length} (umbral por debajo del cual se
+suprimen los guiones) de @code{LyricHyphen}.
@seealso
@subsection Técnicas específicas para la letra
@translationof Techniques specific to lyrics
-@c TODO This whole section is to be reorganized. -vv
+@c TODO this whole section is to be reorganised
@menu
* Trabajar con letra y variables::
+* Posicionamiento vertical de la letra::
+* Colocación horizontal de las sílabas::
* Letra y repeticiones::
* Letras en divisi::
-* Letra independiente de las notas::
-* Espaciado de las sílabas::
-* Colocación de la letra::
@end menu
@unnumberedsubsubsec Trabajar con letra y variables
@translationof Working with lyrics and variables
-@cindex letra y variables
+@cindex lyrics, using variables
-Para definir variables que contengan letra de canciones, se debe
-utilizar la función @code{\lyricmode}. No tenemos que introducir las
-duraciones si escribimos @code{\addlyrics} ó @code{\lyricsto} en el
-momento de invocar nuestra variable.
+Se pueden crear variables que contienen letra, pero la letra se debe
+introducir en el modo de letra:
-@example
-verseOne = \lyricmode @{ Joy to the world the Lord is come @}
-\score @{
- <<
- \new Voice = "one" \relative c'' @{
- \autoBeamOff
- \time 2/4
- c4 b8. a16 g4. f8 e4 d c2
- @}
- \addlyrics @{ \verseOne @}
- >>
-@}
-@end example
+@lilypond[quote,verbatim]
+musicOne = \relative c'' {
+ c4 b8. a16 g4. f8 e4 d c2
+}
+verseOne = \lyricmode {
+ Joy to the world, the Lord is come.
+}
+\score {
+ <<
+ \new Voice = "one" {
+ \time 2/4
+ \musicOne
+ }
+ \new Lyrics \lyricsto "one" {
+ \verseOne
+ }
+ >>
+}
+@end lilypond
-Para disposiciones distintas o de mayor complejidad, la mejor forma es
-configurar primero una jerarquía de pautas y letras, por ejemplo:
+No es necesario escribir las duraciones si la variables se va a
+invocar con @code{\addlyrics} o con @code{\lyricsto}.
-@example
-\new ChoirStaff <<
- \new Voice = "soprano" @{ @emph{music} @}
- \new Lyrics = "sopranoLyrics" @{ s1 @}
- \new Lyrics = "tenorLyrics" @{ s1 @}
- \new Voice = "tenor" @{ @emph{music} @}
->>
-@end example
+Para disposiciones distintas o más complejas, la mejor forma es
+definir en primer lugar las variables de la música y de la letra,
+después preparar una jerarquía de pentagramas y letras, omitiendo la
+letra en sí, y después poner la letra utilizando @code{\context} por
+debajo. Esto asegura que las voces referenciadas por @code{\lyricsto}
+siempre han sido definidas previamente. Por ejemplo:
+
+@lilypond[quote,verbatim]
+sopranoMusic = \relative c'' { c4 c c c }
+contraltoMusic = \relative c'' { a4 a a a }
+sopranoWords = \lyricmode { Sop -- ra -- no words }
+contraltoWords = \lyricmode { Con -- tral -- to words }
+
+\score {
+ \new ChoirStaff <<
+ \new Staff {
+ \new Voice = "sopranos" {
+ \sopranoMusic
+ }
+ }
+ \new Lyrics = "sopranos"
+ \new Lyrics = "contraltos"
+ \new Staff {
+ \new Voice = "contraltos" {
+ \contraltoMusic
+ }
+ }
+ \context Lyrics = "sopranos" {
+ \lyricsto "sopranos" {
+ \sopranoWords
+ }
+ }
+ \context Lyrics = "contraltos" {
+ \lyricsto "contraltos" {
+ \contraltoWords
+ }
+ }
+ >>
+}
+@end lilypond
+
+
+@seealso
+Referencia de la notación:
+@ref{Posicionamiento vertical de la letra}.
+
+Referencia de funcionamiento interno:
+@rinternals{LyricCombineMusic},
+@rinternals{Lyrics}.
+
+
+@node Posicionamiento vertical de la letra
+@unnumberedsubsubsec Posicionamiento vertical de la letra
+@translationof Placing lyrics vertically
+
+@cindex posicionamiento de la letra
+@cindex letra, posicionamiento
+
+Dependiendo del tipo de música, la letra puede colocarse sobre el
+pentagrama, debajo del pentagrama, o entre dos pentagramas. Lo más
+fácil es situar la letra debajo de la pauta asociada, y se puede
+conseguir simplemente definiendo el contexto Lyrics por debajo del
+contexto Staff:
+
+@lilypond[quote,verbatim]
+\score {
+ <<
+ \new Staff {
+ \new Voice = "melody" {
+ \relative c'' { c4 c c c }
+ }
+ }
+ \new Lyrics {
+ \lyricsto "melody" {
+ Here are the words
+ }
+ }
+ >>
+}
+@end lilypond
+
+Se puede colocar la letra sobre el pentagrama usando uno de los dos
+métodos disponibles: el más sencillo es usar la misma sintaxis que se
+ha visto más arriba y especificar explícitamente la posición de la
+letra:
+
+@lilypond[quote,verbatim]
+\score {
+ <<
+ \new Staff = "staff" {
+ \new Voice = "melody" {
+ \relative c'' { c4 c c c }
+ }
+ }
+ \new Lyrics \with { alignAboveContext = "staff" } {
+ \lyricsto "melody" {
+ Here are the words
+ }
+ }
+ >>
+}
+@end lilypond
+
+Como alternativa, se puede usar un proceso en dos pasos. En primer
+lugar se declara el contexto Lyrics (sin ningún contenido) antes de
+los contextos Staff y Voice, y después se escribe la instrucción
+@code{\lyricsto} después de la declaración de Voice a que hace
+referencia, usando @code{\context}, como se ve a continuación:
+
+@lilypond[quote,verbatim]
+\score {
+ <<
+ \new Lyrics = "lyrics"
+ \new Staff {
+ \new Voice = "melody" {
+ \relative c'' { c4 c c c }
+ }
+ }
+ \context Lyrics = "lyrics" {
+ \lyricsto "melody" {
+ Here are the words
+ }
+ }
+ >>
+}
+@end lilypond
+
+Cuando hay dos voces sobre pentagramas separados, la letra se puede
+colocar entre ellos usando cualquiera de estos métodos. He aquí un
+ejemplo del segundo método:
+
+@lilypond[quote,verbatim]
+\score {
+ \new ChoirStaff <<
+ \new Staff {
+ \new Voice = "sopranos" {
+ \relative c'' { c4 c c c }
+ }
+ }
+ \new Lyrics = "sopranos"
+ \new Lyrics = "contraltos"
+ \new Staff {
+ \new Voice = "contraltos" {
+ \relative c'' { a4 a a a }
+ }
+ }
+ \context Lyrics = "sopranos" {
+ \lyricsto "sopranos" {
+ Sop -- ra -- no words
+ }
+ }
+ \context Lyrics = "contraltos" {
+ \lyricsto "contraltos" {
+ Con -- tral -- to words
+ }
+ }
+ >>
+}
+@end lilypond
+
+Es posible generar otras combinaciones de letra y pautas mediante la
+elaboración de los ejemplos anteriores, o examinando las plantillas de
+@rlearning{Conjuntos vocales} del manual de aprendizaje.
+
+@seealso
+Manual de aprendizaje:
+@rlearning{Conjuntos vocales}.
+
+Referencia de la notación:
+@ref{Alinear los contextos},
+@ref{Crear contextos}.
+
+@node Colocación horizontal de las sílabas
+@unnumberedsubsubsec Colocación horizontal de las sílabas
+@translationof Placing syllables horizontally
+
+@cindex espaciado de la letra
+@cindex letra, aumentar la separación
+
+Para aumentar la separación entre las líneas de texto, establezca la
+propiedad @code{minimum-distance} de @code{LyricSpace}.
+
+@lilypond[relative,verbatim,fragment,quote,ragged-right]
+{
+ c c c c
+ \override Lyrics.LyricSpace #'minimum-distance = #1.0
+ c c c c
+}
+\addlyrics {
+ longtext longtext longtext longtext
+ longtext longtext longtext longtext
+}
+@end lilypond
@noindent
-y después combinar las melodías adecuadas con las líneas de texto:
+Para efectuar este cambio en todas las letras de la partitura, ajuste
+la propiedad dentro del bloque @code{\layout}.
+
+@lilypond[verbatim,quote,ragged-right]
+\score {
+ \relative c' {
+ c c c c
+ c c c c
+ }
+ \addlyrics {
+ longtext longtext longtext longtext
+ longtext longtext longtext longtext
+ }
+ \layout {
+ \context {
+ \Lyrics
+ \override LyricSpace #'minimum-distance = #1.0
+ }
+ }
+}
+@end lilypond
+
+@snippets
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{lyrics-alignment.ly}
+
+@c TODO: move to LSR -vv
+
+La comprobación necesaria para asegurar que las inscripciones de texto
+están dentro de los márgenes es una tarea relativamente costosa en
+términos computacionales. Para acelerar el procesado, LilyPond no
+realiza estos cálculos de forma predeterminada; para activarlo, use
@example
-\context Lyrics = sopranoLyrics \lyricsto "soprano"
-@emph{the lyrics}
+\override Score.PaperColumn #'keep-inside-line = ##t
@end example
-@noindent
-El código final de entrada sería algo parecido a esto:
+Para hacer que el texto evite también las líneas divisorias, use
@example
-<<\new ChoirStaff << @emph{setup the music} >>
- \lyricsto "soprano" @emph{etc}
- \lyricsto "alto" @emph{etc}
-@emph{etc}
->>
+\layout @{
+ \context @{
+ \Lyrics
+ \consists "Bar_engraver"
+ \consists "Separating_line_group_engraver"
+ \override BarLine #'transparent = ##t
+ @}
+@}
@end example
-@ignore
-@c TODO
-http://code.google.com/p/lilypond/issues/detail?id=329
-The problem cannot be reproduced.
-The following has no sense, because the issue seems to be fixed.
-A comment is in tracker waiting for response ---FV
-
-
-Be careful when defining a variable with lyrics that creates a new
-context, for example, using the deprecated @code{\lyrics} command. See
-the next erroneous example:
+@c TODO Create and add lsr example of lyricMelismaAlignment
+@c It's used like this to center-align all lyric syllables,
+@c even when notes are tied. -td
-@example
-words = \lyrics{ %warning: this creates a new context
- one two
+@ignore
+\layout
+{
+ \context { \Score lyricMelismaAlignment = #0 }
}
-<<
- \new Voice = "sop" { c1 }
- \new Lyrics \lyricsto "sop" { \words }
- \new Voice = "alt" { c2 c }
- \new Lyrics \lyricsto "alt" { \words }
->>
-@end example
-
-the problem is that \lyricsto will try to connect the "sop" melody with the context
-created by "\new Lyrics".
-
-Then \lyrics in \words creates another context, and the original "\new Lyrics" one
-remains empty.
-
@end ignore
-@seealso
-@c TODO: document \new Staff << Voice \lyricsto >> bug
-Referencia de funcionamiento interno:
-@rinternals{LyricCombineMusic},
-@rinternals{Lyrics}.
-
-
@node Letra y repeticiones
@unnumberedsubsubsec Letra y repeticiones
@translationof Lyrics and repeats
}
@end lilypond
-Si la sección repetida tiene distintos textos y está desplegada, tan
-sólo escriba el texto completo:
+Si la sección repetida ha de desplegarse y tiene distinta letra,
+escriba simplemente todo el texto:
@lilypond[verbatim,quote,ragged-right]
\score {
fácil de saltar varias notas es utilizar @code{\repeat unfold} con una
instrucción @code{\skip} en su interior.
-Observación: no utilice un guión bajo, @code{_}, para saltar notas,
-pues esto indica un melisma y hará que la sílaba precedente aparezca
-alineada por la izquierda.
+Observación: no utilice un guión bajo, @code{_}, para saltar notas en
+este caso concreto, pues esto indica un melisma y hará que la sílaba
+precedente aparezca alineada por la izquierda.
@warning{La instrucción @code{@bs{}skip} debe ir seguida de un número,
pero este número se ignora en aquellas letras cuya duración
@unnumberedsubsubsec Letras en divisi
@translationof Divisi lyrics
-Podemos imprimir letras alternativas (o en divisi) nombrando los
-contextos de voz y adosando la letra a dichos contextos específicos.
-
-@lilypond[verbatim,ragged-right,quote]
-\score{ <<
- \new Voice = "melody" {
- \relative c' {
- c4
- <<
- { \voiceOne c8 e }
- \new Voice = "splitpart" { \voiceTwo c4 }
- >>
- \oneVoice c4 c | c
- }
- }
- \new Lyrics \lyricsto "melody" { we shall not o- ver- come }
- \new Lyrics \lyricsto "splitpart" { will }
->> }
-@end lilypond
-
-
-Podemos usar este truco para presentar las distintas letras de una
-sección que se repite.
-
-@lilypond[verbatim,ragged-right,quote]
-\score{ <<
- \new Voice = "melody" \relative c' {
- c2 e | g e | c1 |
- \new Voice = "verse" \repeat volta 2 {c4 d e f | g1 | }
- a2 b | c1}
- \new Lyrics = "mainlyrics" \lyricsto melody \lyricmode {
- do mi sol mi do
- la si do }
- \context Lyrics = "mainlyrics" \lyricsto verse \lyricmode {
- do re mi fa sol }
- \new Lyrics = "repeatlyrics" \lyricsto verse \lyricmode {
- dodo rere mimi fafa solsol }
->>
-}
-@end lilypond
-
-
-@node Letra independiente de las notas
-@unnumberedsubsubsec Letra independiente de las notas
-@translationof Lyrics independent of notes
-
-En cierta música vocal compleja, podría ser deseable colocar la letra
-de forma totalmente independiente de las notas. La música que se
-define dentro de @code{lyricrhythm} desaparece dentro del contexto
-@code{Devnull}, pero los valores rítmicos aún se pueden utilizar para
-colocar la letra.
-
-@lilypond[quote,verbatim,ragged-right]
-voice = {
- c''2
- \tag #'music { c''2 }
- \tag #'lyricrhythm { c''4. c''8 }
- d''1
-}
-
-lyr = \lyricmode { I like my cat! }
-
-<<
- \new Staff \keepWithTag #'music \voice
- \new Devnull="nowhere" \keepWithTag #'lyricrhythm \voice
- \new Lyrics \lyricsto "nowhere" \lyr
- \new Staff { c'8 c' c' c' c' c' c' c'
- c' c' c' c' c' c' c' c' }
->>
-@end lilypond
-
-Sólo se recomienda este método si la música que está en el contexto
-@code{Devnull} no contiene melismas. Los melismas están definidos por
-el contexto @code{Voice}. La conexión de la letra a un contexto
-@code{Devnull} hace que se pierdan los enlaces entre la voz y las
-sílabas, y también la información relativa a los melismas. Por tanto,
-si enlazamos la letra a un contexto @code{Devnull}, los melismas
-implícitos se ignoran.
-
-@c Conclusion: do not use devnull for lyrics -FV
-
-@c this clarifies http://code.google.com/p/lilypond/issues/detail?id=248
-
-@node Espaciado de las sílabas
-@unnumberedsubsubsec Espaciado de las sílabas
-@translationof Spacing out syllables
-
-@cindex Espaciado de la letra
-@cindex Letra, aumentar el espaciado
-
-Para aumentar el espaciado entre las sílabas de la letra, establezca
-la propiedad @code{minimum-distance} de @code{LyricSpace}.
-
-@lilypond[relative,verbatim,fragment,quote,ragged-right]
-{
- c c c c
- \override Lyrics.LyricSpace #'minimum-distance = #1.0
- c c c c
-}
-\addlyrics {
- longtext longtext longtext longtext
- longtext longtext longtext longtext
-}
-@end lilypond
-
-@noindent
-Para que este cambio sea válido para la letra de la partitura
-completa, establezca la propiedad dentro del @q{layout} o disposición.
-
-@lilypond[verbatim,quote,ragged-right]
-\score {
- \relative c' {
- c c c c
- c c c c
- }
- \addlyrics {
- longtext longtext longtext longtext
- longtext longtext longtext longtext
- }
- \layout {
- \context {
- \Lyrics
- \override LyricSpace #'minimum-distance = #1.0
- }
- }
-}
-@end lilypond
-
-@c @snippets
-@c This snippet has been renamed to "lyrics-alignment.ly"
-@c update as soon as lsr/is updated -vv
-@c @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-@c {lyrics-alignment.ly}
-
-@c TODO: move to LSR -vv
-@snippets
-
-La comprobación que asegura que las inscripciones de texto y la letra
-de las canciones se mantienen dentro de los márgenes, es una tarea
-computacional relativamente costosa. Para acelerar el procesado,
-LilyPond no hace tales cálculos de forma predeterminada; para
-habilitarlos, utilice
-
-@example
-\override Score.PaperColumn #'keep-inside-line = ##t
-@end example
-
-Para hacer también que las sílabas de la letra eviten las barras de compás, use
-
-@example
-\layout @{
- \context @{
- \Lyrics
- \consists "Bar_engraver"
- \consists "Separating_line_group_engraver"
- \override BarLine #'transparent = ##t
- @}
-@}
-@end example
-
-@c TODO Create and add lsr example of lyricMelismaAlignment
-@c It's used like this to center-align all lyric syllables,
-@c even when notes are tied. -td
-
-@ignore
-\layout
-{
- \context { \Score lyricMelismaAlignment = #0 }
-}
-@end ignore
-
-
-@node Colocación de la letra
-@unnumberedsubsubsec Colocación de la letra
-@translationof Placement of lyrics
-
-@cindex colocación de la letra
-@cindex letra, posicionar
-
-@c TODO Add text from -user
+@cindex dividida, letra
+@cindex letra dividida
-Las letras se sitúan sobre el pentagrama, debajo del pentagrama o
-entre pentagramas, dependiendo del tipo de música. Para situar la
-letra debajo de la pauta asociada, tan sólo tenemos que definir el
-contexto Lyrics debajo del contexto Staff:
+Cuando solamente difieren las palabras y las duraciones de las dos
+partes mientras que la altura de las notas es la misma, el método
+adecuado puede ser la desactivación temporal de la detección
+automática de los melismas e indicar el melisma dentro de la letra:
@lilypond[quote,verbatim]
\score {
<<
- \new Staff {
- \new Voice = "melody" {
- \relative c'' { c4 c c c }
- }
- }
- \new Lyrics {
- \lyricsto "melody" {
- Here are the words
+ \new Voice = "melody" {
+ \relative c' {
+ \set melismaBusyProperties = #'()
+ \slurDown
+ \slurDashed
+ e4 e8 ( e ) c4 c |
+ \unset melismaBusyProperties
+ c
}
}
- >>
-}
-@end lilypond
-
-Para posicionar la letra por encima del pentagrama, coloque la
-declaración del contexto Lyrics entres de los contextos Staff y Voice,
-pero la instrucción @code{\lyricsto} debe venir después de la
-declaración de Voice a la que hace referencia, de esta forma:
-
-@lilypond[quote,verbatim]
-\score {
- <<
- \new Lyrics = "lyrics"
- \new Staff {
- \new Voice = "melody" {
- \relative c'' { c4 c c c }
- }
+ \new Lyrics \lyricsto "melody" {
+ They shall not o -- ver -- come
}
- \context Lyrics = "lyrics" {
- \lyricsto "melody" {
- Here are the words
- }
+ \new Lyrics \lyricsto "melody" {
+ We will _
}
>>
}
@end lilypond
-De manera alternativa, se puede especificar la posición de la letra
-explícitamente:
+Cuando difieren tanto la música como las palabras, puede ser mejor
+imprimir la música y la letra que difieren mediante el nombrado de
+contextos de voz y adjuntando la letra a estos contextos específicos:
-@lilypond[quote,verbatim]
+@lilypond[verbatim,ragged-right,quote]
\score {
<<
- \new Staff = "staff" {
- \new Voice = "melody" {
- \relative c'' { c4 c c c }
- }
- }
- \new Lyrics \with { alignAboveContext = "staff" } {
- \lyricsto "melody" {
- Here are the words
- }
- }
- >>
-}
-@end lilypond
-
-Cuando hay dos voces en pentagramas separados, la letra se puede
-situar entre los pentagramas utilizando uno cualquiera de estos
-métodos. He aquí un ejemplo del primer método:
-
-@lilypond[quote,verbatim]
-\score {
- \new ChoirStaff <<
- \new Staff {
- \new Voice = "sopranos" {
- \relative c'' { c4 c c c }
- }
- }
- \new Lyrics = "sopranos"
- \new Lyrics = "contraltos"
- \new Staff {
- \new Voice = "contraltos" {
- \relative c'' { a4 a a a }
+ \new Voice = "melody" {
+ \relative c' {
+ <<
+ {
+ \voiceOne
+ e4 e8 e
+ }
+ \new Voice = "splitpart" {
+ \voiceTwo
+ c4 c
+ }
+ >>
+ \oneVoice
+ c4 c |
+ c
}
}
- \context Lyrics = "sopranos" {
- \lyricsto "sopranos" {
- Sop -- ra -- no words
- }
+ \new Lyrics \lyricsto "melody" {
+ They shall not o -- ver -- come
}
- \context Lyrics = "contraltos" {
- \lyricsto "contraltos" {
- Con -- tral -- to words
- }
+ \new Lyrics \lyricsto "splitpart" {
+ We will
}
>>
}
@end lilypond
-Se pueden generar otras combinaciones de letras y pentagramas
-elaborando algo más estos ejemplos, o examinando las plantillas SATB
-que están en el manual de aprendizaje.
-
-@seealso
-Manual de aprendizaje:
-@rlearning{Conjuntos vocales}.
-
-Referencia de la notación:
-@ref{Alinear los contextos},
-@ref{Crear contextos}.
@node Versos
@subsection Versos
>>
@end lilypond
-
@subsubheading Cambio a una melodía alternativa
-Son posibles variaciones más complejas en la disposición del texto.
-Se puede cambiar la melodía para una línea de la letra durante el
-texto. Esto se hace estableciendo la propiedad
-@code{associatedVoice}. En el ejemplo
+@cindex associatedVoice
+@cindex melodía alternativa, cambio a una
-@lilypond[ragged-right,quote]
+Son posibles variaciones más complejas en la coordinación de la letra
+y la música. La melodía a la que se está alineando la letra puede
+cambiarse desde dentro de la letra mediante el establecimiento de la
+propiedad @code{associatedVoice}:
+
+@lilypond[verbatim,quote]
<<
\relative c' \new Voice = "lahlah" {
\set Staff.autoBeaming = ##f
\new Lyrics \lyricsto "lahlah" {
% Tricky: need to set associatedVoice
% one syllable too soon!
- \set associatedVoice = alternative % applies to "ran"
+ \set associatedVoice = "alternative" % applies to "ran"
Ty --
ran --
no --
- \set associatedVoice = lahlah % applies to "rus"
+ \set associatedVoice = "lahlah" % applies to "rus"
sau -- rus Rex
} >>
@end lilypond
@noindent
-el texto del primer verso se aplica a una melodía llamada @q{lahlah},
+El texto del primer verso se fija a la melodía llamada @q{lahlah} de
+la forma usual, pero el segundo verso se fija inicialmente al contexto
+@code{lahlah} y después se cambia a la melodía @code{alternative} para
+las sílabas desde @q{ran} hasta @q{sau} mediante las líneas:
@example
-\new Lyrics \lyricsto "lahlah" @{
- Ju -- ras -- sic Park
-@}
-@end example
-
-
-El segundo verso se aplica en principio al contexto de @code{lahlah},
-pero para la sílaba @q{ran}, cambia a una melodía diferente. Esto se
-consigue con
-@example
-\set associatedVoice = alternative
+\set associatedVoice = "alternative" % se aplica a "ran"
+Ty --
+ran --
+no --
+\set associatedVoice = "lahlah" % se aplica a "rus"
+sau -- rus Rex
@end example
@noindent
Aquí, @code{alternative} es el nombre del contexto de @code{Voice} que
contiene el tresillo.
-@c FIXME: make this easier to understand -vv
-La instrucción debe ir una sílaba antes de la cuenta, antes de @q{Ty}
-en este caso. En otras palabras, el cambio en la voz asociada
-associatedVoice se produce un paso más tarde de lo que se espera.
-Esto es así por razones técnicas, y no es un fallo del programa.
-
-@example
-\new Lyrics \lyricsto "lahlah" @{
- \set associatedVoice = alternative % se aplica al "ran"
- Ty --
- ran --
- no --
- \set associatedVoice = lahlah % se aplica al "rus"
- sau -- rus Rex
-@}
-@end example
+Observe la posición de la instrucción @code{\set associatedVoice}:
+parece estar situada una sílaba antes de lo normal, pero está bien
+así.
-@noindent
-La disposición se vuelve a cambiar a la situación inicial mediante la
-asignación de @code{lahlah} a @code{associatedVoice}.
+@warning{La instrucción @code{\set associatedVoice} se debe escribir
+una sílaba @emph{antes} de aquella en la que queremos que se produzca
+el cambio a la voz nueva. Dicho de otra forma, el cambio de la voz
+asociada se produce una sílaba más tarde de lo esperado. Esto es por
+razones técnicas, y no es un fallo.}
@node Imprimir los versos al final
común para música vocal}.
@item
-Para posicionar la letra, véase @ref{Colocación de la letra}.
+Para colocar la letra, véase @ref{Posicionamiento vertical de la
+letra}.
@item
Para escribir versos véase @ref{Versos}.
@item
Las canciones se imprimen frecuentemente con los acordes indicados
mediante cifrado americano (los nombres de los acordes en letras
-mayúsculas) sobre las pautas. Esto se decribe en @ref{Imprimir los
+mayúsculas) sobre las pautas. Esto se describe en @ref{Imprimir los
acordes}.
@item
Para imprimir diagramas de posiciones de los acordes para
-elacompañamiento de guitarra o para otros instrumentos con trastes en
+el acompañamiento de guitarra o para otros instrumentos con trastes en
el mástil, consulte @qq{Marcados de diagramas de posiciones de acorde}
dentro de @ref{Notación común para cuerdas con trastes}.
@ref{Imprimir los acordes},
@ref{Impresión de los pentagramas},
@ref{Teclados y otros instrumentos de varios pentagramas},
-@ref{Colocación de la letra},
+@ref{Posicionamiento vertical de la letra},
@ref{Versos}.
+Fragmentos de código:
+@rlsr{Vocal music}.
+
@node Hojas guía de acordes
@unnumberedsubsubsec Hojas guía de acordes
@translationof Lead sheets
Se pueden imprimir hojas guía de acordes combinando partes vocales y
el @q{modo de acordes}; esta sintaxis se explica en
-
@ref{Notación de acordes}.
@snippets
@ref{Cabezas de notas con formas diversas},
@ref{Polifonía en un solo pentagrama}.
+Fragmentos de código:
+@rlsr{Vocal music}.
+
Referencia de funcionamiento interno:
@rinternals{ChoirStaff},
@rinternals{Lyrics},
@itemize
@item
-Se puede modificar el tamañod global de pentagrama para alterar el
+Se puede modificar el tamaño global de pentagrama para alterar el
tamaño general de los elementos de la partitura. Véase
@ref{Establecer el tamaño del pentagrama}.
páginas}.
@item
-Si el número de sistemas po página cambia de uno a dos, es costumbre
+Si el número de sistemas por página cambia de uno a dos, es costumbre
indicarlo mediante una marca separadora de sistemas entre los dos
sistemas. Véase @ref{Separación de sistemas}.
{using-arpeggiobracket-to-make-divisi-more-visible.ly}
@seealso
-Referncia de la notación:
+Referencia de la notación:
@ref{Expresiones como líneas}.
@item
Un @emph{Libreto} que contiene los diálogos completos que normalmente
hay en los musicales, junto a la letra de las partes cantadas. Suelen
-incluirse también las indicacioens de escena. Se puede utilizar
+incluirse también las indicaciones de escena. Se puede utilizar
LilyPond para tipografiar libretos, pero dado que no contienen música,
puede ser preferible algún método alternativo.
@end itemize
En la sección de referencias que aparece a continuación están
-relacionadas las secciones de la documentación de lilyPond que se
+relacionadas las secciones de la documentación de LilyPond que se
ocupan de los temas necesarios para crear partituras en los estilos
habituales de la ópera y los musicales. Después aparecen secciones
que cubren las técnicas peculiares de la tipografía musical de las
@menu
* Referencias para ópera y musicales::
-* Nombres de los perasonajes::
+* Nombres de los personajes::
* Guías musicales::
* Música hablada::
* Diálogos encima de la música::
@ref{Escritura de las particellas},
@ref{Escritura del texto}.
+Snippets:
+@rlsr{Vocal music}.
+
-@node Nombres de los perasonajes
-@unnumberedsubsubsec Nombres de los perasonajes
+@node Nombres de los personajes
+@unnumberedsubsubsec Nombres de los personajes
@translationof Character names
@cindex personajes, nombres
@cindex nombres de personajes
-Se suene mostrar los nombres de los personajes a la izquierda del
-pentagrama cuando éste está dedicado a dicho personaje solamente. Se
-puede utilizar la propiedad del nombre del instrumento para este
-propósito.
+Se suelen mostrar los nombres de los personajes a la izquierda del
+pentagrama cuando éste está dedicado a dicho personaje solamente:
@lilypond[quote,verbatim,ragged-right]
\score {
<<
\new Staff {
- \set Staff.instrumentName = #"Kaspar"
- \set Staff.shortInstrumentName = #"Kas"
+ \set Staff.vocalName = \markup \smallCaps Kaspar
+ \set Staff.shortVocalName = \markup \smallCaps Kas.
\relative c' {
\clef "G_8"
c4 c c c
}
}
\new Staff {
- \set Staff.instrumentName = #"Melchior"
- \set Staff.shortInstrumentName = #"Mel"
+ \set Staff.vocalName = \markup \smallCaps Melchior
+ \set Staff.shortVocalName = \markup \smallCaps Mel
\clef "bass"
\relative c' {
a4 a a a
Cuando dos o más personajes comparten un pentagrama, el nombre del
personaje se suele imprimir encima del pentagrama al principio de cada
-sección correspondiente a dicho personaje. Eesto se puede hacer con
+sección correspondiente a dicho personaje. Esto se puede hacer con
elementos de marcado. Con frecuencia se usa un tipo de letra especial
para este propósito.
director.
El mecanismo básico para insertar guías se explica de forma exhaustiva
-en el texto principal, véase @ref{Citar otras voces} yand
-@ref{Formateo de las notas guía}. Pero cuando se deben insertar
-muchas guías, por ejemplo, como ayuda para el director en una
-partitura vocal, el nombre del instrumento se debe colocar
-cuidadosamente justo antes del comienzo de las notas citadas, y cerca
-de ellas. El siguiente ejemplo muestra cómo se hace esto. Observe
-que el nombre del grob para sobreescribir la propiedad del instrumento
-citado es @code{InstrumentSwitch}.
+en el texto principal, véase @ref{Citar otras voces} y @ref{Formateo
+de las notas guía}. Pero cuando se deben insertar muchas guías, por
+ejemplo, como ayuda para el director en una partitura vocal, el nombre
+del instrumento se debe colocar cuidadosamente justo antes del
+comienzo de las notas guía, y cerca de ellas. El siguiente ejemplo
+muestra cómo se hace esto.
@lilypond[quote,verbatim]
flute = \relative c'' {
pianoRH = \relative c'' {
c4. g8
- % position name of cued instrument just before the cued notes
- \once \override CueVoice.InstrumentSwitch
- #'self-alignment-X = #RIGHT
- % position name of cued instrument above the staff
- \once \override CueVoice.InstrumentSwitch #'direction = #UP
- \set CueVoice.instrumentCueName = "Flute"
+ % position name of cue-ing instrument just before the cue notes,
+ % and above the staff
+ s1*0^\markup { \right-align { \tiny "Flute" } }
\cueDuring "flute" #UP { g4 bes4 }
}
pianoLH = \relative c { c4 <c' e> e, <g c> }
@code{#DOWN} en @code{\cueDuring} (para que las plicas se orienten
hacia abajo) y el nombre del instrumento se coloca debajo del
pentagrama. Observe también que la voz de la mano derecha del piano
-está declarada explíctamente. Esto es así porque las notas citadas en
+está declarada explícitamente. Esto es así porque las notas citadas en
este ejemplo comienzan al principio del primer compás y en caso
contrario produciría que todas las notas de la mano derecha del piano
se situaran dentro de un contexto @code{CueVoice}.
pianoRH = \relative c'' {
\transposition c'
- % position name of cued instrument just before the cued notes
- \once \override CueVoice.InstrumentSwitch
- #'self-alignment-X = #RIGHT
- % position name of cued instrument below the staff
- \once \override CueVoice.InstrumentSwitch #'direction = #DOWN
- \set CueVoice.instrumentCueName = "Clar."
+ % position name of cue-ing instrument below the staff
+ s1*0_\markup { \right-align { \tiny "Clar." } }
\cueDuring "clarinet" #DOWN { c4. g8 }
g4 bes4
}
@end lilypond
A partir de estos dos ejemplos debería quedar claro que insertar
-muchas notas guía en una partitura vocal puede ser extremadamente
-tedioso, y las notas de la parte de piano quedarían entorpecidas por
-la gran cantidad de sobreescrituras de propiedades. Sin embargo, como
+muchas notas guía en una partitura vocal puede ser
+tedioso, y la visión de las notas de la parte de piano quedaría
+entorpecida. Sin embargo, como
muestra el siguiente fragmento de código, es posible definir una
función musical para reducir la cantidad de texto que se teclea y para
hacer que las notas del piano estén más claras.
@ref{Uso de las funciones musicales}.
Fragmentos de código:
-@rlsr{vocal-music}.
+@rlsr{Vocal music}.
Referencia de funcionamiento interno:
@rinternals{InstrumentSwitch},
@unnumberedsubsubsec Diálogos encima de la música
@translationof Dialogue over music
-Continuará...
+Los diálogos sobre la música se imprimen normalmente por encima de los
+pentagramas en un estilo inclinado, con el comienzo de cada frase
+ligado a un momento musical en particular.
+
+Para interjecciones cortas, basta un simple elemento de marcado.
+
+@lilypond[quote,verbatim,relative=2]
+a4^\markup { \smallCaps { Alex - } \italic { He's gone } } a a a
+a4 a a^\markup { \smallCaps { Bethan - } \italic Where? } a
+a4 a a a
+@end lilypond
+
+Para frases más largas puede ser necesario expandir la música de forma
+que que las palabras quepan holgadamente. No está previsto en
+LilyPond hacer esto de manera completamente automática, y puede ser
+necesaria cierta intervención manual sobre la disposición.
+
+Para frases largas o pasajes con un diálogo en disposición apretada,
+puede dar mejores resultados la utilización de un contexto de letra.
+El contexto Lyrics no se debe asociar con una voz musical; en vez de
+ello, cada sección del diálogo recibe una duración explícita. Si hay
+una pausa en medio del diálogo, se debe separar la palabra final del
+resto y dividirse la duración entre ellas de forma que la música
+subyacente reciba un espaciado continuo y adecuado.
+
+Si el diálogo se extiende a más de una línea, será necesario insertar
+@code{\break}s manualmente y ajustar la colocación del diálogo para
+evitar que se extienda más allá del margen derecho. La última palabra
+del último compás de una línea debe separarse también, como se ha
+visto antes.
+
+He aquí un ejemplo que ilustra cómo puede hacerse.
+
+@c This should be a snippet, but it can't be as it needs to be
+@c manually adjusted to suit the imposed line length. -td
+
+@lilypond[quote,verbatim,ragged-right]
+music = \relative c'' {
+ \repeat unfold 3 { a4 a a a }
+}
+
+dialogue = \lyricmode {
+ \markup {
+ \fontsize #1 \upright \smallCaps Abe:
+ "Say this over measures one and"
+ }4*7
+ "two"4 |
+ \break
+ "and this over measure"4*3
+ "three"4 |
+}
+
+\score {
+ <<
+ \new Lyrics \with {
+ \override LyricText #'font-shape = #'italic
+ \override LyricText #'self-alignment-X = #LEFT
+ }
+ { \dialogue }
+ \new Staff {
+ \new Voice { \music }
+ }
+ >>
+}
+@end lilypond
+
+@c TODO show use of \column to produce dialogue on two lines
+
+@seealso
+Referencia de la notación:
+@ref{Duración manual de las sílabas},
+@ref{Texto}.
+
+Referencia de funcionamiento interno:
+@rinternals{LyricText}.
@node Cánticos salmos e himnos
antigua se describe en @ref{Notación antigua}.
@seealso
-Referncia de la notación:
+Referencia de la notación:
@ref{Notación antigua}.
+Snippets:
+@rlsr{Vocal music}.
+
@node Preparar un cántico
@unnumberedsubsubsec Preparar un cántico
@end lilypond
Como alternativa, se usa a veces la notación del canto gregoriano para
-las pausas o silencios, aunque el resto de la ntoación sea moderna.
+las pausas o silencios, aunque el resto de la notación sea moderna.
Este ejemplo utiliza una marca @code{\breathe} modificada:
@lilypond[verbatim,quote]
Los cánticos de salmos en la tradición anglicana suelen ser
@emph{sencillos}, con siete compases de música, o @emph{dobles}, con
-dos períodos de siete compases. cada grupo de siete compases se
+dos períodos de siete compases. Cada grupo de siete compases se
divide en dos mitades, que corresponden a las dos mitades de cada
-verso, normalmente separados mediante una dobre línea divisoria. Sólo
+verso, normalmente separados mediante una doble línea divisoria. Sólo
se utilizan redondas y blancas. El primer compás de cada mitad
siempre contiene un único acorde en redondas. Ésta es la @qq{nota de
recitado}. Los cánticos se suelen centrar sobre la página.
}
@end lilypond
-Donde hay una redonda en un compás, todo eltexto que corresponde a ese
+Donde hay una redonda en un compás, todo el texto que corresponde a ese
compás se recita sobre esa nota en el ritmo de la palabra. Donde hay
dos notas en un compás, suele haber solamente una o dos sílabas
correspondientes. Si hay más de dos sílabas, se suele insertar un
@unnumberedsubsubsec Compases parciales en melodías de himno
@translationof Partial measures in hymn tunes
-COn frecuencia las melodías de himno comienzan y terminan cada línea
+Con frecuencia las melodías de himno comienzan y terminan cada línea
de música con compases parciales de forma que cada línea de música
corresponde exactamente con una línea de texto. Esto requiere una
instrucción @code{\partial} al principio de la música e instrucciones
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 928c859642a4b39a8cc3de611b1b93c11ce171f9
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Músicas del mundo
@section Músicas del mundo
-%% Translation of GIT committish: 8b9a694a483632437fb5110b3531074ddb31c04a
+%% Translation of GIT committish: 4c1aa3b16f7b94ca32b0c022f60ed66826d031b0
texidoces = "
Este ejemplo muestra una forma de simplificar la adición de muchas
-%% Translation of GIT committish: 5160eccb26cee0bfd802d844233e4a8d795a1e94
+%% Translation of GIT committish: cde045f4e833aa491fb63f2222e14bef49507577
texidoces = "
Las reglas de final de barra especificadas en el contexto
@code{Score} se aplican a todos los pentagramas, pero se pueden
-%% Translation of GIT committish: 5160eccb26cee0bfd802d844233e4a8d795a1e94
+%% Translation of GIT committish: 744a847e0471d60530588b746fe8a66f3c25536d
texidoces = "
Se pueden establecer las propiedades de los diagramas de
posiciones de acordes por medio de @code{'fret-diagram-details}.
-%% Translation of GIT committish: 5160eccb26cee0bfd802d844233e4a8d795a1e94
+%% Translation of GIT committish: cde045f4e833aa491fb63f2222e14bef49507577
texidoces = "
Se pueden añadir diagramas de posiciones predefinidas para
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 5c6e54cb116ec894b6b2ff7b1fca6ed56628f53b
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Programas externos
@chapter Programas externos
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 2f9b33bc922d93c36e3b6bfe59f1c9deffd94af4
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@c Note: keep this node named so that `info lilypond-book' brings you here.
@node lilypond-book
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: e97ca85dab74d4cdf388fc489789bddd69275186
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Ejecutar LilyPond
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: fe2cae0fa47ec4ec0184e6b3d15572fbcba881cf
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Sugerencias para escribir archivos de entrada
@chapter Sugerencias para escribir archivos de entrada
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 3dd9b13331489a191d0e901245cc98476e5fcac1
+ Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.29"
+@c \version "2.13.36"
@node Actualizar ficheros con convert-ly
-\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: a2e97a25e3f33c847c4d6a039c2f93d8d050a990
+ Translation of GIT committish: 4d852ef65fc654e4ed02413926fc0cb78a1da1be
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@divId{quickSummary}
@subheading ¿Qué es LilyPond?
-LilyPond es un programa de grabado musical de código abierto,
-consagrado a la producción de partituras de la calidad más alta
-posible. Este programa de software libre lleva la estética de la
-música grabada de la forma tradicional a las partituras impresas
-mediante ordenador.
+LilyPond es un programa de grabado musical
+(tipografía musical o edición de partituras),
+consagrado a la producción de partituras de la
+calidad más alta posible. Lleva la estética
+de la música tipografiada de la forma tradicional
+a las partituras impresas mediante ordenador.
+LilyPond es software libre y forma parte del
+@uref{http://gnu.org,Proyecto GNU}.
+
@divClass{align-right}
¡Puede leer más en nuestra @ref{Introducción}!
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
Translation of GIT committish: ff092354107e43a7c29abad74226b302d9a93faa
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 98d54187c3da37a2f2a7d21c2aeaa5f6dd148193
+ Translation of GIT committish: f64b0d88f1c8355e87f37d2e6cacdcf47c959d5a
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@item
@sourceimage{logo-macosx,,,}
@downloadStableDarwinNormal
-Para procesadores Intel (si no está seguro, utilice éste).
+Para MacOS X 10.4 o superior sobre
+CPU Intel (si no está seguro, utilice éste).
@item
@sourceimage{logo-macosx,,,}
@downloadStableDarwinPPC
-Para CPUs G3 y G4 (ordenadores Apple antiguos).
+Para MacOS X 10.4 o superior sobre
+CPUs G3 y G4 (ordenadores Apple antiguos).
@end itemize
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
Translation of GIT committish: cd0fa693cd2297298aabfdc2d2d9d8b0d7746a5c
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: b17e2f3d7a5853a30f7d5a3cdc6b5079e77a3d2a
+ Translation of GIT committish: 7fdd64899c9931d8d5f66786bdf49459a1a0ac53
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@c used for news about the upcoming release; see CG 10.2
-@newsItem
-@subsubheading El Informe LilyPond, número 21. @emph{3 de octubre de 2010}
-
-¡Vuelve el @emph{Informe LilyPond}, con sus dos editores: @qq{gruñón}
-y @qq{blandito}! Esta edición se ocupa principalmente de la notación
-microtonal en LilyPond, pero también incluye un tutorial sobre la
-forma de ejecutar LilyPond a partir de una memoria USB, sin olvidar
-las acostumbradas notas de lanzamientos, el fragmento de código del
-día y las noticias que nos llegan de la charca de las ranas.
-
-Acérquese al @uref{http://news.lilynet.net/The-LilyPond-Report-21,
-Informe LilyPond 21} y léalo ahora mismo; ¡animamos calurosamente a
-todos a que hagan sus comentarios y contribuciones!
-
-@newsEnd
@newsItem
-@subsubheading Segunda versión de pruebas Alfa de 2.14: ¡Lanzado LilyPond 2.13.35! @emph{29 de septiembre de 2010}
+@subsubheading Tercera versión de pruebas Alfa de 2.14: ¡Lanzado LilyPond 2.13.37! @emph{25 de octubre de 2010}
-Ha salido LilyPond 2.13.35; ésta es la segunda versión alfa de la
+Ha salido LilyPond 2.13.37; ésta es la tercera versión alfa de la
inminente versión estable 2.14. Se invita a los usuarios a que hagan
experimentos con esta versión. Las funcionalidades nuevas desde
2.12.3 están relacionadas en el manual de @qq{Cambios} dentro de la
sección @ref{Desarrollo} de estas páginas.
-Aún existen tres regresiones conocidas contra 2.12.3:
-@uref{http://code.google.com/p/lilypond/issues/detail?id=1173,
-Problema número 1173 - No se pueden alinear las MetronomeMarks sobre
-una nota si existe un silencio multicompás en otra voz}, y dos fallos
-de espaciado:
-@uref{http://code.google.com/p/lilypond/issues/detail?id=1240,
-Problema 1240} y
-@uref{http://code.google.com/p/lilypond/issues/detail?id=1252,
-Problema 1252} pero esperamos encontrar más. Si se decide a probar
-2.13.35, no se sorprenda al encontrar problemas; tan sólo envíenos
-@ref{Informes de fallos} educados.
+Aún permanecen algunos problemas calificados como Críticos
+en esta versión: el espaciado vertical sorprende en
+dos casos, y lilypond puede salir de manera abrupta frente
+a algunos códigos de entrada extraños. Si se decide a probar
+2.13.37, no se sorprenda al descubrir problemas; tan sólo
+envíenos @ref{Informes de fallos} educados.
@newsEnd
@newsItem
-@subsubheading Versión de pruebas Alfa de 2.14: ¡Lanzado LilyPond 2.13.34! @emph{21 de septiembre de 2010}
+@subsubheading ¡Lanzado LilyPond 2.13.36! @emph{19 de octubre de 2010}
-Ha salido LilyPond 2.13.34; ésta es la primera versión alfa de la
-inminente versión estable 2.14. Se invita a los usuarios a que hagan
-experimentos con esta versión. Las funcionalidades nuevas desde
-2.12.3 están relacionadas en el manual de @qq{Cambios} dentro de la
-sección @ref{Desarrollo} de estas páginas.
+Nos complace anunciar el lanzamiento de LilyPond 2.13.36.
+Esta versión contiene el conjunto habitual de correcciones de fallos.
+Sin embargo, aún permanecen un cierto número de problemas críticos,
+por lo que está orientada solamente a los desarrolladores.
-Aún existe una regresión conocida contra 2.12.3:
-@uref{http://code.google.com/p/lilypond/issues/detail?id=1173,
-Problema número 1173 - No se pueden alinear las MetronomeMarks sobre una
-nota si existe un silencio multicompás en otra voz}, pero esperamos
-encontrar más. Si se decide a probar 2.13.34, no se sorprenda al
-encontrar problemas; tan sólo envíenos @ref{Informes de fallos}
-educados.
+Tenga en cuenta que ésta @strong{no} es la tercera versión
+de pruebas alfa. A causa de la aparición de algunos cambios en nuestro
+proceso de construcción del programa que no se han probado,
+no podemos estar completamente seguros de la calidad
+de esta versión.
@newsEnd
@newsItem
-@subsubheading ¡Lanzado LilyPond 2.13.33! @emph{10 de septiembre de 2010}
+@subsubheading El Informe LilyPond, número 21. @emph{3 de octubre de 2010}
-Nos complace anunciar el lanzamiento de LilyPond 2.13.33. Esta
-versión contiene el conjunto habitual de correcciones de fallos. Sin
-embargo, aún quedan algunos problemas críticos, por lo que esta
-versión está orientada solamente a los desarrolladores.
+¡Vuelve el @emph{Informe LilyPond}, con sus dos editores: @qq{gruñón}
+y @qq{blandito}! Esta edición se ocupa principalmente de la notación
+microtonal en LilyPond, pero también incluye un tutorial sobre la
+forma de ejecutar LilyPond a partir de una memoria USB, sin olvidar
+las acostumbradas notas de lanzamientos, el fragmento de código del
+día y las noticias que nos llegan de la charca de las ranas.
+
+Acérquese al @uref{http://news.lilynet.net/The-LilyPond-Report-21,
+Informe LilyPond 21} y léalo ahora mismo; ¡animamos calurosamente a
+todos a que hagan sus comentarios y contribuciones!
@newsEnd
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: c22f75eaf6692b4498251f4d57fc5e7af9f79891
+ Translation of GIT committish: 7ae82be4db35cc92754263deac3907412d1612d5
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@end ignore
+
+@newsItem
+@subsubheading Segunda versión de pruebas Alfa de 2.14: ¡Lanzado LilyPond 2.13.35! @emph{29 de septiembre de 2010}
+
+Ha salido LilyPond 2.13.35; ésta es la segunda versión alfa de la
+inminente versión estable 2.14. Se invita a los usuarios a que hagan
+experimentos con esta versión. Las funcionalidades nuevas desde
+2.12.3 están relacionadas en el manual de @qq{Cambios} dentro de la
+sección @ref{Desarrollo} de estas páginas.
+
+Aún existen tres regresiones conocidas contra 2.12.3:
+@uref{http://code.google.com/p/lilypond/issues/detail?id=1173,
+Problema número 1173 - No se pueden alinear las MetronomeMarks sobre
+una nota si existe un silencio multicompás en otra voz}, y dos fallos
+de espaciado:
+@uref{http://code.google.com/p/lilypond/issues/detail?id=1240,
+Problema 1240} y
+@uref{http://code.google.com/p/lilypond/issues/detail?id=1252,
+Problema 1252} pero esperamos encontrar más. Si se decide a probar
+2.13.35, no se sorprenda al encontrar problemas; tan sólo envíenos
+@ref{Informes de fallos} educados.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading Versión de pruebas Alfa de 2.14: ¡Lanzado LilyPond 2.13.34! @emph{21 de septiembre de 2010}
+
+Ha salido LilyPond 2.13.34; ésta es la primera versión alfa de la
+inminente versión estable 2.14. Se invita a los usuarios a que hagan
+experimentos con esta versión. Las funcionalidades nuevas desde
+2.12.3 están relacionadas en el manual de @qq{Cambios} dentro de la
+sección @ref{Desarrollo} de estas páginas.
+
+Aún existe una regresión conocida contra 2.12.3:
+@uref{http://code.google.com/p/lilypond/issues/detail?id=1173,
+Problema número 1173 - No se pueden alinear las MetronomeMarks sobre una
+nota si existe un silencio multicompás en otra voz}, pero esperamos
+encontrar más. Si se decide a probar 2.13.34, no se sorprenda al
+encontrar problemas; tan sólo envíenos @ref{Informes de fallos}
+educados.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading ¡Lanzado LilyPond 2.13.33! @emph{10 de septiembre de 2010}
+
+Nos complace anunciar el lanzamiento de LilyPond 2.13.33. Esta
+versión contiene el conjunto habitual de correcciones de fallos. Sin
+embargo, aún quedan algunos problemas críticos, por lo que esta
+versión está orientada solamente a los desarrolladores.
+
+@newsEnd
+
+
+
+
@newsItem
@subsubheading ¡Lanzado LilyPond 2.13.32! @emph{3 de septiembre de 2010}
@newsItem
-@subsubheading ¡Lanzado LilyPond 2.13.26! @emph{26 de junio de 2010}
-@subsubheading LilyPond 2.13.29 released! @emph{Aug 4, 2010}
+@subsubheading ¡Lanzado LilyPond 2.13.29! @emph{4 de agosto de 2010}
-Nos complace anunciar el lanzamiento de LilyPond 2.13.26. Esta
+Nos complace anunciar el lanzamiento de LilyPond 2.13.29. Esta
versión contiene el conjunto habitual de correcciones de fallos. Sin
embargo, aún quedan algunos problemas críticos, por lo que esta
versión está orientada solamente a los desarrolladores.
-We are happy to announce the release of LilyPond 2.13.29. This
-release contains the usual number of bugfixes. However, a number
-of critical issues still remain, so this release is intended for
-developers only.
-
-This release radically changes the autobeaming rules, so use extra
-caution and expect breakage.
+Esta versión cambia radicalmente las reglas del barrado automático,
+por lo que debe emplear un cuidado especial y estar preparado para
+algún resultado inesperado.
@newsEnd
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: f4e493be609aeefbb35a91f35236d2176f95fe22
+ Translation of GIT committish: 98c09018bda39821c6f632b67a5e9906c64cfc5b
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Morceaux choisis :
@rlsrnamed{Rhythms,Rythme}.
-Référence dezs propriétés internes :
+Référence des propriétés internes :
@rinternals{LaissezVibrerTie},
@rinternals{LaissezVibrerTieColumn},
@rinternals{TieColumn},
@knownissues
-
Un changement de portée, lorsqu'une liaison de tenue est active, ne
peut produire une liaison oblique.
@c \time 16/1 is used to avoid spurious bar lines
@c and long tracts of empty measures
-@lilypond[fragment,quote,verbatim]
+@lilypond[quote,verbatim,relative=2]
\new Staff {
% These two lines are just to prettify this example
\time 16/1
@code{Voice} lorsque nécessaire, à l'instar des notes ou des
silences@tie{}:
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
s1 s s
@end lilypond
Un @code{\skip} ne fait que sauter du temps musical@tie{}; il ne produit
rien du tout, pas même un symbole transparent.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
% This is valid input, but does nothing
\skip 1 \skip1 \skip 1
@end lilypond
la métrique. C'est la raison pour laquelle on utilisera aussi des
points d'augmentation ou des fractions@tie{}:
-@lilypond[quote,fragment,verbatim]
+@lilypond[quote,verbatim,relative=2]
\compressFullBarRests
\time 2/4
R1 | R2 |
une pause, tantôt comme une brève -- ou @qq{bâton de pause} -- et
sera centré sur la mesure quelle qu'en soit la métrique@tie{}:
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
\time 4/4
R1 |
\time 6/4
que nécessaire. Il peut aussi n'être imprimé qu'une seule fois,
surplombé du nombre de mesures vides -- ou @qq{à compter}@tie{}:
-@lilypond[quote,fragment,verbatim]
+@lilypond[quote,verbatim,relative=2]
% Default behavior
\time 3/4 r2. | R2.*2 |
\time 2/4 R2 |
@ref{Mise en forme du texte}). La variable @code{\fermataMarkup} quant
à elle permet d'ajouter un point d'orgue@tie{}:
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
\compressFullBarRests
\time 3/4
R2.*10^\markup { \italic "ad lib." }
R2.^\fermataMarkup
@end lilypond
-@warning{
-C'est @code{MultiMeasureRestText} qui créera le texte, et
+@warning{C'est @code{MultiMeasureRestText} qui créera le texte, et
non @code{TextScript}. Les commandes de dérogation ou de redéfinition
doivent s'adresser à l'objet concerné, comme vous pouvez le constater
dans l'exemple suivant.}
@c KEEP LY
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim,relative=2]
% Ceci échouera : il y a erreur quant à l'objet spécifié
\override TextScript #'padding = #5
R1^"pas bon !"
#'(3 1) % beatStructure
#'() % beamExceptions
\time 4/4
- \repeat unfold 8 c8 |
+ \repeat unfold 8 { c8 } |
}
}
@end lilypond
@lilypond[quote,verbatim]
\score{
\relative c' {
- \repeat unfold 8 c8 |
+ \repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
#'Score % context
#'(4 . 4) % timeSignatureFraction
\repeat unfold 8 c8 |
\revertTimeSignatureSettings #'Score #'(4 . 4)
\time 4/4
- \repeat unfold 8 c8 |
+ \repeat unfold 8 { c8 } |
}
}
@end lilypond
d4 e d c
@end lilypond
+@cindex ligature et cadence
+@cindex ligature et musique non mesurée
+@cindex cadence et ligature
+@cindex musique non mesurée et ligature
+
+L'instruction @code{\cadenzaOn} désative les ligatures
+automatique@tie{}; elles seront réactivées après un @code{\cadenzaOff}.
+Toutes les ligatures devront donc être indiquées de manière explicite
+tout au long de la cadence -- voir @ref{Barres de ligature manuelles}).
+
+@lilypond[verbatim,relative=2,quote]
+\repeat unfold 8 { c8 }
+\cadenzaOn
+\repeat unfold 5 { c8 }
+\bar"|"
+\cadenzaOff
+\repeat unfold 8 { c8 }
+@end lilypond
+
Notez bien que ces commandes prédéfinies affecteront toutes les portées
de la partition, même si vous ne les placez que dans un simple contexte
@code{Voice}. Pour éviter ce désagrément, transférez le
ligatures devront être explicites, la fonction d'échelonnement venant
perturber les règles de ligature automatique.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
\relative c' <<
\new Staff {
\time 3/4
c1 f g c
}
}
-
\new Voice \with {
\consists Pitch_squash_engraver
} \relative c'' {
@lilypond[quote,verbatim,relative=2]
\time 2/4 c8 c c c
-\time 6/8 c c c c8. c16 c8
+\time 6/8 c8 c c c8. c16 c8
@end lilypond
Lorsque ce comportement automatisé n'est pas satisfaisant, on peut
\time 5/8
\set Timing.baseMoment = #(ly:make-moment 1 16)
\set Timing.beatStructure = #'(7 3)
-\repeat unfold 10 {a16}
+\repeat unfold 10 { a16 }
@end lilypond
@code{baseMoment} constitue un @strong{moment}, autrement dit une unité
((1 . 32) . (2 2 2)) ;règle pour les triples -- groupées à la double
))) %referme la liste
c16 c c |
-\repeat unfold 6 {c32} |
+\repeat unfold 6 { c32 } |
@end lilypond
@code{beamExceptions} contient la liste des règles de ligature selon
@lilypond[quote,verbatim,relative=2]
\time 4/4
-\repeat unfold 8 {a8}
+\repeat unfold 8 { a8 }
% eliminate beam exception that groups beats 1, 2 and 3, 4
\set Timing.beamExceptions = #'()
-\repeat unfold 8 {a8}
+\repeat unfold 8 { a8 }
% go back to default behavior
\time 4/4
-\repeat unfold 8 {a8}
+\repeat unfold 8 { a8 }
@end lilypond
Les règles de ligature automatique par défaut sont répertoriées, par
@knownissues
-
Si une partition se termine alors qu'une ligature automatique est restée
inachevée, cette dernière ligature ne sera pas imprimée du tout. C'est
également valable dans le cas d'une musique polyphonique, saisie avec la
-syntaxe @code{<< @dots{} \\ @dots{} >>}, où une voix se terminerait sans
-que la dernière ligature ne soit achevée. Le plus simple, en pareil
-cas, est de spécifier anuellement les dernières ligatures.
+syntaxe @w{@code{<< @dots{} \\ @dots{} >>}}, où une voix se terminerait
+sans que la dernière ligature ne soit achevée. Le plus simple, en
+pareil cas, est de spécifier anuellement les dernières ligatures.
@node Barres de ligature manuelles
respectivement par @code{[} et @code{]}.
@lilypond[quote,relative=1,verbatim]
-r4 r8[ g' a r8] r8 g[ | a] r8
+r4 r8[ g' a r] r8 g[ | a] r8
@end lilypond
@cindex ligature manuelle, orientation
@lilypond[quote,verbatim,relative=2]
c4 d8[
\grace { e32[ d c d] }
-e8] e8[ e
+e8] e[ e
\grace { f16 }
e8 e]
@end lilypond
a1 \bar ":|.|:"
b1 \bar ":|.:"
c1 \bar ":|"
-d1
+e1
@end lilypond
De plus, une barre de mesure peut s'imprimer sous la forme d'une
@cindex collision et numéro de mesure
@knownissues
-
Les numéros de mesure peuvent entrer en collision avec les crochets d'un
@rinternals{StaffGroup}. La propriété @code{padding} -- décalage
-- de l'objet @rinternals{BarNumber} permet alors d'ajuster leur
@lilypond[quote,verbatim]
pipeSymbol = \bar "||"
{
- c'2 c'2 |
- c'2 c'2
- c'2 | c'2
- c'2 c'2
+ c'2 c' |
+ c'2 c'
+ c'2 | c'
+ c'2 c'
}
@end lilypond
} % begin verbatim
\include "predefined-guitar-fretboards.ly"
-\storePredefinedDiagram #default-fret-table \chordmode { c' } % begin verbatim
+\storePredefinedDiagram #default-fret-table \chordmode { c' }
#guitar-tuning
#"x;1-1-(;3-2;3-3;3-4;1-1-);"
\header {
lsrtags = "fretted-strings"
-%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
+%% Translation of GIT committish: 5160eccb26cee0bfd802d844233e4a8d795a1e94
texidoces = "
Se pueden añadir diagramas de posiciones predefinidas para