Архив рубрики: ноты

Боль-ше де-фи-сов

Нотный редактор LilyPond по умолчанию считает, что при недостатке свободного места для текста в вокальных произведениях можно выкинуть лишние пробелы и дефисы между слогами — в результате слова такого текста вообще не разбиваются на слоги:

Слипшиеся слоги

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

Решение нашлось в LilyPond Snippet Repository — переопределив значение свойства LyricHyphen.minimum-distance, можно добиться не только увеличения дистанции между слогами, но и принудительной расстановки дефисов — такое переопредение можно засунуть прямо в блок с текстом:

choirVerse = \lyricmode {
  \override LyricHyphen.minimum-distance = #0.5

  Да не у -- мрёт ни с_на -- ми, ни по -- том

Результат — появились дефисы:

Слоги разделены дефисами

Если вместо 0.5 указать значение побольше, слоги разойдутся дальше.

Edwin — очередной потомок Школьной

В состав нотного редактора MuseScore начиная с версии 3.6 входит шрифт Edwin — он используется для текста по умолчанию и неплохо выглядит в латинской части — всё-таки она даже в страшненьких свободных вариантах шрифта, скопированного с New Century Schoolbook, была нормальной, чего не скажешь о кириллице — во входящем в состав GhostScript шрифте Century Schoolbook L она была вообще ужасна.

В Эдвине кириллицу слегка подправили — иногда ноты с ней смотрятся вполне терпимо, особенно если там нет букв З и Э. С дореволюционной кириллицей ситуация хуже: буква ять — только строчная, да и та страшная, ижица в курсиве смотрится странновато.

Ноты с шрифтом Edwin

Для современных нот этот шрифт использовать уже можно (если не сильно всматриваться в детали), для дореволюционных — ещё нѣтъ.

Больше нот!

Семь лет назад я замерял скорость нотного набора, когда используешь LilyPond — на простых хоровые нотах без аккомпанемента получалось около 0,8 листа в час. С аккомпанементом, как я предполагал, скорость должна была упасть ещё в несколько раз.

Сейчас набираю в MuseScore — он становится всё лучше и лучше. Попутно и трудозатраты отмечаю — привык делать это после некоторых работ, где оплачивалось потраченное время. Получается около одного листа в час (уточнение после изучения отчёта — а иногда и полтора, то есть три листа за два часа), причём с аккомпанементом. Без аккомпанемента, вроде, раза в три быстрее. Но вывод из таких замеров остаётся прежним — программирование оплачивается более щедро и набор нот можно оставить лишь в роли хобби, а не основного заработка.

Не бравурно

Ради вёрстки нотного сборника пришлось всё-таки наладить относительно новый компьютер (ну он тоже не новый, но хотя бы сильно шустрее старого), а в нём — сюрприз! — лилипондовые ноты компилируются как-то странно: LilyPond выдаёт кучу ошибок

make
lilypond a4.ly
GNU LilyPond 2.18.2
Processing `a4.ly'
Parsing...
Interpreting music...
MIDI output to `part-bass.midi'...
Interpreting music...
MIDI output to `part-soprano1.midi'...
Interpreting music...
MIDI output to `part-soprano2.midi'...
Interpreting music...
MIDI output to `part-alto1.midi'...
Interpreting music...
MIDI output to `part-alto2.midi'...
Interpreting music...[8][16][24][32][40][48]
Preprocessing graphical objects...
warning: no glyph for character U+E062 in font `/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
warning: no glyph for character U+E0A4 in font `/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
warning: no glyph for character U+E0A4 in font `/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
warning: no glyph for character U+E0A4 in font `/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
warning: no glyph for character U+E0A4 in font `/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
warning: no glyph for character U+E050 in font 

независимо от способа запуска: хоть мышкой в кнопки Frescobaldi тычь, хоть в терминале команды набирай — итог один.

Да и внешне результат далёк от желаемого:

Ноты с ошибками

Причина оказалось простой, но из лога совершенно невозможно понять в чём же дело — действительно, LilyPond не мог найти нужных символов, но шрифт DejaVu Sans тут ни при чём — символов не было, потому что используемый в этих нотах шрифт Bravura (хороший, кстати, шрифт — крут как тот, что в лилипонде по умолчанию, но при этом в нём скрипичный ключ не имеет лишних изгибов) отсутствовал в системе. Решается легко — копированием шрифтовых файлов в /usr/share/lilypond/ВЕРСИЯ/fonts/otf

Как засунуть имиджмеджиком растровые картинки в PDF нужного размера

Для несложных преобразований картинок: изменение размера, увеличение резкости, добавление надписей и преобразование типов — большой и тяжёлый графический редактор не нужен — достаточно взять ImageMagick. ImageMagick знает не только кучу разных растровых форматов файлов, но и кое-какие векторные, в том числе PDF, однако преобразование в них требует иногда плясок с бубном: например, если для преобразования толпы PNG-файлов написать

convert *png result.pdf

то результат может и не понравиться. Путём экспериментов с найденным на всяких форумах кодом получился такой рецепт для преобразования в PDF размером 210×297 мм (A4) кучи растровых файлов, отсканированных с разрешением 600 точек на дюйм

convert *png -units pixelsperinch -density 600 -resize 100% \
 -gravity center -background white -extent 4960x7016 result.pdf

размер растровых файлов не меняется, они располагаются в центре получившихся страниц.

PDF-файл с разным заполнением страниц

Для картинок с разрешением 300 dpi цифры будут чуть другими:

convert *png -units pixelsperinch -density 300 -resize 100% \
-gravity center -background white -extent 2480x3508 result.pdf

Для 150 dpi числа надо ещё вдвое уменьшить:

convert *png -units pixelsperinch -density 150 -resize 100% \
-gravity center -background white -extent 1240x1754 result.pdf

Из Лилипонда в Музскор

Из всего, в чём доводилось набирать ноты последние лет двадцать, самые красивые получаются в Лилипонде — там и шрифт хороший (хотя Bravura ещё лучше), и расположение нот на листе достаточно компактное. Но в MuseScore набирать проще плюс можно услышать любую ноту да и все изменения видны сразу — не надо ждать, пока компиляция завершится. Лет десять назад MuseScore, как и Denemo, можно было использовать лишь для предварительного набора — сборку и доводку приходилось делать в Лилипонде, потому что Музскор не способен был нормально расставить ноты по странице. Со временем Музскор улучшился — теперь его можно использовать для всего процесса — до самого конца — вывода на печать или в готовый PDF-файл.

И встал вопрос открытия лилипондовых файлов Музскором — нынешние его версии умеют работать с MusicXML, но формат Лилипонда не понимают совсем. Сам же LilyPond умеет читать всякое (точнее, в его состав входит скрипт на питоне, перегоняющий в формат Лилипонда ноты из MusicXML, ABC, MIDI и, вроде, ETF), но выводить в это всякое не желает.

Поэтому воспользуемся сторонним ПО. Например, выяснилось, что Frescobaldi умеет экспортировать ноты в формат MusicXML, но по умолчанию эта возможность в нём отключена. Включить можно в настройках: Edit → Preferences → Generap Preferences → Enable experimental features.

Настройки Frescobaldi

После перезапуска Фрескобальди в его меню File → Export можно найти пункт Export to MusicXML. А уж MusicXML можно открыть и в Музскоре, который будет ругаться на на корявость файла,

Сообщение о невалидном XML

Сообщение о повреждённом файле

но всё равно (если повезёт?) его откроет

MuseScore — результат импорта

Вместо экспорта через Frescobaldi можно с командной строки использовать python-ly:


ly musicxml solo.ly -o solo.musicxml

Результат почти полностью совпадает с тем, что выдаёт Фрескобальди — скорее всего, этот же скрипт и вызывается.

Как увеличить отступ одной строки в MuseScore

Иногда нужно отодвинуть от края страницы не все нотные станы, а лишь одну их строку группу (system) — например, для того, чтоб указать, для какой партии этот нотный стан написан. Если нотный стан не сдвинуть, то название инструмента окажется на полях, что не всегда хорошо. В MuseScore добавить отступ можно вставкой горизонтального фрейма: выделяем такт, который надо сдвинуть, затем добавляем фрейм любым подходящим способом:

  • Через меню: A̲dd → F̲rames → Insert Horizontal Frame вставит фрейм перед текущим тактом;
  • A̲dd → F̲rames → Append Horizontal Frame — после текущего;
  • Команду Insert Horizontal Frame можно найти и в палитрах инструментов: и в обычной, вызываемой клавишей F9, и в мастер-палитре (Shift+F9) в разделе Frames & Measures.
    Insert horizontal frame

Фрейм вставляется перед всей группой нотных станов — нет нужды двигать каждый нотный стан.

Отступ в MuseScore

Счётчики в углу

Случается, что сложные партитуры я набираю в каком-то странном порядке: то из одной партии кусочек, то из другой. Чтоб не забывать, где остановился, сам себе придумал небольшой lifehack — записывать номера последних набранных тактов прямо в нотах и лучше всего — в левом верхнем углу, чтоб быстрее найти можно было.

Счётчики

Попробую на практике — может быть, приживётся…

Перекодирование кривой кириллицы в именах зазипованных файлов

По старой ещё досовской привычке я до сих пор стараюсь избегать использования кириллицы в именах файлов. А другие люди — нет, не избегают. В итоге приходится сталкиваться с кривыми кодировками имён. Вот, например, так гномячий архиватор отображает ZIP-архив с кириллицей:

Неправильная кодировка кириллических имён файлов

Консольные инструменты — хоть unzip, хоть 7z — тоже не помогают.

Возможный способ решения — распаковать, а потом перекодировать имена:


convmv -f utf-8 -t latin1 --notest *
convmv -f cp866 -t utf-8  --notest *

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

Compose не работает в musescore

Для того, чтоб изредка набрать буквы соседних языков (рәхим итәгеҙ!) достаточно настроить нужные последовательности для клавиши Compose и пользоваться ими. Но такой фокус не всегда удаётся: например, нотный редактор musescore (во всяком случае, в версии 2.0.2) как-то по-своему обрабатывает клавиатурные события и при нажатии клавиши Compose сразу же отображает ?!, воспринимая следующие клавиши как совершенно обычные. Поэтому при попытке ввести i десятеричное получается ?!ии. Получается, что в musescore нельзя ни дореволюціонные тексты вводить, ни украинские.

Самый простой выход в такой ситуации — поставить украинскую раскладку.