GNU LilyPond

GNU LilyPond
Офіційний логотип LilyPond
Тип Нотний редактор
Автори Han-Wen Nienhuys, Jan Nieuwenhuizen
Розробники Команда розробки LilyPond[1]
Перший випуск 1996
Стабільний випуск 2.18.2 (23 травня 2014; 9 років тому (2014-05-23))
Нестабільний випуск 2.19.7 (25 травня 2014; 9 років тому (2014-05-25))
Операційна система Багатоплатформна
Мова програмування Scheme, C++, Metafont, PostScript, Python
Розмір 20 МБ, 100 МБ разом з документацією
Доступні мови голландська, англійська, французька, німецька, японська, іспанська, угорська, італійська
Стан розробки активний
Ліцензія GNU GPL
Стандарт(и) MusicXML, SVG
Онлайн-документація lilypond.org/manuals.html
Репозиторій gitlab.com/lilypond/lilypond.git
Вебсайт lilypond.org

|influenced_by= |font= |influenced=

GNU LilyPond  — вільний нотний редактор, розроблений голландськими програмістами та призначений для створення музичних партитур шляхом компіляції файлу з особливим чином набраним текстом (подібно до документів LaTeX). Програма спочатку була розрахована на роботу під GNU/Linux, існують також версії для Microsoft Windows та Apple Mac OS. LilyPond написаний на C++ і в своїй роботі використовує бібліотеку мови Scheme.

Основні принципи

На відміну від інших нотних редакторів (Finale, Sibelius та ін.) LilyPond побудовано за ідеологією WYSIWYM, а не WYSIWYG. Не маючи власного графічного інтерфейсу, натомість він надає гнучку мову опису партитур: ви описуєте що саме ви хотіли б бачити, а програма самостійно визначає оптимальне розташування елементів партитури на сторінці (наприклад, кількість тактів в рядку або відстань між нотами), тобто відбувається відокремлення опису власне музики від її оформлення. При необхідності є можливість керувати розміщенням, вказуючи необхідні параметри у файлі.

Таким чином, процес створення партитури в LilyPond нагадує програмування чи комп'ютерну верстку за допомогою LaTeX. Для створення партитури за правилами мови опису партитури набирається вхідний текстовий файл, який компілюється для отримання вихідних файлів. Освоєння цієї мови, як і мов розмітки даних, вимагає деяких навичок.

В процесі компіляції програма створює кілька файлів: спочатку проміжний (у форматі PostScript, SVG, TeX, залежно від обраного типу виходу), який потім перетвориться у PDF чи інші формати (PNG, DVI). LilyPond також здатний створювати MIDI-файли, вказівка на створення файлу задається в самому файлі з нотами, а не у вигляді параметра командного рядка.

