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

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

По старой ещё досовской привычке я до сих пор стараюсь избегать использования кириллицы в именах файлов. А другие люди — нет, не избегают. В итоге приходится сталкиваться с кривыми кодировками имён. Вот, например, так гномячий архиватор отображает 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 нельзя ни дореволюціонные тексты вводить, ни украинские.

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

Нормальные герои всегда идут в обход

После всей суеты с обновлением операционной системы на окружающих меня компьютерах наконец-то везде, где надо, установил свежий нотный редактор MuseScore. Как и было обещано разработчиками MuseScore, экспорт в LilyPond оттуда убран, но зато экспорт в MusicXML исправлен: если этот XML-файл при помощи musicxml2ly преобразовать в формат Лилипонда, то на получившийся файл Лилипонд не ругается, как это было в 2013 году. Тексты в XML- и ly-файлах — в правильной кодировке и не теряются (так было в 2009). Единственный сразу заметный недостаток — гадкая кириллица, но это легко чинится заменой гарнитуры на какую-нибудь другую: Обыкновенную новую либо Журнальную.

Ноты

Внедрение лилипондовых нот в википедию

Случайно обнаружил, что в википедию можно вставлять ноты в виде лилипондового исходного текста и оно само преобразуется в картинку и, если надо, плеер. Для этого достаточно обернуть исходный текст в тэг <score>. Пример — ноты в статье про Атикву.

Ноты

Преимущество такого подхода — простота вставки и отсутствие необходимости держать лилипонд у себя.

Недостатки — неаккуратный внешний вид (это настраивается?) и, видимо, невозможность использовать свои шрифты (кириллица в лилипонде по умолчанию ужасна).

До скоростного нотного набора ещё ой как далеко

Вчера, чтоб отдохнуть от конфигурирования редмайна, решил набрать внезапно свалившуюся на нас партитуру — хору надо выучить к региональному туру Всероссийского хорового фестиваля песню «Смело мы в бой пойдём за власть Советов» «Мы смело в бой пойдём», написанную лет сто назад. Те ноты, что выложены на сайте Свердловского областного методического центра по художественному образованию — позор какой-то: криво отсканированные растровые картинки не очень высокого разрешения. Из спортивного интереса решил набирать сразу исходный текст, не пользуясь музыкальными редакторами MuseScore или Denemo. Ну и скорость набора засёк — из того же спортивного интереса.

Итоги:

  • Мои ноты гораздо лучше выглядят, чем оригинал и легче читаются.
  • На набор одного листа, содержащего четыре вокальные партии с текстом, но без партии фортепиано вместе с вычиткой, прослушиванием и подглядыванием в справочные материалы ушло 75 минут. То есть, скорость набора составляет всего-то 0,8 листа в час. С аккомпанементом получается в разы медленнее. Как люди умудряются набирать в Лилипонде до трёх с половиной листов в час — не знаю, мне до этого далеко.
  • Развивать свою скорость лилипондового набора нет смысла — нецелесообразно экономически. Полезнее время на программирование потратить — это лучше оплачивается.

Дополнение 27.04.2022: в MuseScore можно набирать за час целый лист, причём с аккомпанементом. Но экономического смысла в этом по-прежнему нет.

Афиша юбилейного концерта

Владимир Александрович прислал афишу и кучу текста. Посмотрел я на афишу да и перерисовал её с нуля, чтоб читалось лучше и весь текст поместился:

Концерт вокально-хоровой музыки

Кому надо — забирайте: есть в PDF и PNG на 300 dpi. Формат — A4.

Как добавить обозначение инструмента не перед первым нотным станом

LilyPond умеет, как и многие другие попадавшиеся мне нотные редакторы, указывать название инструмента либо голоса слева от нотного стана. Доступны два варианта именования нотного стана: полный, задаваемый параметром instrumentName применяется у самого верхнего нотного стана в партитуре (или у их группы), сокращённый shortInstrumentName — у всех остальных. В отечественных хоровых нотах нередко ставят только сокращённые наименования партий возле верхней группы нотных станов (если вообще ставят), а возле остальных групп не ставят ничего.

