В Lilypond части миди-вывода заглушаются.

Мне нужно выгравировать хоровую пьесу, где некоторые голоса имеют части без тональности, такие как шепот, произнесенные или выкрикиваемые слова. Я хочу выгравировать это, используя ноты с крестообразной головкой, как в следующем музыкальном произведении:

\version "2.18.2"

myMusic = {
  \relative c' {
    c4 d e f |
    \override NoteHead.style =#'cross 
    f4 f f f |
    \revert NoteHead.style
    g a b c |
  }
}

\score {
  \myMusic
  \midi {}
}
\score {
  \myMusic
  \layout {}
}

Так как эти части в MIDI-файле с высотой тона раздражают, я бы хотел, чтобы MIDI-генератор либо игнорировал их, т.е. заменял ноты соответствующими паузами, либо заменял чем-то без высоты тона. Однако они должны быть напечатаны корректно (поэтому у меня два блока \score).

Есть ли способ добиться этого? Спасибо!

Ответы (3)

Этого можно добиться с помощью тегов (см. документацию ), например следующим образом:

\version "2.18.2"

myMusic = {
  \relative c' {
    c4 d e f | 
    \tag #'printonly { 
      \override NoteHead.style = #'cross
      f4 f f f |
      \revert NoteHead.style
    }
    \tag #'midionly {
      r4 r r r |
    }
    g a b c |
  }
}

\score {
  \removeWithTag #'printonly
  \myMusic
  \midi {}
}

\score {
  \removeWithTag #'midionly
  \myMusic
  \layout {}
}

Если вы хотите что-то, что делает звук типа перкуссии в файле MIDI и ясно для читателей;

Используйте барабанный нотоносец в Ossia:

\version "2.18.2"

myMusic = \new Staff = "main" {
  \relative c' {
    c4 d e f |

    <<
        R1

        \new DrumStaff \with {
                \override StaffSymbol.line-count = #0
                \override BarLine.bar-extent = #'(-1.5 . 1.5) 
                \remove "Time_signature_engraver"
                alignAboveContext = #"main"
                %\magnifyStaff #2/3
                %firstClef = ##f
            } { 
            \drummode {
                hh4 hh4 hh4 hh4 | 
            }
        }
    >>

    g4 a b c |
  }
}

\score {
  \myMusic
  \midi {}
}

\score {
  \myMusic
  \layout {}
}

барабанный посох в оссии

Как певец-любитель, я нашел бы это определенно менее ясным, чем в коллективе. Это привело бы к длительным дискуссиям.

Если вы не хотите, чтобы ноты без тональности звучали, вы можете поместить ноты с тональностью в один Voiceконтекст, а ноты без тональности — в другой Voiceконтекст, заглушив последнюю.

\version "2.18.2"

myMusic = {
    \relative c' {
        c4 d e f |
        s1 |
        g4 a b c |
    }
}

myMusicUnpitched = {
    \relative c' {
        \override NoteHead.style =#'cross 
        s1 |
        f4 f f f |
        s1 |
    }
}

\score {
    \new Staff { <<
        \new Voice { \myMusic }
        \new Voice { \set midiMaximumVolume = #0 \myMusicUnpitched }
    >> }
    \layout {}
    \midi {
        \context { \Staff \remove "Staff_performer" }
        \context { \Voice \consists "Staff_performer" }
    }
}

Источники:
http://lsr.di.unimi.it/LSR/Item?id=438
http://lilypond.org/doc/v2.18/Documentation/notation/controlling-midi-dynamics#overall-midi-volume .

Кстати, я так и не понял, в чем смысл использования двух \score {}блоков.