Уже с конца 1980-х годов музыкальные издательства постепенно оставляли ручной и переходили на компьютерный нотный набор. На данный момент список нотных редакторов огромен, но профессионалы используют Finale и Sibelius.
Холивары о том, кто из них лучше, не утихают уже лет десять, авторитетное издательство Bärenreiter (музыканты его очень любят, хоть и ругаются на дорогие ноты) тем временем используют написанную на Фортране SCORE, а музыканты — любители свободных программ смотрят на LilyPond и ужасаются, потому что как же обычному человеку жить без WYSIWYG'а?
Если бы не TeX-подобный синтаксис, я уверен, многие бы использовали этот engraver. Именно engraver — переводы «гравировщик» и «наборщик» не подходят здесь, потому что этими словами обозначаются профессии. LilyPond лучше других коммерческих и бесплатных программ располагает нотный текст равномерно по странице.
Это мелодия небезызвестной темы, набранная в трёх разных программах (LilyPond, Finale, Sibelius)
В LilyPond не делалось ничего кроме набора, в Сибелиусе и Finale удалены лишние такты, также в последней ноты принудительно автоматически расставлены по горизонтали.
Рассмотрим некоторые детали:
В этом совсем небольшом примере, который использует только самые простые элементы нотографики, уже заметна разница. Авторы программы тоже перемалывают косточки Finale (это старая версия документа, в новой тоже есть сравнение), а некий Andrew Hawryluk, перейдя с Finale на LilyPond на своём сайте занимается примерно тем же. Кстати, на том сайте можно посмотреть на LilyPond'овский набор.
Внимание! Следующий раздел содержит технические подробности, и для начального обучения совсем даже не нужны.
Нам ничего не известно о внутренней работе Sibelius'а или Finale, но, судя по результату, им не мешало бы кое-чему научиться у разработчиков LilyPond.
Половина LilyPond написана на Scheme, а исполняемый файл использует GUILE для запуска этой половины. Что даёт такое разделение? TeX-подобная разметка (после проверки синтаксиса, естественно) отправляется на обработку, которая в конечном счёте выдаёт «программу» на Scheme, задающую уже части на C++ все параметры (в основном те, которые выставлены по умолчанию) и собственно ноты, но как уже команды языка программирования, а не разметки. Такой подход позволяет, с одной стороны, более эффективно искать ошибки в той или иной части, а с другой стороны даёт возможность определить команды, выполняющие практически любое действие.
Контекст — некая часть партитуры, к которой можно что-либо отнести, и у которой есть некие свойства. Они располагаются на четырёх уровнях.
Графические объекты (обозначаемые в документации словом grob :-) ) и их engraver'ы, performer'ы и единственный Timing_translator (части, отвечающие за рисование, создание MIDI и синхронизатор ритма на всех станах) строго распределены по контекстам. Среди их свойств обычно немало отвечающих за расположение по вертикали и горизонтали. Полный список гробов можно посмотреть в соответствующей части документации.
Этот забавный перевод слова badness означает степень отклонения расположения от идеального для каждого элемента (такой механизм пришёл из TeX'а).
Документация гласит: В целом процедура распределения происходит в четыре этапа. Во-первых, эластичные пробелы («пружины») выбираются на основе длительности. Во-вторых, проверяются все возможные комбинации переноса строк, и для каждого рассчитывается «плохость». В-третьих, оценивается высота каждой системы. Наконец, разрывы страниц и сочетания выбираются так, чтобы горизонтальные и вертикальные промежутки не слишком растягивались или сжимались. [источник]
Учебник в картинках взят с официального сайта.
Команды начинаются с обратного слеша, буквы это ноты, а цифры — длительности.
Знаки альтерации и аккорды не вызывают проблем. Примечание: русскому музыканту привычнее немецкие или английские названия нот. Для этого можно использовать
Партитура и партии могут быть сделаны из одного файла — для этого используются переменные.
Можно по-отдельности, а можно и вместе:
За дальнейшими разъяснениями просьба обращатьсяв окошко №27 к официальному мануалу (он достаточно хорошо написан).
Конечно, можно набирать код в блокноте и запускать LilyPond командной строкой. Тем не менее, существуют программы, призванные облегчить жизнь кодеру.
К этому популярному кроссплатформенному редактору существует плагин LilyPondTool, который добавляет подсветку синтаксиса, просмотр, PointAndClick (щелкнул на элемент партитуры — попал в соответствующее место исходника) и несколько удобных штук (типа диалогов для задания типичных свойств). Практически единственный удобный инструмент для Windows.
Штатный редактор KDE дружит с LilyPond'ом, хотя не так продвинуто, как следующая программа.
Это специализированный именно на LilyPond'е редактор под KDE (хотя замечательно запускается и в GNOME) обладает более существенной поддержкой. Доступно побольше примочек, и работать с ним лично мне куда приятнее.
Также возможно прикрутить экспорт из Sibelus (sib2ly), встроен импорт MIDI и MusicXML.
Приятное известие для любителей TeX'а — LilyPond содержит в своём составе утилиту LilyBook, с помощью которой можно запросто встраивать нотные примеры прямо в TeX'овский документ.
P.S.: Всё это доступно также под Windows и Mac OS
Холивары о том, кто из них лучше, не утихают уже лет десять, авторитетное издательство 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'а).
Документация гласит: В целом процедура распределения происходит в четыре этапа. Во-первых, эластичные пробелы («пружины») выбираются на основе длительности. Во-вторых, проверяются все возможные комбинации переноса строк, и для каждого рассчитывается «плохость». В-третьих, оценивается высота каждой системы. Наконец, разрывы страниц и сочетания выбираются так, чтобы горизонтальные и вертикальные промежутки не слишком растягивались или сжимались. [источник]
Синтаксис
Учебник в картинках взят с официального сайта.
Команды начинаются с обратного слеша, буквы это ноты, а цифры — длительности.
Знаки альтерации и аккорды не вызывают проблем. Примечание: русскому музыканту привычнее немецкие или английские названия нот. Для этого можно использовать
\language "deutsch"
или \language "english"
Партитура и партии могут быть сделаны из одного файла — для этого используются переменные.
Можно по-отдельности, а можно и вместе:
За дальнейшими разъяснениями просьба обращаться
Использование
Конечно, можно набирать код в блокноте и запускать 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
Ссылки
- Официальный сайт
- Руководство к стабильной версии
- Тестовые версии как правило достаточно стабильны