wiki:lessons/LilyPondRhythm

Набор ритмических "ниток" в LilyPond

Что мы учимся делать

Время от времени возникает необходимость записать только ритм, безо всякой мелодии --- это может быть упражнение, партия ударного инструмента или ритмическая фигура для импровизации. LilyPond позволяет красиво набрать такой кусок достаточно простыми средствами.

Набор нот

Набор звуков без высоты в LilyPond'е не сложнее, чем нот --- для многих перкуссионных звуков есть свои обозначения. Например, четыре клика метронома длиной в одну четверть мы можем набрать вот так:

\drummode {cl cl cl cl}

Команда \drummode включает режим работы с ударными. Каждая команда cl добавляет клик метронома.

Компиляция

Для получения результата достаточно сказать в коммандной строке:

lilypond percussion.ly

Здесь percussion.ly --- имя вашего исходного файла.

Результат зависит от настроек, но в любом случае, если мы набрали файл без ошибок, это будет результат в каком-то из многочисленных выходных форматов LilyPond. В моём случае получаются ноты в PDF и PostScript.

Выглядит это примерно вот так:

Простой пример нотного набора

Совсем просто, правда?

Нотный стан в одну линейку

Наш фрагмент не содержит высоту нот, поэтому пять линеек на нотном стане нам явно много.

Оставить единственную линейку мы можем переопределением значения отвечающей за количество линеек переменной (да, вы можете таким путём получить две линейки; да, и восемь тоже; нет, для набора гитарной табулатуры есть другой путь, гораздо проще):

\new DrumStaff \with {
 \override StaffSymbol #'line-count = #1
}
\drummode {cl cl cl cl}

Заново откомпилируем наш файл и полюбуемся на результат.

Нотный стан с одной линейкой

Вот так, например, результат выглядит у меня.

Длительности

Чтобы изменить время звучания ноты, нужно подписать после неё её длительность. Целая нота обозначается единицей, половинка --- двойкой, четверть --- четвёркой и т.д. Длительность с точкой обозначается... точкой! После того, как одной ноте задана длительность, все последующие будут такими же, пока не будет явно задана новая длительность.

Немного поиграем с длительностями.

\new DrumStaff \with {
 \override StaffSymbol #'line-count = #1
}
\drummode {cl4. cl cl8 cl}

Это будет выглядеть вот как:

Явно задаём длительность

Обратите внимание --- ко второму клику не надо подписывать обозначение четверти с точкой, у него та же длительность, что и у первого клика. То же касается второй восьмой.

Размер

У любого музыкального произведения бывает размер. В LilyPond он задаётся вполне интуитивным образом: дробь, две цифры через слеш ("/"):

\new DrumStaff \with {
 \override StaffSymbol #'line-count = #1
}
\drummode {
    \time 8/8
    cl4. cl cl8 cl
}

Вот что получится:

Явно задаём размер

Для этого фрагмента мы указали размер "восемь восьмых".

Тактовые черты

По умолчанию тактовые черты на нотном стане в одну линию будут получаться слишком короткими. Чтобы их было лучше видно, переопределим значение переменной, хранящей длину тактовой черты:

\new DrumStaff \with {
 \override BarLine #'bar-size = #3
 \override StaffSymbol #'line-count = #1
}
\drummode {
    \time 8/8
    cl4. cl cl8 cl
}

Получается:

Делаем длинную тактовую черту

Теперь тактовая черта видна гораздо лучше.

Несколько тактов

Раз уж теперь у нас есть красивые тактовые черты, наберём ещё один такт нашего ритмического фрагмента:

\new DrumStaff \with {
 \override BarLine #'bar-size = #3
 \override StaffSymbol #'line-count = #1
}
\drummode {
    \time 8/8
    cl4. cl cl8 cl
    cl4 cl4. cl
}

Синтаксис LilyPond этого не требует, но я пишу такты один под другим, так их легче найти при редактировании.

А в результате получается примерно вот что:

Два такта

Обратите внимание на то, что тактовые черты расставляются автоматически.

Паузы

Паузы в LilyPond обозначаются буквой r. Длительности пауз задаются так же, как длительности нот.

\new DrumStaff \with {
 \override BarLine #'bar-size = #3
 \override StaffSymbol #'line-count = #1
}
\drummode {
    \time 8/8
    cl4. cl cl8 cl
    cl4 cl4. cl
    r8 cl r2.
}

Выглядит это вот так:

Паузы

