Можу відверто зізнатися, що я відчайдушний фанат типографської справи. Не менше мені подобається гітарна музика, українські пісні та програмування. Виявляється, є кухня, в якій можна приготувати відмінний салат із усіх цих частин. Мова піде про моє відкриття системи підготовки до друку музичних партитур Lilypond.
Нещодавно схотілося вивчити кілька українських пісень, знайти б тільки якусь хорошу обробку для гітари. Після години пошуків, тижня переговорів, таки отримав придбану на сайті http://gitara.in.ua збірку “Повій, вітре, на Вкраїну”. Тридцяток пісень — це дуже добре, тим більше, що я їх всіх раніше чув, і вони мені подобаються. До цих пір ніколи не доводилося розбирати та вчити гітарні п’єси з нот, проте виявилося, що це насправді легко.
Очевидно, альбом набраний у якомусь офісному текстовому процесорі, якість нотних партитур теж нікудишня — це тільки суб’єктивні враження. Але саме воно спонукало озирнутися по сторонах. Виявляється, продуктів є багато, перепробувати всі неможливо, тому довелося порівнювати відгуки користувачів. Таким чином вибір спинився на “ставку́ лілій”.
Розібратися із системою після кількох спотикань вдалося легко, тому хочу поділитися результатом, провести по своїх слідах. Від дистрибутиву лінукса наступні кроки залежать слабко, проте відмінності є. Я спробував це у debian-40r1, який у мене є пісочницею для різноманітних експериментів з ядром, та у Fedora-8, під керуванням якої працює лаптоп.
Procedure 1. Підготовка партитури пісні “Реве та стогне Дніпр широкий”
Встановлюємо систему Lilypond
З репозитарію Федори:
[sakhnik@incognito ~]$ sudo yum install lilypond lilypond-doc
З репозитарію Дебіан:
[sakhnik@sandbox ~]$ sudo apt-get install lilypond
Вивчаємо підручник
Уважно читаємо підручник, який вже має бути десь у локальній файловій системі. Мушу зізнатися, що цей пункт, як завжди, я пропустив, але часто використовував документ в якості довідника.
Готуємося до бою.
Отже, до цих пір ми вже зрозуміли, що lilypond — це компілятор на зразок TeX/LaTeX. Якщо його накормити хитрим текстовим файлом, то він поверне кілька графічних партитур, файл MIDI для контролю за процесом на слух.
Кожна нота вихідного файлу PDF містить посилання на місце її в джерелі: textedit:///home/sakhnik/dnipro.ly:10:12:36
. У підручнику описано, як скористатися цим фактом у зв’язці lilypond-invoke-editor
та xpdf
. Не працює? — Не біда, легко підпилюємо GNOME, щоб він розбирав такі URL і користуємося більш зручним, на мій погляд, evince
:
gconftool-2 --set --type=string /desktop/gnome/url-handlers/textedit/command 'url.sh "%s"'
gconftool-2 --set --type=bool /desktop/gnome/url-handlers/textedit/enabled true
gconftool-2 --set --type=bool /desktop/gnome/url-handlers/textedit/need-terminal false
Зрозуміло, що сам url.sh
ще потрібно навчити запускати редактор Vim
:
#!/bin/bash
#
# Handle passed url. Useful for lilypond editing.
[[ $# != 1 ]] && echo "`basename $0` <url>" && exit 1
if [[ "$1" =~ '^textedit://([^:]+):([0-9]+):([0-9]+).*$' ]]; then
server=LILYPOND
if [ -z `gvim --serverlist | grep $server` ]; then
gvim --servername $server
fi
fname=${BASH_REMATCH[1]}
line=${BASH_REMATCH[2]}
col=${BASH_REMATCH[3]}
gvim --servername $server \
--remote-send ":e $fname<cr>:call cursor($line,$col)<cr>\
:call foreground()<cr>"
exit 0
fi
echo "Unknown url scheme"; exit 1
Готуємо редактор Vim
Розробники Lilypond підготували виділення синтаксису, макроси для швидкого набору, компіляції. При встановленні пакету скрипти редактора автоматично копіюються у директорію /usr/share/vim/vim70
. Але я використовую власної збірки найновішу версію редактора, тому розширення Lilypond довелося скопіювати самостійно.
Виконуємо набір
Власне, це і є найбільш цікава частина справи. Lilypond розроблений з допомогою мови програмування Схема, і вхідні файли теж є частиною програми. Таким чином набірник у руки отримує справжній швейцарський ніж: крім різання ним можна рубати, свердлити, точити, різьбити, відкорковувати вино… Найбільш вдалі зразки застосування можна знайти серед прикладів підручника.
Цикл розробки дуже простий. Компілюємо вихідний файл dnipro.ly
, переглядаємо його з допомогою evince
, тикаємо мишкою на об’єкт, який потрібно поправити. На екрані з’являється (чи просто виводиться на передній план) вікно редактора Vim
. Далі робимо потрібні виправлення, виконуємо команду :make
, повертаємося до переглядача і перечитуємо файл комбінацією клавіш Ctrl+R.
Подолати весь документ цілком відразу, очевидно, не вдасться. Тому я набирав його десь зо три години (з перервами, зрозуміло) поетапно.
Підготовка шаблону
Шаблон — це перший-ліпший приклад з підручника, який схожий на потрібний документ. Його тільки потрібно очистити від зайвого.
Набір нот
По черзі такт за тактом набрав усі три голоси́, часто компілюючи та звіряючись із джерелом.
Набір аплікатури та струн
Це легко додається у існуючий документ. На цьому етапі вперше виявилася потреба ручної корекції виводу. Але, як було згадано вище, це здійснюється дуже просто.
Динаміка та мітки
Ще простіше, ніж попередній пункт, оскільки розташування знаків більш одноманітне.
Куштуємо плоди
Саме пора насолоджуватися результатом.
Наступного разу розповім, як можна доповнити нотний запис п’єси табулатурою, трохи змінивши вихідний код.