In
diesem Thread geht es um Zitate, die Zitate zitieren, was in LilyPond leider nicht einfach so funktioniert. Eine Möglichkeit, die genannt wurde, war, mit
ly:score-music und
scorify-music zu arbeiten. Ich dachte mir, vielleicht könnte ein ähnlicher Ansatz auch hier helfen. Tut er aber nicht.
\version "2.19.22"
\include "articulate.ly"
foo = \relative {
c'1 |
g' |
}
\addQuote "foo" \foo
baz = \relative {
c''1 |
\quoteDuring "foo" s1 |
}
\markup "ganz normaler score << \foo \baz >>:"
<<
\foo
\baz
>>
\markup "\articulate auf den score geschmissen artikuliert keine Zitate:"
\articulate <<
\foo
\baz
>>
\markup "\articulate \foo:"
\displayMusic \articulate \foo
\markup "\articulate #(ly:score-music (scorify-music foo)) geht schon kaputt ohne Zitate:"
\displayMusic \articulate #(ly:score-music (scorify-music foo))
\markup "Merkwürdigerweise sind beide Ausgaben von \display*Lily*Music der letzten beiden Beispiele gleich."Es gehen Pausen verloren und die barchecks gehen schief. Wenn man jetzt noch kleinere Notenwerte verwendet und an
ac:normalFactor, dem Faktor, auf den normale Noten verkürzt werden, dreht (per
#(define ac:normalFactor '(1 . 2)) o. ä.), dann sieht man, dass sich da auch einiges im Notenbild tut, es gehen sogar Noten verloren.
Hier mal ein diff (mit Option -y) der beiden \displayMusic-Ausgaben:
(make-music (make-music
'RelativeOctaveMusic 'RelativeOctaveMusic
> 'length
> (ly:make-moment 2)
'element 'element
(make-music (make-music
'SequentialMusic 'SequentialMusic
> 'length
> (ly:make-moment 2)
'elements 'elements
(list (make-music (list (make-music
'SequentialMusic 'SequentialMusic
'elements 'elements
(list (make-music (list (make-music
'EventChord 'EventChord
'elements 'elements
(list (make-music (list (make-music
'NoteEvent 'NoteEvent
> 'length
> (ly:make-moment 1)
'duration 'duration
(ly:make-duration 0 0 7/8) (ly:make-duration 0 0 7/8)
'pitch 'pitch
(ly:make-pitch 0 0)))) (ly:make-pitch 0 0))))
(make-music (make-music
'EventChord 'EventChord
'elements 'elements
(list (make-music (list (make-music
'RestEvent 'RestEvent
'duration 'duration
(ly:make-duration 0 0 1/8)))))) (ly:make-duration 0 0 1/8))))))
(make-music (make-music
'SequentialMusic 'SequentialMusic
'elements 'elements
(list (make-music (quote BarCheck)))) | (list (make-music
> 'BarCheck
> 'length
> (ly:make-moment 0))))
(make-music (make-music
'SequentialMusic 'SequentialMusic
'elements 'elements
(list (make-music (list (make-music
'EventChord 'EventChord
'elements 'elements
(list (make-music (list (make-music
'NoteEvent 'NoteEvent
> 'length
> (ly:make-moment 1)
'pitch 'pitch
(ly:make-pitch 0 4) (ly:make-pitch 0 4)
'duration 'duration
(ly:make-duration 0 0 7/8)))) (ly:make-duration 0 0 7/8))))
(make-music (make-music
'EventChord 'EventChord
'elements 'elements
(list (make-music (list (make-music
'RestEvent 'RestEvent
'duration 'duration
(ly:make-duration 0 0 1/8)))))) (ly:make-duration 0 0 1/8))))))
(make-music (make-music
'SequentialMusic 'SequentialMusic
'elements 'elements
(list (make-music (quote BarCheck))))))) | (list (make-music
> 'BarCheck
> 'length
> (ly:make-moment 0)))))))
Es scheint so, als würden da irgendwie noch
length-Eigenschaften festgesetzt während des
ly:scorify-music. Mir ist jetzt nicht ganz klar, was
length und
duration tun; kann es sein, dass
length die Länge bis zum nächsten Event und
duration die Länge des aktuellen Events ist? Falls ja, wäre dieser Ansatz ja von vorneherein zum Scheitern verurteilt, oder?