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

Ноты

http://shoorick.ru/2016/09/15/musescore-lilypond/
shoorick: (Рыжий)
Случайно обнаружил, что в википедию можно вставлять ноты в виде лилипондового исходного текста и оно само преобразуется в картинку и, если надо, плеер. Для этого достаточно обернуть исходный текст в тэг <score>. Пример — ноты в статье про Атикву.

Ноты

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

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

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

Итоги:

  • Мои ноты гораздо лучше выглядят, чем оригинал и легче читаются.

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

  • Развивать свою скорость лилипондового набора нет смысла — нецелесообразно экономически. Лучше уж время на программирование потратить — это более щедро оплачивается.



http://shoorick.ru/2015/01/23/speedup-lilypond-typesetting/
shoorick: (Default)
LilyPond умеет, как и многие другие попадавшиеся мне нотные редакторы, указывать название инструмента либо голоса слева от нотного стана. Доступны два варианта именования нотного стана: полный, задаваемый параметром instrumentName применяется у самого верхнего нотного стана в партитуре (или у их группы), сокращённый shortInstrumentName — у всех остальных. В отечественных хоровых нотах нередко ставят только сокращённые наименования партий возле верхней группы нотных станов (если вообще ставят), а возле остальных групп не ставят ничего.

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

Однако можно сменить название партии в любой момент, не только при описании нотного стана (\new Staff), но и в произвольном месте:
% 25
\voiceOne
\set Staff.shortInstrumentName = "Б."
e4 e8 f f f
\set Staff.shortInstrumentName = ""

Результат:

Ноты — смена обозначения партии
http://shoorick.ru/2014/11/25/lilypond-add-instrument-name-at-middle-of-page/
shoorick: (Default)
Набирал ноты с репризой и двумя обычными тактовыми чертами — написал код \bar ":||" — не получил желаемое. Более того — тактовая черта вообще пропала. Похоже, в лилипонде нет такого сочетания тактовых черт (что странно — там же есть и двойные черты, и сочетания знака репризы с тонкой и толстой чертой). Не беда — можно нужный знак определить и потом его использовать:
\defineBarLine ":||" #'(":||" "" " ||")
% ...
\bar ":||"

Результат:

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

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

Двойная тактовая черта с репризой и разрывом
http://shoorick.ru/2014/11/24/lilypond-double-bar-with-repeat/
shoorick: (Default)
Обнаружил глюк в лилипонде: он не даёт поставить изменение темпа над пустым тактом.

Ноты

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

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

Решение оказалось простым — можно просто добавить к паузе обычную надпись и выделить её как темп — полужирным.
R8*9^\markup  \bold "riten." 

Такой способ работает.
http://shoorick.ru/2014/11/11/tempo-in-empty-measure/
shoorick: (Default)
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

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

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

Setup New Score

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

При компиляции файла filename.ly помимо файлов filename.pdf и filename.midi создаётся куча файлов с именами filename-voicename.midi, в которых и находится нужный звук. А точнее — нужные MIDI-команды.
shoorick: (Default)
Раньше при наборе лилипондовых нот я использовал различные костыли промежуточные нотные редакторы.

Пробовал Denemo — оно иногда падает и лилипондовый исходник выдаёт без использования команды \relative, то есть использует не относительное, а абсолютное указание используемых октав, что ведёт к избытку в исходном тексте запятых и апострофов (если только мы не пишем в малой октаве).

Пробовал MuseScore — в последнее время он стал достойнее выглядеть, и в нём уже́ можно работать. Видно, что на MuseScore оказал немалое влияние Sibelius, но пока в MuseScore ещё есть, что улучшить. Кроме того, практика показала, что MuseScore некорректно экспортирует ноты в лилипондовый формат, а вскоре вообще откажется от экспорта в LilyPond, сосредоточившись на MusicXML.

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

  • отсутствие необходимости помнить, как работать с посторонними программами;

  • более чистый исходный код: я в него добавляю лишь то, что мне надо, без ненужного мусора;

  • возможность использовать неанглийские обозначения нот: если в начало файла вставить команду \language "deutsch", то будут использоваться именно те буквы, что применяются в России: буква b будет обозначать си-бемоль, для обозначения ноты си будет использоваться буква h, а для ми-бемоля с ля-бемолем — es и as соответственно.

