Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: fugenkomponist am Sonntag, 25. Oktober 2015, 22:35

Titel: \temporary \set
Beitrag von: fugenkomponist am Sonntag, 25. Oktober 2015, 22:35
Hallo allerseits,

mit \temporary \override kann ich ja einen Wert so ändern, dass er beim nächsten \revert nicht auf den Standardwert (wie nach einfachem \override), sondern auf den vorher gültigen zurückgesetzt wird. Sowas hätt ich auch für \set gerne.

Folgender Code
\version "2.19.28"

\markup "Ist:"

{
  b
  \override NoteHead.color = #blue
  \set fontSize = 9
  b
  \temporary \override NoteHead.color = #red
  \temporary \set fontSize = 5
  b
  \revert NoteHead.color
  \unset fontSize
  b
}

\markup "Soll:"

{
  b
  \override NoteHead.color = #blue
  \set fontSize = 9
  b
  \override NoteHead.color = #red
  \set fontSize = 5
  b
  \override NoteHead.color = #blue
  \set fontSize = 9
  b
}
gibt folgende Warnung/tmp/frescobaldi-WbbjDW/tmpmpQuyS/document.ly:11:3: warning: Cannot make PropertySet revertible
 
  \temporary \set fontSize = 5
Es scheint also erstmal nicht zu gehen. Aber warum nicht, ist mir nicht klar. Weiß da jemand was zu? Und hat jemand ne Idee, wie ich trotzdem den gleichen Effekt bekommen kann?

Mein Anwendungsfall ist folgender: Ich hätte gerne eine music- oder event-function \pizz, die ein TextScript erzeugt und das MIDI-Instrument auf "pizzicato strings" setzt. Mit \arco soll wiederum ein TextScript erzeugt und das MIDI-Instrument auf den alten Wert statt den Standard (Klavier) zurückgesetzt werden.

Edit: geeigneteres Beispiel gewählt.
Titel: Re: \temporary \set
Beitrag von: harm6 am Sonntag, 25. Oktober 2015, 23:02
Ich meine David Kastrup hat in diesem Bereich neulich gearbeitet.
Schau mal auf der englischen Liste im Archiv nach, im Moment kann ich mich partout nicht erinneren was und wo es war und ob es wirklich Deinen Fall abdeckt (mann, bin ich müde ...). Im Zweifel frag halt.

Gruß,
  Harm