Программно создать файл 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
команда.