Куличкин Блог

А это http://petya.blogik.org мой другой блог


07.05.2009 14:56
Читать только Набор нот на компьютере. Введение в Лилипонд (LilyPond)


Набор нот на компьютере. Введение в Лилипонд (LilyPond)

куличкин

Зачем нужно об этом писать, когда есть документация на lilypond.org и даже специальный раздел на forumklassika, где Вас совершенно бесплатно проконсультируют? Мой ответ будет предельно прост. Я пишу, в первую очередь, для музыкантов. А среди них есть такие, которые не только никогда в жизни не занимались программированием, но и компьютер включают не особо часто. Моя задача состоит в том, чтобы после чтения этого текста каждый из них при желании смог САМОСТОЯТЕЛЬНО разобраться в документации Лилипонда... даже не зная английского языка, на котором она написана!

Теперь небольшой абзац для поклонников программ Finale и Sibelius. Те, кого интересует исключительно LilyPond, полагаю могут безо всякого ущерба его пропустить.

Я с большим уважением отношусь как к Finale, так и к Sibelius. В 2003 году в Финале я набрал около 500 страниц современной оперной партитуры («Хаджи-Мурат» Ш. Чалаева). Позднее в Сибелиусе я набрал три из четырех частей 2-го струнного квартета А. Шёнбега (четвертую часть я полностью еще не набрал, т.к. набираю сейчас в том же Сибелиусе). У каждого из них есть свои достоинства. В Финале, в частности, есть богатая система горячих клавиш, позвляющая быстро добраться до нужной опции. В Сибелиусе есть Keypad — очень тонкое изобретение, позволяющее легко добираться до наиболее  часто используемых функций, используя самую правую часть компьютерной клавиатуры. Создатели этих программ недооценили лишь один малозаметных, но весьма важный нюанс. Компьютерная клавиатура рассчитана не на ноты, а на текст. А мышь, на сегодняшний день, почти неудовлетворительный инструмент для рисования. Такая малозаметная, на первый взгляд, деталь колоссально обесценивает графический интерфейс как Finale, так и Sibelius. Если Вы не профессиональный художник или дизайнер, а человек с корявыми руками (как я) или с пальцами, оптимизированными под фортепианную клавиатуру, Вы, конечно, знаете, насколько трудно бывает передвинуть куда надо лигу, значок крещендо или диминуэндо и т.п. Если у Вас особо тяжелый случай (как у меня), то даже набор нот мышкой превращаетсяв сплошную пытку, настолько часто Вы промахиваетесь мышкой между линейками. Я уже не говорю про то, что MIDI-клавиатура сама решает, до-диез она играет или ре-бемоль. Ее можно запрограммировать для простых случаев, но универсального алгоритма здесь нет. Почему? Здесь тоже не учтено, что музыка издавна пишется вовсе не на секвенсере через миди-клавиатуру и 16 каналов. Между музыкой записанной и музыкой исполненной есть большая разница. А нотный редактор нужен для фиксации музыки ЗАПИСАННОЙ. Поэтому в результате всех этих несовершенств скорость набора нот существенно падает. Это, правда, заметно лишь на крупных сочинениях (см. начало абзаца). В Лилиподне многое делается гораздо быстрее именно потому, что он использует почти исключительно обычную клавиатуру. Дергаться от клавиатуры к мышке и обратно нет совершенно никакой необходимости. А скорость печати у нас с вами, как правило, довольно высокая. Поэтому я советую попробовать освоить в придачу к вашему любимому редактору еще и LilyPond. Тем более, что освоить его совсем не трудно. А еще он,в отличие от Финале и Сибелиуса, бесплатный.

Почему я сам начал набирать ноты в Лилипонде? Причин было несколько. Во-первых, меня не вполне устраивала скорость набора нот в Финале и Сибелиус. Это долго. Но нормальных альтернатив я не видел. Где-то год назад я начал подолгу сидеть в Интернете. А ftp-протокол через windows, прямо вам скажу, не сахар. Я перешел на Linux. Под Линуксом Сибелиус не работал. Точнее говоря, работал, но как-то очень глюкаво. Зато под Линуксом раотал Лилипонд. Однажды, когда я был в гостях у Алексея Хохлова, мы его скачали и поставили. Затем полдня не могли разобраться, с какой стороны он включается. Затем я его снес. Затем — еще через полгода — поставил снова. На этот раз я поступил хитрее. Полазив по Интернету, я нашел весьма скудные (!) сведения о том, как набирать ноты в LilyPond'е, посетил forumklassika, прочитал тамошний tutorial на русском языке и... этого мне хватило, чтобы скачать документацию с lilypond.org и начать читать ее с начала. Хочу всех обнадежить: самое трудное в Лилипонде — это его включить. После того, как вы откомпилировали свою первую программу, можете смело считать, что половина дела сделана.

