1

在为录音机(长笛)编写 Lilypond 乐谱时,我希望我可以通过改变颜色来自动标记超出乐器范围的音高的音符。

这个想法是,例如,所有低于 f 的绝对音高和高于 g'' 的所有音高对于低音乐器都被涂成红色。男高音、中音和女高音乐器也是如此。

我发现了一个关于着色笔记的有用问题,但仍有一段代码我无法编写:

#(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
  }
}
4

1 回答 1

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)。

于 2019-01-06T18:09:53.537 回答