Autor Thema: \override  (Gelesen 2244 mal)

DocTaxon

  • Member
\override
« am: Sonntag, 5. Mai 2013, 18:36 »
Hi! Immer wieder bleibe ich am override hängen. Wie baut man den Befehl eigentlich auf, wo kann ich da was nachlesen, die Lilypond Dokumentation hilft mir nicht bis zum Endergebnis weiter.

laut: http://lilypond.org/doc/v2.17/Documentation/internals/barnumber

\override Voice.BarNumber.font-size = #-1

da ist ein Fehler drin, aber welcher. Die font-size der BarNumber will ich ändern. Eigentlich nur zur Übung, denn eigentlich möchte ich die BarNumber kursiv darstellen und sie soll linksbündig am Beginn des Notensystems geschrieben werden und nicht, wie default, vor das Notensystem.

Wer kann mir dabei helfen, und dabei den Aufbau von \override näher erläutern?

Vielen Dank,
Doc Taxon ...

Be-3

  • Member
Re: \override
« Antwort #1 am: Sonntag, 5. Mai 2013, 19:00 »
\override Voice.BarNumber.font-size = #-1

Hallo Doc,

ein wesentlicher Punkt bei \override, der immer gerne für Schwierigkeiten sorgt, ist das Wissen darum, auf welcher "Ebene" die Property geändert werden muß.
In Deinem Fall geht es um die Taktnummern. Die stehen jedoch nicht auf Voice-Ebene, nicht einmal auf Staff-Ebene, sondern auf Score-Ebene. Das kann man in diesem Fall daran erkennen, daß sie nur einmal über der Gesamt-Partiturzeile gedruckt werden.

\override Score.BarNumber.font-size = #-1

würde deshalb funktionieren.
Im \context-Umfeld muß man genauso darauf achten, daß die richtige Ebene angesprochen wird.

Viele Grüße
Torsten

PS: damit das nicht allzu sehr zum Ratespiel wird, hier noch ein kleiner Hinweis:

In der von Dir verlinkten Doku zu BarNumber kannst Du erkennen, daß hier der Engraver  "Bar_number_engraver" zuständig ist. In dessen Dokumentation wiederum ist ganz unten nachzulesen:

Zitat
Bar_number_engraver is part of the following context(s): Score.


Deshalb bleibt es wirkungslos, wenn man BarNumber auf Staff- oder gar Voice-Ebene ändern will.

Gegenbeispiel: Die Takte selbst (BarLine, Engraver "Bar_engraver") ist auf folgenden Ebenen (Contexts) definiert:

Zitat
Bar_engraver is part of the following context(s): DrumStaff, Dynamics, GregorianTranscriptionStaff, KievanStaff, MensuralStaff, PetrucciStaff, RhythmicStaff, Staff, TabStaff and VaticanaStaff.

Deshalb kannst Du BarLine im einem Staff-Kontext beeinflussen, aber auch im übergeordneten Score-Kontext - da gilt die Änderung dann für alle Staves.
« Letzte Änderung: Sonntag, 5. Mai 2013, 19:08 von Be-3 »

DocTaxon

  • Member
Re: \override
« Antwort #2 am: Sonntag, 5. Mai 2013, 19:29 »
Das funktioniert aber nicht,

habe
\override Score.BarNumber.font-size = #-1
in der Voice{}-Ebene, Staff{}-Ebene, GrandStaff{}-Ebene und Score{}-Ebene probiert. Es wurde trotzdem ein pdf kreiert, ohne Änderung der BarNumbers, aber keine midi-Datei. Also, wo ins Script muss man den Befehl reinschreiben?

Und wie kann ich
Zitat
die BarNumber kursiv darstellen und sie soll linksbündig am Beginn des Notensystems geschrieben werden und nicht, wie default, vor das Notensystem.

harm6

  • Member
Re: \override
« Antwort #3 am: Sonntag, 5. Mai 2013, 19:59 »
Hallo Doc,

ich hoffe ich darf Deinen Namen abkürzen ;)

Zitat von: DocTaxon
Das funktioniert aber nicht,
habe
\override Score.BarNumber.font-size = #-1
in der Voice{}-Ebene, Staff{}-Ebene, GrandStaff{}-Ebene und Score{}-Ebene probiert.

Du hast in Deinen posts bislang Version 2.16.0 angegeben, verlinkst aber nach 2.17. Der Befehl oben benutzt ebenfalls 2.17-Syntax.
Falls Du 2.16 benutzt, kann das nicht klappen. Du müßtest aber eine Fehlermeldung bekommen haben.

Zitat von: DocTaxon
die BarNumber kursiv darstellen und sie soll linksbündig am Beginn des Notensystems geschrieben werden und nicht, wie default, vor das Notensystem.

Folgendes Beispiel in 2.16.0 zeigt die entsprechenden Befehle sowohl in der eigentlichen Musik als auch im layout.
Die Angabe im layout ist sicherlich vorzuziehen, da Du ja generelle Änderungen haben möchtest.

\version "2.16.0"

\layout {
\context {
\Score
\override BarNumber #'font-size = #2
\override BarNumber #'font-shape = #'italic
\override BarNumber #'self-alignment-X = #LEFT
}
}

\relative c' {
%\override Score.BarNumber #'font-size = #2
%\override Score.BarNumber #'font-shape = #'italic
%\override Score.BarNumber #'self-alignment-X = #LEFT
\set Score.currentBarNumber = #11
\bar ""
c1
\break
d
}

HTH,
  Harm

DocTaxon

  • Member
Re: \override
« Antwort #4 am: Sonntag, 5. Mai 2013, 20:23 »
ja, ich seh aber kaum einen Unterschied zw.
http://lilypond.org/doc/v2.16/Documentation/internals/barnumber
und
http://lilypond.org/doc/v2.17/Documentation/internals/barnumber

aber Dein Vorschlag funktioniert bestens.

Vielen Dank,
Doc Taxon ...

Be-3

  • Member
Re: \override
« Antwort #5 am: Sonntag, 5. Mai 2013, 21:29 »
ja, ich seh aber kaum einen Unterschied zw.
http://lilypond.org/doc/v2.16/Documentation/internals/barnumber
und
http://lilypond.org/doc/v2.17/Documentation/internals/barnumber

Da ist auch kein Unterschied. :D
Denn das Problem besteht nicht in diesen Auflistungen von Eigenschaften, sondern in der geänderten/erweiterten Syntax, mit der diese Eigenschaften gesetzt werden können.

Die alte Syntax funktioniert überall:
   \override Score.BarNumber #'font-size = #-1

Die neue Syntax funktioniert erst irgendwo ab 2.17.9 (oder schon etwas früher):
   \override Score.BarNumber.font-size = #-1

Viele Grüße
Torsten