Я практически не оговорился. LilyPond — это, по сути, компилятор программ, написанных на специальном языке (в этом его, быть может, главное отличие от Finale и Sibelius). Причем язык этот очень близок естественному языку (как Pascal или SQL), поэтому писать на нем очень легко. Впрочем, запустить Лилипонд довольно просто. Если у Вас есть файл с музыкой test.ly, то:

  • в Windows достаточно два раза щелкнуть по нему мышкой.Появятся файлы test.pdf, test.ps и test.txt. Первые два из них — нотные документы для печати, третий — лог работы компилятора. в нем содержатся сведения об ошибках, если Вы что-то набрали не так, как нужно
  • в Linux можно набрать в консоли "lilypond test.ly". Появятся файлы test.pdf и test.ps. Лог с ошбками выведется в той же консоли

Разумеется, Лилипонд можно запускать и по-другому, но... Не все сразу!

Документация по LilyPond написана, на мой взгляд, очень удачно. При первом прочтении может показаться, что она написана непоследовательно, поскольку часто встречаются термины, значения которых раскрываются позднее. Но в этом и заключается изюминка: на каждом этапе вы можете применитьто, что уже знаете, на практике. Что-то вы сможете сделать, прочитав только первую главу, вторая глава откроет вам еще кое-что и так далее. В итоге вы постепенно освоите все богатство, все тонкости нотного набора в Лилипонде. Если бы документация писалась не "от частного к общему", а наоборот, вам пришлось бы для начала изучить язык програмирования Scheme, на котором пишутся функции в LilyPond. А зачем вам изучать язык программирования, когда цель — набор нот? Хотя, конечно, тот, кому нужно, будет использовать и средства Scheme. Но таких людей, все же, не 100%. 

Теперь перейдем к конкретике. Простейшая программа на LilyPond выглядит так:

Здесь, впрочем, мне придется прерваться. Продолжу чуть позже

Продолжаю...
того же числа, 20.04

 

 

 

 

Итак, переходим к конкретике. Простейшая программа на LilyPond выглядит так:

\version "2.12.2"
\relative c'  { c d e f g f e d c }

Как видите, нетрудно догадаться, что c d e f g f e d c — это ноты. Фигурные скобки { } показывают, что к тому, что внутри них, относится команда \relative c'. Что такое \relative c', положим нам пока не понятно. Но давайте посмотрим на результат:

 Простейшая программа на LilyPond

Простейшая программа на Лилипонде

(щелкните мышкой по картинке, чтобы увидеть код)

Теперь виден следующий принцип. Ноты все располагаются относительно ноты до первой октавы. Если бы надо было получить все ноты октавой выше — достаточно вместо \relative c' написать \relative c'', Кроме того, можно заметить, что каждая следующая нота пишется как можно ближе к предыдущей. В частности, нота ре нарисовалась не в малой, а в первой октаве. Да и вообще, нужны ли здесь мои комментарии? По большому счету, достаточно увидеть программный код, а затем получившуюся картинку, чтобы понять, что произошло.

Конечно, возникают вопросы. Что делать, если нужен не скрипичный, а басовый ключ? Как сделать другой размер? Как поставить заключительную тактовую черту? Не спешите. Если изучать LilyPond последовательно и ничего не пропуская, все со временем выяснится. Создатели Лилипонда просто заботятся о том, чтобы ваша крыша не поехала от чрезмерных сведений на каждом этапе. Скрипичный ключ, размер 4/4, тональность до мажор, наличие тактовых черт, пятилинейная нотная строка и многое другое установлено по умолчанию. КАЖДОЕ из умолчаний можно поменять. Но не все сразу. Если человек не знает ноты, какой смысл объяснять ему особенности тонального плана в симфониях Бетховена? Если прописать вручную ключ, размер и тональность, то самая простая программа не была бы уже самой простой. Она бы выглядела, например, так:

\version "2.12.2"
\relative c' { 
\clef treble 
\time 4/4
\key c \major
c d e f g f e d c }

Согласитесь, что этот текст несколько сложнее, чем предыдущий. Хотя результат — абсолютно аналогичный предыдущему. Но незнакомых слов больше. И не зная, что означает текст предыдущей, простейшей программы, разобраться с этой, более сложной было бы, возможно, и не очень просто. Однако мы уже знаем, что означает  "c d e f g f e d c" и " \relative c' "! Поэтому догадаться об остальном не так уж трудно:

\clef treble — скрипичный ключ
\time 4/4 — размер 4/4
\key c \major — тональность до мажор

Как теперь сделать тональность ре минор? Это практически очевидно: написать вместо "\key c \major" — "\key d \minor". Так же можно изменить ключ на басовый (bass), альтовый (alto), теноровый (tenor) и т.д.Так же можно изменить и размер. У вас уже возникли вопросы типа: "Откуда берутся названия ключей? какие можно вводить размеры? как указать сложный размер?" Прекрасно! Значит, мы еще с чем-то разобрались и пора двигаться дальше. Конечно, где-то в Лилипонде запрограммировано, что "bass" означает басовый ключ, "tenor" — теноровый и т.д. Просто все "служебные" слова максимально приближены к естественным их значениям.

