Hallo allen!
Das kleine Skript
\version "2.23.2"
\new Voice { c''2
\mark \markup{ \hspace #2 \box \fontsize #-2
\combine
\number "3"
\translate #'(1.6 . 1.1)
\musicglyph "accidentals.sharp"}
cis'' }
setzt mir 3# in einem Kasten als Marke über die Notenlinie.
Ich hätte gerne eine Funktionsdefinition, so dass ich die Marke durch "\kreuz 3" setzen kann.
Gruß Erich
So auf die Schnelle
#(define-markup-command (kreuz layout props ziffer)
(string?)
(interpret-markup layout props
#{
\markup {
\hspace #2 \box \fontsize #-2
\combine
\number $ziffer
\translate #'(1.6 . 1.1)
\musicglyph "accidentals.sharp"
}
#}
))
\new Voice {
\mark \markup {
\hspace #2 \box \fontsize #-2
\combine
\number "3"
\translate #'(1.6 . 1.1)
\musicglyph "accidentals.sharp"
}
c''2
\mark \markup \kreuz "4"
cis''
}
Wahlweise könnte man noch die verschiedenen Größen wie Schriftgröße etc. als variable Parameter definieren.
Hier gibt es eine ausführlichere Dokumentation: 2.5.3 Neue Definitionen von Beschriftungsbefehlen (http://lilypond.org/doc/v2.23/Documentation/extending/new-markup-command-definition)
Danke Manuela!
Gibt es nicht auch noch die Möglichkeit statt \mark \markup \kreuz "4" einfach \kreuz 4 zu setzen?
Gruß
Erich
Zitat von: erich am Dienstag, 7. Dezember 2021, 11:49
Gibt es nicht auch noch die Möglichkeit statt \mark \markup \kreuz "4" einfach \kreuz 4 zu setzen?
Auf die Schnelle habe ich keine Idee, vll weiß ja Harm etwas? Man müsste wahrscheinlich die Definition von RehearsalMark finden und analysieren
Update: zu kompliziert gedacht.
Das funktioniert aber (noch) nicht richtig:
kreuz =
#(define-scheme-function (ziffer) (string?)
#{
\mark \markup \box { \number $ziffer }
#}
)
\relative c' { c2 c4\kreuz "3" }
Ich kriege eine Fehlermeldung
Warnung: Unendlich oder nan in Ausgabe gefunden. Wird durch 0.0 ersetzt
und die Notenlinien sind verschwunden
Zitat von: Manuelavll weiß ja Harm etwas?
Ich würde eine music-function nehmen, keine scheme-function, aber ansonsten geht Dein Code völlig in Ordnung.
Das es im Beispiel nicht funktioniert liegt an:
https://gitlab.com/lilypond/lilypond/-/issues/4826 (https://gitlab.com/lilypond/lilypond/-/issues/4826)
Aber meistens kommt nach der RehearsalMark noch etwas Platz forderndes, mindestens ein Schlußtaktstrich, dann klappt es.
Gruß,
Harm
Danke Harm. Sobald ich noch eine Note nach dem RehearsalMark einfüge, klappt es, auch als scheme-function
Zitatklappt [...] auch als scheme-function
Ja, aber nenn' es Code-Hygiene, die Funktion gibt music zurück, also music-function.
Natürlich gibt es eine scheme-Repräsentation von music ... aber das auszudiskutieren halte ich nicht für lohnenswert. ;)
Gruß,
Harm
Ok, danke für den Hinweis.