Введение
LilyPond — это компьютерная программа и формат файла для музыкальной гравировки. Одной из главных целей LilyPond является создание нотных партитур, выполненных в традиционном стиле, отражающем эпоху ручной гравировки. LilyPond является кроссплатформенным и доступен для ряда распространенных операционных систем; распространяется по лицензии GNU General Public License, что делает LilyPond свободным программным обеспечением и частью проекта GNU.
LilyPond is a computer program and file format for music engraving. One of LilyPond's major goals is to produce scores that are engraved with traditional layout rules, reflecting the era when scores were engraved by hand. LilyPond is cross platform, and is available for several common operating systems; released under the terms of the GNU General Public License, LilyPond is free software and part of the GNU Project.
История
Проект LilyPond был начат в 1996 году Ханом Вэнь Нинхёйсом и Яном Нювенхёйзеном после того, как они решили прекратить работу над MPP (MusiXTeX PreProcessor), проектом, над которым они начали сотрудничать в 1995 году. Название проекта было вдохновлено проектом Rosegarden и знакомой Нинхёйса и Нювенхёйзена по имени Сюзанна, имя которой на иврите означает «лилия» ([[wikt:שושנה]]).
Версия 1.0
LilyPond 1.0 был выпущен 31 июля 1998 года, ознаменовав разработку специализированного музыкального шрифта Feta и полное отделение LilyPond от MusiXTeX.
Версия 2.0
LilyPond 2.0 был выпущен 24 сентября 2003 года, ознаменовав упрощенную модель синтаксиса и значительно более полный набор инструментов для нотации музыки различных стилей.
Дизайн
LilyPond в основном написан на C++ и использует Scheme (интерпретируемый GNU Guile) в качестве языка расширения, позволяя пользователям его настраивать. Он обладает довольно большим объемом кода: по состоянию на 10 марта 2017 года, в исходном коде содержится более 600 000 строк C++, 140 000 строк Scheme и 120 000 строк кода Python. LilyPond использует простую текстовую нотацию для ввода музыкальных данных, которую он интерпретирует и обрабатывает последовательно, на нескольких этапах. На заключительном этапе музыкальная нотация выводится в PDF (через PostScript) или другие графические форматы, такие как SVG или PNG. LilyPond также способен генерировать MIDI-файлы, соответствующие выходной музыкальной нотации. LilyPond – это текстовое приложение, поэтому не имеет встроенного графического пользовательского интерфейса для помощи в создании нот. (Однако, на системах Windows и MacOS по умолчанию включен графический интерфейс "LilyPad", основанный на текстовом редакторе.) Тем не менее, он предлагает гибкий язык ввода, стремящийся к простоте, что облегчает освоение программы для новых пользователей. LilyPond следует парадигме WYSIWYM; рабочий процесс набора музыкальной нотации в LilyPond аналогичен процессу подготовки документов в LaTeX. LilyPond поддерживает экспериментальную музыкальную нотацию. Его возможности для гитары включают поддержку альтернативных строев, например, строя в мажорных терциях.
Особенности программного обеспечения
Основная цель LilyPond — создавать ноты, сопоставимые с профессионально выгравированными партитурами, а не с механически и компьютерно сгенерированными. В эссе на сайте LilyPond, написанном разработчиками программы, объясняются некоторые типографские проблемы, которые решает LilyPond:
Оптическое масштабирование шрифта: в зависимости от размера нотного стана, дизайн музыкального шрифта незначительно изменяется; эта особенность характерна для шрифта Computer Modern Дональда Кнута. В результате головки нот становятся более округлыми, а линии нотного стана — более толстыми. Оптическое кернение: при расстановке последующих нот учитывается направление ножек. Специальная обработка дополнительных линеек: дополнительные линейки укорачиваются вблизи знаков альтерации, что повышает читаемость. Пропорциональное расстояние: ноты могут располагаться таким образом, чтобы точно соответствовать их длительности. Например, при данной настройке расстояние между последовательными четвертными нотами в четыре раза больше, чем между последовательными шестнадцатыми нотами.
Обзор входного синтаксиса
Родной язык ввода для LilyPond является всеобъемлющим и состоит из множества команд, необходимых для выражения любых видов артикуляции, динамики, размера и т. д. Он схож с языком TeX. Возможность встраивать код Scheme в исходный файл LilyPond позволяет произвольно расширять язык ввода и помогает при алгоритмическом сочинении. Ниже перечислены некоторые общие синтаксические особенности. Однострочные комментарии начинаются со знака процента (%). Ноты представляются в формате "высота-длительность": высота звука указывается с использованием нотации Гельмгольца, а длительность – с помощью численной системы. Семантика формата "высота-длительность" меняется в зависимости от активного режима ввода; это подробно описано в руководстве LilyPond. Например, в абсолютном режиме a'4 обозначает Ля, на одну октаву выше базовой Ля (A3 в научной нотации высоты звука), длительностью в четверть. Команды обычно начинаются с обратной косой черты (например, \time или \slurUp). Функция команды определяет, где она должна быть размещена; например, если команда используется для указания фиксированной динамики для конкретной ноты, она размещается после этой ноты. Некоторые часто используемые команды представлены символически для удобства ввода. Например, скобки ( и ) обозначают начало и конец лиги соответственно. Другой пример – ручное соединение нот лигами, где квадратные скобки [ и ] указывают протяженность лиги. Интерфейс LilyPond с Pango требует, чтобы входная кодировка символов была UTF-8. Одним из преимуществ этого является возможность включения нескольких языков в один исходный файл.
Более сложный выход
Lilypond также может создавать выводы с широкими возможностями настройки. Примером служит короткий отрывок из фортепианной пьесы Карлхайнца Штокхаузена, представленный ниже.
Сотрудничество с другими проектами
Несколько графических программ для нотной записи, таких как Rosegarden, NoteEdit, Canorus, Denemo и TuxGuitar, могут экспортировать файлы непосредственно в формат LilyPond. Другие графические приложения служат интерфейсом к LilyPond, включая Frescobaldi и плагин LilyPondTool для jEdit. Denemo интегрирует PDF-вывод LilyPond в свой интерфейс, позволяя выполнять некоторые операции редактирования над готовой набранной партитурой. Проект Mutopia, распространяющий бесплатные ноты, использует LilyPond для набора музыки, как и Musipedia, совместная музыкальная энциклопедия. Режим org в Emacs поддерживает встраивание нот LilyPond в документы. OOoLilyPond, расширение LibreOffice, обеспечивает возможность вызова LilyPond для встраивания нот в документы.
Интеграция в текст с помощью lilypond-book
Интеграция музыкальных элементов LilyPond в различные форматы документов (в том числе в системы на основе TeX, такие как LaTeX и Texinfo, а также DocBook и HTML-страницы) осуществляется непосредственно с помощью сопутствующей программы lilypond book, разработанной и поддерживаемой сообществом LilyPond. Это позволяет пользователям включать музыкальные элементы в тексты, например, в работы по музыковедению, сборники песен, учебные материалы и школьные экзаменационные работы.
Интеграция в LaTeX
Для интеграции в систему подготовки документов LaTeX, lyLuaTeX был разработан как пакет LuaLaTeX для встраивания музыкальных элементов в текст. Он предоставляет возможности для согласования расположения и внешнего вида музыкальных элементов с окружающим текстовым документом. Музыкальные элементы могут включать в себя музыкальные символы, тексты песен, схемы аккордов для гитары, лид-листы, музыкальные фрагменты, гитарные табулатуры или многостраничные ноты.
Сравнение с другими композиторами
Финале и Сибелиус – два проприетарных редактора нот, которые часто сравнивают с LilyPond. Эндрю Ховрилук, пользователь LilyPond, написал серию статей, сравнивающих качество нотной записи, полученной в Finale и LilyPond. Другой редактор нот с сопоставимыми возможностями – SCORE, но SCORE в большей степени полагается на ручное позиционирование, чем LilyPond. См. также Сравнение редакторов нот.