Hallo,
das grundsätzliche Problem liegt in der Tatsache begründet, daß die NoteColumn und ihre NoteHeads nicht das "Eltern"-Objekt für TextScript sind.
Folgender Code liest die "Eltern" aus:
\version "2.16.1"
writeParents =
\override TextScript #'after-line-breaking =
#(lambda (grob)
(let* ((X-parent (ly:grob-parent grob X))
(Y-parent (ly:grob-parent grob Y)))
(display "\n\nX-parent ")(write X-parent)
(display "\nY-parent ")(write Y-parent)
(newline)))
{ \writeParents c''1-"abc" }
Im Terminal kann man dann:
X-parent #<Grob PaperColumn >
Y-parent #<Grob VerticalAxisGroup >
lesen.
Das kann man allerdings mithilfe des von Eluze schon erwähnten LSR-Snippets ändern .
Ich meine allerdings, daß man
\override TextScript #'self-alignment-X = #RIGHTschreiben muß, falls ich Dein Anliegen richtig verstanden habe [1].
Darüberhinaus muß man in \layout \Voice durch \DrumVoice ersetzen oder Modifikationen für \DrumVoice hinzufügen (so hab ich es gemacht):
\version "2.16.1"
% LSR-snippet 637
% http://lsr.dsi.unimi.it/LSR/Item?id=637
#(define (Text_align_engraver ctx)
(let ((scripts '())
(note-column #f))
`((acknowledgers
(note-column-interface
. ,(lambda (trans grob source)
;; cache NoteColumn in this Voice context
(set! note-column grob)))
(text-script-interface
. ,(lambda (trans grob source)
;; whenever a TextScript is acknowledged,
;; add it to `scripts' list
(set! scripts (cons grob scripts)))))
(stop-translation-timestep
. ,(lambda (trans)
;; if any TextScript grobs exist,
;; set NoteColumn as X-parent
(and (pair? scripts)
(for-each (lambda (script)
(set! (ly:grob-parent script X) note-column))
scripts))
;; clear scripts ready for next timestep
(set! scripts '()))))))
\layout {
\context {
\Voice
\consists #Text_align_engraver
\override TextScript #'X-offset =
#ly:self-alignment-interface::aligned-on-x-parent
\override TextScript #'self-alignment-X = #RIGHT
}
\context {
\DrumVoice
\consists #Text_align_engraver
\override TextScript #'X-offset =
#ly:self-alignment-interface::aligned-on-x-parent
\override TextScript #'self-alignment-X = #RIGHT
}
}
\new Staff
\relative c'' {
<c d e>1^"XYxyxyxyxyxyxy"
}
\new DrumVoice
\drummode {
hh4^"xyxyxyxyxyxyxy"
}
Gruß,
Harm
[1] Bitte poste immer ein kurzes, kompilierbares Beispiel mit Versionsangabe.