Программно создать файл MIDI из любого файла LilyPond

Я хочу создать MIDI-файл из любого файла LilyPond, не добавляя вручную \midi { } блок.

Это можно сделать из командной строки? В идеале я ищу такой вариант, как lilypond --midi, Конечная цель - создать сценарий оболочки, lilypond2midi,

1 ответ

Документация ясно показывает, что такой опции командной строки не существует, так что это на самом деле не вопрос LilyPond.

Что вы можете сделать, это вставить \midi команда в коде LilyPond динамически в вашем сценарии оболочки.

Например, ваш скрипт может сделать что-то вроде этого. (Я не делал никаких AWK в течение некоторого времени, но я думаю, что это работает. Perl также может решить эту проблему.)

awk '/^\\score/ {inScore=1}
     /^}/ {if (inScore == 1) print "\midi {}"
                             inScore=0
          }
     {print}' ${filename}.ly | lilypond -o $filename -

Это предполагает, что входной файл имеет \score блок и первая закрывающая скобка, } в начале строки, после \score блок начинается, это закрытие \score блок.

Конечно, это не изменяет исходный файл LilyPond, но LilyPond скомпилирует его так, как если бы он имел \midi команда.

Другие вопросы по тегам