Autor Thema: markup funktion  (Gelesen 247 mal)

erich

  • Full Member
  • ***
  • Beiträge: 222
markup funktion
« am: Montag, 6. Dezember 2021, 15:28 »
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
« Letzte Änderung: Montag, 6. Dezember 2021, 16:27 von erich »

Manuela

  • Hero Member
  • *****
  • Beiträge: 663
    • Manuelas Lilypond Wiki
Antw:markup funktion
« Antwort #1 am: Dienstag, 7. Dezember 2021, 09:19 »
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
« Letzte Änderung: Dienstag, 7. Dezember 2021, 09:22 von Manuela »
Danke für eure Hilfe
viele Grüße
-- Manuela

erich

  • Full Member
  • ***
  • Beiträge: 222
Antw:markup funktion
« Antwort #2 am: Dienstag, 7. Dezember 2021, 11:49 »
Danke Manuela!

Gibt es nicht auch noch die Möglichkeit statt  \mark \markup \kreuz "4" einfach  \kreuz 4 zu setzen?

Gruß
Erich

Manuela

  • Hero Member
  • *****
  • Beiträge: 663
    • Manuelas Lilypond Wiki
Antw:markup funktion
« Antwort #3 am: Dienstag, 7. Dezember 2021, 12:24 »
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
« Letzte Änderung: Dienstag, 7. Dezember 2021, 12:47 von Manuela »
Danke für eure Hilfe
viele Grüße
-- Manuela

harm6

  • Hero Member
  • *****
  • Beiträge: 975
Antw:markup funktion
« Antwort #4 am: Donnerstag, 9. Dezember 2021, 10:34 »
Zitat von: Manuela
vll 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

Aber meistens kommt nach der RehearsalMark noch etwas Platz forderndes, mindestens ein Schlußtaktstrich, dann klappt es.

Gruß,
  Harm

Manuela

  • Hero Member
  • *****
  • Beiträge: 663
    • Manuelas Lilypond Wiki
Antw:markup funktion
« Antwort #5 am: Donnerstag, 9. Dezember 2021, 15:03 »
Danke Harm. Sobald ich noch eine Note nach dem RehearsalMark einfüge, klappt es, auch als scheme-function
Danke für eure Hilfe
viele Grüße
-- Manuela

harm6

  • Hero Member
  • *****
  • Beiträge: 975
Antw:markup funktion
« Antwort #6 am: Donnerstag, 9. Dezember 2021, 21:29 »
Zitat
klappt [...] 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

Manuela

  • Hero Member
  • *****
  • Beiträge: 663
    • Manuelas Lilypond Wiki
Antw:markup funktion
« Antwort #7 am: Freitag, 10. Dezember 2021, 11:40 »
Ok, danke für den Hinweis.
Danke für eure Hilfe
viele Grüße
-- Manuela