Длительность пауз влияет на длительность следующих за паузой нот.

Триоли

Задать триоль (квинтоль, секстоль, септоль и т.д.) тоже очень просто: достаточно дать команду \times для объединяемой в триоль группы нот. А перед группой нот нужно записать дробь (через слеш), у которой в числителе будет длительность, на протяжении которой звучит группа, а в знаменателе --- количество нот в группе:

\new DrumStaff \with {
 \override BarLine #'bar-size = #3
 \override StaffSymbol #'line-count = #1
}
\drummode {
    \time 8/8
    cl4. cl cl8 cl
    cl4 cl4. cl
    r8 cl \times 4/3 {cl [cl cl]} cl cl
}

Квадратные скобки здесь нужны для правильной группировки нот.

Триоли

Добавляем звук

Выглядит это замечательно, но хочется всё-таки и послушать то, что мы набрали, правда?

Сделать это очень просто. Достаточно воспользоваться командой \score, позволяющей задавать выходные форматы набранной музыки:

\score {
    \new DrumStaff \with {
        \override BarLine #'bar-size = #3
        \override StaffSymbol #'line-count = #1
    }
    \drummode {
        \time 8/8
        cl4. cl cl8 cl
        cl4 cl4. cl
        r8 cl \times 4/3 {cl [cl cl]} cl cl
    }
    \midi{}
    \layout{}
}

В результате очередной компиляции мы получим не только графические файлы с нотами, но и MIDI-файл с музыкой... э-э-э, со звучанием того, что мы набрали, если быть точным.

Указываем версию

Внимательный и неленивый читатель, набравший и откомпилировавший все примеры, мог заметить, что при каждой компиляции LilyPond выдавал что-то вроде:

GNU LilyPond 2.11.61
Processing `drums.ly'
Разбираю...
drums.ly:0: предупреждаю: : no \version statement found, please add

\version "2.11.61"

for future compatibility

Авторы LilyPond меняют синтаксис от версии к версии --- именно благодаря этому LilyPond настолько удобен, но беспроблемной работы будущих версий LilyPond с вашими файлами никто обещать не может. Чтобы обеспечить совместимость, надо указать версию с помощью команды \version. В моём случае версия LilyPond --- 2.11.61, её я и указываю.

Вот что получается в результате:

\version "2.11.61"
\score {
    \new DrumStaff \with {
        \override BarLine #'bar-size = #3
        \override StaffSymbol #'line-count = #1
    }
    \drummode {
        \time 8/8
        cl4. cl cl8 cl
        cl4 cl4. cl
        r8 cl \times 4/3 {cl [cl cl]} cl cl
    }
    \midi{}
    \layout{}
}

Заключение

LilyPond при первом знакомстве может напугать пользователя. Как и TeX, на основе которого он построен, LilyPond предпочитает логичность и единообразие синтаксиса простоте освоения для новичка. Однако, как и в случае с TeX/LaTeX, после того, как вы освоили несколько базовых принципов, самые разные по уровню задачи, в том числе запредельно сложные для пользователей традиционных нотных редакторов, вы будете решать одинаково легко. Кроме того, непревзойдённое качество результата с лихвой окупает усилия по освоению.

Существуют средства, позволяющие набирать ноты в LilyPond с помощью WYSIWYG-интерфейса, но я не рекомендую ими пользоваться, по крайней мере, пока вы не освоитесь с основными приёмами набора и вёрстки в "чистом" LilyPond. Тут как с другим языком разметки, HTML --- ни одна машина не способна сравниться с человеком в качестве кода, о читаемости и возможности дальнейшего редактирования уже не говорю. Кроме того, WYSIWYG-редакторы удобны только для небольших и простых нотных партий --- чем больше объём набираемого текста и чем он сложнее, тем очевиднее становятся преимущества LilyPond.

Попробуйте набирать музыку в LilyPond, и через некоторое время вам уже не захочется возвращаться к визуальным нотным редакторам --- логичность, изящество и мощь LilyPond захватывают каждого, кто его освоил.

Вдогонку

Для того, чтобы штили были направлены вверх, достаточно перед нотами добавить команду \stemUp:

  \drummode {
    \time 8/8
    \stemUp
    cl4. cl cl8 cl
  }

Назад в раздел "Учебные материалы"

Назад на главную страницу

Last modified 15 years ago Last modified on Feb 28, 2009, 4:01:08 AM

Attachments (8)

Download all attachments as: .zip