In deinem Code scheint \override MultiMeasureRest.text = \markup { \musicglyph #"rests.0neomensural" } ja den von mir gewünschten Effekt zu erzielen. Aber was macht die Zeile davor, \override MultiMeasureRest.stencil = #ly:text-interface::print?r
\override MultiMeasureRest.stencil = #ly:text-interface::printwechselt das interface mit dem der stencil für die MMR produziert wird (default ist
ly:multi-measure-rest::print)
Nun ist das
'text-property zugänglich (war es vorher nicht) und man kann mit einfacheren markup-commands den gewünschten output erstellen.
Das funktioniert allerdings nur auf einem sehr direkten Weg. Falls komplexere Sachverhalte berechnet werden müssen ist diese Methode unzulänglich und man muß tiefer in die Internals eintauchen und eingreifen.
So ist es eigentlich auch in der NR beschrieben
http://www.lilypond.org/doc/v2.19/Documentation/notation/modifying-stencils.de.htmlBeide Befehle müssen also zusammen gesetzt werden.
leider scheint es ein Problem zu geben, wenn die Stimme - wie so oft - mit einer Pause beginnt.
Es gibt in der Tat ein Problem hier, das hat aber nichts mit der Pause am Anfang zu tun (unten mehr).
Tatsächlich würde mich interessieren welche Probleme mit Pausen bei Dir aufgetreten sind.
Kannnst Du die mal referieren?
Das eigentliche Problem ist, daß die MMR ein spanner ist. Wenn man den stencil eines spanners überschreibt, wird der neue stencil rechts vom Referenzpunkt gesetzt.
Siehe auch dieses Beispiel für Ties:
\score {
{
c''1~
\break
c''
}
\layout {
%% the spanner-override:
\override Tie.stencil = #ly:text-interface::print
\override Tie.text = \markup { \musicglyph #"rests.0neomensural" }
%% better viewing:
line-width = 20
indent = 0
\override Tie.color = #red
\override Tie.font-size = #2
}
}
Wenn man das nicht will, so muß man selbst dafür Sorge tragen, daß der neue stencil wieder "gespannt" wird. Das ist eigentlich immer ziemlich aufwendig. Aber bei MMRs ist es mir noch
nie zufrieden stellend gelungen. Es muß da noch Faktoren/Summanden geben, die mir bislang entgangen sind. Du kannst ja mal hier im Forum suchen, es gab schon einige Versuche...
Aber eigentlich möchte ich mich Michael anschließen:
Verwende bei Mensuralnotation keine Ganztakpausen
Es ist wider die Musik der Zeit.
Allerdings verstehe ich Dein Bestreben aus einer Variablen heraus alte und neue Notation zu erstellen.
Dazu zwei Vorschläge
(1)
Laß die MMR im default-Stil, aber setze die font-size herab, z.B.:
\tweak font-size #-6 R1*2
oder (2)
Wandle die MMR im MensuralStaff in eine einfache Pause um. Zu diesem Zweck:
\version "2.19.32"
TEXT=\relative c'' {
R1
r2 g4 g
g f8 es d c bes a
bes1
}
mmr-to-rest =
#(define-music-function (mus)(ly:music?)
(music-map
(lambda (m)
(if (eq? (ly:music-property m 'name) 'MultiMeasureRestMusic)
(let ((new-m
(make-music
'RestEvent
'duration
(ly:music-property m 'duration))))
(set! (ly:music-property new-m 'tweaks)
(acons 'font-size 0
(ly:music-property new-m 'tweaks)))
new-m)
m))
mus))
\score {
\new MensuralVoice {
\clef "petrucci-c3"
\mmr-to-rest
\TEXT
}
\layout {
\context {
\MensuralVoice
\override NoteHead.style = #'neomensural
\override Rest.style = #'neomensural
\override NoteHead.font-size = #1.5
\override Stem.thickness = #3.0
}
\context {
\Staff
\override TimeSignature.font-size = #1.125
}
}
}
Falls Dir die Pause noch nicht dick genug ist dann ändere in der Zeile
(acons 'font-size 0
die null zu einem Wert Deiner Wahl.
Allerdings ist die einfache Pause natürlich nicht zentriert. Wie schon gesagt in mensuraler Notation ist das sowieso nicht üblich gewesen. Ansonsten müßtest Du manuell nachhelfen - ob man eine automatisierte procedure anwenden kann hab ich bis jetzt nicht geprüft. Sowohl David Nalesnik als auch meine Wenigkeit haben da mal was gemacht, schau mal in die Archive, oder hab ich das auch hier schon mal gepostet...?
HTH,
Harm
EDIT:
Version im zweiten Code-Beispiel korrigiert