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

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


16.06.2009 22:58
Читать только Вставляем нотные примеры в текст. Lilypond-book


Вставляем нотные примеры в текст. Lilypond-book

куличкин

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

Во-первых, нотные примеры — это объекты векторной графики. При некорректном уменьшении (а тем более, увеличении) нотные символы и текст может огорчить вас поистине ужасными искажениями.

Во-вторых, программы для набора нот, как правило, практически не совместимы с текстовыми редакторами. Если нужно вставить картинку — пожалуйста, диаграмму — еще лучше. Всем известно, что то, что нарисовано в Excel, легко вставить в Word. А попробуйте-ка вставить в Word файл Finale или Sibelius!

Поэтому, в третьих, придется довольно серьезно думать о промежуточных форматах, чтобы не было потерь в качестве.

Sibelius может экспортировать в TIFF. Это неплохой выход. TIFF можно преобразовать в JPEG, чтобы он не был таким тяжелым. А затем вставлять в Word. C Finale придется повозиться чуть побольше. Скорее всего, вам придется распечатывать MUS-файл на принтере Adobe PDF (или конвертировать в PDF другим способом), а затем из PDF-ника делать растровый графический файл. Например, через Adobe Illustrator. Или делать скриншоты. Или еще что-нибудь. Впрочем, если макет вы делаете не в Ворде, а в какой-нибудь векторной программе, которая понимает pdf, трудностей с нотами будет значительно меньше.

Но есть два важных момента, которые не связаны непосредственно с проблемой формата.

Это ширина и высота нотного примера. Я имею в виду не ширину и высоту в пикселях, а ширину в количестве тактов и высоту в количестве партитурных строк. Слишком большое количество тактов в строке приведет к тому, что нотный пример будет выглядеть слишком мелко в окончательной версии макета. А если нотный пример печатается в несколько строк, то он может не поместиться на страницу. Впрочем, в Word'е вас ожидает еще такой «бонус», как пустые места непосредственно перед или непосредственно после нотного примера, если он окажется довольно большой картинкой. Кроме того, размеры нотоносцев и всего остального в различных нотных примерах хотелось бы видеть одинакового размера. Как всего этого достичь?

Если окончательная версия макета у вас в Ворде, я предлагаю такой способ. В первую очередь, надо определиться с количеством тактов в строке. Для этого сделайте в Finale или Sibelius'е те же поля, что и в Ворде. Затем экспортируйте ноты в графический формат. Сделайте в графическом файле автоматическую обрезку, чтобыубрать поля со всех стлорон. Разрежьте графический файл на партитурные строчки. Последнее целесообразно для того, чтобы часть картинки переносилась в случае на следующую страницу. Такой способ позволит вам справиться даже с очень длинными нотными примерами.

Если вы набираете ноты в Lilypond'е, жизнь ваша будет намного легче. Лилипонд легко экспортирует в форматы PDF, PNG и EPS. А в ряд форматов lilypnond еще и сам, автоматически вставляет свои нотные примеры (как, например, в LaTeX). Все это делает специальный лилипондовский скрипт, именуемый lilypond-book. К слову сказать, он использует именно тот алгоритм, который я изложил в предыдущем абзаце, но с некоторыми усовершенствованиями. Работает lilypond-book примерно так. Он считывает из файла оригинал-макета разметку страницы, форматирует нотные примеры в соответствии с ней, разезает их на страницы и строчки, а затем вставляет либо целую картинку (если пример помещается на страницу), либо несколько строчек на одну страницу и несколько строчек на следующую. Поэтому если ваш макет делается, скажем, в ЛаТеХе, а нотные примеры вы пишете в Лилипонде, о проблемах верстки можете спокойно забыть.

Впрочем, при изготовлении макета средствами LaTex + Lilypond есть свои тонкости. Они связаны с русским языком. Об этом — напишу чуть позже.

17.06. 2009
00.12

Продолжаю...

 

Итак, рассмотрим Lilypond + LaTex.

Впрочем, прежде чем перейти к тонкостям... По-моему, lilypond-book работает только с исходным файлом. Если нотные примеры содержатся в каком-то другом файле, который подключается через \input или \include полной автоматизации не выйдет. Проще всего в этом случае написать отдельные TeX-овские файлы для каждого нотного примера, обработать их lilypond-book'ом, а затем вручную вставить файлы в окончательный макет. Теперь перехожу к обещанным тонкостям.

Первое. Если вы скопируете пример из документации Лилипонда, а затем попробуете запустить lilypond-book и pdflatex, как, собственно, и указано в документации — у вас ничего не выйдет. Почему? Потому что вы пропустили небольшую ремарку из той же документации. По-русски она звучит так: «рекомендуем прочитать про ЛаТеХ книгу «Не очень краткое введение в LaTeX» (у нее есть еще подзаголовок LaTeX за 94 минуты или за 100 минут и т.п. — П.К.)». Эта книга есть в русском переводе, причем в переводе просто отличном! Лично я основы ЛаТеХа освоил за неделю, и во многом благодаря именно этой книге. Так вот, в преамбуле надо все-таки подключить пакеты, которые будут читать ваши кодировки-шрифты и понимать графику. Например, так:

 \usepackage{cmap}
\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[english,russian]{babel}
\usepackage[pdftex]{graphicx}

Возможно, в документации Лилипонда такая «неточность» допущена специально, чтобы поменьше копипэйстили, подобно тому, как это поначалу сделал я ;-). После этого все заработает и можно действовать согласно документации.

 

Второе. Если вы вставляете пример из области вокальной музыки, там могут быть слова. И слова, что характерно, на русском языке. Набранные, что не менее характерно, кириллицей. Если ничего специально не предпринимать, LaTeX не поймет ваших русских слов и выдаст вместо них пустые места (или, возможно, «кракозябры»). Дело здесь в том, что Лилипонд по умолчанию пишет в свои PDF-ники шрифты, которые LaTeX из PDF-ника прочитать не может. По всей видимости, здесь та же проблема, о которой в своем блоге пишет Михаил Конник. Выход есть такой. Надо поручить Лилипонду вместо используемого по умолчанию указывать другой шрифт, который распознает ЛаТеХ. Путем довольно тщательного изучения из двух разных мест лилипондовской документации мне удалось собрать команду:

\override Score. LyricText #'font-name = #"Sans"
\override Score. LyricText #'font-size = #-3

Первая строчка указывает гарнитуру шрифта для слов певца, вторая — его размер. В общем, самое главное, чтобы в первой сточке был указан шрифт, который будет съедобным для ЛаТеХа (не обязательно Sans). Возможно, такой же баг будет иметь место и для русскоязычного текста внутри \mark или \markup. Это я не проверял. Но там сменить шрифт проще. В документации есть соответствующие примеры. Кроме того, если русскоязычный \markup встречается однократно, можно и просто написать

\markup { \sans Смотрите! Йа Криведко!!! }

—  и все будет как надо.

 

 

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

Rambler's Top100