Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: Glareanus am Montag, 3. Februar 2014, 19:33

Titel: Akzidenzien irgendwo hin setzen
Beitrag von: Glareanus am Montag, 3. Februar 2014, 19:33
Hallo,

ich hab mal wieder ein Problem: Ich setze gerade den Anhang zu einer wiss. Arbeit zu mittelalterlicher Musik. Die Quellen haben die Eigenheit, dass ein Vorzeichen oft weit von der Note, auf die es sich bezieht, entfernt steht. Es kann also auf der Höhe eines c' stehen, obwohl weit und breit kein c' in Sicht ist. Diese Eigenheit soll die Edition auch genau so wiedergeben.

Ich hatte mir da (unter Verwendung von diversen Schnipseln) etwas (vielleicht etwas hanebüchenes) gebastelt, was in der Version 2.16.1 auch wunderbar funktioniert hat (im Grunde: eine Vorschlagsnote mit einem b-durum, vulgo Kreuz, überschreiben):

\version "2.16.1"

AkzidenzH = 
  #(define-music-function
  (parser location note)
  (ly:music?)
  #{
   \grace
   \tweak NoteHead #'stencil #ly:text-interface::print
   \tweak NoteHead #'text
    \markup { \large \musicglyph #"accidentals.sharp" }
    \tweak Stem #'stencil ##t
    #note
  #})
 

\relative c' { c \AkzidenzH f d e c d e c d e}

Leider tuts das in der aktuellen Lilypond-Version 2.18.0 nicht mehr... (auch nicht mit Versions-Angabe 2.16.1)
Was hat sich da geändert? Und: Sehe ich vielleicht den Wald vor lauter Bäumen nicht, und es ginge viel einfacher?

Für jeden Tipp dankbar ist

Bernhard
Titel: Re: Akzidenzien irgendwo hin setzen
Beitrag von: fugenkomponist am Montag, 3. Februar 2014, 20:27
Ab 2.18.0 kann man in Overrides „NoteHead.stencil“ statt „NoteHead #'stencil“ schreiben, in Tweaks muss man es anscheinend. Ich hab außerdem den Stem.stencil noch von ##t nach ##f geändert, was genau sollte ##t da sagen?
\version "2.18.0"

AkzidenzH = 
#(define-music-function
  (parser location note)
  (ly:music?)
  #{
    \grace
    \tweak NoteHead.stencil  #ly:text-interface::print
    \tweak NoteHead.text \markup { \large \musicglyph #"accidentals.sharp" }
    \tweak Stem.stencil ##f
    #note
  #})


\relative c' { c \AkzidenzH f d e c d e c d e}
Edit: Wenn ich das recht erinnere, wird die Schreibweise „NotHead #'stencil“ irgendwann evtl. komplett abgeschafft. Siehe dazu http://lilypond.org/doc/v2.18/Documentation/changes/index.html, da wird auch erwähnt, dass die alte Schreibweise für manche Funktionen wie \overrideProperty nicht mehr geht. Anscheinend gehört \tweak auch dazu.
Titel: Re: Akzidenzien irgendwo hin setzen
Beitrag von: Glareanus am Montag, 3. Februar 2014, 21:36
WOW! Ich hab ja ziemlich fest damit gerechnet, hier eine Lösung zu kriegen - aber so schnell?!?
Den besten Dank dafür!!!

Vielleicht sollte ich noch dazu sagen, dass ich mich als, naja, gelegentlicher Lilypondnutzer mit gelegentlichen exotischen Wünschen eben auch gelegentlich auf dem Schlauch stehe und mich irgendwo in den Handbüchern verheddere...

Nochmal ganz herzliches Dankeschön für die prompte Hilfe!

Bernhard