Если хоровое произведение, набранное в лилипонде, начинается с занимающих целую строку нескольких тактов, где поёт только одна партия, и нам хочется скрыть остальных, кто молчит, получится странная ситуация, если мы отметим партии как сказано выше (первая группа нотных станов — кратко, остальные — никак) — солирующая партия будет обозначена, остальные — нет. Это может привести к путанице.

Однако можно сменить название партии в любой момент, не только при описании нотного стана (\new Staff), но и в произвольном месте:

% 25
\voiceOne
\set Staff.shortInstrumentName = "Б."
e4 e8 f f f
\set Staff.shortInstrumentName = ""

Результат:

Ноты — смена обозначения партии

Задание собственных обозначений для тактовых черт

Набирал ноты с репризой и двумя обычными тактовыми чертами — написал код \bar ":||" — не получил желаемое. Более того — тактовая черта вообще пропала. Похоже, в лилипонде нет такого сочетания тактовых черт (что странно — там же есть и двойные черты, и сочетания знака репризы с тонкой и толстой чертой). Не беда — можно нужный знак определить и потом его использовать:

\defineBarLine ":||" #'(":||" "" " ||")
% ...
\bar ":||"

Результат:

Двойная тактовая черта с репризой

Если же в определении тактовой черты не указать параметр span (точнее, оставить его пустым — \defineBarLine ":||" #'(":||" "" "")), то тактовые черты будут идти только внутри нотного стана, не выходя за его пределы, даже если для группы нотных станов задано использование общих черт:

Двойная тактовая черта с репризой и разрывом

Рисование глиссандо в лилипонде

LilyPond хорош, но, как и всё вокруг, неидеален.

Например, я неоднократно сталкивался с необходимостью изобразить глиссандо, соединяющее ноту с пустым местом. Казалось бы — что такого? Можно, например, в пустом месте нарисовать ноту с прятать её командой \hideNotes, однако это приведёт к сдвигу нот в соседний такт. Можно и сдвиг победить, отключив контроль размера командой \canenzaOn — именно такой метод описан в руководстве, результат должен быть таким:

Глиссандо в пустоту

Берём маленький пример — вроде, работает. Вставляем в большую партитуру — всё расползается. Не годится.

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

Что остаётся? Нарисовать. В лилипондовые файлы можно добавлять команды языка PostScript и таким образом рисовать то, что позволяет постскрипт. Хочет автор, чтоб было глиссандо где попало, да ещё и зигзагом — пожалуйста!

Пишем:

zigzagGlis = \markup {
  \postscript #"-0.8 0.2 rlineto 0.2 -0.8 rlineto -0.8 0.2 rlineto 0.2 -0.8 rlineto -0.8 0.2 rlineto 0.2 -0.8 rlineto -0.8 0.2 rlineto 0.2 -0.8 rlineto stroke"
}
% ...
a2.-- -\zigzagGlis ( \sf\>     | % 5
gis2.)\(  \pp
c2.-- -\zigzagGlis \)( \sf\>
b2)   \pp  r4

Получаем:Глиссандо

Простой способ учить песню на слух из лилипондовых нот

LilyPond умеет генерировать из одной партитуры кучу MIDI-файлов для разных партий, где одна партия звучит громче остальных и исполнена (если хочется) другим инструментом — это весьма полезно для разучивания нот хором на слух.

А Frescobaldi умеет вставлять в лилипондовый исходный файл код, который и включает эту красоту: Tools → Setup New Score… Ctrl+Shift+N,

Setup New Score

после чего в открывшемся окне на вкладке Parts надо поставить галочку у пункта Rehearsal MIDI files.

При компиляции файла filename.ly помимо файлов filename.pdf и filename.midi создаётся куча файлов с именами filenamevoicename.midi, в которых и находится нужный звук. А точнее — нужные MIDI-команды.