GNU LilyPond

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

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 безпосередньо у тексті сторінки; наприклад, нижче набрано початок «Херувимської пісні» Максима Березовського:


%{
  Набрав Д. Редчук. 24 квітня 2013 р.
%}
\new ChorStaff \with {
  % не працює?..
  \consists "Span_bar_engraver"
  \override SpanBar #'break-visibility = #'all-visible
} <<
\new Staff = "upper" <<
  \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" <<
  \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)"
}

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

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

Переваги програми[ред.ред. код]

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

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

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

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

Взаємодія з іншими програмами[ред.ред. код]

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

Існує LilyKDE — плагін для текстового редактора kate, що спрощує набір партитур в kate. Для KDE 4 існує окрема програма — Frescobaldi.

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

Існує плагін LilyPondTool до редактора jEdit.

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

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

Примітки[ред.ред. код]

  1. «Автори». Команда розробки LilyPond. Архів оригіналу за 2013-07-09. Процитовано 2010-02-16. 
  2. Essay on automated music engraving на сайті проекту.
  3. Сайт проекту на SourceForge
  4. «lilypond-book:Integrating text and music». GNU LilyPond — The music typesetter (англійською). Архів оригіналу за 2013-07-09. Процитовано 2010-01-23. 

Див. також[ред.ред. код]

Посилання[ред.ред. код]