LilyPond працює із кодуванням UTF-8, що дозволяє використовувати текст різними мовами (наприклад, українською, старослов'янською, грецькою, івритом, японською) в одному і тому ж файлі. Важливо переконатися, що текст справді зберігається в кодуванні UTF-8; в іншому випадку наявність будь-яких не-ASCII символів викличе помилку.

Приклади роботи

Приклад найпростішої партитури

У будь-якому текстовому редакторі (наприклад, у блокноті) необхідно набрати текст
 { a b c d }
Найпростіша партитура

Файл потрібно зберегти з розширенням *.ly, після чого запустити з командного рядка команду lilypond ім’я файлу або просто перетягнути файл мишкою на значок програми. Якщо при наборі не було допущено помилок, буде згенерований pdf-файл з готовими нотами. У процесі генерації файлу автоматично створюється log-файл, в якому у разі помилки буде вказано причину, через яку згенерувати файл не вдалося. Результат показано на малюнку.

Складний приклад

Використовуваний синтаксис

Текст, що йде за знаком відсотка (%) — це коментар. Подвійні знаки відсотку використовуються тут для легкості читання.

У LilyPond ноти вводяться у форматі нота, октава та тривалість; октава задається серією ком чи апострофів, кожен з яких, відповідно, знижує або підвищує ноту на одну октаву. Наприклад, a'4 позначає ноту ля (A), на октаву вище від базової, тривалістю в одну четверту. Синтаксисом передбачено правило: усі інші модифікатори — у тому числі відкриваючі дужки, які за звичайними правилами повинні були б бути до ноти — додаються після ноти, так що d8 [c] означає пару восьмих нот, з'єднаних загальним ребром, що позначається квадратними дужками.

Джерельний текст

#!lilypond firebreathers.ly -*- coding: utf-8; -*-
%% Тема для „Fire Breathers“, доморощеної NES-гри, що постійно 
%% знаходиться у розробці. Композитор Урпо Ланкін {Urpo Lankinen}.

%% Примітка: композитор зробив цей джерельний код доступним
%% для Вікіпедії під ліцензією GFDL. Деякі попередні версії
%% цього коду можуть також бути доступними за ліцензією CC BY-SA.

%% У цьому файлі використовуються позначення нот, прийняті в Європі і в Україні
%% (наприклад, замість вживаних американцями „F#“ та „Bb“,
%% використані „Fis“ та „B“ відповідно). 
%% За умовчанням використовуються голландські імена нот.
\include "suomi.ly"

%% Додатковий помічник поновлення мови.
\version "2.6.0"

%% Заголовки.
\header {
    title = "Theme for ``Fire Breathers!''"
    instrument = "For the 2A03 or SID"
    composer = "Urpo Lankinen"
    enteredby = "Urpo Lankinen"
    updatedby = "Jan Nieuwenhuizen"
    date = "June 2005"
}

Melody = \relative c'' {
   \clef treble
   \time 3/4
   \key a \minor

   %% П’єса починається з затакту довжиною у чверть, „\partial 4“
   %% на це і вказує.
   \partial 4
   a4 | e'4.( d8[ c]) r8 | d4.( c8[ h]) r8 | a2. | e2
   a4 | e'4.( d8[ c]) r8 | d4.( e8[ f]) r8 | e2. | r2
   e4 |  f4.( e8[ d]) r8 | d4.( c8[ h]) r8 | a2. | e2
   a4 | e'4.( d8[ c]) r8 | d4.( c8[ h]) r8 | a2. ~ a2 r4 | \bar "|."
}

%% Другий голос.
SecondVoice = \relative c {
   \clef bass
   \time 3/4
   \key a \minor

   \partial 4
    r4 | e2.              | d2.             | a2. | e2
    a4 | e'2.             | d2       f4     | e2. | r2.
       |  f2.             | d2.             | a2. | e2
    a4 | e'2.             | d2       h4     | a2. ~ a2 r4 | \bar "|."
}

%% Мелодії, тексти пісень та акорди можуть бути віднесені до змінних, а потім
%% можуть бути *повторно використані* в іншому місці. Тут є три різних 
%% шаблони акомпанементу, які використовуються для мелодії акомпанементу.
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

   \partial 4
    r4 | \AccompA \AccompB \AccompA \AccompA
        \AccompA \AccompB \AccompA \AccompA
        \AccompC \AccompC \AccompA \AccompA
        \AccompA \AccompB \AccompA | a2 r4 | \bar "|."
}

%% Верхній рівень означення музики.
<<
  \new Staff \Melody
  \new Staff \Accompaniment
  \new Staff \SecondVoice
>>

Результат роботи

Результат обробки складного прикладу

Використання у Вікіпедії

Можна писати джерельний код LilyPond безпосередньо у тексті сторінки; наприклад, нижче набрано початок «Херувимської пісні» Максима Березовського:

Приклад набору тегу <score> у тілі статті  
<score vorbis="1" lang="lilypond">
%{
  Набрав Д. Редчук. 24 квітня 2013 р.
  16 грудня 2015: ChorStaff → ChoirStaff; назви інструментів.
%}
\new ChoirStaff \with {
  % не працює?..
  \consists "Span_bar_engraver"
  \override SpanBar.break-visibility = #'all-visible
} <<
\new Staff = "upper" <<
  \set Staff.instrumentName = \markup\column{ "С." "А." }
  \key b \minor
  \new Voice = "soprano" \relative d'' {
    \voiceOne
    \autoBeamOff
    %
    \set Score.tempoHideNote = ##t
    \tempo "Adagio" 4 = 60
    %
    d4 d d d
    d4( cis) d a-- ~
    a8. b16 cis8 d e4 d
    \once \override MultiMeasureRest.staff-position = #2
    R1
  }
  \new Voice = "alto" \relative a' {
    \voiceTwo
    \autoBeamOff
    a4 a b a
    b4( a) a fis-- ~
    fis8. g16 e8 fis g4 fis
    \once \override MultiMeasureRest.staff-position = #2
    R1
  }
>>
\new Lyrics \lyricsto "alto" \lyricmode {
  І -- же Хе -- ру -- ви -- ми, і -- же Хе -- ру -- ви -- ми,
}
\new Staff = "lower" <<
  \set Staff.instrumentName = \markup\column{ "Т." "Б." }
  \key b \minor
  \clef "bass"
  \new Voice = "tenor" \relative c' {
    \voiceOne
    \autoBeamOff
    fis4 fis g fis
    e2 fis4 d,\rest
    d2\rest d4\rest a'-- ~
    a8. b16 cis8 d e4 d
  }
  \new Voice = "bass" \relative c' {
    \voiceTwo
    \autoBeamOff
    d4 cis b fis
    g4( a) d, d\rest
    d2\rest d4\rest fis-- ~
    fis8. g16 e8 fis g4 fis
  }
>>
\new Lyrics \with {
  % alignAboveContext = "lower"
} \lyricsto "tenor" \lyricmode {
  \repeat "unfold" 6 { \skip 1 } і -- же Хе -- ру -- ви -- ми,
}
>>