shoorick: (Default)
Прошлой зимой я изобретал хитрый способ заставить лилипонд выводить знаки при ключе по разные стороны тактовой черты в случае смены тональности: метод работал не совсем корректно, рисуя лишние бекары в случае уменьшения только лишь количества знаков.

Оказалось, всё украдено до нас есть более простой способ, описанный в документации. Код, конечно, здоровенный, но его можно спокойно вставить в нужное место, не особо задумываясь о том, что он означает.
By default, the accidentals used for key cancellations are placed adjacent to those for key signature changes. This behavior can be changed by overriding the 'break-align-orders property of the BreakAlignment grob.

The value of 'break-align-orders is a vector of length 3, with quoted lists of breakable items as elements. This example only modifies the second list, moving key-cancellation before staff-bar; by modifying the second list, break alignment behavior only changes in the middle of a system, not at the beginning or the end.
\new Staff "
  \key bes \major
  c'1

Ноты

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

Фрист

Dec. 11th, 2013 06:13 pm
shoorick: (Default)
Набирал как-то ноты немецкой рождественской песни «Stille Nacht», решил добавить туда немецкий текст — мне видеть его как-то привычнее, чем русский перевод, к тому же неточный и с лишними слогами. Добавил — обнаружил странный глюк: написанное в исходном тексте слово Christ в скомпилированном листе с нотами преобразовалось в Phrist. Заменил латинскую C на похожую кириллическую С — стало выглядеть как надо. Кто такой Фрист — не нашёл.
shoorick: (Рыжий)
Верстая нотный сборник, наткнулся на ноты, в текстах которых использовались советские гарнитуры — Журнальная, Журнальная рубленая (тексты песен) и Литературная (заголовки и авторы). Целиком брать этот набор для оформления нот я бы не стал: Журнальная рубленая — тяжёлый для восприятия геометрический гротеск, который создан на основе шрифтов 1929 года; Литературная (как и похожая на неё более поздняя Quant Antiqua) — ещё более древняя: её прообразам, гарнитурам Латинской и Lateinisch уже больше века, да и не нравится она мне. А вот Журнальную вполне можно брать: во-первых, она чуть новее всех остальных: хоть разработана одновременно с Журнальной рубленой, в основе её лежат более новые шрифты (считать новым то, что разработано в тридцатые годы прошлого века — неожиданно :-), во-вторых, она больше похожа на используемую в лилипонде Школьную Century Schoolbook, чем другие шрифты, в-третьих, она входит в состав пакета PSCyr для TeX (есть вариант в Type1, подходящий для лилипонда) — то есть, её можно использовать (вообще) и использовать в TeX (в частности) — это пригодится, если делать сборник с использованием lilypond-book.

В нотах Журнальная (точнее, JournalPSCyr) выглядит так:

Ноты

В JournalPSCyr, как видно, нѣтъ дореволюціонныхъ буквъ — для нот с текстами в старой орѳографіи эта версия Журнальной не подойдёт. А для современных — вполне.
shoorick: (Рыжий)
При экспорте лилипондовых нот в формат PNG происходит странный сбой, наблюдающийся в юниксоподобных опрационных системах — внутри добавочных линий появляются вытянутые белые треугольники. Оказывается, баг известен и его сваливают на кривизну гостскрипта, используемого для преобразования готовых нот из векторных форматов в растровые.

Один из способов обхода (есть всякие) — добавить к команде вызова лилипонда параметр -dpixmap-format=pngmono — он заставит лилипонд выводить безглючную монохромную картинку вместо серой. В случае с низкой разрешающей способностью получится, наверное, коряво. Но если выставить разрешающую способность побольше, например, в 600 dpi — получается вполне хорошо.
shoorick: (Рыжий)
Пытаюсь сверстать нотный сборник, не выходя из под линукса. Исходный материал — какой попало: и тексты, и ноты в PDF (внутри которого — растр на 600 dpi), и ноты в лилипонде (ну их-то можно куда угодно вывести).

