GNU LilyPond — свободный нотный набор

Уже с конца 1980-х годов музыкальные издательства постепенно оставляли ручной и переходили на компьютерный нотный набор. На данный момент список нотных редакторов огромен, но профессионалы используют Finale и Sibelius.

Холивары о том, кто из них лучше, не утихают уже лет десять, авторитетное издательство Bärenreiter (музыканты его очень любят, хоть и ругаются на дорогие ноты) тем временем используют написанную на Фортране SCORE, а музыканты — любители свободных программ смотрят на LilyPond и ужасаются, потому что как же обычному человеку жить без WYSIWYG'а?

Если бы не TeX-подобный синтаксис, я уверен, многие бы использовали этот engraver. Именно engraver — переводы «гравировщик» и «наборщик» не подходят здесь, потому что этими словами обозначаются профессии. LilyPond лучше других коммерческих и бесплатных программ располагает нотный текст равномерно по странице.

Сравнение с популярными программами


Это мелодия небезызвестной темы, набранная в трёх разных программах (LilyPond, Finale, Sibelius)


В LilyPond не делалось ничего кроме набора, в Сибелиусе и Finale удалены лишние такты, также в последней ноты принудительно автоматически расставлены по горизонтали.


Рассмотрим некоторые детали:
Sibelius LilyPond Finale
1. Шрифт Современный Под XIX век, особенно скрипичный ключ Современный
2. Вертикальное расположение систем Немного распадаются Системы не распадаются и не сливаются Сильно распадаются
3. Горизонтальное расположение элементов на нотной строке Приемлемо (хотя я бы раздвинул бы последние две ноты на первой строке) Практически идеально Шестнадцатые после восьмой с точкой везде прилеплены к следующей ноте
4. Устойчивость горизонтального распределения Первая строка сжата, вторая нормальная, третья растянутая Равномерное, расстояния на 2-й и 3-й строках практически одинаковые Равномерное, хотя строки выглядят чересчур сжатыми
5. Расстояния вокруг тактовой черты Хорошие, когда нет знаков альтерации (см., например, границу 7 и 8 тактов), иначе страдает правое поле Практически везде одинаковые справа и слева Страдает левое поле, если там шестнадцатая


В этом совсем небольшом примере, который использует только самые простые элементы нотографики, уже заметна разница. Авторы программы тоже перемалывают косточки Finale (это старая версия документа, в новой тоже есть сравнение), а некий Andrew Hawryluk, перейдя с Finale на LilyPond на своём сайте занимается примерно тем же. Кстати, на том сайте можно посмотреть на LilyPond'овский набор.

Внимание! Следующий раздел содержит технические подробности, и для начального обучения совсем даже не нужны.

Как это работает


Нам ничего не известно о внутренней работе Sibelius'а или Finale, но, судя по результату, им не мешало бы кое-чему научиться у разработчиков LilyPond.

Scheme

Половина LilyPond написана на Scheme, а исполняемый файл использует GUILE для запуска этой половины. Что даёт такое разделение? TeX-подобная разметка (после проверки синтаксиса, естественно) отправляется на обработку, которая в конечном счёте выдаёт «программу» на Scheme, задающую уже части на C++ все параметры (в основном те, которые выставлены по умолчанию) и собственно ноты, но как уже команды языка программирования, а не разметки. Такой подход позволяет, с одной стороны, более эффективно искать ошибки в той или иной части, а с другой стороны даёт возможность определить команды, выполняющие практически любое действие.

Контексты

Контекст — некая часть партитуры, к которой можно что-либо отнести, и у которой есть некие свойства. Они располагаются на четырёх уровнях.
  • Контекст партитуры. Единственный в файле, он содержит те части, которые одинаковы для всей партитуры, например, размер, темп, повторы etc. Только один.
  • Контекст группы станов. Их может быть несколько вложенных, и содержат специфичные для группы вещи (например, акколада у фортепианного стана — технически это тоже группа).
  • Контекст стана. Несколько разновидностей нотных станов удовлетворят самые разные потребности — в том числе и для набора григорианских хоралов и мензурально нотированной музыки. Может быть вложен как в группу станов, так и в партитуру.
  • Контекст голоса. Их может быть неограниченное число на стане, только бы в глазах не путались.



