将八度标记拉伸到小节末尾
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.
}
}
>>
}
当一个音符有一个八度标记时,标记的结尾就是音符的结尾。对于长音符,视觉效果并不令人满意。我想在小节结束时结束八度标记。
这个例子说明了我的意思:
\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.
}
}
>>
}