GNU LilyPond — свободный нотный редактор, разработанный голландскими программистами и музыкантами — валторнистом Хан-Веном Нинхуисом и скрипачом Яном Ньюенхайзеном — и предназначенный для создания музыкальных партитур путём компиляции файла из текста, набранного особым образом (используется технология TeX). Программа изначально рассчитана на работу под GNU/Linux, существуют также версии для Microsoft Windows и Apple Mac OS. LilyPond написан на C++ и в своей работе использует библиотеку языка Scheme.
Процесс создания партитуры в LilyPond напоминает программирование: выходной файл компилируется в соответствии с текстом, набранным по определённым правилам. Освоение этого «языка» требует некоторых навыков. Программа создаёт несколько файлов: сначала промежуточный (в формате PostScript, SVG, TeX и др.), который затем преобразуется в PDF или другие форматы (PNG, DVI). LilyPond также способен создавать MIDI-файлы (указание на создание файла задаётся в самом файле с нотами, а не в виде параметра командной строки).
В отличие от других нотных редакторов (Finale, Sibelius и др.) LilyPond не имеет графического интерфейса и не поддерживает WYSIWYG: программа сама определяет оптимальное расположение элементов партитуры на странице (например, количество тактов в строке или расстояние между нотами), хотя есть возможность управлять этим, указывая необходимые параметры в исходном файле.
Единственная кодировка, которую понимает LilyPond, — UTF-8. Это позволяет использовать текст на разных языках (например, на русском, греческом, иврите, японском) в одном и том же файле. Первая строка сообщает редактору emacs, что этот файл следует читать и записывать в UTF-8. Если использовать не emacs, а какой-либо другой редактор, важно убедиться, что текст действительно сохраняется в кодировке UTF-8; в противном случае наличие любых не-ASCII символов вызовет ошибку.
В любом текстовом редакторе (например, в Блокноте) необходимо набрать текст { a b c d }
Файл нужно сохранить с суффиксом .ly, после чего запустить из командной строки команду lilypond имя файла или просто перетащить файл мышью на значок программы. Если при наборе не было допущено ошибок, будет сгенерирован pdf-файл с готовыми нотами. В процессе генерации файла автоматически создаётся log-файл, в котором в случае ошибки будет указана причина, по которой сгенерировать файл не удалось.
Результат представлен на рисунке.
Текст, идущий за знаком процента (%) — это комментарий. Двойные знаки проценты используются здесь для удобочитаемости.
В LilyPond ноты вводятся в формате нота, октава и длительность; октава задаётся серией запятых или апострофов, каждый из которых, соответственно, понижает или повышает ноту на одну октаву. Например, a'4 обозначает ноту ля (A), на октаву выше базовой, длительностью в одну четвёртую. Синтаксисом предусмотрено правило: все остальные модификаторы — в том числе открывающие скобки, которые по обычным правилам должны были бы быть до ноты — добавляются после ноты, так d8[ c] означает пару восьмых нот, соединённых общим ребром, что обозначается квадратными скобками.
#!lilypond firebreathers.ly -*- coding: utf-8; -*- %% Тема из "Огнедышащих", самодельной игры NES, находящейся в вечной %% разработке. Композитор Urpo Lankinen.
%% Примечание: Композитор сделал этот исходный код доступным Википедии под %% лицензией GFDL. Некоторые предыдущие версии этого кода могут также быть %% доступны под лицензией CC BY-SA.
%% В этом файле используются обозначения нот, принятые в Европе и в России %% (например, вместо употребляемых американцами "F#" и "Bb", использованы %% "Fis" и "B" соответственно). %% Голландские названия нот используются по умолчанию. \include "suomi.ly"
%% Необязательная подсказка для обновления языка. \version "2.6.0"
%% Заголовки. \header { title = "Тема из ``Огнедышащих!''" instrument = "Для 2A03 или SID" composer = "Urpo Lankinen" enteredby = "Urpo Lankinen" updatedby = "Jan Nieuwenhuizen" date = "June 2005" }
%% Мелодии, слова и аккорды могут присваиваться переменной и затем %% *повторно использоваться* где-либо ещё. Здесь представлены три %% различных шаблона аккомпанемента используемые для сопровождения %% всей мелодии. AccompA = \relative c { a4 e'8 a, e' a, | } AccompB = \relative c { g4 d'8 g, d' g, | } AccompC = \relative c { e,4 h'8 e, h' e, | }
Accompaniment = { \clef bass \time 3/4 \key a \minor
%% Высокоуровневое определение музыки. << \new Staff \Melody \new Staff \Accompaniment \new Staff \SecondVoice >>
Возможность создавать высококачественные партитуры практически любого уровня — от простых одноголосных мелодий до больших оркестровых партитур; Возможность быстро изменять содержимое файла, просто редактируя текст; Малое потребление системных ресурсов; Небольшой размер входящих файлов; исходящий pdf-файл также в несколько раз меньше соответствующего отсканированного изображения;
Создатели программы провели большую работу над музыкальными шрифтами, нотами и знаками, используемыми в программе: за основу были взяты издательские технологии XIX века.
Ещё одной из уникальных особенностей GNU LilyPond является тот факт, что работа в нём возможна даже для людей со значительными ограничениями здоровья, например, для полностью слепых[], тогда как альтернативными графическими редакторами такие люди пользоваться не имеют возможности.
Доступность программы для людей с ограниченными возможностями является официально декларируемой особенностью продукта, которая отдельно подчёркивается самими разработчиками.[]
Относительная сложность в освоении «языка» написания исходных файлов; Достаточно слабая реализация механизма конвертации MIDI
Некоторые графические нотные редакторы, такие как Canorus, Denemo, MuseScore, NoteEdit, Rosegarden — могут экспортировать файлы в формате LilyPond. MuseScore может также импортировать такие файлы.
Существует LilyKDE — плагин для текстового редактора kate, упрощающий набор партитур в kate. Для KDE 4 существует отдельная программа — Frescobaldi.
С помощью модуля OOoLilyPond возможна интеграция файла Lilypond в документ OpenOffice.org.
Существует плагин LilyPondTool к редактору jEdit.
sib2ly — комплекс из плагина к Sibelius и программы на Ruby, позволяющих конвертировать партитуры в формат LilyPond. На данный момент реализована только часть возможностей Sibelius.[]
В состав LilyPond входит программа lilypond-book, позволяющая использовать разметку LilyPond в LaTeX, HTML, Texinfo и DocBook: lilypond-book извлекает разметку LilyPond, генерирует изображения нотных фрагментов в формате PostScript либо PNG, после чего заменяет разметку командами вставки соответствующих изображений[].