[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3 Prostředí a rytci

@translationof Contexts and engravers

Prostředí a rytci („Stempel“) sind in den vorherigen Abschnitten schon aufgetaucht; hier wollen wir uns ihnen nun etwas ausführlicher widmen, denn sie sind sehr wichtig, um Feineinstellungen in der LilyPond-Notenausgabe vornehmen zu können.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3.1 Vysvětlení prostředí

@translationof Contexts explained

Wenn Noten gesetzt werden, müssen viele Elemente zu der Notenausgabe hinzugefügt werden, die im Quellcode gar nicht explizit vorkommen. Vergleichen Sie etwa den Quellcode und die Notenausgabe des folgenden Beispiels:

 
\relative { cis''4 cis2. | a4 a2. | }

[image of music]

Der Quellcode ist sehr kurz und knapp, während in der Notenausgabe Taktlinien, Vorzeichen, ein Schlüssel und eine Taktart hinzugefügt wurden. Während LilyPond den Eingabetext interpretiert, wird die musikalische Information von rechts nach links gelesen, in etwa, wie man eine Partitur von links nach rechts liest. Während das Programm den Code liest, merkt es sich, wo sich Taktgrenzen befinden und für welche Tonhöhen Versetzungszeichen gesetzt werden müssen. Diese Information muss auf mehreren Ebenen gehandhabt werden, denn Versetzungszeichen etwa beziehen sich nur auf ein System, Taktlinien dagegen üblicherweise auf die gesamte Partitur.

Innerhalb von LilyPond sind diese Regeln und Informationshappen in Kontexten (engl. contexts) gruppiert. Der Voice (Stimmen)-Kontext wurde schon vorgestellt. Daneben gibt es noch die Staff (Notensystem-) und Score (Partitur)-Kontexte. Kontexte sind hierarchisch geschichtet um die hierarchische Struktur einer Partitur zu spiegeln. Ein Staff-Kontext kann zum Beispiel viele Voice-Kontexte beinhalten, und ein Score-Kontext kann viele Staff-Kontexte beinhalten.

pictures/context-example

Jeder Kontext hat die Aufgabe, bestimmte Notationsregeln zu erzwingen, bestimmte Notationsobjekte zu erstellen und verbundene Elemente zu ordnen. Der Voice-Kontext zum Beispiel kann eine Vorzeichenregel einführen und der Staff-Kontext hält diese Regel dann aufrecht, um einzuordnen, ob ein Versetzungszeichen gesetzt werden muss oder nicht.

Ein anderes Beispiel: die Synchronisation der Taktlinien ist standardmäßig im Score-Kontext verankert. Manchmal sollen die Systeme einer Partitur aber unterschiedliche Taktarten enthalten, etwa in einer polymetrischen Partitur mit 4/4- und 3/4-Takt. In diesem Fall müssen also die Standardeinstellungen der Score- und Staff-Kontexte verändert werden.

In einfachen Partituren werden die Kontexte implizit erstellt, und es kann sein, dass Sie sich dessen gar nicht bewusst sind. Für etwas größere Projekte, etwa mit vielen Systemen, müssen die Kontexte aber explizit erstellt werden, um sicher zu gehen, dass man auch wirklich die erwünschte Zahl an Systemen in der richtigen Reihenfolge erhält. Wenn Stücke mit spezialisierter Notation gesetzt werden sollen, ist es üblich, die existierenden Kontexte zu verändern oder gar gänzlich neue zu definieren.

Zusätzlich zu den Score, Staff und Voice-Kontexten gibt es noch Kontexte, die zwischen der Partitur- und Systemebene liegen und Gruppen von Systemen kontrollieren. Das sind beispielsweise der PianoStaff und ChoirStaff-Kontext. Es gibt zusätzlich alternative Kontexte für Systeme und Stimmen sowie eigene Kontexte für Gesangstexte, Perkussion, Griffsymbole, Generalbass usw.

Die Bezeichnungen all dieser Kontexte werden von einem oder mehreren englischen Wörtern gebildet, dabei wird jedes Wort mit einem Großbuchstaben begonnen und direkt an das folgende ohne Bindestrich oder Unterstrich angeschlossen, etwa GregorianTranscriptionStaff.

Podívejte se také na

Notationreferenz: (notation)Vysvětlení prostředí section ‘Vysvětlení prostředí’ in Doporučení pro notový zápis.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3.2 Vytvoření prostředí

@translationof Creating contexts

In einer Eingabedatei enthält eine Score-Umgebung (einen Kontext), die mit dem Befehl \score eingeleitet wird, nur einen einzigen musikalischen Ausdruck und mit ihm verknüpft eine Ausgabedefinition (entweder eine \layout- oder eine \midi-Umgebung). Üblicherweise wird der Score-Kontext automatisch von LilyPond erstellt, wenn der musikalische Ausdruck interpretiert wird.

Wenn nur ein System vorhanden ist, kann man es ruhig LilyPond überlassen, auch die Voice- und Staff-Kontexte zu erstellen, aber für komplexere Partituren ist es notwendig, sie mit einem Befehl zu erstellen. Der einfachste Befehl hierzu ist \new. Er wird dem musikalischen Ausdruck vorangestellt, etwa so:

 
\new Typ musikalischer Ausdruck

wobei Typ eine Kontextbezeichnung (wie etwa Staff oder Voice) ist. Dieser Befehl erstellt einen neuen Kontext und beginnt, den muskalischen Ausdruck innerhalb dieses Kontexts auszuwerten.

Pozor: Der \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 score-Umgebung interpretiert wird. Standard-Werte von Kontexteigenschaften, die für einen bestimmten Score gelten sollen, können innerhalb der \layout-Umgebung definiert werden. Siehe změnu vlastností prostředí.

Wir haben schon viele explizite Beispiel gesehen, in denen neue Staff- und Voice-Kontexte erstellt wurden, aber um noch einmal ins Gedächtnis zu rufen, wie diese Befehle benutzt werden, hier ein kommentiertes Beispiel aus dem richtigen Leben:

 
\score {  % start of single compound music expression
  <<  % start of simultaneous staves section
    \time 2/4
    \new Staff {  % create RH staff
      \clef "treble"
      \key g \minor
      \new Voice {  % create voice for RH notes
        \relative {  % start of RH notes
          d''4 ees16 c8.
          d4 ees16 c8.
        }  % end of RH notes
      }  % end of RH voice
    }  % end of RH staff
    \new Staff <<  % create LH staff; needs two simultaneous voices
      \clef "bass"
      \key g \minor
      \new Voice {  % create LH voice one
        \voiceOne
        \relative {  % start of LH voice one notes
          g8 <bes d> ees, <g c>
          g8 <bes d> ees, <g c>
        }  % end of LH voice one notes
      }  % end of LH voice one
      \new Voice {  % create LH voice two
        \voiceTwo
        \relative {  % start of LH voice two notes
          g4 ees
          g4 ees
        }  % end of LH voice two notes
      }  % end of LH voice two
    >>  % end of LH staff
  >>  % end of simultaneous staves section
}  % end of single compound music expression

[image of music]

(Beachten Sie, dass wir hier alle Zeilen, die eine neue Umgebung entweder mit einer geschweiften Klammer ({) oder doppelten spitzen Klammern (<<) öffnen, mit jeweils zwei Leerzeichen, und die entsprechenden schließenden Klammern mit der gleichen Anzahl Leerzeichen eingerückt werden. Dies ist nicht erforderlich, es wird aber zu einem großen Teil die nicht passenden Klammerpaar-Fehler eliminieren und ist darum sehr empfohlen. Es macht es möglich, die Struktur einer Partitur auf einen Blick zu verstehen, und alle nicht passenden Klammern erschließen sich schnell. Beachten Sie auch, dass das untere Notensystem mit eckigen Klammern erstellt wird, denn innerhalb dieses Systems brauchen wir zwei Stimmen, um die Noten darzustellen. Das obere System braucht nur einen einzigen musikalischen Ausdruck und ist deshalb von geschweiften Klammern umschlossen.)

Der \new-Befehl kann einem Kontext auch einen Namen zur Identifikation geben, um ihn von anderen Kontexten des selben Typs zu unterscheiden:

 
\new Typ = Name musikalischer Ausdruck

Beachten Sie den Unterschied zwischen der Bezeichnung des Kontexttyps (Staff, Voice, usw.) und dem Namen, der aus beliebigen Buchstaben bestehen kann und vom Benutzer frei erfunden werden kann. Zahlen und Leerzeichen können auch benutzt werden, in dem Fall muss der Name aber von doppelten Anführungszeichen umgeben werden, also etwa \new Staff = "Mein System 1" musikalischer Ausdruck. Der Name wird benutzt, um später auf genau diesen spezifischen Kontext zu verweisen. Dieses Vorgehen wurde schon in dem Abschnitt zu Gesangstexten angewandt, siehe hlasy a zpěvy.

Podívejte se také na

Notationsreferenz: (notation)Vytvoření prostředí section ‘Vytvoření prostředí’ in Doporučení pro notový zápis.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3.3 Vysvětlení rytců

@translationof Engravers explained

Jedes Zeichen des fertigen Notensatzes von LilyPond wird von einem Engraver (Stempel) produziert. Es gibt also einen Engraver, der die Systeme erstellt, einen, der die Notenköpfe ausgibt, einen für die Hälse, einen für die Balken usw. Insgesamt gibt es über 120 Engraver! Zum Glück braucht man für die meisten Partituren nur ein paar Engraver, und für einfache Partituren muss man eigentlich überhaupt nichts über sie wissen.

Engraver leben und wirken aus den Kontexten heraus. Engraver wie der Metronome_mark_engraver, dessen Aktion und Ausgabe sich auf die gesamte Partitur bezieht, wirken in der obersten Kontextebene – dem Score-Kontext.

Der Clef_engraver (Schlüssel-Stempel) und der Key_engraver (Vorzeichen-Stempel) finden sich in jedem Staff-Kontext, denn unterschiedliche Systeme könnten unterschiedliche Tonarten und Notenschlüssel brauchen.

Der Note_heads_engraver (Notenkopf-Stempel) und der Stem_engraver (Hals-Stempel) befinden sich in jedem Voice-Kontext, der untersten Kontextebene.

Jeder Engraver bearbeitet die bestimmten Objekte, die mit seiner Funktion assoziiert sind, und verwaltet die Eigenschaften dieser Funktion. Diese Eigenschaften, wie etwa die Eigenschaften, die mit Kontexten assoziiert sind, können verändert werden, um die Wirkungsweise des Engravers oder das Erscheinungsbild der von ihm produzierten Elemente in der Partitur zu ändern.

Alle Engraver haben zusammengesetzte Bezeichnung, die aus den (englischen) Wörtern ihrer Funktionsweise bestehen. Nur das erste Wort hat einen Großbuchstaben, und die restlichen Wörter werden mit einem Unterstrich angefügt. Ein Staff_symbol_engraver verantwortet also die Erstellung der Notenlinien, ein Clef_engraver entscheidet über die Art der Notenschlüssel und setzt die entsprechenden Symbole; damit wird gleichzeitig die Referenztonhöhe auf dem Notensystem festgelegt.

Hier die meistgebräuchlichen Engraver mit ihrer Funktion. Sie werden sehen, dass es mit etwas Englischkenntnissen einfach ist, die Funktion eines Engravers von seiner Bezeichnung abzuleiten.

EngraverFunktion
Accidental_engraverErstellt Versetzungszeichen, vorgeschlagene und Warnversetzungszeichen.
Beam_engraverErstellt Balken.
Clef_engraverErstellt Notenschlüssel.
Completion_heads_engraverTeilt Noten in kleiner Werte, wenn sie über die Taktlinie reichen.
Dynamic_engraverErstellt Dynamik-Klammern und Dynamik-Texte.
Forbid_line_break_engraverVerbietet Zeilenumbrüche, solange ein musikalisches Element aktiv ist.
Key_engraverErstellt die Vorzeichen.
Metronome_mark_engraverErstellt Metronom-Bezeichnungen.
Note_heads_engraverErstellt Notenköpfe.
Rest_engraverErstellt Pausen.
Staff_symbol_engraverErsetllt die (standardmäßig) fünf Notenlinien des Systems.
Stem_engraverErstellt die Notenhälse und Tremolos mit einem Hals.
Time_signature_engraverErstellt die Taktartbezeichnung.

Es soll später gezeigt werden, wie die LilyPond-Ausgabe verändert werden kann, indem die Wirkungsweise der Engraver beeinflusst wird.

Podívejte se také na

Referenz der Interna: (internals)Engravers and Performers section ‘Engravers and Performers’ in Doporučení pro vnitřní části.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3.4 Změna vlastností prostředí

@translationof Modifying context properties

Kontexte sind dafür verantwortlich, die Werte bestimmter Kontext-Eigenschaften zu speichern. Viele davon können verändert werden, um die Interpretation der Eingabe zu beeinflussen und die Ausgabe zu verändern. Kontexte werden mit dem \set-Befehl geändert. Er wird in Form

 
\set KontextBezeichnung.eigenschaftsBezeichnung = #Wert

verwendet, wobei KontextBezeichnung üblicherweise Score, Staff oder Voice ist. Der erste Teil kann auch ausgelassen werden; in diesem Fall wird der aktuelle Kontext (üblicherweise Voice) eingesetzt.

Die Bezeichnung von Kontexten-Eigenschaften besteht aus zwei Wörtern, die ohne Unterstrich oder Bindestrich verbunden sind. Alle außer dem ersten werden am Anfang groß geschrieben. Hier einige Beispiele der gebräuchlichsten Kontext-Eigenschaften. Es gibt sehr viel mehr.

eigenschaftsBezeichnungTypFunktionBeispiel-Wert
extraNaturalboolescher WertWenn wahr, werden zusätzliche Auflösungszeichen vor Versetzungszeichen gesetzt.#t, #f
currentBarNumberIntegerSetzt die aktuelle Taktnummer.50
doubleSlursboolescher WertWenn wahr, werden Legatobögen über und unter die Noten gesetzt.#t, #f
instrumentNameTextSetzt die Instrumentenbezeichnung am Anfang eines Systems."Cello I"
fontSizereale ZahlVergrößert oder verkleinert die Schriftgröße.2.4
stanzaTextSetzt den Text zu Beginn einer Strophe."2"

Ein boolescher Wert ist entweder wahr (#t) oder falsch (#f), ein Integer eine positive ganze Zahl, ein Real (reelle Zahl) eine positive oder negative Dezimalzahl, und Text wird in doppelte Anführungszeichen (Shift+2) eingeschlossen. Beachten Sie das Vorkommen des Rautenzeichens (#) an unterschiedlichen Stellen: als Teil eines booleschen Wertes vor dem t oder f, aber auch vor einem Wert in der \set-Befehlskette. Wenn ein boolescher Wert eingegeben werden soll, braucht man also zwei Rautenzeichen, z. B. ##t.

Bevor eine Eigenschaft geändert werden kann, muss man wissen, in welchem Kontext sie sich befindet. Manchmal versteht das sich von selbst, aber in einigen Fällen kann es zunächst unverständlich erscheinen. Wenn der falsche Kontext angegeben wird, wird keine Fehlermeldung produziert, aber die Veränderung wird einfach nicht ausgeführt. instrumentName befindet sich offensichtlich innerhalb von einem Staff-Kontext, denn das Notensystem soll benannt werden. In dem folgenden Beispiel erhält das erste System korrekt die Instrumentenbezeichnung, das zweite aber nicht, weil der Kontext ausgelassen wurde.

 
<<
  \new Staff \relative {
    \set Staff.instrumentName = "Soprano"
    c''2 c
 }
  \new Staff \relative {
    \set instrumentName = "Alto"  % Wrong!
    d'2 d
 }
>>

[image of music]

Denken Sie daran, dass der Standardkontext Voice ist; in dem zweiten \set-Befehl wird also die Eigenschaft instrumentName im Voice-Kontext auf „Alto“, gesetzt, aber weil LilyPond diese Eigenschaft nicht im Voice-Kontext vermutet, passiert einfach gar nichts. Das ist kein Fehler, und darum wird auch keine Fehlermeldung produziert.

Ebenso gibt es keine Fehlermeldung, wenn die Kontext-Bezeichnung falsch geschrieben wird und die Änderung also nicht ausgeführt werden kann. Tatsächlich kann eine beliebige (ausgedachte) Kontextbezeichnung mit dem \set-Befehl eingesetzt werden, genauso wie die, die wirklich existieren. Aber wenn LilyPond diese Bezeichnung nicht zuordnen kann, bewirkt der Befehl einfach gar nichts. Manche Editoren, die Unterstützung für LilyPond-Befehle mitbringen, markieren existierende Kontextbezeichnungen mit einem Punkt, wenn man mit der Maus darüber fährt (wie etwa JEdit mit dem LilyPondTool), oder markieren unbekannte Bezeichnungen anders (wie ConTEXT). Wenn Sie keinen Editor mit LilyPond-Unterstützung einsetzen, wird empfohlen, die Bezeichnungen in der Interna-Referenz zu überprüfen: siehe (internals)Tunable context properties section ‘Tunable context properties’ in Doporučení pro vnitřní části, oder (internals)Contexts section ‘Contexts’ in Doporučení pro vnitřní části.

Die Eigenschaft instrumentName wird erst aktiv, wenn sie in einem Staff-Kontext gesetzt wird, aber manche Eigenschaften können in mehr als einem Kontext benutzt werden. Als Beispiel mag die extraNatural-Eigenschaft dienen, die zusätzliche Erniedrigungszeichen setzt. Die Standardeinstellung ist ##t (wahr) in allen Systemen. Wenn sie nur in einem Staff (Notensystem) auf ##f (falsch) gesetzt wird, wirkt sie sich auf alle Noten in diesem System aus. Wird sie dagegen in der Score-Umgebung gesetzt, wirkt sich das auf alle darin enthaltenen Systeme aus.

Das also bewirkt, dass die zusätzlichen Erniedrigungszeichen in einem System ausgeschaltet sind:

 
<<
  \new Staff \relative {
    ais'2 aes
  }
  \new Staff \relative {
    \set Staff.extraNatural = ##f
    ais'2 aes
  }
>>

[image of music]

während das dazu dient, sie in allen Systemen auszuschalten:

 
<<
  \new Staff \relative {
    ais'2 aes
  }
  \new Staff \relative {
    \set Score.extraNatural = ##f
    ais'2 aes
  }
>>

[image of music]

Ein anderes Beispiel ist die Eigenschaft clefTransposition: wenn sie im Score-Kontext gesetzt wird, ändert sich sofort der Wert der Oktavierung in allen aktuellen Systemen und wird auf einen neuen Wert gesetzt, der sich auf alle Systeme auswirkt.

Der gegenteilige Befehl, \unset, entfernt die Eigenschaft effektiv wieder von dem Kontext: in den meisten Fällen wird der Kontext auf ihre Standardeinstellungen zurückgesetzt. Normalerweise wird aber \unset nicht benötigt, denn ein neues \set erledigt alles, was man braucht.

Die \set- und \unset-Befehle könne überall im Eingabequelltext erscheinen und werden aktiv von dem Moment, an dem sie auftreten bis zum Ende der Partitur oder bis die Eigenschaft mit \set oder \unset neu gesetzt wird. Versuchen wir als Beispiel, die Schriftgröße mehrmals zu ändern, was sich unter anderem auf die Notenköpfe auswirkt. Die Änderung bezieht sich immer auf den Standard, nicht vom letzten gesetzten Wert.

 
\relative {
  c'4 d
  % make note heads smaller
  \set fontSize = #-4
  e4 f |
  % make note heads larger
  \set fontSize = #2.5
  g4 a
  % return to default size
  \unset fontSize
  b4 c |
}

[image of music]

Wir haben jetzt gesehen, wie sich die Werte von unterschiedlichen Eigenschaften ändern lassen. Beachten Sie, dass Integer und Zahlen immer mit einem Rautenzeichen beginnen, während die Werte wahr und falsch (mit ##t und ##f notiert) immer mit zwei Rauten beginnen. Eine Eigenschaft, die aus Text besteht, muss in doppelte Anführungsstriche gesetzt werden, auch wenn wir später sehen werden, dass Text auf eine sehr viel allgemeinere und mächtigere Art mit dem \markup-Befehl eingegeben werden kann.

Kontexteigenschaften mit \with setzen

Die Standardwerte von Kontexteigenschaften können zu dem Zeitpunkt definiert werden, an welchem der Kontext erstellt wird. Manchmal ist das eine saubere Weise, eine Eigenschaft zu bestimmen, die für die gesamte Partitur erhalten bleichen soll. Wenn ein Kontext mit einem \new-Befehl erstellt wird, können in einer direkt folgenden \with { .. }-Umgebung die Eigenschaften bestimmt werden. Wenn also die zusätzlichen Auflösungszeichen für eine ganze Partitur gelten sollen, könnte man schreiben:

 
\new Staff \with { extraNatural = ##f }

etwa so:

 
<<
  \new Staff
    \relative {
      gis'4 ges aes ais
    }
  \new Staff \with { extraNatural = ##f } {
    \relative {
      gis' ges aes ais
    }
  }
>>

[image of music]

Eigenschaften, die auf diese Arte gesetzt werden, können immer noch dynamisch mit dem \set-Befehl geändert werden und mit \unset auf ihre Standardeinstellungen zurückgesetzt werden, wie sie vorher in der \with-Umgebung definiert wurden.

Wenn also die fontSize-Eigenschaft in einer \with-Umgebung definiert wird, wird der Standardwert für die Schriftgröße festgelegt. Wenn dieser Wert später mit \set verändert wird, kann dieser neue Standardwert mit dem Befehl \unset fontSize wieder erreicht werden.

Kontexteigenschaften mit \context setzen

Die Werte von Kontext-Eigenschaften können in allen Kontexten eines bestimmten Typs (etwa alle Staff-Kontexte) gleichzeitig mit einem Befehl gesetzt werden. Der Kontext wird spezifiziert, indem seine Bezeichnung benutzt wird, also etwa Staff, mit einem Backslash davor: \Staff. Der Befehl für die Eigenschaft ist der gleiche, wie er auch in der \with-Konstruktion benutzt wird, wie oben gezeigt. Er wird in eine \context-Umgebung eingebettet, welche wiederum innerhalb von einer \layout-Umgebung steht. Jede \context-Umgebung wirkt sich auf alle Kontexte dieses Types aus, welche sich in der aktuellen Partitur befinden (d. h. innerhalb einer \score- oder \book-Umgebung). Hier ist ein Beispiel, wie man diese Funktion anwendet:

 
\score {
  \new Staff {
    \relative {
      cis''4 e d ces
    }
  }
  \layout {
    \context {
      \Staff
      extraNatural = ##t
    }
  }
}

[image of music]

Wenn die Veränderung der Eigenschaft sich auf alle Systeme einer score-Umgebung beziehen soll:

 
\score {
  <<
    \new Staff {
      \relative {
        gis'4 ges aes ais
      }
    }
    \new Staff {
      \relative {
        gis'4 ges aes ais
      }
    }
  >>
  \layout {
    \context {
      \Score extraNatural = ##f
    }
  }
}

[image of music]

Kontext-Eigenschaften, die auf diese Weise gesetzt werden, können für bestimmten Kontexte überschrieben werden, indem die \with-Konstruktion eingesetzt wird, oder mit \set-Befehlen innerhalb der aktuellen Noten.

Podívejte se také na

Notationsreferenz: (notation)Die Standardeinstellungen von Kontexten ändern section ‘Die Standardeinstellungen von Kontexten ändern’ in Doporučení pro notový zápis, (notation)Der set-Befehl section ‘Der set-Befehl’ in Doporučení pro notový zápis.

Referenz der Interna: (internals)Contexts section ‘Contexts’ in Doporučení pro vnitřní části, (internals)Tunable context properties section ‘Tunable context properties’ in Doporučení pro vnitřní části.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3.5 Přidání a odstranění rytců

@translationof Adding and removing engravers

Wir haben gesehen, dass jeder Kontext eine Anzahl an Engravern (Stempeln) beinhaltet, von denen ein jeder einen bestimmten Teil des fertigen Notensatzes produziert, wie z. B. Taktlinien, Notenlinien, Notenköpfe, Hälse usw. Wenn ein Engraver aus einem Kontext entfernt wird, kann er seine Objekte nicht länger produzieren. Das ist eine eher grobe Methode, die Notenausgabe zu beeinflussen, aber es kann von großem Nutzen sein.

Einen einzelnen Kontext verändern

Um einen Engraver von einem einzelnen Kontext zu entfernen, wir der \with-Befehl eingesetzt, direkt hinter den Befehl zur Kontext-Erstellung geschrieben, wie in dem vorigen Abschnitt gezeigt.

Als ein Beispiel wollen wir das Beispiel aus dem letzten Abschnitt produzieren, aber die Notenlinien entfernen. Erinnern Sie sich, dass die Notenlinien vom Staff_symbol_engraver erstellt werden.

 
\new Staff \with {
  \remove "Staff_symbol_engraver"
}
\relative {
  c'4 d
  \set fontSize = #-4  % make note heads smaller
  e4 f |
  \set fontSize = #2.5  % make note heads larger
  g4 a
  \unset fontSize  % return to default size
  b4 c |
}

[image of music]

Engraver können auch zu einem bestimmten Kontext hinzugefügt werden. Dies geschieht mit dem Befehl

\consists Engraver_bezeichnung

welcher auch wieder innerhalb der \with-Umgebung gesetzt wird. Einige Chorpartituren zeigen einen Ambitus direkt zu Beginn der ersten Notenzeile, um den Stimmumfang des Stückes anzuzeigen, siehe auch (music-glossary)ambitus section ‘ambitus’ in Slovníček. Der Ambitus wird vom Ambitus_engraver erstellt, der normalerweise in keinem Kontext enthalten ist. Wenn wir ihn zum Voice-Kontext hinzufügen, errechnet er automatisch den Stimmumfang für diese einzelne Stimme und zeigt ihn an:

 
\new Staff <<
  \new Voice \with {
    \consists "Ambitus_engraver"
  } {
    \relative {
      \voiceOne
      c''4 a b g
    }
  }
  \new Voice {
    \relative {
      \voiceTwo
      c'4 e d f
    }
  }
>>

[image of music]

wenn wir den Ambitus-Engraver allerdings zum Staff-Kontext hinzufügen, wird der Stimmumfang aller Stimmen in diesem Notensystem errechnet:

 
\new Staff \with {
  \consists "Ambitus_engraver"
}
<<
  \new Voice {
    \relative {
      \voiceOne
      c''4 a b g
    }
  }
  \new Voice {
    \relative {
      \voiceTwo
      c'4 e d f
    }
  }
>>

[image of music]

Alle Kontexte des gleichen Typs verändern

Die vorigen Beispiele zeigen, wie man Engraver in einem bestimmten Kontext hinzufügen oder entfernen kann. Es ist auch möglich, Engraver in jedem Kontext eines bestimmten Typs hinzuzufügen oder zu entfernen. Dazu werden die Befehle in dem entsprechenden Kontext in einer \layout-Umgebung gesetzt. Wenn wir also z. B. den Ambitus für jedes Notensystem in einer Partitur mit vier Systemen anzeigen wollen, könnte das so aussehen:

 
\score {
  <<
    \new Staff {
      \relative {
        c''4 a b g
      }
    }
    \new Staff {
      \relative {
        c'4 a b g
      }
    }
    \new Staff {
      \clef "G_8"
      \relative {
        c'4 a b g
      }
    }
    \new Staff {
      \clef "bass"
      \relative {
        c4 a b g
      }
    }
  >>
  \layout {
    \context {
      \Staff
      \consists "Ambitus_engraver"
    }
  }
}

[image of music]

Die Werte der Kontext-Eigenschaften können auch für alle Kontexte eines bestimmten Typs auf die gleiche Weise geändert werden, indem der \set-Befehl in einer \context-Umgebung angewendet wird.

Podívejte se také na

Notationsreferenz: (notation)Umgebungs-Plugins verändern section ‘Umgebungs-Plugins verändern’ in Doporučení pro notový zápis, (notation)Die Standardeinstellungen von Kontexten ändern section ‘Die Standardeinstellungen von Kontexten ändern’ in Doporučení pro notový zápis.

Známé potíže a upozornění

Die Stem_engraver und Beam_engraver fügen ihre Objekte an Notenköpfe an. Wenn der Note_heads_engraver entfernt wird, werden keine Notenköpfe erstellt und demzufolge auch keine Hälse oder Bögen dargestellt.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by gub on July 13, 2020 using texi2html 1.82.

Jiné jazyky: English, català, deutsch, español, français, magyar, italiano, 日本語, nederlands.
O automatickém výběru řeči.