Делать с помощью lilypond-book не стал, хоть там и есть возможность собрать книгу их нескольких пьес: слишком уж разный исходный материал.

За LaTeX я не брался — без практики всё забыл.

Попробовал поставить Scribus, почитал мануал, поковырялся — совсем непривычно.

Решил пойти знакомым путём — взять офисный пакет: тут тоже не без грабель. Во-первых, LibreOffice (даже самый свежий), как и его предшественник OpenOffice, видит кучу каких-то своих шрифтов, но не видит шрифты формата Type 1, которые видны остальным программам. Во-вторых, в нём нельзя в результате замены получить ручной перевод строки (который вводится сочетанием клавиш Shift+Enter) — последовательность \n имеет разный смысл в разных полях ввода: она обозначает ручной переввод строки, когда используется в поле «Search for» и конц абзаца — в поле «Replace with». То есть, замена \n → \n может заметно изменить документ. Проблема замечена ещё в 2005 году в OOo версии 1.1.3 и до сих пор висит в багтрекере.

Задумался...

upd/09.06: потратил ночь — разобрался в Скрибусе и сверстал в нём.
shoorick: (Рыжий)
Про лилипонд пишут:
All of LilyPond’s style settings, font designs and algorithms have been inspired by the finest hand-engraved music.
Раз лилипонд ориентируется на старые ноты, то и шрифт для текста должен быть соответствующим. Используемая по умолчанию для текста гарнитура Школьная (а точнее, Century Schoolbook L) выглядит хорошо, если набирать ею лишь латинские буквы, но кириллица там ужасна.

Я пробовал другие свободные шрифты — получалось как-то не очень: гротески выглядят в лилипондовых нотах как-то чужеродно, да и всякая современная антиква, популярная в линуксе (Liberation Serif, PT Serif, Droid Serif) тоже не очень хорошо с лилипондом сочетается.

Недавно вспомнил про Old Standard TT (он же — на Google Fonts) — новую антикву, сделанную по мотивам шрифтов, что были популярны в конце XIX и начале XX века.

Попробовал:

Ноты

Выглядит вполне гармонично. И дореволюціонныя буквы, изъ старой орѳографіи, тамъ есть. Правда, смущает большой контраст — непонятно, удобно ли будет читать ноты с этим шрифтом. Скорее всего, при печати контраст немного уменьшится: засечки и соединительные штрихи станут толще. Как проверю на бумажных нотах — сообщу.

upd/06.02.2015: набрал и распечатал несколько партитур (последнюю — пару недель назад) — на бумаге выглядит хорошо.
shoorick: (Рыжий)
Для набора простых нот в до-мажоре графический интерфейс не нужен — можно сразу писать исходный текст для лилипонда. Как только тональность меняется, приходится брать что-нибудь графическое, потому что не получается держать во время набора ключевые знаки альтерации. Точнее, не получается это делать автоматически, а сознательный подсчёт диезов с бемолями утомляет.

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

Раньше для набора я использовал Denemo — оно вполне работоспособно, хоть выглядит страшно и имеет ряд странных глюков, таких как внезапные падения и не менее внезапное автоматическое транспонирование вводимых нот (лечится перезапуском программы). Denemo позволяет сохранить ноты в формате лилипонда и устроить дальшейшую их обработку своими силами.

Пробую в качестве GUI другой вариант — MuseScore. Раньше я уже сталкивался с этой программой, но что-то мне тогда в ней не понравилось — возможно, странные клавиатурные команды для набора. С другой стороны, на MuseScore явно оказал влияние Sibelius — а он мне хорошо знаком: я в сибелиусе несколько лет набирал ноты, когда жил под Windows. Качество получающихся нот меня не совсем устраивает — хоть MuseScore и использует те же шрифты, что и лилипонд, да и ноты, вроде, располагает достаточно удобно, результат по умолчанию выглядит неважно — например, динамика накладывается на текст (а в лилипонде они сразу разнесены на разную высоту).

