@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: 32114617e6b96617749a3c4efb4fa2203a8c3d50
+ Translation of GIT committish: 64feeff58e5ce3397de87188a08ac99f7ef8e37b
When revising a translation, copy the HEAD committish of the
- version that you are working on. See TRANSLATION for details.
+ version that you are working on. For details, see the Contributors'
+ Guide, node Updating translation committishes.
@end ignore
@c \version "2.12.0"
@cindex Notenkopf, Beispiel für Veränderung
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c d
+c4 d
\override NoteHead #'color = #red
-e f g
+e4 f |
\override NoteHead #'color = #green
-a b c
+g4 a b c |
@end lilypond
@cindex Notenkopf, Beispiel für Veränderung
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c d
+c4 d
\override NoteHead #'color = #red
-e f g
+e4 f |
\override NoteHead #'color = #green
-a
+g4 a
\revert NoteHead #'color
-b c
+b4 c |
@end lilypond
@strong{\once-Präfix}
@cindex Notenkopf, Beispiel für Veränderung
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c d
+c4 d
\once \override NoteHead #'color = #red
-e f g
+e4 f |
\once \override NoteHead #'color = #green
-a b c
+g4 a b c |
@end lilypond
@code{\overrideProperty} (überschreibe Eigenschaft),
welcher ab und zu benötigt wird. Es wird hier nur der
Vollständigkeit halber erwähnt, sein Einsatz wird demonstriert
-in @ruser{Schwierige Korrekturen}.
+in @rextend{Schwierige Korrekturen}.
@c Maybe explain in a later iteration -td
@cindex Notenkopf, Beispiel für Veränderung
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
- <c e g>4
- \once \override NoteHead #'font-size = #-3
- <c e g>
- <c e g>
+<c e g>4
+\once \override NoteHead #'font-size = #-3
+<c e g>4
+<c e g>4
@end lilypond
Wie man sehen kann, beeinflusst @code{override} @emph{alle}
@cindex @code{\tweak}-Beispiel
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
- <c e g>4
- <c \tweak #'font-size #-3 e g>4
+<c e g>4
+<c \tweak #'font-size #-3 e g>4
@end lilypond
Beachten Sie, dass die Syntax des @code{\tweak}-Befehls sich
@cindex @code{\tweak}-Beispiel
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-a ^Black
- -\tweak #'color #red ^Red
- -\tweak #'color #green _Green
+a4^"Black"
+ -\tweak #'color #red ^"Red"
+ -\tweak #'color #green _"Green"
@end lilypond
@noindent
\tweak #'direction #up
\times 4/3 {
\tweak #'color #red
- \times 2/3 { c8[ c8 c8] }
- \times 2/3 { c8[ c8 c8] }
- \times 2/3 { c8[ c8 c8] }
+ \times 2/3 { c8[ c c] }
+ \times 2/3 { c8[ c c] }
+ \times 2/3 { c8[ c c] }
}
@end lilypond
@c NOTE Tuplet brackets collide if notes are high on staff
@c See issue 509
@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\times 2/3 { c8[ c c]}
+\times 2/3 { c8[ c c] }
\once \override TupletNumber
#'text = #tuplet-number::calc-fraction-text
\times 2/3 {
- c[ c]
- c[ c]
+ c8[ c]
+ c8[ c]
\once \override TupletNumber #'transparent = ##t
\times 2/3 { c8[ c c] }
-\times 2/3 { c8[ c c]}
+ \times 2/3 { c8[ c c] }
}
@end lilypond
Das Vorgehen soll an einem konkreten Beispiel einer echten
Komposition demonstriert werden. Hier das Beispiel:
+@c Mozart, Die Zauberflöte Nr. 7 Duett
+
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 bes8 bes[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
% Increase thickness of all following slurs from 1.2 to 5.0
\override Slur #'thickness = #5.0
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 bes8 bes[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
{
\time 6/8
{
- r4 b8
+ \key es \major
+ r4 bes8
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ bes8[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8
+ r4 bes8
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- b[( g]) g |
+ bes[( g]) g |
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- g[( e]) e d[( f]) a |
- a g
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8
+ r4 bes8
% Increase thickness of all following slurs from 1.2 to 5.0
\override Slur #'thickness = #5.0
- b[( g]) g |
- g[( e])
+ bes[( g]) g |
+ g8[( es]) es
% Revert thickness of all following slurs to default of 1.2
\revert Slur #'thickness
- e d[( f]) a |
- a g
+ d8[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
Zeichenketten, die immer mit Anführungszeichen, also
als @code{"Zeichenkette"} auftreten. Für weitere
Einzelheiten zu Zeichenketten und Werten, siehe
-@ref{Scheme-Übung}.
+@rextend{Scheme-Übung}.
Gut, der @code{\override}-Befehl, mit dem der Gesangstext
kursiv gesetzt wird, lautet:
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 bes8 bes[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
\override LyricText #'font-shape = #'italic
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
Gesangstexten müssen Leerzeichen um Punkte zwischen
Kontext- und Objektbezeichnungen gesetzt werden.}
+@seealso
+Erweitern: @rextend{Scheme-Übung}.
+
@node Typen von Eigenschaften
@subsection Typen von Eigenschaften
@seealso
-Handbuch zum Lernen: @ref{Scheme-Übung}.
+Erweitern: @rextend{Scheme-Übung}.
@node Erscheinung von Objekten
{
\time 12/16
\override BarLine #'stencil = ##f
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
{
\time 12/16
\override Staff.BarLine #'stencil = ##f
- c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ c4 b8 c d16 c d8
+ g,8 a16 b8 c d4 e16
e8
}
@end lilypond
@lilypond[quote,verbatim,relative=2]
{
- c c
+ c4 c
\once \override NoteHead #'stencil = #point-stencil
- c c
+ c4 c
}
@end lilypond
\time 12/16
\override Staff.BarLine #'break-visibility = #'#(#f #f #f)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.TimeSignature #'transparent = ##t
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.TimeSignature #'stencil = ##f
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.BarLine #'color = #white
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.BarLine #'color = #(x11-color 'white)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.BarLine #'color = #(rgb-color 1 1 1)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\override Voice.Stem #'color = #(x11-color 'grey85)
\override Staff.BarLine #'color = #(x11-color 'grey10)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
- \relative g' {
- r4 g8 g c4 c8 d |
- e4 r8
- <<
- { f c c }
- \new Staff \with {
- alignAboveContext = #"main" }
- { f8 f c }
- >>
- r4 |
- }
- }
+ \relative g' {
+ r4 g8 g c4 c8 d |
+ e4 r8
+ <<
+ { f c c }
+ \new Staff \with {
+ alignAboveContext = #"main" }
+ { f8 f c }
+ >>
+ r4 |
+ }
+}
@end lilypond
Ossia-Systeme werden normalerweise ohne Schlüssel und Taktangabe
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
\relative g' {
- r4 g8 g c4 c8 d |
+ r4 g8 g c4 c8 d
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
}
{ f8 f c }
}
>>
- r4 |
+ r4
}
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
\relative g' {
- r4 g8 g c4 c8 d |
+ r4 g8 g c4 c8 d
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
% Don't print clefs in this staff
% Don't print time signatures in this staff
\override TimeSignature #'stencil = ##f
}
- { f8 f c }
+ { f8 f c }
>>
- r4 |
+ r4
}
}
@end lilypond
@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
\new Staff ="main" {
\relative g' {
- r4 g8 g c4 c8 d |
+ r4 g8 g c4 c8 d
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
\override Clef #'stencil = ##f
% Reduce all font sizes by ~24%
fontSize = #-2
}
- { f8 f c }
+ { f8 f c }
>>
- r4 |
+ r4
}
}
@end lilypond
@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
\new Staff ="main" {
\relative g' {
- r4 g8 g c4 c8 d |
+ r4 g8 g c4 c8 d
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
\override Clef #'stencil = ##f
% Reduce stem length and line spacing to match
\override StaffSymbol #'staff-space = #(magstep -2)
}
- { f8 f c }
+ { f8 f c }
>>
- r4 |
+ r4
}
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
c2^"Text1"
-c^"Text2"
-c^"Text3"
-c^"Text4"
+c2^"Text2"
+c2^"Text3"
+c2^"Text4"
@end lilypond
Notensysteme werden in den Standardeinstellungen auch so dicht
@lilypond[quote,ragged-right,verbatim]
<<
\new Staff {
- \relative c' { c a, }
+ \relative c' { c4 a, }
}
\new Staff {
- \relative c'''' { c a, }
+ \relative c'''' { c4 a, }
}
>>
@end lilypond
@lilypond[quote,verbatim,relative=2]
a4 g c a
\override Stem #'direction = #DOWN
-a g c a
+a4 g c a
\override Stem #'direction = #UP
-a g c a
+a4 g c a
\revert Stem #'direction
-a g c a
+a4 g c a
@end lilypond
Hier werden die Konstanten @code{DOWN} und @code{UP}
@cindex direction-Eigenschaft, Beispiel
@lilypond[quote,verbatim,relative=2]
-c-5 a-3 f-1 c'-5
+c4-5 a-3 f-1 c'-5
\override Fingering #'direction = #DOWN
-c-5 a-3 f-1 c'-5
+c4-5 a-3 f-1 c'-5
\override Fingering #'direction = #UP
-c-5 a-3 f-1 c'-5
+c4-5 a-3 f-1 c'-5
@end lilypond
Eine Beeinflussung der @code{direction}-Eigenschaft ist jedoch
@cindex Fingersatz-Beispiel
@lilypond[quote,verbatim,relative=2]
-c-5 a-3 f-1 c'-5
-c_5 a_3 f_1 c'_5
-c^5 a^3 f^1 c'^5
+c4-5 a-3 f-1 c'-5
+c4_5 a_3 f_1 c'_5
+c4^5 a^3 f^1 c'^5
@end lilypond
Die @code{direction}-Eigenschaft wirkt sich nicht auf
@cindex Fingersatz-Beispiel
@lilypond[quote,verbatim,relative=2]
-<c-5 g-3>
-<c-5 g-3 e-2>
-<c-5 g-3 e-2 c-1>
+<c-5 g-3>4
+<c-5 g-3 e-2>4
+<c-5 g-3 e-2 c-1>4
@end lilypond
@noindent
@cindex Fingersatz-Beispiel
@lilypond[quote,verbatim,relative=2]
-<c-5 g-3 e-2 c-1>
-<c^5 g_3 e_2 c_1>
-<c^5 g^3 e^2 c_1>
+<c-5 g-3 e-2 c-1>4
+<c^5 g_3 e_2 c_1>4
+<c^5 g^3 e^2 c_1>4
@end lilypond
Noch bessere Kontrolle über die Positionierung von Fingersatz für
@lilypond[quote,verbatim,relative=1]
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left down)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(right)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
@end lilypond
@noindent
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
\override Fingering #'font-size = #-7
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left down)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(right)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
@end lilypond
Wert dem Objekt entsprechend geändert, wenn das Objekt für die
Notenausgabe erstellt wird. Die Tabelle unten zeigt die
Standardwerte für die meistbenutzten @code{outside-staff}-Objekte,
-die den Voreinstellungen nach im
-@code{Staff}- oder @code{Voice}-Kontext gesetzt werden.
+die den Voreinstellungen nach im @code{Staff}- oder
+@code{Voice}-Kontext gesetzt werden.
+
+@cindex spanners
+@cindex Strecker
+
+Achtung bei einigen ungewöhnlichen Objektbezeichnungen: Strecker-Objekte
+werden automatisch erstellt, um die vertikale Position von Grobs
+zu kontrollieren, die an unterschiedlichen musikalischen Momenten
+beginnen und enden (könnten). Wenn also @code{outside-staff-priority}
+des darunterliegenden Grobs geändert wird, hat das keine Auswirkung.
+Zum Beispiel bringt das Ändern von @code{outside-staff-priority}
+des @code{Hairpin}-(Dynamikklammer)-Objekts keine Änderung in der
+vertikalen Position von Crescendo-Klammern -- anstatt dessen muss
+@code{outside-staff-priority} des hiermit assoziierten
+@code{DynamicLineSpanne}-Objekts geändert werden. Dieser
+@code{\override}-Befehl muss zu Beginn des Streckers gesetzt werden,
+welcher womöglich mehrere verbundene Dynamikklammern und Dynamikbezeichnung
+beinhaltet.
@multitable @columnfractions .3 .3 .3
@headitem Layout-Objekt
\dynamicUp
% Start Ottava Bracket
\ottava #1
-c' \startTextSpan
-% Add Dynamic Text
-c\pp
-% Add Dynamic Line Spanner
-c\<
+c'4 \startTextSpan
+% Add Dynamic Text and hairpin
+c4\pp\<
+c4
% Add Text Script
-c^Text
-c c
-% Add Dynamic Text
-c\ff c \stopTextSpan
+c4^Text
+c4 c
+% Add Dynamic Text and terminate hairpin
+c4\ff c \stopTextSpan
% Stop Ottava Bracket
\ottava #0
-c, c c c
+c,4 c c c
@end lilypond
Dieses Beispiel zeigt auch, wie man Text-Strecker erstellt, d.h.
= \markup { \small \bold Slower }
% Place dynamics above staff
\dynamicUp
-%Place following Ottava Bracket below Text Spanners
+% Place following Ottava Bracket below Text Spanners
\once \override Staff.OttavaBracket #'outside-staff-priority = #340
% Start Ottava Bracket
\ottava #1
-c' \startTextSpan
+c'4 \startTextSpan
% Add Dynamic Text
-c\pp
+c4\pp
% Add Dynamic Line Spanner
-c\<
+c4\<
% Add Text Script
-c^Text
-c c
+c4^Text
+c4 c
% Add Dynamic Text
-c\ff c \stopTextSpan
+c4\ff c \stopTextSpan
% Stop Ottava Bracket
\ottava #0
-c, c c c
+c,4 c c c
@end lilypond
@cindex Legatobögen und outside-staff-priority
Hier ein Beispiel, das die beiden Möglichkeiten veranschaulicht:
@lilypond[quote,verbatim,relative=2]
-c4( c^\markup\tiny\sharp d4.) c8
+c4( c^\markup { \tiny \sharp } d4.) c8
c4(
\once \override TextScript #'avoid-slur = #'inside
\once \override TextScript #'outside-staff-priority = ##f
-c^\markup\tiny\sharp d4.) c8
+c4^\markup { \tiny \sharp } d4.) c8
\once \override Slur #'outside-staff-priority = #500
-c4( c^\markup\tiny\sharp d4.) c8
+c4( c^\markup { \tiny \sharp } d4.) c8
@end lilypond
Eine Änderung der @code{outside-staff-priority} kann auch dazu
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
c2^"Text1"
-c^"Text2"
+c2^"Text2" |
\once \override TextScript #'outside-staff-priority = #500
-c^"Text3"
-c^"Text4"
+c2^"Text3"
+c2^"Text4" |
@end lilypond
Damit wird zwar @qq{Text3} ganz richtig über @qq{Text4}
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\textLengthOn % Cause notes to space out to accommodate text
c2^"Text1"
-c^"Text2"
-c^"Text3"
-c^"Text4"
+c2^"Text2" |
+c2^"Text3"
+c2^"Text4" |
@end lilypond
Dieses Verhalten wird mit dem @code{\textLengthOff}-Befehl
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
% This markup is short enough to fit without collision
-c2^"Tex"
-c''2
-R1
+c2^"Tex" c'' |
+R1 |
+
% This is too long to fit, so it is displaced upwards
-c,,2^"Text"
-c''2
-R1
+c,,2^"Text" c'' |
+R1 |
+
% Turn off collision avoidance
\once \override TextScript #'outside-staff-priority = ##f
-c,,2^"Long Text "
-c''2
-R1
+c,,2^"Long Text " c'' |
+R1 |
+
% Turn off collision avoidance
\once \override TextScript #'outside-staff-priority = ##f
-\textLengthOn % and turn on textLengthOn
+\textLengthOn % and turn on textLengthOn
c,,2^"Long Text " % Spaces at end are honored
-c''2
+c''2 |
@end lilypond
\key aes \major
\time 9/8
\dynamicUp
-bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
-ees,2.~\)\mf ees4 r8 |
+bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\!
+ees,2.~\)\mf ees4 r8
@end lilypond
Wenn aber Noten und Dynamikzeichen sehr dicht beieinander
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
-a4\f b\mf c\mp b\p
+a4\f b\mf c\mp b\p |
@end lilypond
@noindent
@cindex padding (Verschiebuns-Eigenschaft), Beispiel
@lilypond[quote,fragment,relative=1,verbatim]
-% This will not work, see below:
+% This will not work, see below
\override MetronomeMark #'padding = #3
\tempo 4=120
-c1
-% This works:
+c1 |
+% This works
\override Score.MetronomeMark #'padding = #3
\tempo 4=80
-d1
+d1 |
@end lilypond
Im zweiten Beispiel können Sie sehen, wie wichtig es ist den richtigen
@lilypond[quote,ragged-right,verbatim]
sesquisharp = \markup { \sesquisharp }
\relative c'' {
- c
+ c4
% This prints a sesquisharp but the spacing is too small
\once \override Accidental
#'stencil = #ly:text-interface::print
\once \override Accidental #'text = #sesquisharp
- cis c
+ cis4 c
% This improves the spacing
\once \override Score.AccidentalPlacement #'right-padding = #0.6
\once \override Accidental
#'stencil = #ly:text-interface::print
\once \override Accidental #'text = #sesquisharp
- cis
+ cis4
}
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=3]
\voiceOne
-< a \2 >
+< a\2 >
\once \override StringNumber #'self-alignment-X = #RIGHT
-< a \2 >
+< a\2 >
@end lilypond
Kollision dieser Art:
@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
-<< {c c c c} \\ {R1} >>
+<< { c4 c c c } \\ { R1 } >>
@end lilypond
Die beste Lösung ist es, die Ganztaktpause nach unten zu
@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
<<
- {c c c c}
-\\
+ { c4 c c c }
+ \\
\override MultiMeasureRest #'staff-position = #-8
- {R1}
+ { R1 }
>>
@end lilypond
@lilypond[quote,fragment,relative=1,verbatim]
\stemUp
-f-5
-\once \override Fingering
- #'extra-offset = #'(-0.3 . -1.8)
-f-5
+f4-5
+\once \override Fingering #'extra-offset = #'(-0.3 . -1.8)
+f4-5
@end lilypond
er den Bogen des Vorschlags vermeidet:
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4 \acciaccatura e8\( d8 c ~c d c d\)
+r4 \acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
@noindent
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
r4
\phrasingSlurUp
-\acciaccatura e8\( d8 c ~c d c d\)
+\acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
@noindent
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
r4
\once \override PhrasingSlur #'positions = #'(-4 . -3)
-\acciaccatura
-e8\( d8 c ~c d c d\)
+\acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
Hier noch ein weiteres Beispiel aus der Einleitung von Chopins
@lilypond[quote,verbatim,fragment,ragged-right]
{
-\clef "bass"
-<< {b,8 ais, b, g,} \\ {e, g e, g} >>
-<< {b,8 ais, b, g,} \\ {e, g e, g} >>
+ \clef "bass"
+ << { b,8 ais, b, g, } \\ { e, g e, g } >>
+ << { b,8 ais, b, g, } \\ { e, g e, g } >>
}
@end lilypond
\clef "bass"
<<
\override Beam #'positions = #'(3 . 3)
- {b,8 ais, b, g,}
+ { b,8 ais, b, g, }
\\
- {e, g e, g}
+ { e, g e, g }
>>
- << {b,8 ais, b, g,} \\ {e, g e, g} >>
+ << { b,8 ais, b, g, } \\ { e, g e, g } >>
}
@end lilypond
@cindex force-hshift-Eigenschaft
@cindex Vertikale Verschiebung erzwingen
-@c FIXME: formatting stuff (ie not important right now IMO)
-@c @a nchor Chopin finally corrected TODOgp
-
An diesem Punkt können wir den letzten Feinschliff an unserem
Chopin-Beispiel vornhemen, das wir behandelt haben in
@ref{Ich höre Stimmen}. Wir hatten es in folgende Form
\new Staff \relative c'' {
\key aes \major
<<
- { c2 aes4. bes8 } \\
- { aes2 f4 fes } \\
- { \voiceFour
- <ees c>2
- des2
+ { c2 aes4. bes8 }
+ \\
+ { aes2 f4 fes }
+ \\
+ {
+ \voiceFour
+ <ees c>2 des
}
>> |
<c ees aes c>1 |
\new Staff \relative c'' {
\key aes \major
<<
- { c2 aes4. bes8 } \\
- { aes2 f4 fes } \\
- { \voiceFour
- \once \override NoteColumn #'force-hshift = #0 <ees c>2
- \once \override NoteColumn #'force-hshift = #0.5 des2
+ { c2 aes4. bes8 }
+ \\
+ { aes2 f4 fes }
+ \\
+ {
+ \voiceFour
+ \once \override NoteColumn #'force-hshift = #0
+ <ees c>2
+ \once \override NoteColumn #'force-hshift = #0.5
+ des2
}
>> |
<c ees aes c>1 |
zu kompliziert zu machen.
@c This example should not be indexed
-@lilypond[quote,ragged-right]
+@lilypond[quote,ragged-right,line-width=5.5\in]
rhMusic = \relative c'' {
- r2
- c4.\( g8 |
+ r2 c4.\( g8 |
\once \override Tie #'staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
\mergeDifferentlyHeadedOn
\mergeDifferentlyDottedOn
- bes2.^\markup {\bold "Moderato"} r8
+ bes2.^\markup { \bold "Moderato"} r8
<<
- {c,8[ d fis bes a] | }
+ { c,8 d fis bes a | }
\\
- % Reposition the c2 to the right of the merged note
- {c,8~ \once \override NoteColumn #'force-hshift = #1.0
- % Move the c2 out of the main note column so the merge will work
- \shiftOnn c2}
+ {
+ % Reposition the c2 to the right of the merged note
+ c,8~ \once \override NoteColumn #'force-hshift = #1.0
+ % Move the c2 out of the main note column so the merge will work
+ \shiftOnn c2
+ }
\\
- % Stem on the d2 must be down to permit merging
- {s8 \stemDown \once \override Stem #'transparent = ##t d2}
+ {
+ % Stem on the d2 must be down to permit merging
+ s8 \stemDown
+ \once \override Stem #'transparent = ##t
+ d2
+ }
\\
- {s4 fis4.}
- >>
+ { s4 fis4.}
+ >> |
\mergeDifferentlyHeadedOff
\mergeDifferentlyDottedOff
g2.\)
@code{\score}-Umgebung erstellen. Das ist, was LilyPond
erstellt:
-@lilypond[quote,verbatim,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=5.5\in]
rhMusic = \relative c'' {
r2 c4. g8 |
bes1~ |
bes2. r8
% Start polyphonic section of four voices
<<
- {c,8 d fis bes a | }
+ { c,8 d fis bes a | }
\\
- {c,8~ c2 | }
+ { c,8~ c2 | }
\\
- {s8 d2 | }
+ { s8 d2 | }
\\
- {s4 fis4. | }
- >>
- g2.
+ { s4 fis4. | }
+ >> |
+ g2. |
}
lhMusic = \relative c' {
sind schnell gesetzt, denn sie wurden schon in der
Übung erklärt. Damit haben wir folgendes Notenbild:
-@lilypond[quote,verbatim,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=5.5\in]
rhMusic = \relative c'' {
r2 c4.\( g8 |
bes1~ |
bes2. r8
% Start polyphonic section of four voices
<<
- {c,8[ d fis bes a] | }
+ { c,8 d fis bes a | }
\\
- {c,8~ c2 | }
+ { c,8~ c2 | }
\\
- {s8 d2 | }
+ { s8 d2 | }
\\
- {s4 fis4. | }
- >>
- g2.\)
+ { s4 fis4. | }
+ >> |
+ g2.\) |
}
lhMusic = \relative c' {
Damit ist auch der zweite Takt vollständig:
-@lilypond[quote,verbatim,ragged-right]
+@lilypond[quote,verbatim,ragged-right,line-width=5.5\in]
rhMusic = \relative c'' {
r2 c4.\( g8 |
\once \override Tie #'staff-position = #3.5
bes2. r8
% Start polyphonic section of four voices
<<
- {c,8[ d fis bes a] | }
+ { c,8 d fis bes a | }
\\
- {c,8~ c2 | }
+ { c,8~ c2 | }
\\
- {s8 d2 | }
+ { s8 d2 | }
\\
- {s4 fis4. | }
- >>
- g2.\)
+ { s4 fis4. | }
+ >> |
+ g2.\) |
}
lhMusic = \relative c' {
@cindex Bindebogen, Beispiel zur Veränderung
@cindex staff-position-Eigenschaft, Beispiel
-@lilypond[quote,verbatim,ragged-right]
+@lilypond[quote,verbatim,ragged-right,line-width=5.5\in]
rhMusic = \relative c'' {
r2 c4.\( g8 |
\once \override Tie #'staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
- bes2.^\markup {\bold "Moderato"} r8
+ bes2.^\markup { \bold "Moderato"} r8
\mergeDifferentlyHeadedOn
\mergeDifferentlyDottedOn
% Start polyphonic section of four voices
<<
- {c,8[ d fis bes a] | }
+ { c,8 d fis bes a | }
\\
- {c,8~ c2 | }
+ { c,8~ c2 | }
\\
- {s8 d2 | }
+ { s8 d2 | }
\\
- {s4 fis4. | }
- >>
+ { s4 fis4. | }
+ >> |
\mergeDifferentlyHeadedOff
\mergeDifferentlyDottedOff
- g2.\)
+ g2.\) |
}
lhMusic = \relative c' {
es die Verschmelzung der Ds nicht stört. Das sieht jetzt so
aus:
-@lilypond[quote,verbatim,ragged-right]
+@lilypond[quote,verbatim,ragged-right,line-width=5.5\in]
rhMusic = \relative c'' {
r2 c4.\( g8 |
\once \override Tie #'staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
- bes2.^\markup {\bold "Moderato"} r8
+ bes2.^\markup { \bold "Moderato"} r8
\mergeDifferentlyHeadedOn
\mergeDifferentlyDottedOn
% Start polyphonic section of four voices
<<
- {c,8[ d fis bes a] | }
+ { c,8 d fis bes a | }
\\
- % Move the c2 out of the main note column so the merge will work
- {c,8~ \shiftOnn c2 | }
+ {
+ % Move the c2 out of the main note column so the merge will work
+ c,8~ \shiftOnn c2
+ }
\\
- % Stem on the d2 must be down to permit merging
- {s8 \stemDown d2 | }
+ {
+ % Stem on the d2 must be down to permit merging
+ s8 \stemDown d2
+ }
\\
- {s4 fis4. | }
- >>
+ { s4 fis4. }
+ >> |
\mergeDifferentlyHeadedOff
\mergeDifferentlyDottedOff
- g2.\)
+ g2.\) |
}
lhMusic = \relative c' {
@cindex Notenhals, Beispiel zur Veränderung
@cindex transparent-Eigenschaft, Beispiel
-@lilypond[quote,verbatim,ragged-right]
+@lilypond[quote,verbatim,ragged-right,line-width=5.5\in]
rhMusic = \relative c'' {
- r2
- c4.\( g8 |
+ r2 c4.\( g8 |
\once \override Tie #'staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
- bes2.^\markup {\bold "Moderato"} r8
+ bes2.^\markup { \bold "Moderato"} r8
\mergeDifferentlyHeadedOn
\mergeDifferentlyDottedOn
<<
- {c,8[ d fis bes a] | }
- \\
- % Reposition the c2 to the right of the merged note
- {c,8~ \once \override NoteColumn #'force-hshift = #1.0
- % Move the c2 out of the main note column so the merge will work
- \shiftOnn c2}
+ { c,8 d fis bes
+ % Reposition the c2 to the right of the merged note
+ c,8~ \once \override NoteColumn #'force-hshift = #1.0
+ % Move the c2 out of the main note column so the merge will work
+ \shiftOnn c2
+ }
\\
- % Stem on the d2 must be down to permit merging
- {s8 \stemDown \once \override Stem #'transparent = ##t d2}
+ {
+ % Stem on the d2 must be down to permit merging
+ s8 \stemDown
+ \once \override Stem #'transparent = ##t
+ d2
+ }
\\
{s4 fis4.}
- >>
+ >> |
\mergeDifferentlyHeadedOff
\mergeDifferentlyDottedOff
- g2.\)
+ g2.\) |
}
lhMusic = \relative c' {
@menu
* Andere Benutzung von Optimierungen::
* Variablen für Optimierungen einsetzen::
+* Globale Formatierung::
* Mehr Information::
* Vermeiden von Optimierungen durch langsamere Übersetzung::
* Fortgeschrittene Optimierungen mit Scheme::
sich in der selben befinden,
@lilypond[quote,fragment,relative=2]
-<< { b8~ b8\noBeam }
-\\ { b[ g8] }
->>
+<< { b8~ b8\noBeam } \\ { b[ g8] } >>
@end lilypond
@noindent
<<
{
\once \override Stem #'transparent = ##t
- b8~ b8\noBeam
+ b8~ b\noBeam
}
\\
- { b[ g8] }
+ { b8[ g] }
>>
@end lilypond
{
\once \override Stem #'transparent = ##t
\once \override Stem #'length = #8
- b8~ b8\noBeam
+ b8~ b\noBeam
}
\\
{ b[ g8] }
\once \override Score.MetronomeMark #'transparent = ##t
% Invisible tempo marking to lengthen fermata in MIDI
\tempo 4=80
- a\fermata
+ a4\fermata
% New tempo for next section
\tempo 4=100
- a a a a
+ a4 a a a
}
\layout { }
\midi { }
\once \override Score.MetronomeMark #'stencil = ##f
% Invisible tempo marking to lengthen fermata in MIDI
\tempo 4=80
- a\fermata
+ a4\fermata
% New tempo for next section
\tempo 4=100
- a a a a
+ a4 a a a
}
\layout { }
\midi { }
\revert Lyrics.LyricText #'font-series
}
-global = { \time 4/4 \partial 4 \key c \major}
-SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
-AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e }
-TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
-BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
-VerseOne = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
-VerseTwo = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
-VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
-VerseFour = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
+global = { \key c \major \time 4/4 \partial 4 }
+
+SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
+AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
+TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
+BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
+
+VerseOne = \lyrics {
+ E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
+}
+
+VerseTwo = \lyricmode {
+ O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
+}
+
+VerseThree = \lyricmode {
+ O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
+}
+
+VerseFour = \lyricmode {
+ O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
+}
\score {
\new ChoirStaff <<
\clef "treble"
\new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
\new Voice = "Alto" { \voiceTwo \AltoMusic }
- \new Lyrics \lyricsto "Soprano" { \VerseOne }
- \new Lyrics \lyricsto "Soprano" { \VerseTwo }
+ \new Lyrics \lyricsto "Soprano" { \VerseOne }
+ \new Lyrics \lyricsto "Soprano" { \VerseTwo }
\new Lyrics \lyricsto "Soprano" { \VerseThree }
- \new Lyrics \lyricsto "Soprano" { \VerseFour }
+ \new Lyrics \lyricsto "Soprano" { \VerseFour }
>>
\new Staff <<
\clef "bass"
\new Voice = "Tenor" { \voiceOne \TenorMusic }
- \new Voice = "Bass" { \voiceTwo \BassMusic }
+ \new Voice = "Bass" { \voiceTwo \BassMusic }
>>
>>
}
@end lilypond
+@node Globale Formatierung
+@subsection Globale Formatierung
+@translationof Style sheets
+
+Die Ausgabe von LilyPond kann sehr stark verändert werden, siehe
+zu Einzelheiten @ref{Die Ausgabe verändern}. Aber was ist,
+wenn man mehrere Eingabedateien hat, die die gleichen Anpassungen
+erfahren sollen? Oder wenn Sie einfach nur die Anpassungen von
+der eigentlichen Musik trennen wollen? Das lässt sich recht einfach
+erreichen.
+
+Schauen wir uns ein Beispiel an. Sorgen Sie sich nicht, wenn Sie
+den Abschnitt mit den vielen @code{#()} nicht verstehen. Das wird
+erklärt in @ref{Fortgeschrittene Optimierungen mit Scheme}.
+
+@lilypond[quote,verbatim,ragged-right]
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+\relative c'' {
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
+ \inst "Clarinet"
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
+}
+@end lilypond
+
+Es gibt einige Probleme mit sich überschneidender Ausgabe, die wird
+zurechtgerückt mit den Techniken von @ref{Verschieben von Objekten}.
+Aber jetzt zu den Definitionen von @code{mpdolce} und @code{inst}.
+Sie erstellen die gewünschte Ausgabe, aber wir wollen sie vielleicht
+auch in einem anderen Stück verwenden. Wir könnten sie immer wieder
+kopieren und oben in jedes Stück einfügen, aber das ist sehr aufwändig.
+Dadurch werden die Definitionen auch in der Eingabedatei belassen,
+und ich finde diese @code{#()} irgendwie hässlich. Verstecken
+wir sie also:
+
+@example
+%%% in Datei "definitions.ily" speichern
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+@end example
+
+Diese Datei wir mit dem @code{\include}-Befehl ziemlich weit oben
+in der Datei eingefügt. (Die Erweiterung @code{.ily} wird benutzt,
+um diese Datei als eine eingefügte, inkludierte zu kennzeichnen, die
+man nicht alleinstehend kompilieren kann.) Jetzt ändern wir die
+Noten (in der Datei @file{"music.ly"}).
+
+@c We have to do this awkward example/lilypond-non-verbatim
+@c because we can't do the \include stuff in the manual.
+
+@example
+\include "definitions.ily"
+
+\relative c'' @{
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
+ \inst "Clarinet"
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
+@}
+@end example
+
+@lilypond[quote,ragged-right]
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+\relative c'' {
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
+ \inst "Clarinet"
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
+}
+@end lilypond
+
+Das sieht schon besser aus, aber einige Änderungen könnten wir noch vornehmen.
+Das Glissando ist kaum sichtbar, machen wir es also etwas dicker und
+näher an den Notenkopf. Die Metronombezeichnung soll über dem
+Schlüssel stehen, anstatt über der ersten Note. Und schließlich
+mag mein Kompositionsprofessor keine @qq{C}-Taktangaben, das ändern
+wir also in @qq{4/4}.
+
+Ändern Sie jetzt jedoch nicht @file{music.ly}. Ändern Sie die
+@file{definitions.ily} mit dem Folgenden:
+
+@example
+%%% definitions.ily
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+\layout@{
+ \context @{
+ \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ @}
+ \context @{
+ \Staff
+ \override TimeSignature #'style = #'numbered
+ @}
+ \context @{
+ \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ @}
+@}
+@end example
+
+@lilypond[quote,ragged-right]
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+\layout{
+ \context {
+ \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ }
+ \context {
+ \Staff
+ \override TimeSignature #'style = #'numbered
+ }
+ \context {
+ \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ }
+}
+
+\relative c'' {
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
+ \inst "Clarinet"
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
+}
+@end lilypond
+
+Das sieht besser aus! Aber nehmen wir an, Ich will dieses Stück publizieren.
+Mein Professor mag die @qq{C}-Taktangabe nicht, mir gefällt sie aber sehr
+gut. Kopieren wir also die Datei @file{definitions.ily} nach
+@file{web-publish.ily} und verändern diese. Weil die Noten als PDF
+auf dem Monitor dargestellt werden sollen, wird auch die Notengröße
+global geändert.
+
+@example
+%%% definitions.ily
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+#(set-global-staff-size 23)
+
+\layout@{
+ \context @{
+ \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ @}
+ \context @{
+ \Staff
+ @}
+ \context @{
+ \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ @}
+@}
+@end example
+
+@lilypond[quote,ragged-right]
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+#(set-global-staff-size 23)
+
+\layout{
+ \context { \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ }
+ \context { \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ }
+}
+
+\relative c'' {
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
+ \inst "Clarinet"
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
+}
+@end lilypond
+
+In der Eingabedatei muss jetzt nur noch die Zeile
+@code{\include "definitions.ily"} mit
+@code{\include "web-publish.ily"} ersetzt werden. Das könnte
+man natürlich noch besser machen. Es könnte eine Datei
+@file{definitions.ily} mit allen Definitionen (also
+@code{mpdolce} und @code{inst}) geben, eine Datei
+@file{web-publish.ily}, die nur die @code{\layout}-Veränderung
+enthält und eine Datei @file{university.ily}, die nur die
+Prozedur enthält, die Ausgabe meinem Professor angenehm zu machen.
+Der Anfang von @file{music.ly} würde dann folgendermaßen aussehen:
+
+@example
+\include "definitions.ily"
+
+%%% nur eine der zwei Zeilen auskommentieren!
+\include "web-publish.ily"
+%\include "university.ily"
+@end example
+
+Diese Herangehensweise kann auch schon nützlich sein, wenn man
+nur ein paar Stimmen schreiben will. Ich habe eine ganze Anzahl
+an @qq{Stylesheets} für meine Projekte. Ich fange jede Datei mit
+der Zeile @code{\include "../global.ily"} an, die etwa folgendes
+einbindet:
+
+@example
+%%% global.ily
+\version @w{"@version{}"}
+
+#(ly:set-option 'point-and-click #f)
+
+\include "../init/init-defs.ly"
+\include "../init/init-layout.ly"
+\include "../init/init-headers.ly"
+\include "../init/init-paper.ly"
+@end example
+
+
+
@node Mehr Information
@subsection Mehr Information
@translationof Other sources of information
sie erfordern einige Kenntnis der Scheme-Sprache. Die Warnung
ist hier angebracht, dass des ein gutes technisches Verständnis
oder sehr viel Zeit braucht, um Scheme und diese
-Dateien zu verstehen (siehe auch @ref{Scheme-Übung}).
+Dateien zu verstehen (siehe auch @rextend{Scheme-Übung}).
Wenn Sie sich mit Scheme auskennen, sind hier mögliche
interessante Dateien:
@}
@end example
+@code{keep-inside-line} braucht jedoch sehr viel Berechnungen,
+sodass es sich anbietet, diese Funktion zunächst nicht zu aktivieren
+und erst einzufügen, wenn man die endgültige Version erstellt.
+Auf diese Weise muss man nicht mit der Hand @code{\break}-Befehle
+hinzufügen, um zu vermeiden, dass Text über den rechten Rand der
+Seite hinausragt.
+
@node Fortgeschrittene Optimierungen mit Scheme
@subsection Fortgeschrittene Optimierungen mit Scheme
geschrieben ist, kann direkt in die interne Satzmaschine von LilyPond
eingefügt werden. Natürlich brauchen Sie dazu wenigstens ein
grundlegendes Verständnis von Scheme. Eine Einleitung finden
-Sie in der @ref{Scheme-Übung}.
+Sie in der @rextend{Scheme-Übung}.
Zur Illustration der vielen Möglichkeiten soll gezeigt werden, dass eine
Eigenschaft nicht nur auf eine Konstante, sondern auch auf eine
@lilypond[quote,verbatim,ragged-right]
#(define (color-notehead grob)
- "Color the notehead according to its position on the staff."
- (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
- (case mod-position
- ;; Return rainbow colors
- ((1) (x11-color 'red )) ; for C
- ((2) (x11-color 'orange )) ; for D
- ((3) (x11-color 'yellow )) ; for E
- ((4) (x11-color 'green )) ; for F
- ((5) (x11-color 'blue )) ; for G
- ((6) (x11-color 'purple )) ; for A
- ((0) (x11-color 'violet )) ; for B
- )
- )
-)
+ "Color the notehead according to its position on the staff."
+ (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
+ 7)))
+ (case mod-position
+ ;; Return rainbow colors
+ ((1) (x11-color 'red )) ; for C
+ ((2) (x11-color 'orange )) ; for D
+ ((3) (x11-color 'yellow )) ; for E
+ ((4) (x11-color 'green )) ; for F
+ ((5) (x11-color 'blue )) ; for G
+ ((6) (x11-color 'purple )) ; for A
+ ((0) (x11-color 'violet )) ; for B
+ )))
\relative c' {
% Arrange to obtain color from color-notehead procedure
\override NoteHead #'color = #color-notehead
- c2 c' |
- b4 g8 a b4 c |
- c,2 a' |
- g1 |
-}
-\addlyrics {
- Some -- where o -- ver the Rain -- bow, way up high,
+ a2 b | c2 d | e2 f | g2 a |
}
@end lilypond
Weiter Beispiele, die die Benutzung dieser programmierbaren
-Schnittstelle zeigen, finden sich in @ref{Optimierungen mit Scheme}.
+Schnittstelle zeigen, finden sich in @rextend{Optimierungen mit Scheme}.