Hallo Bernhard,
Torsten ist sooooooooooo gemein, schniiiiieeeeeef

am einfachsten wäre es wohl, eine eigene Stimme für die Breve-Noten einzuführen, dann klappt's auch mit den Bögen.
Das wollte ich doch schreiben.
Wie man dann allerdings den anderen Noten ausweicht, ist ein interessantes Problem und die Berechnung der tatsächlichen Brevis-Länge (die "Korrekturfaktoren"), damit die Noten an der richtigen Stelle der Kadenz stehen, macht auch Spaß.
Das wollte ich auch schreiben.
Vielleicht sollte man ersatzweise einfach die Spielanweisung "Ach, machen Sie doch, was Sie wollen!" einsetzen.
Nun gut, das wollte ich nicht schreiben, stimmt aber.
Außerdem habe ich noch das Markup-Auflösungszeichen über dem b durch \once\set suggestAccidentals = ##t ersetzt.
Genau.
Nichtsdestotrotz kriegst Du jetzt auch meinen Code.
Kein großer Unterschied zu Torsten.
Aus einem mir nicht ersichtlichen Grund hast Du den Zeilenumbruch an eine Stelle gesetzt, die mir nie in den Sinn gekommen wäre. Torsten hat ihn stillschweigend verändert, ich habe ihn beibehalten. Mußt Du selbst entscheiden.
Ich habe noch ein paar andere Tricksereien eingebaut.
Ob Du zur letzten brevis einen Bogen haben willst weiß ich nicht. Ich habs gelassen. Torsten hat gezeigt wie man ihn dann tweaked.
Apropos Bögen tweaken: Der erste Haltebogen sollte auch etwas verändert werden, imho.
Zu diesem Zweck habe ich die alte (2-14-2) Funktion dafür eingefügt.
In 2.16.2 gibts sie (leicht verändert, aber deutlich verbessert) als Standard. Dank an David Nalesnik.
Mit anderen Worten: mach ein upgrade auf die aktuelle stable 2.16.2.
Möglicherweise gibt es in absehbarer Zeit eine weitere stable. Das wäre dann 2.18.
\version "2.14.2"
#(define ((alter-Curve offsets) grob)
;; get default control-points
(let ((coords (ly:tie::calc-control-points grob)))
;; add offsets to default coordinates
(define (add-offsets coords offsets)
(if (null? coords)
'()
(cons
(cons (+ (caar coords) (car offsets))
(+ (cdar coords) (cadr offsets)))
(add-offsets (cdr coords) (cddr offsets)))))
(if (null? offsets)
coords
(add-offsets coords offsets))))
#(define ((shape-tie offsets) grob)
(let* (
;; have we been split?
(orig (ly:grob-original grob))
;; if yes, get the split pieces (our siblings)
(siblings (if (ly:grob? orig)
(ly:spanner-broken-into orig) '() ))
(total-found (length siblings)))
(if (>= total-found 2)
;; shape BROKEN
;; walk through siblings, find index in list
;; and apply offsets from list of offsets:
(let loop ((n 0))
(if (eq? (list-ref siblings n) grob)
;; return altered:
((alter-Curve (list-ref offsets n)) grob)
(if (< n total-found)
(loop (1+ n))
;; end of list -- none found?!
;; return defaults:
((alter-Curve '()) grob))))
;;
;; shape UNBROKEN
((alter-Curve offsets) grob))))
shapeTie =
#(define-music-function (parser location offsets)
(list?)
#{
\once \override Tie #'control-points = #(shape-tie $offsets)
#})
\new Staff <<
\new Voice
\relative c' {
\textLengthOn
s1*0-\markup \with-dimensions #'(-2 . 1) #'(0 . 0) \null
\voiceOne
\slurDown
\override Rest #'staff-position = #0
r8
\textLengthOff
f64[ g cis c,] dis8 r8\fermata
r8 \acciaccatura ees'!8 a,8 r8\fermata
\acciaccatura { ees'!32[ a, f'] } a,8 r8
\acciaccatura { ees'!32[ a, f' a, g ] }
\override AccidentalSuggestion #'avoid-slur = #'inside
\once \set suggestAccidentals = ##t
b!8
r8
\acciaccatura ees!8 a,8 r8
\acciaccatura { a32[ f bes]} a8
r8*4
\bar "" \break
\revert Rest #'staff-position
r8 a32[ d] aes'8 s8 r8 s8
\override Beam #'grow-direction = #RIGHT
\featherDurations #(ly:make-moment 2 3) {
<a, d aes'!>32[ q q q q q q q q q q ]
}
<< { s32 r4 } \\ { s32 r4 } >>
}
\new Voice
\relative c' {
\cadenzaOn
\voiceTwo
\shapeTie #'(0 0 0 -1 0 -1 0 0)
e\breve*7/32~
e\breve*10/16~
e\breve*4/16
c8 r16 ees,8 s8 r8 s8
\override Beam #'grow-direction = #RIGHT
\featherDurations #(ly:make-moment 2 3) {
<ees! c'>32[ q q q q q q q q q q ]
}
#(set-accidental-style 'forget)
s32 b''\breve
#(set-accidental-style 'default)
\bar "||"
\cadenzaOff
}
>>Gruß,
Harm