Набранные в MuseScore ноты можно сохранить в разных форматах, среди которых есть разные форматы исходного кода (LilyPond, MusicXML), растровая графика (PNG), векторная (PDF, PostScript, SVG) и звук (MIDI, WAV, FLAC, Ogg Vorbis) — скорее всего лилипонд вызывается для генерации всей этой красоты. Создаваемый лилипондовый исходный файл сразу не компилируется — лилипонд ругается на ошибки синтаксиса, то есть файл требует доработки напильником.

♮ | ♯

Mar. 4th, 2013 11:44 pm
shoorick: (Рыжий)
Недавно в [livejournal.com profile] ru_notovodstvo проскакивала заметка (не про лилипонд), где автор спрашивал, как ему сделать «по-русски» смену знаков при ключе: так, чтоб бекары стояли слева от тактовой черты.

Я тоже сталкиваюсь с подобной задачей. Попробовал решить так:
\version "2.14.2"
\relative c' {
  \key e \major
  \cadenzaOn
  e4 gis b a
  s
  \key a \minor
  s256
  \cadenzaOff
  \bar "|"
 
  % usual measure
  \key c \minor
  as4 es bes c
  
  \cadenzaOn
  bes f' c d
  s
  \key a \minor
  s256
  \cadenzaOff
  \bar "|"
  
  \key d \minor
  d4 f e c
}


Метод: отключается счётчик длительностей, вставляется невидимая нота (для отступа), меняется тональность на ля-минор/до-мажор (без знаков), вставляется ещё одна пустая нота (иначе возникнет ошибка), включается счётчик длительностей, тактовая черта ставится вручную, тональность меняется на нужную. Работает как при смене диезных тональностей на бемольные, так и в обратную сторону (♭ ↔ ♯), однако неправильно работает при изменении количества, но не типа знаков альтерации — рисует лишние бекары. Как-то так:

Ноты

Ищу дальше...

upd/12.12.2013: Всё украдено до нас. То есть, в документации описано — надо было читать внимательнее.
shoorick: (Default)
Решил проблему, описанную час назад. Естественно, методом тыка проб и ошибок.

Итак, задача для начала достаточно проста: соединить синтезатор (тут он выступает как MIDI-клавиатура) с компьютером и вывести описанный MIDI-командами звук через компьютер. Потому как встроенный MIDI-синтез в клавишах ужасен (а чё вы хотите за 100 баксов?). Задачу ввода нот с MIDI-клавиатуры решать пока не будем — не до неё сейчас (хотя, насколько мне известно, rumor и Rosegarden могут MIDI-команды преобразовывать в ноты и сохранять их в формате LilyPond).

Рецепты и решение )
shoorick: (Default)
Решил перевести документацию по лилипонду на русский. Начал с ЧаВо: http://translated.by/you/lilypond-frequently-asked-questions/

Желающие могут присоединиться.
shoorick: (Default)
Лилипонд хоть и требует указывать длительность в команде \skip, предназначенной для создания пропусков в тексте, в некоторых режимах (например, когда текст подключен командой \lyricsto) эту длительность игнорирует, о чём честно предупреждает в документации (это не баг — это фича!) Однако жить от такой предупредительности не легче.

Писать здоровенные куски кода, содержащие множество команд \skip 1 \skip 1 \skip 1 — не наш метод. Гуглением нашлось два метода: тупой и правильный.

Тупой заключается в замене n команд \skip цифра на одну: \repeat unfold n { _ } — дёшево и сердито. Единственный минус — надо подсчитать число слогов в скрываемом фрагменте.

Правильный метод показан во втором примере на http://lilypond.org/doc/v2.12/Documentation/user/lilypond/Specific-uses-of-lyrics#Divisi-lyrics (хотя пример излишне сложен, смысл можно раскопать): мелодия делится на короткие голоса, к которым и привязываются фрагменты текста (также имеющие небольшую длину). Я как-то пробовал так делать: получилось, но тоже как-то всё непросто.

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

P. S. Попытки задать скрываемому тексту прозрачность или белый цвет не сработали, команды \hidеLуriсs в лилипонде нет.

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 26th, 2017 04:44 pm
Powered by Dreamwidth Studios