Перейти до вмісту

GNU LilyPond

Матеріал з Вікіпедії — вільної енциклопедії.
GNU LilyPond
Офіційний логотип LilyPond
ТипНотний редактор
АвториHan-Wen Nienhuys, Jan Nieuwenhuizen
РозробникиКоманда розробки LilyPond[1]
Перший випуск1996
Стабільний випуск2.18.2 (23 травня 2014; 10 років тому (2014-05-23))
Нестабільний випуск2.19.7 (25 травня 2014; 10 років тому (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

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

Результат

Не вдалося компілювати вхідний файл 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)[3].

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

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

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

[ред. | ред. код]

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

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

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

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

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

Примітки

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

Див. також

[ред. | ред. код]

Посилання

[ред. | ред. код]