在为录音机(长笛)编写Lilypond乐谱时,我希望我可以通过改变其颜色来自动标记音高超出乐器范围的音符。
例如,对于低音乐器,所有低于f的绝对音高和高于g''的所有音高都被涂成红色。高音,高音和女高音乐器也是如此。
我在coloring notes上发现了一个有用的问题,但仍有一段我无法编写的代码:
#(define (ambitus-notehead-alt grob)
( **code_i_cannot_write** )
#(define (ambitus-notehead-tenor grob)
( **code_i_cannot_write** )
#(define (ambitus-notehead-bass grob)
( **code_i_cannot_write** )
\score {
\new Staff \relative c' {
\override NoteHead #'color = #ambitus-notehead-alt
\music_altrecorder
}
\new Staff \relative c' {
\override NoteHead #'color = #ambitus-notehead-tenor
\music_tenorrecorder
}
\new Staff \relative c' {
\override NoteHead #'color = #ambitus-notehead-bass
\music_bassrecorder
}
}
答案 0 :(得分:1)
这是一个可以满足您需要的功能:
\version "2.19.82"
#(define (colour-out-of-range grob)
(let* ((pch (ly:event-property (event-cause grob) 'pitch))
(semitones (ly:pitch-semitones pch)))
(cond ((< semitones 0) red)
((> semitones 24) red)
(else black))))
\score {
\new Staff \relative c' {
\override NoteHead.color = #colour-out-of-range
g8 a b c d e f g a b c d e f g a b c d e f g
}
}
制作:
要根据仪器的范围对其进行自定义,请更改(< semitones 0)
和(> semitones 24)
的值。值0
是中间的C(C4),增量1等于一个半音。因此,在上述情况下,范围在C4-C6之间。对于低于中间C的音高,您需要使用负值(例如-5是G3)。