Lilypond: определить имя выходного MIDI-файла

Я пытаюсь заставить Lilypond создать выходной файл MIDI, имя которого соответствует названию песни, но пока мне это не удалось. Может быть, кто-то может помочь?

Из справочника по нотации Lilypond ( https://lilypond.org/doc/v2.20/Documentation/notation/creating-output-file-metadata ):

Для каждого типа выходного файла будут учитываться только определения \header блоков, которые определяют отдельные файлы этого типа, и блоки выше в иерархии блоков. Поэтому [...] для файлов MIDI используются все заголовки выше или на уровне \score.

Вот мой код:

\music = { \relative c'4 d e f}

\bookpart {
  \header {
    title = "my Title"
  }
  \score {
    \music
    \midi { }
  }
}

Я ожидал получить миди-файл с именем my Title.midi, но вместо этого я получил файл, имя которого совпадает с именем файла lilypond (так что если myLilypondFile.ly, то myLilypondFile.midi).

Из того же источника:

Переменная title также устанавливает имя последовательности для MIDI. Переменная midititle может использоваться для установки имени последовательности независимо от значения, используемого для набора вывода.

Итак, я попытался добавить midititleв свой существующий заголовок:

\header {
    title = "my Title"
    midititle = "my midi Title"
}

но это ничего не изменило. Кажется, что midititleпеременная даже не известна (я использую Frescobaldi, и синтаксис не выделяет эту переменную).

Мой файл lilypond версии 2.20.0, и я также установил GNU lilypond 2.20.0.

Могу я спросить, как это поможет вам? Для меня выход myLilypondFile.midiиз myLilypondFile.lyзвучит очень разумно (кроме того, myLilypondFileчто это очень бесполезное имя файла). Я даже не думаю, что Lilypond может помещать вещи в файлы с произвольными именами. Кстати. «имя последовательности» — это имя, хранящееся в MIDI. Некоторые MIDI-плееры, как и робость, будут показывать это во время игры, некоторые (большинство?) - нет.
Не придавайте слишком большого значения тому, распознает ли Фрескобальди такие вещи, как «midititle». Подсветка синтаксиса иногда отстает от последней версии, а чего-то просто не хватает.
@Ramillies Мой файл содержит несколько песен, и я хочу создать миди-файлы для каждой из них, чтобы проверить, правильно ли я написал партитуру. Стандартное поведение — создание myLilypondFile.midi, myLilypondFile-1.midiи myLilypondFile-2.midiт.д. Но при этом трудно найти нужный файл для определенной песни.
@Kjara: Тогда я бы посоветовал вам использовать \bookOutputSuffix(что изменит и т -1. -2Д. На что-то другое - одно использование может быть mySong-soprano.midiи mySong-alto.midiт. Д.), Но ответ ниже более универсален.

Ответы (1)

Вы находитесь на правильном пути для названия ноты и названия файла midi, но вы должны использовать \bookOutputNameдля управления результирующим именем файла:

\header {
  title = "File title"
  midititle = "midi title"
}
music = \relative c' {
  c1
}
\book {
  \bookOutputName "pdf_file_only"
  \score {
    \new Staff \music
  \layout {}
  }
}
\book {
  \bookOutputName "midi_file_only"
  \score {
    \new Staff \music
  \midi {}
  }
}

введите описание изображения здесь введите описание изображения здесь

Вау, я знал об этом \bookOutputSuffix, но я не знал (или не думал), что это будет существовать...