%{
% \layout дублює \layout?-)
\layout {
  \context {
    \ChoirStaff
      \override SpanBar.break-visibility = #'all-visible
  }
}
%}

%
% \header ігнорується?..
\header {
  title = "Херувимська пісня"
  composer = "Максим Березовський (1745–1777)"
}
</score>
Результат

Не вдалося компілювати вхідний файл LilyPond:

line 37 - column 30:
syntax error, unexpected \lyricmode, expecting \sequential or \simultaneous or << or '{'
--------
line 42 - column 8:
wrong type for argument 1.  Expecting pitch, found "b"
--------
line 48 - column 15:
syntax error, unexpected \rest
--------
line 56 - column 16:
syntax error, unexpected \rest
--------
line 63 - column 21:
syntax error, unexpected \lyricmode, expecting \sequential or \simultaneous or << or '{'
--------
line 6 - column 1:
errors found, ignoring music expression
--------
line 81 - column 1:
Unfinished main input

При цьому клацання на зображенні дає змогу звантажити звук у форматі midi.

Таке використання має обмежені можливості, проте цілком придатне для набирання коротких нотних фрагментів, у тому числі поліфонічних.

Переваги програми

  • можливість створювати високоякісні партитури практично будь-якого рівня — від простих одноголосних мелодій до великих оркестрових партитур;
  • мале споживання системних ресурсів;
  • невеликий розмір вхідних файлів; вихідний pdf-файл також у кілька разів менший від аналогічного відсканованого зображення;

Творці програми провели велику роботу над музичними шрифтами, нотами та знаками, які використовуються в програмі, а також над взаємним розміщенням елементів на сторінці: за основу було взято найкращі (на думку авторів) зразки гравіювання нот майстрами переважно першої половини XX-го століття (Bärenreiter, Duhem, Durand, Hofmeister, Peters та Schott)[2].

Недоліки програми

  • відносна складність в освоєнні «мови» написання вихідних файлів;
  • досить слабка реалізація механізму конвертації MIDI.

Взаємодія з іншими програмами

Для набирання нот, перегляду, прослуховування існує окрема програма з графічним інтерфейсом — Frescobaldi[en] (є версії для ОС Linux та Windows)[3].

Деякі графічні нотні редактори, такі як Canorus, Denemo, MuseScore, NoteEdit[en], Rosegarden та TuxGuitar, можуть експортувати файли у форматі LilyPond. MuseScore може також імпортувати такі файли.

Для текстового редактора kate є плагін LilyKDE. Для текстового редактора jEdit є плагін LilyPondTool. За допомогою модуля OOoLilyPond можлива інтеграція файлу Lilypond в документ OpenOffice.org.

Sib2ly — комплекс з плагіна до Sibelius і програми на Ruby, що дозволяють конвертувати партитури у формат LilyPond. У цей час реалізовано лише частину можливостей Sibelius.[4]

До складу LilyPond входить програма lilypond-book, що дозволяє використовувати розмітку LilyPond в LaTeX, HTML, Texinfo і DocBook: lilypond-book витягує розмітку LilyPond, генерує зображення нотних фрагментів у форматі PostScript, PDF чи PNG, після чого замінює розмітку командами вставки відповідних зображень[5].

Примітки

  1. Автори. Команда розробки LilyPond. Архів оригіналу за 8 липня 2013. Процитовано 16 лютого 2010.
  2. Essay on automated music engraving [Архівовано 7 грудня 2015 у Wayback Machine.] на сайті проекту.
  3. Сайт проекту Frescobaldi. Архів оригіналу за 15 квітня 2013. Процитовано 24 квітня 2013.
  4. Сайт проекту на SourceForge. Архів оригіналу за 24 січня 2012. Процитовано 3 листопада 2010.
  5. lilypond-book:Integrating text and music. GNU LilyPond — The music typesetter (англійською) . Архів оригіналу за 8 липня 2013. Процитовано 23 січня 2010.

Див. також

  • ABC.

Посилання

На Мета-вікі є сторінка
Music markup
Вікісховище має мультимедійні дані за темою: GNU LilyPond
  • Офіційний сайт LilyPond
  • «Lilypond, a system for automated music engraving» — брошура авторів програми (Han-Wen Nienhuys, Jan Nieuwenhuizen); PDF
  • Форум по LilyPond
  • Офіційний сайт редактора Frescobaldi [Архівовано 15 квітня 2013 у Wayback Machine.]
  • Вікі по LilyPond
  • The LilyPond Report
  • Репозитарій уривків на LilyPond
  • Архів нот, набраних за допомогою LilyPond [Архівовано 8 листопада 2008 у Wayback Machine.]
  • Denemo — графічний інтерфейс для LilyPond [Архівовано 15 серпня 2010 у Wayback Machine.].
  • LilyPondTool, плагін для jEdit з підтримкою LilyPond.
  • Музипедія, вільна енциклопедія, яка використовує LilyPond [Архівовано 7 березня 2017 у Wayback Machine.]