Hi everyone! I tried to isolate the issue with Tie directions that I posted earlier and I'm fairly confident I've stumbled upon a bug.
Look at the output of this snippet (Sorry for the length, I made it as short as I could)
\version "2.19.80"
\language "english"
\include "oll-core/package.ily"
\loadPackage edition-engraver
\addEdition test
\consistToContexts #edition-engraver Voice
\layout {
\context {
\Score
\time 6/4
\omit TimeSignature
\omit Clef
}
}
forceRebelTie =
#(define-music-function (dir) (ly:dir?)
#{
\override Tie.before-line-breaking =
#(lambda (grob)
(ly:grob-set-property! grob 'direction dir)) #} )
ovA = \once \tieDown
ovB = \once \override Tie.direction = #DOWN
ovC = \once \forceRebelTie #DOWN
formA = \new Staff \with { instrumentName = "All V1" } <<
\new Voice \relative c'' { \voiceOne b~ 4 4~ 4 4~ 4} >>
formB = \new Staff \with { instrumentName = "1V V1" } <<
\new Voice \relative c'' { b~ \voiceOne 4 \oneVoice 4~ \voiceOne 4 \oneVoice 4~ \voiceOne 4 } >>
controlA = \new Staff \with { instrumentName = "No EE" } <<
\new Voice \relative c'' { \voiceOne \ovA b~ 4 4~ 4 4~ 4 } >>
controlB = \new Staff \with { instrumentName = "No EE" } <<
\new Voice \relative c'' { \voiceOne \ovB b~ 4 4~ 4 4~ 4 } >>
controlC = \new Staff \with { instrumentName = "No EE" } <<
\new Voice \relative c'' { \voiceOne \ovC b~ 4 4~ 4 4~ 4 } >>
\markup "Results with \\tieDown"
\editionMod test 1 0 Voice.A \ovA
\editionMod test 1 0 Voice.B \ovA
\score {
\new StaffGroup <<
\formA
\formB
\controlA
>>
}
\markup "Results with \\override Tie.direction"
\editionMod test 1 0 Voice.D \ovB
\editionMod test 1 0 Voice.E \ovB
\score {
\new StaffGroup <<
\formA
\formB
\controlB
>>
}
\markup "Results with ly:grob-set-property!"
\editionMod test 1 0 Voice.G \ovC
\editionMod test 1 0 Voice.H \ovC
\score {
\new StaffGroup <<
\formA
\formB
\controlC
>>
}
\markup "No overrides (default behavior for comparison)"
\score {
\new StaffGroup <<
\formA
\formB
>>
}
seem to have a permanent effect that kicks in after the moment they are used, which is exactly the opposite to what they should do (take effect only in the moment they are called and revert to the previous behavior after). This is very clear when you compare the All V1 Staff with the No EE Staff: the All V1 behaves in the exact opposite way.