= Сравнение LilyPond с WYSIWYG-редакторами = !LilyPond — это средство нотной гравировки, в котором нотный текст набирается с помощью разметки, напоминающей разметку популярной издательской системы LaTeX. WYSIWYG (What You See Is What You Get, "что видишь, то и получишь") — это обозначение интерфейсов, в которых документ отображается так, как он будет выглядеть на печати. Этот текст объясняет, почему для набора нот правильно использовать именно !LilyPond. Если коротко — потому, что !LilyPond удобнее и проще WYSIWYG-редакторов. Даже если вам кажется, что это не так, я берусь убедить вас в обратном. Но для этого придётся разобраться с тем, что такое "удобство" и "простота". == Удобство == Можно ли объективно оценить то, насколько программа удобна, или всё, что здесь можно сказать — "на вкус и цвет все фломастеры разные"? Оказывается, можно. Специалисты по эргономике (например, [http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BA%D0%B8%D0%BD,_%D0%94%D0%B6%D0%B5%D1%84 Джеф Раскин], разрабатывавший интерфейс первых "Макинтошей", долгое время считавшийся эталоном "дружественности к пользователю") предлагают считать удобной ту программу, которая: * во-первых, требует от пользователя меньше действий для выполнения какой-то задачи, чем другие программы; * во-вторых, позволяет большее количество действий сделать рефлекторными, автоматическими. Согласитесь, разумные критерии. Действительно, программу, в которой для часто повторяющегося действия надо каждый раз искать нужный пункт в баобабообразном меню с двадцатью уровнями вложенности или нажимать последовательность из десяти клавиш, трудно назвать удобной. То же и с привычками — например, если одно и то же действие в похожих ситуациях приводит к совершенно разным результатам, вы почти наверняка будете путаться и раздражаться, правда? Давайте посмотрим, как обстоят дела с удобством !LilyPond. Что касается количества действий, то здесь !LilyPond явно обгоняет WYSIWYG-редакторы. Там, где WYSIWYG-интерфейс требует выбрать из палитры нужный знак, попасть курсором в нужное место и нажать на левую кнопку мыши, в !LilyPond достаточно нажать несколько кнопок на клавиатуре. Проверьте сами — что у вас получится быстрее, набрать гамму фа-мажор в любом доступном вам WYSIWYG-редакторе или напечатать строчку "`f g a b c d e f`"? Кроме того, в WYSIWYG-редакторах много времени приходится тратить на растаскивание наезжающих друг на друга знаков, а !LilyPond большую часть таких проблем решает автоматически (подробнее об этом ниже). Что же касается привычек, то человек, знающий !LilyPond, набирает большие блоки кода (например, последовательность нот с лигой) так же автоматически, как мы набираем слова и предложения в обычном тексте. А вот в WYSIWYG-редакторах с возможностью сформировать привычки гораздо хуже — точное попадание мышкой нельзя сделать автоматическим, это в !LilyPond "`c`" всегда означает "нота до ''в текущей позиции''", а вот в визуальных редакторах ''текущая позиция'' каждый раз разная. Люди, которые говорят, что !LilyPond неудобен, путают удобство и привычность. Причём привычен для них при этом как раз неудобный интерфейс. Ну, запретить им продолжать его использовать мы не можем, но если уж изучать средство нотного набора с нуля, то лучше то, которое действительно удобнее, не так ли? == Простота == А можно ли оценить простоту использования программы? На самом деле, тоже да: * использовать программу тем проще, чем меньше информации надо усвоить пользователю, чтобы решать свои задачи; * использовать программу тем проще, чем больше информации о состоянии задачи пользователь видит в момент работы и, соответственно, чем меньше ему надо удерживать в голове, т.е. насколько интерфейс нагляден. (Будет кто-то спорить? По-моему, опять же довольно очевидные утверждения.) Разберёмся сначала с количеством информации, которую надо усвоить, чтобы научиться набирать ноты в !LilyPond и в визуальных редакторах. На первый взгляд, здесь WYSIWYG-средства гравировки выигрывают с большим отрывом: бери мышь да тыкай, вот и всё изучение. Но нотный текст, особенно песенный, состоит не только из отдельных нот: в нём есть сложные группировки, аккорды (спасибо, если без аккордовых сеток), обозначения аппликатуры, текст, репризы и прочие знаки сокращения, возможно, мелизмы и варианты мелодии! И вот при попытке всё это набрать визуальные редакторы обеспечат вам увлекательнейшие часы, проведённые за чтением документации и форумов. !LilyPond, в свою очередь, требует для старта некоторых (впрочем, на самом деле не слишком значительных) усилий. Но единожды приложив эти усилия, вы сходу сможете набирать даже не самые простые партитуры. И (что гораздо важнее), понять, как сделать какие-то более сложные вещи, вам будет куда проще, чем в случае использования визуальных редакторов. Можно сравнить !LilyPond и WYSIWYG-редакторы, используя понятие "кривой обучения". Так называют график, отражающий (в обсуждаемом нами случае) зависимость количества усилий, которые пользователь должен вложить в освоение программы, от сложности задачи, которую ему нужно решить (т.е. от того, какая часть предоставляемых программой инструментов нужна пользователю). Для визуальных редакторов кривая обучения выглядит примерно так: [[Image(learning-curve-WYSIWYG.png)]] Базовые возможности в визуальных редакторах даются почти даром, но чем сложнее задача, тем больше приходится работать, график задирается всё круче и довольно быстро уходит в бесконечность — ну вот не заложили создатели таких возможностей в редактор, всего предусмотреть невозможно. А кривая обучения для !LilyPond выглядит примерно так: [[Image(learning-curve-markup.png)]] Усилия придётся приложить сопоставимые. Но динамика кривой обучения в этом случае гораздо приятнее — чем дальше, тем меньше нам нужно изучать для того, чтобы продолжать развиваться. Более того, природа !LilyPond такова, что нет чёткой грани между созданием документов с хитрой разметкой и дописыванием самой программы, то есть мы не ограничены теми возможностями, которые нам предоставили авторы — в общем-то, !LilyPond позволяет сделать всё, что физически представимо на листе бумаги: к бесконечности стремятся ваши возможности, а не прилагаемые вами усилия. Людям свойственно путать простоту и пологость начального отрезка "кривой обучения". Но задумайтесь, что если вы имеете дело с нотами чуть сложнее "Чижика-пыжика", рано или поздно вам придётся продвинуться дальше начального отрезка. И учиться придётся, с каким бы редактором вы не имели дело. Как сказал однажды человек, кое-что, по слухам, понимавший в интерфейсах: «The only "intuitive" interface is the nipple. After that it's all learned.» Любая программа требует изучения. Но не всякая программа стóит изучения. !LilyPond изучения стóит. Теперь разберёмся с наглядностью. На первый взгляд уж здесь-то WYSIWYG явно выигрывает у языков разметки вроде !LilyPond. Но это только на первый взгляд. На самом деле, структура нотного текста обычно сложнее, чем его внешний вид. Например, принадлежность ноты к тому или иному голосу далеко не всегда однозначно определяется при взгляде на нотный текст. Кроме того, временно скрыть при работе над нотами какие-то элементы изображения (скажем, аппликатуру) в WYSIWYG-редакторе можно только удалив их, а в !LilyPond мы можем, например, породить из одного файла и ноты для солирующего инструмента, и клавир, и оркестровую партитуру — в WYSIWYG-средствах не решить такую задачу без множественных copy/paste из файла в файл, ошибок и мучений. Разметка !LilyPond — более наглядное отображение структуры нотного текста, чем сами печатные ноты. По ней проще отслеживать и изменять структуру нотного текста и проводить с ним сложные трансформации. Не будем для простоты обсуждать тему генерации MIDI, мы всё-таки говорим о средствах нотной гравировки — но очевидно, что для MIDI-специфичных вещей интерфейс создания бумажного листа совершенно непригоден. Правда, если надо породить действительно сложный MIDI-файл, лучше использовать специализированные программы-секвенсоры, например, [http://www.rosegardenmusic.com/ Rosegarden] (кстати, в Rosegarden есть экспорт в !LilyPond). == И это ещё не всё == [http://www.youtube.com/watch?v=2CvYE2tjNOc И это ещё не всё!] Есть ещё множество причин использовать для нотной гравировки именно !LilyPond. === LilyPond выдаёт очень качественные ноты === И, что важно, выдаёт автоматически, в большинстве простых случаев не требуя или почти не требуя перемещения элементов нотной страницы вручную. Вот ссылки на сравнение с Finale и Sibelius. Во всех случаях авторы приходят к выводу, что и Finale, и Sibelius уступают !LilyPond в качестве результата. http://habrahabr.ru/post/127238/ Здесь разбирается простенький нотный текст, набранный в Finale, Sibelius и !LilyPond. Набранный в !LilyPond вариант смотрится приятнее всего (по ссылке есть табличка, подсказывающая, на что обратить внимание). http://lilypond.org/doc/v2.14/Documentation/essay/automated-engraving#getting-things-right Здесь Finale и Sibelius сравнивают сами авторы !LilyPond на материале короткого отрывка из Баха. В Finale обнаруживается масса уродливо выглядящих фрагментов и даже одна ошибка; вариант, набранный в !LilyPond, неплохо выглядит даже без ручного вмешательства. http://www.musicbyandrew.ca/info.html Это самая интересная ссылка. Автор, опытный пользователь Finale, провёл целое небольшое исследование, включавшее общий анализ Finale и !LilyPond, гравировку сложного фрагмента из Рахманинова, проверку работы с песенным текстом и проверку скорости набора. Результат — убедительная победа !LilyPond. Я, правда, не видел сравнений качества вывода !LilyPond с программой SCORE, применяемой издательством Bärenreiter, но SCORE тоже не является WYSIWYG-редактором и во многом ближе к !LilyPond, чем к Finale и Sibelius. === LilyPond создаётся не программистами для покупателей, а музыкантами для собственных нужд === Авторы !LilyPond — музыканты, пишущие программу прежде всего для себя. Поэтому !LilyPond развивается быстрее и умеет больше, чем проприетарные WYSIWYG-редакторы. === LilyPond — это переносимое ПО, работающее на множестве платформ === Вы можете перейти с Windows на Mac OS X, а потом с Mac OS X на Linux, продолжая использовать одну и ту же программу. === LilyPond — это свободное ПО === "Свободное" значит не просто "бесплатное" (хотя возможность скачать программу в любой момент, не заморачиваясь торрентами и постоянно меняющимися ссылками на файлообменники это тоже ценно). Проприетарная программа обычно прекращает развиваться, когда её забрасывает исходный разработчик. Свободную программу будут развивать, исправлять и переносить на новые платформы, пока вокруг неё существует заинтересованное сообщество (а вокруг !LilyPond оно существует). Кроме того, именно благодаря тому, что !LilyPond — свободный продукт, его используют как средство нотного набора, встроенное в разные сайты и программы: так, именно !LilyPond используется для встраивания нот в движке !MediaWiki, на котором сделана Википедия. === Вы, на самом деле, можете использовать WYSIWYG === А если уж вам так нужен WYSIWYG, то существуют [http://lilypond.org/easier-editing.html#Programs-that-can-export-LilyPond-code средства визуального набора с экспортом в LilyPond] (хотя хочется надеяться, что после прочтения этого текста вы не захотите ими пользоваться). Также есть возможность [http://habrahabr.ru/post/149075/ вводить разметку LilyPond с помощью MIDI-клавиатуры]. Но если вы не любите командную строку, я советую первым делом посмотреть на средства удобного набора !LilyPond с возможностью одной кнопкой просмотреть набираемые ноты, которые позволят вам сочетать удобство набора в !LilyPond с возможностью WYSIWYG-редакторов всё время держать перед глазами результат. Специально для !LilyPond разработана замечательная программа [http://www.frescobaldi.org/ Frescobaldi], интерфейс которой выглядит примерно вот так: [[Image(frescobaldi.jpeg)]] Кроме того, к популярному текстовому редактору [http://www.jedit.org/ jEdit] есть плагин [http://plugins.jedit.org/plugins/?LilyPondTool LilyPondTool], установка и использование которого [wiki:lessons/LilyPondTools описаны у нас на сайте]. [[Image(jEdit-LilyPondTool-PDF.jpeg)]]