Читая документацию LilyPond, вы будете двигаться от простого к сложному. На каждом этапе задачи будут такими же простыми, как те, которые мы только что разобрали. Надо лишь читать подряд, ничего не пропуская. Простейшая программа — верхушка лилипондовского айсберга, ниже которой располагаются ключи, тональности и размеры, затем конструирование партитур и верстка, затем приемы нестандартной нотации, затем переопределение заданных по умолчанию параметров (от месторасположения указаний темпа до толщины штиля или ребра), затем написание  функций на языке Scheme. Попутно вы узнаете множество специально созданных решений для стандартных ситуаций (типа перепрыгивающих нот из левой руки в правую на фортепиано). И могу вас заверить,  по количеству удобных стандартных решений, актуальных именно для музыканта, LilyPond очень серьезно обгоняет Finale и Sibelius!

Как изучать документацию? Я поступил как «мамонт». Скачал PDF-файл (http://lilypond.org/doc/v2.10/Documentation/user/lilypond.pdf), распечатал его, переплел у брошюровщиков в ближайшем подвале и прочитал. Читал примерно два дня. Потому что ехал в поезде. Если вам проще читать на компьютере, то, возможно, проще читать HTML-версию (http://lilypond.org/doc/v2.10/Documentation/user/lilypond-big-page). Там можно кликнуть мышкой на любой из примеров и посмотреть соответствующий код.

И еще один важный момент. Набирать код для LilyPond лучше в специальных блокнотах, где есть подсветка тэгов. Я, поскольку обитаю в SuSE Linux, использую встроенный редактор KWrite. В нем текст простейшей программы выглядит так:

Простейшая программа LilyPond в KWrite

Под Windows, я уверен, есть блокноты, которые, по крайней мере, не хуже. Существуют умельцы (где-то в сети, забыл где), которые набирают лилипондовский текст в редакторе из программы FAR (раскрасив тэги соответствующим образом), а Лилипонд запускается у них прямо из FAR'а по горячей клавише. Это фантастически удобно.

О выборе блокнота советую подумать серьезно, так как по мере усложнения текста наглядность начинает приобретать все большее и большее значение:

 

код LilyPond в KWrite. Пример посложнее

 

Очень удобно использовать в качестве блокнота редактор vim. Для этого, правда, необходимо освоить синтаксис Vim'а, хотя бы в масштабах того, что изложено в vimtutor (чтобы его запустить, надо после установки редактора vim набрать в консоли vimtutor в Linux или найти Vimtutor в меню Пуск в Windows). Кое-что дополнительно я написал здесь: LilyPond и Vim. Подсветка тэгов и расположение окон

В заключение, приведу два примера. Почему именно эти два? Во-первых, ноты я набрал сам. Во-вторых, здесь все-таки не абстрактный набор нотных знаков, а более или менее живая музыка (о чем, впрочем, судить вам).

 Духовный стих "Жизнь плачевно я провожаю", набранный в LilyPond

Духовный стих "Жизнь плачевно я провожаю", набранный в LilyPond

(щелкните мышкой по картинке, чтобы увидеть код, прослушать MIDI можно здесь)

 

Пример гармонизации, набранный в LilyPond

Пример гармонизации, набранный в LilyPond

(щелкните мышкой по картинке, чтобы увидеть код, прослушать MIDI можно здесь)

 

Вот и все.

Удачи вам в изучении технологий набора нот на компьютере!

П.К.

P.S. Для тех, кто считает, что ноты целесообразно набирать от руки. Какое-то время назад  и сам так думал. Однако мне помог мой характер, который не дает делать дело вовремя, а заставляет все оставлять на последний момент. Около 2000 года на 1-м курсе Гнесинки я понял, что написание от руки партитуры дипломной работы приведет к фиаско: я просто не успею изготовить оркестровые голоса. Так я стал изучать Finale. В итоге характер не подвел: на изготовление партий остался ровно один день. Если вы, в отличие от меня, волевой человек, все равно советую подумать: изготовление оркестровых (или даже ансамблевых) партий — штука долгая. Или дорогая...

 

 

Комментарии:

olga
14.05.2009 20:28

Мне страшно представить, как будет выглядеть код для партитуры!)))


Shoorick
22.07.2009 13:38

Живущему под KDE4 можно порекомендовать Frescobaldi — он сочетает в себе редактор (а точнее, общую для разных КДЕшных редакторов часть) с рядом полезных штуковин: просмотром результата в PDF, возможностью перейти к нужной ноте в лилипондовом исходнике, кликнув по ней в окошке просмотра PDF, а также с генератором новых файлов, где можно в диалоговом окошке задать используемые голоса, кучу текстовых параметров (название произведения, авторов, темп), да и кучу нетекстовых тоже (размер, тональность).

Ещё советую обратить внимание на Denemo — он хорош в качествне промежуточного инструмента для набора нот перед отправой их в Frescobaldi и Lilypond.


Rambler's Top100