| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Interpretation contexts
Dieser Abschnitt erklärt, was Kontexte sind und wie man sie verändern kann.
Handbuch zum Lernen: (learning)Kontexte und Engraver in Abschnitt ‘Kontexte und Engraver’ in Handbuch zum Lernen.
Installierte Dateien: ‘ly/engraver-init.ly’, ‘ly/performer-init.ly’.
Schnipsel: (snippets)Contexts and engravers in Abschnitt ‘Contexts and engravers’ in Schnipsel.
Referenz der Interna: (internals)Contexts in Abschnitt ‘Contexts’ in Referenz der Interna, (internals)Engravers and Performers in Abschnitt ‘Engravers and Performers’ in Referenz der Interna.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Contexts explained
Kontexte sind hierarchisch geordnet:
| Score – der Vater aller Kontexte | ||
| Oberste Kontexte – Container für Systeme | ||
| Mittlere Kontexte – Systeme | ||
| Unterste Kontexte – Stimmen |
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Score - the master of all contexts
Score (Partitur) ist der höchste Notationskontext. Kein anderer Kontext
kann einen Score-Kontext enthalten. Im Normalfall kümmert
sich der Score-Kontext um die Verwaltung der Taktarten und sorgt
dafür, dass Elemente wie Schlüssel und Taktart- oder Tonartbezeichnungen
über die Systeme hinweg aneinander ausgerichtet sind.
Ein Score-Kontext wird eingerichtet, wenn eine
\score {…} oder \layout {…}-Umgebung
interpretiert wird.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Top-level contexts - staff containers
Diese Kontexte fassen Systeme zu Gruppen zusammen und werden darum hier als Systemgruppen bezeichnet (engl. staffgroup).
StaffGroup
Gruppiert Systeme und fügt eine eckige Klammer auf der linken Seite
hinzu. Die Taktstriche der enthaltenen Systeme werden vertikal
miteinander verbunden. StaffGroup besteht nur aus einer Ansammlung
von Systemen mit einer eckigen Klammer zu Beginn der Zeile und
durchgezogenen Taktstriche.
ChoirStaff
Entspricht StaffGroup, außer dass die Taktstriche der enthaltenen
Systeme nicht vertikal miteinander verbunden sind.
GrandStaff
Gruppiert Systeme mit einer geschweiften Klammer zur Linken. Die Taktlinien der enthaltenen Systeme werden vertikal verbunden.
PianoStaff
Entspricht GrandStaff, hat aber zusätzlich Unterstützung für
Instrumentenbezeichnungen zu Beginn jeder Systemgruppe.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Intermediate-level contexts - staves
Diese Kontexte stellen verschiedene Arten einzelner Notationssysteme (engl. staff) dar.
Staff
Kümmert sich um Schlüssel, Taktstriche, Tonarten und Versetzungszeichen.
Er kann Voice-Kontexte enthalten.
RhythmicStaff
Entspricht Staff, aber dient zur Notation von Rhythmen: Tonhöhen
werden ignoriert und die Noten auf einer einzigen Linie ausgegeben.
TabStaff
Ein Kontext um Tabulaturen zu erstellen. Die Standardeinstellung ist eine Gitarrentabulatur mit sechs Notenlinien.
DrumStaff
Ein Kontext zur Notation von Perkussion. Er kann
DrumVoice-Kontexte enthalten.
VaticanaStaff
Entspricht Staff, aber eignet sich besonders zum Notensatz des
Gregorianischen Chorals.
MensuralStaff
Entspricht Staff, aber eignet sich zum Notensatz von Noten in
der Mensuralnotation.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Bottom-level contexts - voices
Stimmen-(Voice-Kontexte initialisieren bestimmte Eigenschaften
und laden bestimmte Engraver. Weil es sich bei Stimmen um die
untersten Kontexte handelt, können sie keine weiteren Kontexte enthalten.
Voice
Entspricht einer Stimme auf einem Notensystem. Der Kontext kümmert sich um die Umsetzung von Noten, Dynamikzeichen, Hälsen, Balken, diversen Texten, Bögen und Pausen. Wenn mehr als eine Stimme pro System benötigt wird, muss dieser Kontext explizit initialisiert werden.
VaticanaVoice
Entspricht Voice, aber eignet sich besonders zum Notensatz
des Gregorianischen Chorals.
MensuralVoice
Entspricht Voice, aber mit Änderungen, um Mensuralnotation
setzen zu können.
Lyrics
Entspricht einer Stimme mit Gesangstext. Kümmert sich um den Satz des Gesangstextes auf einer Zeile.
DrumVoice
Der Stimmenkontext in einem Perkussionssystem.
FiguredBass
Der Kontext, in dem Generalbassziffern (BassFigure-Objekte)
gesetzt werden, die in der \figuremode-Umgebung
notiert werden.
TabVoice
Dieser Stimmenkontext wird in einer Tabulatur (TabStaff-Kontext)
benutzt. Er wird normalerweise implizit erstellt.
CueVoice
Ein Stimmenkontext, der Noten in reduzierter Größe ausgibt und vor allem dazu da ist, Stichnoten zu setzen. Siehe auch Stichnoten formatieren. Wird normalerweise implizit erstellt, wenn Stichnoten gesetzt werden.
ChordNames
Ausgabe von Akkordsymbolen.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Creating and referencing contexts
In Partituren mit einer Stimme und einem System werden die Kontexte normalerweise automatisch erstellt. In komplizierteren Partituren muss man sie aber direkt erstellen. Es gibt drei Möglichkeiten, Kontexte zu erstellen:
\new. Er wird zusammen mit dem
Kontextnamen vor einem musikalischen Ausdruck eingesetzt, etwa
\new Kontext musik. Ausdruck |
wobei Kontext eine Kontextbezeichnung (wie Staff oder
Voice) ist. Dieser Befehl erstellt einen neuen Kontext und
beginnt mit der Auswertung von musik. Ausdruck innerhalb
dieses Kontextes.
Eine praktische Anwendung von \new ist eine Partitur mit vielen
Systemen. Jede Stimme wird auf einem eigenen System notiert, das
mit \new Staff begonnen wird.
<< \new Staff { c4 c } \new Staff { d4 d } >>
Der \new-Befehl kann den Kontext auch benennen:
\new Kontext = ID musik. Ausdruck |
Dieser vom Benutzer definierte Name wird aber auch nur wirklich benutzt, wenn nicht vorher schon der gleiche Name definiert worden ist.
\new-Befehl wird auch mit dem \context-Befehl
ein musikalischer Ausdruck in einen Kontext umgeleitet. Diesem
Kontext wird ein expliziter Name zugewiesen. Die Syntax lautet:
\context Kontext = ID musik. Ausdruck |
Diese Art von Befehl sucht nach einem existierenden Kontext vom Typus Kontext mit der Bezeichnung ID. Wenn ein derartiger Kontext nicht existiert, wird ein neuer Kontext mit der entsprechenden Bezeichnung erstellt. Das ist nützlich, wenn auf den Kontext später zurückverwiesen werden soll. Um etwa Gesangstext zu einer Melodie hinzuzufügen, wird die Melodie in einem bezeichneten Kontext notiert:
\context Voice = "Tenor" musik. Ausdruck |
sodass der Text an den Noten ausgerichtet werden kann:
\new Lyrics \lyricsto "Tenor" Gesangstext |
Eine andere Möglichkeit für bezeichnete Kontexte ist es, zwei unterschiedliche musikalische Ausdrücke in einen Kontext zu verschmelzen. Im nächsten Beispiel werden Artikulationszeichen und Noten getrennt notiert:
Noten = { c4 c4 }
Artik = { s4-. s4-> }
|
Dann werden sie kombiniert, indem sie dem selben Voice-Kontext
zugewiesen werden:
<< \new Staff \context Voice = "A" \Noten \context Voice = "A" \Artik >> |
Durch diesen Mechanismus ist es möglich eine Urtextausgabe zu erstellen, mit der optionalen Möglichkeit, bestimmte zusätzliche Artikulationszeichen zu den gleichen Noten hinzuzufügen und so eine editierte Ausgabe zu erhalten.
\context Kontext musik. Ausdruck |
Dies entspricht dem \context mit = ID, aber hier
wird ein beliebiger Kontext des Typs Kontext gesucht und der
musikalische Ausdruck darin ausgewertet, unabhängig von der Bezeichnung,
die dem Kontext gegeben wurde.
Diese Variante wird bei musikalischen Ausdrücken benutzt, die auf
verschiedenen Ebenen interpretiert werden können. Beispielsweise
der \applyOutput-Befehl (siehe
(extending)Eine Funktion auf alle Layout-Objekte anwenden in Abschnitt ‘Eine Funktion auf alle Layout-Objekte anwenden’ in Extending). Ohne einen
expliziten \context wird die Ausgabe normalerweise einem
Voice-Kontext zugewiesen:
\applyOutput #'Kontext #Funktion % auf Voice anwenden |
Damit aber die Funktion auf Score- oder Staff-Ebene
interpretiert wird, muss folgende Form benutzt werden:
\applyOutput Score #Funktion \applyOutput Staff #Funktion |
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Keeping contexts alive
Kontexte werden normalerweise am ersten musikalischen Moment
beendet, an dem sie nichts mehr zu tun haben. Ein
Voice-Kontext stirbt also sofort, wenn keine Ereignisse
mehr auftreten, Staff-Kontexte sobald alle in ihnen
enthaltenen Voice-Kontexte keine Ereignisse mehr aufweisen
usw. Das kann Schwierigkeiten ergeben, wenn auf frühere
Kontexte verwiesen werden soll, die in der Zwischenzeit schon
gestorben sind, beispielsweise wenn man Systemwechsel mit
\change-Befehlen vornimmt, wenn Gesangstext einer
Stimme mit dem \lyricsto-Befehl zugewiesen wird oder
wenn weitere musikalische Ereignisse zu einem früheren Kontext
hinzugefügt werden sollen.
Es gibt eine Ausnahme dieser Regel: genau ein Voice-Kontext
innerhalb eines Staff-Kontextes oder in einer
<<...>>-Konstruktion bleibt immer erhalten bis zum Ende
des Staff-Kontextes oder der <<...>>-Konstruktion, der ihn einschließt, auch wenn es Abschnitte gibt, in der er nichts zu
tun hat. Der Kontext, der erhalten bleibt ist immer der erste,
der in der ersten enthaltenden {...}-Konstruktion
angetroffen wird, wobei <<...>>-Konstruktionen ignoriert
werden.
Jeder Kontext kann am Leben gehalten werden, indem man sicherstellt
dass er zu jedem musikalischen Moment etwas zu tun hat.
Staff-Kontexte werden am Leben gehalten, indem man sicherstellt,
dass eine der enthaltenen Stimmen am Leben bleibt. Eine Möglichkeit,
das zu erreichen, ist es, unsichtbare Pause zu jeder Stimme
hinzuzufügen, die am Leben gehalten werden soll. Wenn mehrere
Stimmen sporadisch benutzt werden sollen, ist es am sichersten,
sie alle am Leben zu halten und sich nicht auf die Ausnahmeregel
zu verlassen, die im vorigen Abschnitt dargestellt wurde.
Im folgenden Beispiel werden sowohl Stimme A als auch B auf diese Weise für die gesamte Dauer des Stückes am Leben gehalten.
musicA = \relative { d''4 d d d } musicB = \relative { g'4 g g g } keepVoicesAlive = { << \new Voice = "A" { s1*5 } % Keep Voice "A" alive for 5 bars \new Voice = "B" { s1*5 } % Keep Voice "B" alive for 5 bars >> } music = { \context Voice = "A" { \voiceOneStyle \musicA } \context Voice = "B" { \voiceTwoStyle \musicB } \context Voice = "A" { \musicA } \context Voice = "B" { \musicB } \context Voice = "A" { \musicA } } \score { \new Staff << \keepVoicesAlive \music >> }
Das nächste Beispiel zeigt eine Melodie, die zeitweise unterbrochen wird und wie man den entsprechenden Gesangstext mit ihr verknüpfen kann, indem man die Stimme am Leben hält. In wirklichen Situationen würden Begleitung und Melodie natürlich aus mehreren Abschnitten bestehen.
melody = \relative { a'4 a a a } accompaniment = \relative { d'4 d d d } words = \lyricmode { These words fol -- low the mel -- o -- dy } \score { << \new Staff = "music" { << \new Voice = "melody" { \voiceOne s1*4 % Keep Voice "melody" alive for 4 bars } { \new Voice = "accompaniment" { \voiceTwo \accompaniment } << \context Voice = "melody" { \melody } \context Voice = "accompaniment" { \accompaniment } >> \context Voice = "accompaniment" { \accompaniment } << \context Voice = "melody" { \melody } \context Voice = "accompaniment" { \accompaniment } >> } >> } \new Lyrics \with { alignAboveContext = "music" } \lyricsto "melody" { \words } >> }
Eine Alternative, die in manchen Umständen besser geeignet sein kann, ist es, einfach unsichtbare Pausen einzufügen, um die Melodie mit der Begleitung passend auszurichten:
melody = \relative { s1 % skip a bar a'4 a a a s1 % skip a bar a4 a a a } accompaniment = \relative { d'4 d d d d4 d d d d4 d d d d4 d d d } words = \lyricmode { These words fol -- low the mel -- o -- dy } \score { << \new Staff = "music" { << \new Voice = "melody" { \voiceOne \melody } \new Voice = "accompaniment" { \voiceTwo \accompaniment } >> } \new Lyrics \with { alignAboveContext = "music" } \lyricsto "melody" { \words } >> }
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Modifying context plug-ins
Notationskontexte (wie Score oder Staff) speichern
nicht nur Eigenschaften, sie enthalten auch Plugins („engraver“
genannt), die die einzelnen Notationselemente erstellen. Ein
Voice-Kontext enthält beispielsweise einen
Note_heads_engraver, der die Notenköpfe erstellt, und ein
Staff-Kontext einen Key_engraver, der die
Vorzeichen erstellt.
Eine vollständige Erklärung jedes Plugins findet sich in (internals)Engravers and Performers in Abschnitt ‘Engravers and Performers’ in Referenz der Interna. Alle Kontexte sind erklärt in (internals)Contexts in Abschnitt ‘Contexts’ in Referenz der Interna, wobei die in diesem Kontext vorkommenden Engraver aufgelistet sind.
Es kann teilweise nötig sein, diese Engraver umzupositionieren. Das
geschieht, indem man einen neuen Kontext mit \new oder
\context beginnt und ihn dann verändert:
\new context \with {
\consists …
\consists …
\remove …
\remove …
etc.
}
{
..Noten..
}
|
… steht hier für die Bezeichnung des Engravers. \consists
fügt einen Engraver hinzu und \remove entfernt ihn.
Es folgt ein einfaches Beispiel, in dem der
Time_signature_engraver (Engraver für den Takt) und der
Clef_engraver (Engraver für den Schlüssel) aus dem
Staff-Kontext entfernt werden:
<< \new Staff \relative { f'2 g } \new Staff \with { \remove "Time_signature_engraver" \remove "Clef_engraver" } \relative { f'2 g2 } >>
Das zweite Notensystem enthält keine Taktangabe und keinen Notenschlüssel. Das ist eine recht brutale Methode, Objekte zu verstecken, weil es sich auf das gesamte System auswirkt. Diese Methode beeinflusst auch die Platzaufteilung, was erwünscht sein kann. Vielfältigere Methoden, mit denen Objekte unsichtbar gemacht werden können, finden sich in (learning)Sichtbarkeit und Farbe von Objekten in Abschnitt ‘Sichtbarkeit und Farbe von Objekten’ in Handbuch zum Lernen.
Das nächste Beispiel zeigt eine Anwendung in der Praxis. Taktstriche
und Taktart werden normalerweise in einer Partitur synchronisiert. Das
geschieht durch Timing_translator und Default_bar_line_engraver.
Diese Plugins sorgen sich um die Verwaltung der Taktzeiten und die
Stelle innerhalb des Taktes, zu dem eine Note erscheint usw. Indem
man diese Engraver aus dem Score-Kontext in den Staff-Kontext
verschiebt, kann eine Partitur erstellt werden, in welcher
jedes System eine unterschiedliche Taktart hat:
\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 2/4 c4 c c c c c } >> \layout { \context { \Score \remove "Timing_translator" \remove "Default_bar_line_engraver" } } }
Die Reihenfolge, in der die Engraver definiert werden, ist die Reihenfolge, in welcher sie aufgerufen werden, um ihre Verarbeitung vorzunehmen. Normalerweise spielt die Reihenfolge, in welcher die Engraver angegeben werden, keine Rolle, aber in einigen Spezialfällen ist die Reihenfolge sehr wichtig. Das kann beispielsweise vorkommen, wenn ein Engraver eine Eigenschaft erstellt und ein anderer von ihr liest, oder ein Engraver erstellt ein Grob und ein anderer wertet es aus.
Folgende Reihenfolgen müssen beachtet werden:
Bar_engraver muss normalerweise zuerst kommen,
New_fingering_engraver muss vor dem
Script_column_engraver kommen,
Timing_translator muss vor dem Bar_number_engraver
kommen.
Installlierte Dateien: ‘ly/engraver-init.ly’.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Changing context default settings
Kontext- und Grob-Eigenschaften können mit den Befehlen \set
und \override verändert werden, wie beschrieben in
Eigenschaften verändern. Diese Befehle erstellen musikalische
Ereignisse, damit die Veränderungen zum Zeitpunkt der Verarbeitung
in den Noten erscheinen.
Dieser Abschnitt hingegen erklärt, wie man die Standardwerte von Kontext- und Grob-Eigenschaften zum Zeitpunkt, an dem der Kontext erstellt wird, verändert. Es gibt hierzu zwei Möglichkeiten. Die eine verändert die Standardeinstellungen aller Kontexte eines bestimmten Typs, die andere verändert die Standardwerte nur eines bestimmten Kontextes.
| Alle Kontexte des gleichen Typs verändern | ||
| Nur einen bestimmten Kontext verändern | ||
| Rangfolge von Kontextwerten |
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Changing all contexts of the same type
Die Kontexteinstellungen, die standardmäßig in Score, Staff,
Voice und anderen Kontexten eingesetzt werden, können in einer
\context-Umgebung innerhalb einer beliebigen \layout-Umgebung
spezifiziert werden. Die \layout-Umgebung sollte innerhalb der
\score (Partitur) stehen, auf die sie sich bezieht, nach den Noten.
\layout {
\context {
\Voice
[Kontexteinstellungen für alle Voice-Kontexte]
}
\context {
\Staff
[Kontexteinstellungen für alle Staff-Kontexte]
}
}
|
Folgende Einstellungstypen können angegeben werden:
\override-Befehl, aber ohne die Kontextbezeichnung:
\score { \relative { a'4^"Thicker stems" a a a a4 a a\ff a } \layout { \context { \Staff \override Stem.thickness = #4.0 } } }
\score { \relative { a'4^"Smaller font" a a a a4 a a\ff a } \layout { \context { \Staff fontSize = #-4 } } }
\dynamicUp oder ein
musikalischer Ausdruck wie \accidentalStyle dodecaphonic:
\score { \relative { a'4^"Dynamics above" a a a a4 a a\ff a } \layout { \context { \Voice \dynamicUp } \context { \Staff \accidentalStyle dodecaphonic } } }
\with-Umgebung enthält;
zu Details der \with-Umgebung, siehe
Nur einen bestimmten Kontext verändern.
StaffDefaults = \with { fontSize = #-4 } \score { \new Staff { \relative { a'4^"Smaller font" a a a a4 a a a } } \layout { \context { \Staff \StaffDefaults } } }
Befehle, die die Eigenschaften verändern, können in einer \layout-Umgebung
platziert werden, ohne von einer \context-Umgebung eingeschlossen zu werden.
Derartige Einstellungen verhalten sich äquivalet wie Eigenschaftsveränderungen,
die zu jedem Beginn eines bestimmten Kontextes angegeben werden. Wenn kein
Kontext angegeben wird, wird jeder Kontext auf der untersten Ebene
beeinflusst, siehe auch Unterste Kontexte – Stimmen. Die Syntax eines
Befehls zu Einstellung von Eigenschaftseinstellungen in einer \layout-Umgebung
ist die gleiche wie für den Befehl direkt zwischen den Noten geschrieben.
\score { \new Staff { \relative { a'4^"Smaller font" a a a a4 a a a } } \layout { \accidentalStyle dodecaphonic \set fontSize = #-4 \override Voice.Stem.thickness = #4.0 } }
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Changing just one specific context
Die Kontexteigenschaften nur eines bestimmten Kontextes können mit einer
\with-Umgebung geändert werden. Alle anderen Vorkommen des
gleichen Kontexts behalten ihre Standardeinstellungen, möglicherweise
durch Einstellungn in \layout-Umgebungen verändert. Die
\with-Umgebung muss direkt nach dem Befehl \new
Kontext-Typ gesetzt werden:
\new Staff
\with {
[enthält Einstellungen nur für diesen spezifischen Kontext]
} {
...
}
|
Folgende Arten von Einstellungen können angegeben werden:
\override-Befehl, dessen Kontextbezeichnung ausgelassen wird:
\score { \new Staff { \new Voice \with { \override Stem.thickness = #4.0 } { \relative { a'4^"Thick stems" a a a a4 a a a } } } }
\score { << \new Staff { \relative { a'4^"Default font" a a a a4 a a a } } \new Staff \with { fontSize = #-4 } { \relative { a'4^"Smaller font" a a a a4 a a a } } >> }
\dynamicUp
\score { << \new Staff { \new Voice { \relative { a'4^"Dynamics below" a a a a4 a a\ff a } } } \new Staff \with { \accidentalStyle dodecaphonic } { \new Voice \with { \dynamicUp } { \relative { a'4^"Dynamics above" a a a a4 a a\ff a } } } >> }
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Order of precedence
Der Wert einer Eigenschaft, die zu einer bestimmten Zeit aktiv ist, wird wie folgend bestimmt:
\override- oder \set-Befehl in der Eingabe aktiv ist,
wird dieser Wert benützt,
\with-Umgebung zu
Beginn des Kontextes benützt,
\context-Umgebung in der letzten \layout-Umgebung benützt,
Handbuch zum Lernen: (learning)Kontexteigenschaften verändern in Abschnitt ‘Kontexteigenschaften verändern’ in Handbuch zum Lernen.
Notationsreferenz:
Was sind Kontexte?,
Unterste Kontexte – Stimmen,
Der \set-Befehl,
Der \\override-Befehl,
Die \layout-Umgebung.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Defining new contexts
Bestimme Kontexte, wie Staff oder Voice, werden
erstellt, indem man sie mit einer Musikumgebung aufruft. Es ist
aber auch möglich, eigene neue Kontexte zu definieren, in denen
dann unterschiedliche Engraver benutzt werden.
Das folgende Beispiel zeigt, wie man etwa Voice-Kontexte
von Grund auf neu bauen kann. Ein derartiger Kontext ähnelt
Voice, es werden aber nur zentrierte Schrägstriche als
Notenköpfe ausgegeben. Das kann benutzt werden, um Improvisation
in Jazzmusik anzuzeigen.
Diese Einstellungen werden innerhalb der \context-Umgebung
innerhalb der \layout-Umgebung definiert:
\layout {
\context {
…
}
}
|
Der Beispielcode des folgenden Abschnittest muss anstelle der Punkte im vorigen Beispiel eingesetzt werden.
Zuerst ist es nötig eine Bezeichnung für den neuen Kontext zu definieren:
\name ImproVoice |
Weil dieser neue Kontext ähnlich wie Voice ist, sollen die Befehle,
die in Voice-Kontexten funktionieren, auch
in dem neuen Kontext funktionieren. Das wird erreicht, indem der
Kontext als Alias Voice erhält:
\alias Voice |
Der Kontext gibt Noten und Text aus, darum müssen wir die Engraver hinzufügen, die für diese Aktionen zuständig sind:
\consists "Note_heads_engraver" \consists "Text_engraver" |
aber die Noten sollen nur auf der mittleren Linie ausgegeben werden:
\consists "Pitch_squash_engraver" squashedPosition = #0 |
Der Pitch_squash_engraver verändert Notenköpfe (die vom
Note_heads_engraver erstellt werden) und setzt ihre vertikale
Position auf den Wert von squashedPosition, in diesem Fall ist
das die Mittellinie.
Die Noten sehen wie ein Querstrich aus und haben keine Hälse:
\override NoteHead.style = #'slash \hide Stem |
Alle diese Engraver müssen zusammenarbeiten, und das wird erreicht mit
einem zusätzlichen Plugin, das mit dem Befehl \type gekennzeichnet
werden muss. Dieser Typ solle immer Engraver_group lauten:
\type "Engraver_group" |
Alles zusammen haben wir folgende Einstellungen:
\context {
\name ImproVoice
\type "Engraver_group"
\consists "Note_heads_engraver"
\consists "Text_engraver"
\consists "Pitch_squash_engraver"
squashedPosition = #0
\override NoteHead.style = #'slash
\hide Stem
\alias Voice
}
|
Kontexte sind hierarchisch. Wie wollen, dass ImproVoice
sich als Unterkontext von Staff erkennt, wie eine normale
Stimme. Darum wird die Definition von Staff mit dem
\accepts-Befehl verändert:
\context {
\Staff
\accepts ImproVoice
}
|
Das Gegenteil von \accepts ist \denies (verbietet), was
manchmal gebraucht werden kann, wenn schon existierende Kontext-Definitionen
wieder benutzt werden sollen.
Beide Definitionen müssen in die \layout-Umgebung geschrieben
werden:
\layout {
\context {
\name ImproVoice
…
}
\context {
\Staff
\accepts "ImproVoice"
}
}
|
Jetzt kann die Notation zu Beginn des Abschnitts folgendermaßen notiert werden:
\relative {
a'4 d8 bes8
\new ImproVoice {
c4^"ad lib" c
c4 c^"ausziehen"
c c_"während des Spielens :)"
}
a1
}
|
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Context layout order
Kontexte werden in einer Systemgruppe normalerweise von oben nach unten positioniert in der Reihenfolge, wie sie in der Quelldatei auftreten. Wenn Kontext verschachtelt ewrden, enthält der äußere Kontexte geschachtelte innere Kontexte, wie in der Quelldatei angegeben, vorausgesetzt, die inneren Kontexte befinden sich auch in der „accepts“-Liste. Geschachtelte Kontexte, die nicht in dieser „accepts“-Liste enthalten sind, werden unterhalb des äußeren Kontextes neu positioniert, anstatt innerhalb von ihm gesetzt zu werden.
Die „accepts“-Liste eines Kontextes kann mit dem Befehlen
\accepts und \denies verändert werden. \accepts
fügt einen Kontext zur „accepts“-Liste, und \denies
entfernt einen Kontext aus der Liste. Akkordbezeichnungen sollen
beispielsweise normalerweise nicht innerhalb eines Staff-Kontextes
geschachtelt werden, sodass der ChordNames-Kontext nicht
automatisch in der „accepts“-Liste des Staff-Kontextes
geführt ist. Wenn er aber benötigt wird, kann er hinzugefügt werden:
\score { \new Staff { c' d' e' f' \chords { d1:m7 b1:min7.5- } } }
\score { \new Staff { c' d' e' f' \chords { d1:m7 b1:min7.5- } } \layout { \context { \Staff \accepts "ChordNames" } } }
\denies wird vorrangig eingesetzt, wenn ein neuer Kontext
basierend auf einem existierenden erstellt wird, aber sein
Schachtelungsverhalten sich unterscheidet. Der
VaticanaStaff-Kontext beispielsweise basiert auf dem
Staff-Kontext, hat aber den VaticanaVoice-Kontext
anstellt des Voice-Kontexts in seiner „accepts“-Liste.
Zur Erinnerung: ein Kontext wird automatisch erstellt, wenn ein Befehl auftritt, der in den aktuellen Kontexten nicht enthalten sein kann. Dass kann zu unerwarteten neuen Systemgruppen oder Partituren führen.
Manchmal soll ein Kontext nur für einen kurzen Moment existieren, ein gutes Beispiel etwa ein System für ein Ossia. Das wird normalerweise erreicht, indem man die Kontextdefinition an der richtigen Stelle parallel mit dem existierenden Abschnitt der Hauptnoten anlegt. Standardmäßig wird der neue Kontext unter den existierenden Kontexten angelegt. Um ihn aber über dem Kontext mit der Bezeichnung „Hauptstimme“ zu positionieren, sollte er folgenderweise erstellt werden:
\new Staff \with { alignAboveContext = "Hauptstimme" }
|
Eine ähnliche Situation entsteht, wenn man einen zeitweiligen Gesangstext
in einem Layout mit mehreren Notensystemen anlegen und positionieren will,
etwa wenn eine zweite Strophe zu einem wiederholten Abschnitt in einem
ChoirStaff hinzugefügt wird. Standardmäßig wird der neue Text unter
dem untersten System angelegt. Wenn der Gesangstext mit der Eigenschaft
alignBelowContext definiert wird, kann er korrekt unter dem
(bezeichneten) Gesangstext positioniert werden, der die erste Strophe
enthält.
Beispiele, die diese Neuordnung von temporären Kontexten zeigen, finden sich an anderen Stellen; siehe (learning)Musikalische Ausdrücke ineinander verschachteln in Abschnitt ‘Musikalische Ausdrücke ineinander verschachteln’ in Handbuch zum Lernen, Einzelne Systeme verändern und Techniken für die Gesangstextnotation.
Handbuch zum Lernen: (learning)Musikalische Ausdrücke ineinander verschachteln in Abschnitt ‘Musikalische Ausdrücke ineinander verschachteln’ in Handbuch zum Lernen.
Notationsreferenz: Einzelne Systeme verändern, Techniken für die Gesangstextnotation.
Handbuch zur Benutzung: (usage)Ein zusätzliches System erscheint in Abschnitt ‘Ein zusätzliches System erscheint’ in Anwendungsbenutzung.
Installierte Dateien: ‘ly/engraver-init.ly’.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] |
Dieses Dokument wurde erzeugt von gub am 13. Juli 2020 durch texi2html 1.82.
Andere Sprachen: English, català, español, français, italiano, 日本語.
Über die automatische Sprachauswahl.