Графические объекты

Графические объекты (обозначаемые в документации словом grob :-) ) и их engraver'ы, performer'ы и единственный Timing_translator (части, отвечающие за рисование, создание MIDI и синхронизатор ритма на всех станах) строго распределены по контекстам. Среди их свойств обычно немало отвечающих за расположение по вертикали и горизонтали. Полный список гробов можно посмотреть в соответствующей части документации.

Плохость

Этот забавный перевод слова badness означает степень отклонения расположения от идеального для каждого элемента (такой механизм пришёл из TeX'а).

Документация гласит: В целом процедура распределения происходит в четыре этапа. Во-первых, эластичные пробелы («пружины») выбираются на основе длительности. Во-вторых, проверяются все возможные комбинации переноса строк, и для каждого рассчитывается «плохость». В-третьих, оценивается высота каждой системы. Наконец, разрывы страниц и сочетания выбираются так, чтобы горизонтальные и вертикальные промежутки не слишком растягивались или сжимались. [источник]

Синтаксис


Учебник в картинках взят с официального сайта.

Команды начинаются с обратного слеша, буквы это ноты, а цифры — длительности.
text-input-1-annotatetext-input-1-output

Знаки альтерации и аккорды не вызывают проблем. Примечание: русскому музыканту привычнее немецкие или английские названия нот. Для этого можно использовать \language "deutsch" или \language "english"
text-input-2-annotatetext-input-2-output

Партитура и партии могут быть сделаны из одного файла — для этого используются переменные.
text-input-parts-both-annotate

Можно по-отдельности, а можно и вместе:
text-input-score-annotatetext-input-score-output

За дальнейшими разъяснениями просьба обращаться в окошко №27 к официальному мануалу (он достаточно хорошо написан).

Использование


Конечно, можно набирать код в блокноте и запускать LilyPond командной строкой. Тем не менее, существуют программы, призванные облегчить жизнь кодеру.

jEdit

К этому популярному кроссплатформенному редактору существует плагин LilyPondTool, который добавляет подсветку синтаксиса, просмотр, PointAndClick (щелкнул на элемент партитуры — попал в соответствующее место исходника) и несколько удобных штук (типа диалогов для задания типичных свойств). Практически единственный удобный инструмент для Windows.

Kate

Штатный редактор KDE дружит с LilyPond'ом, хотя не так продвинуто, как следующая программа.

Frescobaldi

Это специализированный именно на LilyPond'е редактор под KDE (хотя замечательно запускается и в GNOME) обладает более существенной поддержкой. Доступно побольше примочек, и работать с ним лично мне куда приятнее.

Также возможно прикрутить экспорт из Sibelus (sib2ly), встроен импорт MIDI и MusicXML.

Приятное известие для любителей TeX'а — LilyPond содержит в своём составе утилиту LilyBook, с помощью которой можно запросто встраивать нотные примеры прямо в TeX'овский документ.

P.S.: Всё это доступно также под Windows и Mac OS

Ссылки


Поделиться публикацией

Комментарии 30

    0
    На windows работал с sibelius. Спасибо за статью, в закладки.

    И статье не помешал бы вывод.
      +3
      По моему, любой вывод в такой статье — повод для холиваров. Автор выводы предложил делать самим :) Ну и использовать тот инструмент, который удобнее вам.
      +1
      А под Mac? Писать партитуры в TeX – очень заманчиво
        0
        если привлекает true TeX-way, посмотрите на пакет MusiXTeX (доступен с CTAN), в качестве хобби набираю в нём ноты уже больше года, очень доволен.
          0
          под мак тоже есть, и, думаю, с техом также подружится
          +2
          Не в упрёк автору, просто для справки.

          | Если бы не TeX-подобный синтаксис…

          Простые смертные могут использовать такой же свободный и мультиплатформенный MuseScore, чтобы расставлять ноты мышкой.
            +1
            MuseScore рисует хоть и шрифтом Feta (часть LilyPond), но располагает не так красиво :-)
            Я думаю, в сложных партитурах двигать руками приходится не меньше чем в Finale или Sibelius

            marchms.png
              0
              В MuseScore чуть больше одного шрифта :)
                0
                А если не двигать, а сразу сохранить партитуру в формат лилипонда, и работать именно с лилипондовым исходником? Так не лучше?
                  0
                  .ly-файл уж очень путаный получается. Например, в периодически раздваивающемся голосе — этим все экспорты в ly страдают — он соединяет все раздвоения в одно большое. Это неудобно редактировать.
                    0
                    Пробовал набирать в Denemo — там двухголосье тоже неудобное получается.
                0
                В декабре прошлого года я искал какой-нибудь приятный и бесплатный редактор. И всё было ужасно. Пришлось остановиться на MuseScore, — он был приятнее других, но и с ним я распрощался. В нем огромное количество багов.
                  0
                  Я MuseScore довольно давно использую, и не обнаружил в нём серьёзных багов, кроме разве что бага в плагине abc2mus. Но я фолк-музыкант, набираю однострочные мелодии на 16-32 такта и не использую всех его возможностей. Однако хотелось бы знать пределы функциональности этой софтины. Может, там в сложных оркестровках вылазят баги?
                    0
                    Я допускаю, что баги были именно в той компиляции, что использовал я. У меня тогда не было другой платформы под рукой, кроме Windows 7. В этих условиях программа работала нестабильно. Крашилась и зависала в случайных местах. Не удалось также воспроизвести мелодию никакими другими инструментами, кроме стандартного.
                      0
                      Windows 7 x86 и Debian Unstable — никаких зависаний и крашей уже больше года, нормально играет через MIDI.
                      0
                      Однострочные мелодии в 16-32 такта очень просто набираются в LilyPond.
                      Скачок от одноголосия и однострочия к многоголосию и многострочию там гораздо сложнее, чем в WYSIWYG-редакторах.
                        0
                        Точно такую же аргументацию слышал в пользу набора нот непосредственно в ABC. И я с этим в общих чертах согласен, но почему-то мне приятней это делать в WYSIWYG-редакторе.
                  +7
                  А я догадался, что это за тема! Дарт Вейдер будет доволен :-)
                    0
                    Ну что тут гадать — достаточно пропеть)
                      0
                      Ха, спасибо. Даже внимания не обратил.
                      0
                      список нотных редакторов огромен
                        0
                        спасибо, поправил
                        0
                        Проблема в другом: как музыкант, и человек, который уже длительное время занимается набором и реставрацией нот, *задумчиво протёр звезду на лбу*, хочу предупредить, что партитуры, набранные на LilyPond, будут выброшены, не будут изданы. Да и найти человека, который пользуется LilyPond, (я имею ввиду частного заказчика, который обязательно захочет что-нибудь подправить и изменить), намного сложнее, чем пользователя того же Финала или Сибелиуса. Я пробовал работать с LilyPond, пока что это неактуально. Но за топик плюс 1, полезной информации более чем достаточно, с точки зрения любознательности)))
                          0
                          *что партитуры, набранные на LilyPond, и принесённые в любое издательство, будут выброшены, не будут изданы

                          Сорри, увлёкся и не дописал))
                            0
                            я думаю, скоро это станет не так, когда я донаберу второй квартет А. Чугаева для издания :)
                              0
                              Т.е., издательство дало добро на использование LilyPond? Для меня это дико, т.к. зарубежные издательства, да и украинские, категорически отказываются работать с чем-либо кроме сибелиуса и финала)))
                                +1
                                издательство сказало «присылайте PDF» в таком-то формате с такими-то полями
                                  +1
                                  Прикольно)) Лично от меня все издательства требовали исходников в формате Finale 2005, ибо у них, видите ли, именно эта программа стоит)))
                          0
                          За статью спасибо. По лилипонду маловато на русском.
                            0
                            Я как-то начинал переводить лилипондовый FAQ на translated.by, но забросил.

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое