Архив рубрики: LilyPond

Больше перловой документации!

Документация по языку Perl и его модулям теперь доступна и на perldoc.pl, только оно без прокси не работает, ибо заблокировано роскомпозором. Точнее, заблокирован IP-адрес (IPv4, конечно), на котором сидит этот сайт. И lilypond.org без прокси не откроется, и toggl.com, и oEmbed.com…

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

Из всего, в чём доводилось набирать ноты последние лет двадцать, самые красивые получаются в Лилипонде — там и шрифт хороший (хотя 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

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

Statt zu schlafen

Учёт домашних доходов с расходами — сплошное расстройство. Теперь вот вместо того, чтоб спать, пытаюсь вспомнить, что же умею делать за деньги, потому что на одну зарплату прокормить семью вообще нереально.

Могу:

  • Программировать на Перле — как древние CGI-приложения, так и современные, с использованием фреймворков Mojolicious, Dancer, Catalyst.
  • Программировать на PHP: в основном допиливать существующие приложения, а не писать с нуля что-то большое.
  • Настраивать CMS Drupal и WordPress, а также дорабатывать их темы оформления.
  • Настраивать и дорабатывать Open Journal Systems, включая реализацию многоязычности имён — делал это в OJS 2.4.2, 2.4.7.1, 2.4.8.1, думаю, и в Open Conference Systems смогу реализовать.
  • Кроссбраузерно верстать веб-страницы.
  • Немножко программировать на Руби (в том числе, с использованием Ruby on Rails) — наверное, на юниорском уровне.
  • Немножко программировать на ЯваСкрипте — как голый JavaScript, так и с jQuery.
  • Постоянно внушать коллегам необходимость использования багтрекера и системы контроля версий.
  • (хоть и не считаю это основными профессиональными навыками) фотографировать, петь, аккомпанировать на шестиструнной гитаре, водить легковой автомобиль, быть Дедом Морозом, набирать ноты в MuseScore и LilyPond — медленно, но красиво.

1000 рублей

Хочу от 15 USD / 1 kRUB в час.


Statt zu schlafen (нем.) — вместо того, чтобы спать

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

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

Ноты

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

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

Ноты

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

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

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

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

Итоги:

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

Многоязычное

За прошедшие сутки, как и почти в любой другой день, читал тексты и слушал речь на двух естественных языках — русском и английском — и держал в голове ещё кучу других: языков программирования да языков разметки. Как минимум, пришлось читать код на Perl, PHP, Bash и Ruby. Ну и, вроде, чё-то в браузерном отладчике смотрел — значит, ещё и HTML с CSS. И, наверное, JavaScript там же.

Два плюс семь — получается девять языков параллельно. Добавим LilyPond — будет десять. Это не вредно? 🙂

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

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

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

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

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

Результат:

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

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

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

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

Результат:

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

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

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

Темп над пустым тактом

Обнаружил глюк в лилипонде: он не даёт поставить изменение темпа над пустым тактом.

Ноты

Задача — поставить в нотах изменения темпа — ritenuto и какой-нибудь ещё. С каким-нибудь ещё проблем не возникает — LilyPond спокойно принимает команду

\tempo "Медленнее"

А вот с ритенуто такой способ не проходит: я пробовал менять способ записи паузы: вместо R8*9 писал s8 r1, пробовал сдвигать команду изменения темпа в фортепианную партию (это не должно влиять на то, где отображается темп — всегда сверху) — не помогает: в лучшем случае ритенуто пропадает, в худшем — часть нот сдвигается по горизонтали и в партитуре начинается хаос.

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

R8*9^\markup { \bold "riten." }

Такой способ работает.