将八度标记拉伸到小节末尾

stretch octava mark to end of measure

当一个音符有一个八度标记时,标记的结尾就是音符的结尾。对于长音符,视觉效果并不令人满意。我想在小节结束时结束八度标记。

这个例子说明了我的意思:

\score {
    \new PianoStaff
    <<  
        \new Staff {
            \relative c'' {
                \clef treble \time 3/4
                a4 b c | d8 c b4 a | g2.
            }
        }
        \new Staff {
            \relative c {
                \clef bass \time 3/4
                a2.
                \ottava #2
                \set Staff.ottavation = #"15"
                b''2.
                \ottava #0
                c,,2.
            }
        }
    >>
}

这是结果

我宁愿有这个

为了实现这个结果,我添加了一个带有隐藏音符的额外声音,呈现了想要的结果。隐藏的声音迫使八度标记的结尾到第三个音符的结尾。我的问题是:是否有 better/simpler 方法来获得相同的结果?

这是带有 'hidden voice'

的版本
\score {
    \new PianoStaff
    <<  
        \new Staff {
            \relative c'' {
                \clef treble \time 3/4
                a4 b c | d8 c b4 a | g2.
            }
        }
        \new Staff {
            \relative c {
                \clef bass \time 3/4
                a2.
                \ottava #2
                \set Staff.ottavation = #"15"
                <<
                \new Voice { \voiceOne b''2. }
                \new Voice { \voiceTwo  \hideNotes a4 b c  \unHideNotes }
                >>
                \ottava #0
                c,,2.
            }
        }
    >>
}

没有简单/好的方法可以做到这一点。参见 OttavaBracket right endpoint?
我从那里得到的代码是:

\once \override Staff.OttavaBracket.shorten-pair = #'(-1 . -9.5)

对中的哪个位置会影响括号的起点和终点。

 \score {
    \new PianoStaff
    <<  
        \new Staff {
            \relative c'' {
                \clef treble \time 3/4
                a4 b c | d8 c b4 a | g2.
            }
        }
        \new Staff {
            \relative c {
                \clef bass \time 3/4
                a2.
                \ottava #2
                \set Staff.ottavation = #"15"
                \once \override Staff.OttavaBracket.shorten-pair = #'(-1 . -9.5)
                b''2.
                \ottava #0
                c,,2.
            }
        }
    >>
}

更新:
我认为修改你关于隐藏笔记的原始答案对我来说似乎是最好的答案。
将 b 设为值的 1/3 并隐藏和取消隐藏注释有效:
b''2.*1/3 \hideNotes b b \unHideNotes.
代码短于:
\once \override Staff.OttavaBracket.shorten-pair = #'(-1 . -9.5),以及我们都想要的自动行为。

\score {
    \new PianoStaff
    <<  
        \new Staff {
            \relative c'' {
                \clef treble \time 3/4
                a4 b c | d8 c b4 a | g2.
            }
        }
        \new Staff {
            \relative c {
                \clef bass \time 3/4
                a2.
                \ottava #2
                \set Staff.ottavation = #"15"
                b''2.*1/3 \hideNotes b b \unHideNotes % works
                % b''2.*1/3 s s % doesn't work
                \ottava #0
                c,,2.
            }
        }
    >>
}