You are viewing ptrue

В Северном Ледовитом Below are the 50 most recent journal entries recorded in the "Peter True Be Know" journal:

[<< Previous 50 entries]

September 23rd, 2014
21:56

[Link]

Убийство в Большом театре

Tags:

(Leave a comment)

September 16th, 2014
19:34

[Link]

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

Все знают, что такое вставить лишнюю страницу в начало 30-страничной партии? Это значит, что все места с паузами, тщательным трудом подогнанные к месту переворота страницы, теперь оказываются в середине разворота, и нужно заново всё верстать. И так — в трёх партиях.

Тем не менее, удалось к девятой странице каждой из партий вернуться к прежней вёрстке. Иными словами, вогнать десять страниц в девять.

Вот, как выглядел ошибочный вариант первых девяти страниц (сверху) и исправленный (снизу):


Кстати, этот инцидент ещё раз подкрепил основополагающий производственный принцип: при изготовлении следующей партии всегда иметь перед глазами предыдущую.

Tags: , , ,

(4 comments | Leave a comment)

11:19

[Link]

България

Фото Ильи Кейкова

Половинка от яти отвалилась.

Tags: , , ,

(2 comments | Leave a comment)

September 12th, 2014
09:00

[Link]

Sprint 9 review
Отпуска подошли к концу и мы возобновили работу над нашей нотной программой. Сегодня закончился девятый спринт.

Хотя у нас в бэклоге висит целый список мелких задач, мы решили переложить их на следующий спринт, а сейчас в целях раскачки сделать что-то мотивирующее. Нам был необходим хоть маленький, но шаг вперёд. Этим шагом явилось освоение системы MIDI-ввода/вывода. Это значит, что уже скоро мы сможем вводить первые ноты.

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

Вход в настройки программы осуществляется через меню Окно > Настройки программы... (Window > Program Options...):



Само окно настроек — в перспективе многостраничное, но на данный момент состоит из одной единственной страницы, посвящённой MIDI.



Как и у всех, MIDI-устройство можно выбрать из раскрывающегося списка:



Довольно часто случается, что в списке больше устройств, чем реально могут быть задействованы. Какие-то из них фиктивные, какие-то неисправные. Здесь же, прямо в окне настроек можно протестировать выбранное устройство, нажав на кнопку Проверка (Test). Это действует для устройств вывода, т.е. для звучащих устройств. При нажатии на кнопку будет проиграна нота ля первой октавы.

Однако как протестировать устройства ввода? Для этого мы предусмотрели возможность, которой в других программах не наблюдали. У нас имеется кнопка Поиск... (Find...), которая открывает дополнительное маленькое окошечко. Слуховое:



Оно остаётся открытым до тех пор, пока на каком-либо из устройств MIDI-ввода не произойдёт действие — нажатие клавиши на клавиатуре, щипок струны на грифе, дуновение на ЭДИ и т. п. Программа слушает все устройства, и подключит то из них, которое в этот момент сработало.

Шаг сделан, следующие шаги — в следующем спринте. Кому интересно, приходите через шесть недель, 24 октября, в 9:00 по московскому времени на следующее спринт-ревью в этом ЖЖ.

Tags: , , ,

(19 comments | Leave a comment)

August 22nd, 2014
23:30

[Link]

Чем отличается Чижик-пыжик от Гарри Поттера?
— дроблением и альтерацией:

Tags: , ,

(7 comments | Leave a comment)

August 7th, 2014
14:45

[Link]

FedEx-пэкс-фекс
В очередной раз убедился, что в Федексе всё ещё работают полные идиоты.
Позавчера получил e-mail от коллег, что они отправили мне рукописную партитуру балета Федексом. Когда придёт — неизвестно.
Ну, я работаю дома, поэтому когда б ни принесли — получу.
Но это не значит, что я никуда из дома не выхожу. Могу мусор вынести. Или в магазин выйти. Или пообедать в арабскую пиццерию (буэ).
И вот только я вышел — звонок телефона: это, мол, почтальон Печкин. Принёс посылку, только вам её не отдам.
— Это Федекс.
— Посылку мне, что ль, приносили?
— Да.
— И дома меня не застали?
— Нет. Вообще никого не застали.
— Ну так я вернусь через 10 минут, приходите.
— Нет, не придём. У нас много посылок.
— А зачем звоните, тогда?
— Что?
— Звоните зачем? Вероятно, вы хотите договориться со мной о времени?
— Да.
— Ну, и когда вы приедете?
— Завтра.
— А нельзя ли поконкретнее? Чтоб уж наверняка быть дома.
— Мы не знаем, у нас много посылок.
— Блиииин.
— Но в вашем районе мы будем в это же время. Но не точно. Как это по-английски? А, «приблизительно», вот! Приблизительно в это время.

Вот что им стоит делать тот же самый звонок, но не после облома, а заранее?

Tags: , ,

(Leave a comment)

August 6th, 2014
22:30

[Link]

DSCH
Эннио Морриконе активно использовал музыкальную монограмму Шостаковича (D-Es-C-H) в музыке к фильму Days of Heaven, если конкретно, то в треке The Fire, начиная с 5:33. Интересно — умышленно ли?

Tags: , ,

(Leave a comment)

13:13

[Link]

Имитация
Издательские правила Universal Edition во многом представляются мне очень логичными и удобными. Однако, что мне не нравится, так это недопустимость исключений из этих правил.

Например, у них есть правило, согласно которому реплики перед вступлением какой-либо партии не должны продолжаться в такте вступления. Даже если вступление находится в самом конце этого такта, а всё начало занято паузами. Одно из обоснований этого правила (если мне не изменяет память) было таково, что вступление должно выглядеть графически ясным и чистым, и ничто не должно отвлекать от него. Окей.

Но вот простой пример, в котором мне очень хотелось бы это правило нарушить.



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

К сожалению, я не могу этого сделать. Потому что вступление первой флейты продолжается в такте вступления второй флейты, а этот такт по правилам UE должен оставться чистым! Максимум, что я могу дать в реплике у второй флейты,— это первую затактовую ноту из вступления первой. С третьей флейтой чуть-чуть лучше: у неё я могу выписать целый такт из вступления первой флейты. Однако я не могу выписать вступление второй. То есть даже если третий флейтист и будет проинформирован об имитации, он ничего не будет знать об ответе второй флейты, и будет считать, что его ответ первый. Когда же он услышит ответ второй флейты, он будет сбит с толку.

В российской практике существует спасительная формула ради графического удобства, которая позволяет пренебречь любым правилом. Здесь удобство не столько графическое, сколько логическое, и оно оправдывало бы отступление от правила ещё в большей степени. Но, увы, не для UE.

Tags: , , ,

(2 comments | Leave a comment)

July 18th, 2014
09:00

[Link]

Sprint 8 review
Сегодня заканчивается восьмой спринт работы над нашей нотной программой.

Часто мы в нашей команде начинаем спорить между собой: сделать так или сделать эдак? А через некоторое время приходим к одному и тому же решению: сделать и так, и эдак, и пусть пользователь выбирает при помощи настроек. Здесь есть другая крайность: если настроек будет слишком много, пользователь может утонуть в них. Поэтому мы стараемся организовать настройки так, чтобы большинство из них человеку никогда не пришлось открывать, однако чтобы в случае необходимости он сумел их найти.

В этом спринте мы вынесли ещё две настройки на панель настроек вертикального форматирования.



Новый параметр здесь Page height enough for stretching — при каком наполнении страницы начинать растягивать материал между верхним и нижним полями. По умолчанию этот порог равен 51 %.

Второй новый параметр это галочка System spacing, которая дозволяет менять расстояния не только между нотоносцами и между группами внутри систем, но и между системами.

Кроме того, мы добавили в настройки панель Page Format (Формат страницы).



Здесь можно задать размер и величину полей страницы.

Последнее, что добавилось, это настройки нотного стана.



Здесь можно менять раштр нотоносца, толщину нотных линеек и количество линеек в нотоносце.

Напомним, что все настройки по-умолчанию применяются ко всему документу, поскольку это наиболее часто возникающая потребность. Если в документе содержится разнородный нотный материал, требующий разного формата страницы, разного раштра нотоносцев или разного способа размещения материала, то документ можно разбить на разделы, и для каждого из разделов уточнять отдельные настройки. Те настройки, которые для разделов специально не заданы, будут наследоваться из настроек документа. Ну и, наконец, если на какой-то отдельной нотной системе требуется отступить от настроек раздела, то можно спуститься ещё на уровень ниже и указать отдельные настройки для этой системы.

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

А пока — мы уходим в отпуск до сентября, и следующее спринт-ревью состоится в пятницу, 12 сентября, в 9:00 по московскому времени.

Tags: , ,

(7 comments | Leave a comment)

July 9th, 2014
09:38

[Link]

Потомки Каспари
встретились в минувшее воскресенье в Москве — после многих лет общения в интернете :)



tape_of_emotion, ptrue, fa

Tags: , ,

(8 comments | Leave a comment)

July 4th, 2014
09:00

[Link]

Sprint #7 review
Закончился седьмой спринт работы над нашей нотной программой. Нам удалось уделить проекту более пятидесяти идеальных инженерных часов, так что сделано многое. Вот наш бэк-лог со списком решённых задач:



Кому интересно, может сам заходить на наш мантис и копаться в прошлых и будущих задачах. Вот адрес: http://notovodstvo.ru/mantis/changelog_page.php?version_id=4

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

Теперь по порядку.

Системы нотоносцев

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

Появились новые команды для работы с системой:



Добавление перед и после текущей, удаление. В принципе, новые системы будут добавляться автоматически по мере появления нотного текста. Однако пока нот ещё нет, нам нужно уметь работать с системами вручную.

Строка состояния

Строка состояния в нижней части окна у нас имеется уже давно, но мы не говорили о ней. Поскольку в этом спринте мы добавили в строку ещё один индикатор, то попутно расскажем и об остальных.





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

Теперь мы показываем в строке состояния раштр нотоносца в позиции курсора. Естественно, поэтому, нам пришлось добавить и соответствующую команду смены раштра, поскольку при щелчке по индикатору даётся возможность его поменять:





Можно выбрать свой раштр для каждого нотоносца в каждой системе. В этом смысле мы уже обогнали всем хорошо известную программу на букву С., где можно задать только два раштра на весь файл. А ведь даже в клавире «Бориса Годунова», награвированном в Музгизе в 1928 году, используется четыре раштра на одном развороте! (Если приглядеться в лупу, то на других страницах этого же издания можно найти и пятый). Что уж говорить о современной музыке.

Контекстное меню

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



Команда Undo теперь снабжена дополнительным пояснением, какая именно команда будет отменена. То же самое сделано и в основном меню у обеих команд Undo и Redo:



Кроме того, в меню Edit добавлена третья команда — Notation settings. О ней подробнее.

Свойства нотации

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

В данный момент окно настроек выглядит так:



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



Настройки можно применить к документу, и тогда они будут действовать на весь документ. Можно поменять в одном из разделов. А можно — у одной отдельной системы нотоносцев. Это может быть необходимо, например, для индивидуального управления алгоритмом ранжира. Если же материал во всём документе однотипный, то вполне можно ограничиться настройками документа.

Стрелки вверх и вниз (рядом с раскрывающимся списком выбора сферы применения настроек) позволяют быстро переходить на уровень выше или ниже без открывания списка.

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



в то время, как все остальные параметры раздела наследуют свои значения из настроек документа.

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

Например, на следующей картинке



первый параметр для данного раздела установлен в значение «выключено», в то время, как второй — включён, но в настройках более высокого уровня, то есть на уровне документа. Если первый параметр в документе поменять, то это никак не повлияет на данный раздел. Зато если в документе поменять второй параметр, то раздел унаследует это изменение.

Для документа верхним уровнем является прошитый дефолт. Это означает, что если в документе значения не выставлены, то они выбираются по умолчанию.

Для любого уровня настроек всегда видно, какие настройки в нём выставлены принудительно, а какие унаследованы с верхнего уровня. И значения унаследованных настроек тоже всегда видны.

Большинство числовых полей в окне настроек сопровождает селектор единицы измерения. Это наша SMU — умная единица измерения. В зависимости от выбранной физической единицы, значение будет либо абсолютным, либо привязанным к раштру нотоносца.



При переводе на русский язык английского термина space мы выбрали слово квадрат, хотя в литературе оно почти не используется. Приносить ещё один англицизм («спейс») мы не захотели — и так тут уже полно «чек-боксов», «дефолта» и прочего трэша. Переводить space, как промежуток мы тоже не стали (может быть, из-за того, что вспомнили детскую поговорку «За такие шутки в зубах бывают промежутки» и связанные с нею неприятности?) Пусть будет квадрат. Если вам удастся подобрать что-то более подходящее, то мы с радостью рассмотрим предложения. Это важно, поскольку квадрат / space является основополагающей величиной в нотоводстве. Термин «квадрат» при этом тоже не самый удачный, поскольку он уже используется в типометрической типографской системе мер, и там равен 48 пунктам. В нашем случае он получается в восемь раз меньше (высота пятилинейного нотного стана принимается за 24 пункта, space равен четверти этой величины, т. е. 6 пунктам), из-за чего возможны недоразумения.

Второй в списке единиц измерения идёт EVPU, которая представляет собой 1/24 часть квадрата. Как не сложно догадаться, эту единицу мы позаимствовали из известной программы на букву Ф., поскольку она идеально подходит для указания мелких расстояний, привязанных к раштру нотоносца, например — сдвига между нотными головками в секундах, толщины вязок или длины штилей. Остальные единицы — дюймы, сантиметры, миллиметры и микрометры — являются абсолютными, и не привязаны к раштру нотоносца.

Таким образом, если мы укажем, что поля нотного стана должны составлять 3 квадрата, то при раштре 4 мм эти 3 квадрата будут равняться 3 миллиметрам. Но если раштр нотоносца увеличить, то и поля его увеличатся пропорционально. Если же в настройках поля задать в миллиметрах, то изменение раштра ноотоносца на них не повлияет, и поля как были 3 мм, так и останутся.


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

Приглашаем всех заинтересованных на следующее спринт-ревью, которое состоится ровно через две недели, 18 июля, в 9:00 по московскому времени.

Tags: , , ,

(3 comments | Leave a comment)

June 20th, 2014
09:00

[Link]

Sprint #6 review
Из-за занятости в других проектах этот спринт получился у нас совсем незначительным по затраченному времени — менее 20 идеальных инженерных часов. Тем не менее, мы успели выполнить десять задач из нашего бэк-лога и ещё n-ное количество неучтённых задач.



Как видно из списка, мы поработали над наполнением меню Document, где появились два дополнительных подменю, и всего их теперь стало три:



Собственно, всё, что мы сейчас делаем, нацелено на одну небольшую задачу: догнать в пользовательском интерфейсе начальное состояние программы, в котором сразу было зашито несколько предопределённых объектов — нотоносцев, групп, систем, разделов. Хотя и кажется, что это совсем немного, но это немного именно для «зашитого» состояния. Когда вводится возможность этими объектами управлять динамически, оказывается, что это не так уж и мало. Нас спрашивают: ну когда же вы уже покажете нам первые ноты. К сожалению, нельзя принести в дом книги и расставить их на полке, если ещё нет полки и не построен дом. Торжественно обещаем, что мы сразу приступим к нотам, как только полностью реализуем контроль над теми несколькими объектами, которые введены в программу с самого начала.

Итак, разделы (sections). Теперь мы можем добавлять новый раздел до и после текущего, а также удалять его:



Что из себя представляет раздел? Это часть документа с обособленными настройками, составом инструментов и нумерацией страниц. Для сборника разнородных пьес каждый раздел может содержать пьесу. Разделы можно будет безболезненно менять местами, добавлять из других файлов и экспортировать в отдельный файл.

В подменю Нотный стан (Staff) мы добавили две новых команды:



Это добавление нового стана под текущим (Add Below) и снятие пустого стана (Hide Empty Staff). Снятие станов это то, без чего невозможно сверстать симфоническую партитуру. Часто требуется снять или восстановить пустые станы во всей системе. Поэтому мы добавили соответствующие команды в меню Staff System (Система нотоносцев):



Разумеется, все команды, показанные в меню, являются полностью работающими, с вытекающими из них Undo / Redo и так далее.



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

Каждый чих в нашей работе сопровождается автоматическими тестами. Сейчас их количество достигло 422. Мы производим только проверенный продукт. Часть наших тестов проверяет низкоуровневые алгоритмы, проверяя ход их выполнения при разных условиях. Другая часть тестов симулирует пользовательские команды, прогоняя различные сценарии и проверяя, что они дают ожидаемый результат.

Мы продолжаем работу над нашей программой-нотатором, и приглашаем всех заинтересованных на наше следующее спринт-ревью, которое состоится ровно через две недели, в пятницу, 4 июля, в 9:00 по московскому времени.

Tags: , ,

(11 comments | Leave a comment)

June 15th, 2014
14:14

[Link]

Два варианта Undo
А вот скажите, люди. В разных программах по-разному работает отмена последней команды (Undo).

Вариант 1: Если команда ничего не сделала (например, дана команда центровать текст, в то время как он уже и так отцентрован), то она в историю не записывается, и, соответственно, отменить её нет ни нужды, ни возможности. Такой вариант работает в Finale.

Вариант 2: Команда записывается в историю в любом случае, даже если ничего не сделала. Затем её можно последовательно отменять из истории. Этот вариант реализован в программах MS Word, Adobe InDesign, Sibelius.

(В программе Adobe Photoshop вообще в историю записывается каждый чих, вплоть до выделения рамочкой и входа / выхода из текстового режима, так что, можно считать, это экстремальный случай второго варианта.)


Какой из вариантов вам представляется более логичным и удобным?

Tags: , ,

(11 comments | Leave a comment)

June 6th, 2014
09:00

[Link]

Sprint #5 review
Закончился пятый спринт работы над нашей программой-нотатором. Этот спринт был плодотворным. Мы улучшили работу предыдущих функций и добавили новых.

Минус на минус даёт плюс
Автоматических тестов много не бывает. Чем больше тестов, тем меньше неожиданностей в конечном продукте. Например, один из новых тестов для пересчёта вёрстки вдруг неожиданно не прошёл. Оказалось, что при клонировании нотоносца в копию не переносилось значение предпочтительной дистанции из оригинала. Когда мы исправили эту ошибку, перестал проходить один из старых тестов. Оказалось, что у нас была ещё одна ошибка — на этот раз в тестовых данных, где значение предпочтительной дистанции для одного из нотоносцев было задано неоправданно большим. Две эти ошибки компенсировали друг друга, и старые тесты их не замечали. Однако новые тесты смотрели на ситуацию под другим углом, и благодаря этому ошибки обнаружились. Сейчас работа программы контролируется 357 автоматическими тестами, которые запускаются по два раза при каждом билде, а также десятки раз в процессе разработки. Каждый тест в автоматическом режиме прокручивает типовые (и экстремальные) сценарии работы с реализованными функциями и контролирует, что они дают ожидаемый результат.

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

Вертикальное форматирование
При вертикальном форматировании допустимая погрешность у нас 5 микрометров. На деле она оказывается примерно 1 микрометр. Это значит, что при растягивании нотных станов на странице нижняя линейка последнего стана может не попасть в нижнее поле страницы на 1 микрометр. (Напомним, что в миллиметре тысяча микрометров, а наименьшая величина, различимая невооружённым глазом, составляет сто микрометров.) Нам не удалось разглядеть погрешность даже при 3000-процентном увеличении.

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

На иллюстрации ниже мы последовательно добавляли на страницу по одной фортепианной системе, чтобы увидеть, как при достижении середины страницы (начиная от четырёх систем в данном примере) системы начинают растягиваться по высоте.



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

Удаление стана
Мы ввели в нашу программу вторую команду — удаление стана (первой командой было его добавление).



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

Мышь
До сих пор навигация по документу осуществлялась исключительно с клавиатуры. В этом спринте мы добавили несколько мышиных команд, привычных для любого другого приложения.

(L)-щелчок — перемещает курсор в щёлкнутую позицию
(R)-протаскивание — протаскивание документа
 ⇧ Shift  + (R)-щелчок — увеличение масштаба
 Ctrl  +  ⇧ Shift  + (R)-щелчок — уменьшение масштаба
(RR)-щелчок — возврат к предыдущему масштабу
(R)-щелчок — вызов контекстного меню

Внимательный читатель заметит, что эти команды повторяют клавишно-мышиные комбинации одной известной программы на букву Ф. Это вовсе не потому, что мы её так любим, а потому что считаем, что там эти команды подобраны наиболее удобно, хотя и реализованы топорно. Мы подробно писали об этих недостатках и сравнивали разные варианты навигации. В нашей программе мы исправили упомянутые недостатки, хотя не всегда это было легко. Например, протаскивание и масштабирование у нас работает в любой точке листа — не только в пустой, но и в заполненной нотным текстом, поскольку отличить команду вызова контекстного меню от команды протаскивания или масштабирования довольно просто. А вот как отличить одинарный щелчок от двойного? Ведь двойной — это то же самое, что два одинарных. Как программе понять, что пользователь хочет вернуться к предыдущему масштабу, а не дважды вызвать контекстное меню? Самый простой способ — это после первого щелчка чуть-чуть подождать, и если второго щелчка не последует, то показать контекстное меню, а если последует, то отрабатывать масштабирование. Этот вариант мы, разумеется, реализовали. Однако не всякий пользователь захочет ждать, даже чуть-чуть. Он хочет увидеть меню сразу после отпускания кнопки мыши. Чтобы удовлетворить это (совершенно законное) желание пользователя, мы провели статистическое исследование на мышах. И поняли, что скорость нажатия и отпускания мыши при двойном и одинарном щелчках отличается. При двойном щелчке между нажатием и отпусканием, как правило, проходит меньше 110 миллисекунд, а при одинарном — чуть больше. Возможно, эта величина зависит от конкретного человека, так что в будущем мы сделаем её настраиваемой. Даже если пользователь щёлкает одинаково быстро при двойном и одинарном щелчке, мы покажем ему меню, но с некоторым запозданием (в 500 миллисекунд — это время ожидания второго щелчка).

Правило хорошего тона — это делать одни и те же функции доступными разными способами. Поэтому мы реализовали вызов контекстного меню не только мышью, но и соответствующей клавишей  Menu  на windows-клавиатурах и стандартной комбинацией  ⇧ Shift  +  F10 , о которой во многих программах забывают.

Пока в программе лишь две команды, они обе попадают в контекстное меню. Позже, однако, нам придётся исходя из контекста решать, какие команды предоставлять в меню.


Медленно, но верно наша программа двигается вперёд. Следующее спринт-ревью состоится в этом ЖЖ ровно через две недели, в пятницу, 20 июня, в 9:00 по московскому времени. Приглашаем всех желающих.

Tags: , ,

(Leave a comment)

May 25th, 2014
10:30

[Link]

10 Genre Variations on "I'm On Hold"
Вот эти ребята настолько невероятно круты, что просто слов нет!

Tags: , ,

(Leave a comment)

May 23rd, 2014
09:00

[Link]

Sprint #4 review
Закончился четвёртый спринт нашей работы над нотной программой. Честно говоря, сегодня мы не покажем вам ничего нового. В обычной практике скрама это называется «Today we cancel the demo». Но это порочная практика, когда спринт-ревью сводится к демонстрации, и если показывать нечего, то отменяется. Мы решили так не поступать, и просто расскажем вам, чем были заняты в течение этого спринта.

Мы запустили bug tracking system, которая сразу стала пополняться записями об имеющихся неполадках. Всё, что нам не нравится в нашей программе, мы сразу записываем туда — чтобы не забыть:



Из картинки это не очевидно, но мы используем Мантис не только для ведения багов, но и для планирования новых функций. (К таковым относятся, например, special verticals, введение которых запланировано на следующий спринт.)

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

Сейчас мы работаем над одной из ключевых функций программы: функцией пересчёта макета. На картинке эта задача скрывается под номером 5 — «Reduce amount of recalculations». Изначально задача состояла в том, чтобы оптимизировать вычисления, ограничив их рамки только тем материалом, который необходим. Например, если мы добавили ноту на пятой странице партитуры, то ясно, что первые четыре страницы можно не пересчитывать — там ничего не изменится, и это понятно даже для авторов известной программы на букву Ф.

Самое интересное, конечно, касается последующих страниц. Если добавленная нота сделала запись слишком тесной, и один такт вылетел на следующую строчку, то мы должны пересчитать следующую строчку. И если по цепной реакции с каждой строчки по одному такту перелетело на следующую, то мы, разумеется, должны пересчитать каждую следующую. Но цепная реакция в какой-то момент остановится, поскольку в какой-то строчке окажется достаточно места для того, чтобы вместить лишний такт. Тогда и расчёты на этой строчке должны остановиться.

Кому-то покажется такой процесс излишним наворотом, однако есть такое понятие, как scalability, которое означает, что программа должна так же хорошо работать с партитурой в четыреста страниц, как и с одной страницей. И это значит, что никакие лишние расчёты недопустимы. Только необходимые.

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



Сегодня заливка ничего не стоит, поскольку выполняется мощными видеокартами и отдельными графическими драйверами. Поэтому задача сводится к тому, чтобы быстро подать драйверу материал для прорисовки. Это значит, что максимум того, что может быть просчитано заранее, до прорисовки — должно быть уже рассчитано.

Вернёмся к нашей задаче. Одной из её подзадач является осуществление того, что по-английски называется vertical spacing. К сожалению, это нельзя перевести на русский, как вертикальный ранжир, поскольку этим термином у нас принято называть совсем другое. Назовём это вертикальным форматированием. В идеале нотные станы в одной партитурной системе должны находиться на одинаковом расстоянии друг от друга. Плюс добавочное расстояние между оркестровыми группами. Плюс дополнительное расстояние над струнными, если там требуется повторять темповые обозначения.

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

Хорошо. Но вот, допустим, наша нотная система получила больше места на странице. Как — не существенно. Например, мы перенесли ещё одну систему на другую страницу, и наша система осталась одна. Или сняли паузирующие нотоносцы, и остались только те, где есть ноты. Важно, что нашей системе говорят: у тебя теперь есть на 130% больше места, чем было, и теперь нужно систему растянуть. И вот тут начинается хитрость. Если мы возьмём и равномерно увеличим все промежутки между станами до 130%, то получится неправильно:



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



И только после того, как промежутки сравняются, при необходимости ещё растянуть систему, можно будет растягивать её равномерно:



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

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

Следующее спринт-ревью состоится в этом ЖЖ ровно через две недели, 6 июня, в 9:00 по московскому времени.

Tags: , ,

(5 comments | Leave a comment)

May 21st, 2014
15:31

[Link]

А ваша нотная программа
(в смысле, та, которой вы пользуетесь, ну или программа вашей мечты) умеет заключать в скобки до-бемоль при ключе? Если да, то под каким соусом она это делает?

Tags: , ,

(5 comments | Leave a comment)

May 20th, 2014
13:20

[Link]

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

(Артефакты, мигающие на экране, появились, судя по всему, из-за того, что разрешение экрана слишком большое.)

Tags: , , , ,

(8 comments | Leave a comment)

May 19th, 2014
14:20

[Link]

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



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

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

Спасибо за внимание.

Tags: ,

(24 comments | Leave a comment)

May 13th, 2014
21:29

[Link]

Хочу две книжки:

- John Cage. Notations.

- Gardner Read. Pictographic Score Notation: A Compendium

Но, блин, дорого! А переиздания не хочу.

Tags: ,

(3 comments | Leave a comment)

May 9th, 2014
19:39

[Link]

Ещё более злобное
Купил себе новую клаву. У старой обломалась ножка, да и задрало выпутывать ея хвост из-под партитур. Захотелось беспроводной.

Я никогда не смотрю на клавиатуру, когда печатаю, пальцы сами знают своё место. На алфавитно-цифровом блоке они ориентируются по зарубкам на клавишах А и О, на функциональных клавишах — по промежуткам между четвёрками клавиш, на цифровом и стрелочном блоке — по промежуткам между блоками. У меня даже никогда нет наклеек с русскими буквами на клавишах, поскольку они не нужны.

На новой клавиатуре решили сэкономить один сантиметр в длину и убрали все «лишние» зазоры между клавишами.



Теперь, чтобы попасть в Page Up или в цифру 7, приходится каждый раз кивать головой вниз. При работе с гигантскими партитурами каждое такое движение увеличивает продолжительность работы в полтора раза.

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

Так что единственное, куда я теперь попадаю, это на буквы (на которых, к счастью, пимпочки у букв А и О Микрософт не додумался спилить) и четыре клавиши функций отладчика, которые я никогда не могу запомнить, поэтому всегда приклеиваю над ними бумажку со стрелочками.

О, ещё эти обормоты не сделали лампочек для Caps Lock и Num Lock. Ну как так можно!

Tags: , ,

(14 comments | Leave a comment)

19:22

[Link]

Злобное
Нет, ну я же говорил!
Что уж там обломок вязки оставить, когда нынче просто заменить вязку на две отдельных восьмушки кажется редакторам кощунственным!



Как же можно! Ведь иначе никто не увидит, что здесь доля!

Мне представляется эта тенденция сродни нынешним ужасным названиям учреждений, упоминаемым неизменно в именительном падеже и обязательно в кавычках. Как, например:

Tags: , , , , ,

(2 comments | Leave a comment)

09:00

[Link]

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

Конечно, инфраструктуру создавать на пустом месте довольно сложно, поэтому мы запрограммировали несколько самых базовых функций, и отлаживаем всё на них. Любители скрама одобрят ещё один шаг, который мы сделали, а именно написание документа под названием Definition of Done («Что означает „сделано“»). Вот содержание этого документа:

Элемент музыкальной нотации считается реализованным в программе, если программа может его
- показать на экране
- напечатать на принтере

- сохранить в файл
- загрузить из файла

- экспортировать в MusicXML
- импортировать из MusicXML

- добавить вручную
- удалить вручную

- отменить, как последнее действие
- восстановить, как последнее действие

- дать отредактировать его свойства


Это довольно большой список, и если следовать этому определению, то в нашей программе ещё не реализован ни один элемент нотации. К слову сказать, кусочки нотоносцев с ключами и акколадами, которые мы показывали на предыдущих ревью, были «захардкожены», т. е. вбиты в исходный код программы, а не добавлялись динамически. Нам важно было это сделать, чтобы наладить первые четыре пункта Definition of Done, то есть вывод на экран, принтер, сохранение и загрузку.

В этом спринте мы открыли одну команду редактирования: таким образом теперь можно добавлять нотоносец над позицией курсора (после добавления курсор сразу переходит на новый нотоносец):



Обратите внимание на звёздочку, появившуюся в заголовке окна после выполнения команды — это признак «грязного файла», иными словами, при закрытии программы файл будет предложено записать.

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

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

Точно так же и с нотами. Если мы хотим отменить добавление нотоносца, то программе всего лишь нужно его удалить. Кстати, проверим, как это работает:



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

А пока проверим, как работает восстановление отменённого действия:



Заметим, что звёздочка в заголовке окна честно гаснет, когда состояние файла становится идентичным исходному (или сохранённому), и загорается, как только мы отходим от него.

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

Ещё один важный шаг в развитии инфраструктуры, который мы совершили в этом спринте, это импорт MusicXML. Мы решили не засорять меню и не выделять импорт в отдельную команду, и поскольку результатом этого действия всё равно становится открытие документа, то и реализуется оно через стандартную команду File > Open:



Напомним, что мы не против стандарта MusicXML, как такового. Мы против использования его, как основного формата для программы, поскольку он не предназначен для этого и не предоставляет возможностей для хранения специфически выстроенных данных. Его назначение — передача усреднённого унифицированного внешнего представления нотного текста из одной программы в другую. Вот в этом качестве мы его и применяем.

На этом нововведения минувшего спринта заканчиваются. К этому моменту мы потратили на разработку прототипа 153 идеальных инженерных часа и написали 317 автоматических тестов для контроля качества. Да, мы успели много, но всё интересное — ещё впереди. Самая нотация начнётся после того, как мы реализуем все пункты нашего Definition of done для начальных нескольких команд.

Всех, кому интересно развитие проекта, приглашаем на следующее спринт-ревью, которое состоится в этом ЖЖ ровно через две недели, 23 мая, в 9:00 по московскому времени.

Tags: , , ,

(4 comments | Leave a comment)

April 25th, 2014
09:00

[Link]

Sprint #2 review
Закончился второй спринт работы над нашей программой-нотатором. Мы рады сообщить всем заинтересованным о достигнутых успехах.

Во-первых, нам удалось внести свой вклад в СРаМуШ — Стандартную раскладку музыкальных шрифтов (SMuFL — Standard Music Font Layout). Неделю назад опубликована версия 0.9 стандарта, куда включены следующие символы, которые оказались бы забыты без нашего участия:


1. Знак дыхания



Чтобы показать, что этот знак не относится к местечковой практике, а имеет давнюю традицию, мы представили сообществу фрагменты хоровых партитур:

- Павел Чесноков. Литургия, op. 42. Изд. Юргенсон, 1915.
- Дмитрий Шостакович. Десять поэм на стихи революционных поэтов, op. 88. Изд. Музыка, 1967.

а также иллюстрации из учебников по нотопечатанию, где сообщается кое-что о графических и семантических особенностях этого знака:

- [Карцев, 2004]
- [Дудка, 1985]
- [Смирнов, 1988]

Поскольку у нас под рукой не оказалось примеров с этим знаком из зарубежной музыки, то и в описании стандарта он сопровождается словами «as used in music from Russia». Ну, пусть. Хотя у нас было стойкое ощущение, что знак применяется не только в России.


2. Опущенная слоговая чёрточка в двух вариантах — обычная и неразрывная:



Для этого знака образцов можно найти сколько угодно, но мы представили фрагменты западных партитур:

- Людвиг ван Бетховен. Messe C-Dur, op. 86. Edition Breitkopf.
- Луиджи Керубини. Requiem No.2 D-moll. Edition Peters.

Хотя на этот раз примеры подобраны совсем не из русской музыки, но в стандарт и про эти символы записали, что они представлены «as used in music from Russia». Видимо, по инерции. А может быть, из-за третьего образца, который мы взяли ради того, чтобы показать, что символ опущенной слоговой чёрточки и дефис не могут быть взаимозаменяемы:

- Георгий Свиридов. Песни на стихи английских поэтов. Изд. НСФ, 2012.

[Лирическое отступление по поводу русской музыки. Один очень известный магазин, через который все русские ноты поступают в продажу в остальной мир в интернете, делает время от времени тематические рекламные рассылки. Пару дней назад в ответ на такую рассылку в магазин пришло гневное письмо из одной европейской страны, в котором говорилось: «Пожалуйста, больше не присылайте никаких материалов о русской культуре, пока эта культура связана со страной-агрессором». К счастью, шрифтовой стандарт делают люди, которые умеют отделять мух от котлет, поэтому все наши поправки подвергались обсуждению исключительно с точки зрения нотной графики.]


3. Раз речь зашла о подтекстовке, то мы отдали свой голос за внесение в стандарт символа элизион, хотя он и так есть в стандарте Юникод (под названием undertie). Теперь в СРаМуШе три варианта элизиона разной ширины:



В качестве образцов элизиона мы взяли два фрагмента из бессмертной оперы «Паяццы»:

Ruggero Leoncavallo. Pagliacci. Piano-vocal score. Edition Peters.
- http://notovodstvo.ru/smufl/lyrics/leoncavallo1.pdf
- http://notovodstvo.ru/smufl/lyrics/leoncavallo2.pdf

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


4. Стилистический вариант дубль-бемоля — с перекладиной:



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

- [Нюрнберг, 1953]
- [Дудка, 1985]
- [Атовмьян, 1946]

Кстати, на наше предложение откликнулся коллега из MIT, Майкл Катберт, и отметил, что дубль-бемоли с перекладиной встречаются в музыке Николая Рославца. Более того, там даже есть и тройные бемоли — тоже с перекладиной. Поэтому такой тройной бемоль с перекладиной тоже внесли в стандарт, как стилистический вариант обычного тройного бемоля (если про такое диво можно сказать, что он «обычный»):




5. Серединка для паузы в виде кроватки :)

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




6. Пять знаков пропорций из мензуральной нотации:



Эти знаки мы выискали, разумеется, в труде Вилли Апеля, доступном с некоторыми различиями на двух языках — английском и немецком.


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

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

В перспективе мы сможем подключать к программе любые шрифты, даже старые, не соответствующие стандарту SMuFL. Однако благодаря стандарту можно будет пользоваться таблицами перекодировки. Вместо того, чтоб делать для каждого шрифта таблицу перекодировки во все остальные кодировки, достаточно будет сделать одну — из шрифта в SMuFL.


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

Формат файла на период прототипирования — json, для удобства отладки. Возможно, мы в какой-то момент перейдём на его более компактный двоичный вариант — bson или на zip-архив с json внутри. И, разумеется, это не Music-json, а наш собственный json, отражающий нашу структуру данных.



Кислотная зелёная вертикальная чёрточка на скриншоте это курсор. Мы его называем caret, или по-русски можно кареткой. Это из-за того, что подавляющее большинство людей, слыша слово «курсор», будут думать про указатель мыши. А мы хотим провести чёткую аналогию с текстовым курсором. Ну или с окошечком на каретке пишущей машинки. Когда мы научим курсор мигать, то цвет его будет, скорее всего, чёрный (или настраиваемый). Сейчас он зелёный, чтоб мы его видели, пока он не мигает.

Концепция нашего пользовательского интерфейса такова, что курсор будет виден в нотах всегда. Это приглашение к действию и указание на место действия. Если курсора нет, значит программа не работает.

В этом спринте мы реализовали простейшие операции перемещения курсора:



На этом новые функции исчерпываются. Немножко метрик. На работу затрачено 134 идеальных инженерных часа, за это время собрано 112 билдов, их работу проверяют 256 автоматических тестов. Если, работая над новой функцией, мы повредим старую, то на всех наших мониторах сразу загорятся красные лампочки. Поэтому у нас всё надёжно, как в космосе.

Приглашаем всех заинтересованных на следующее спринт-ревью, которое состоится в этом ЖЖ ровно через две недели, в пятницу, 9 мая, в 9:00 по московскому времени.

Tags: , , , ,

(6 comments | Leave a comment)

April 11th, 2014
09:00

[Link]

Sprint #1 review
Как могли заметить самые проницательные из наших читателей, мы вплотную приступили к процессу создания нотной программы. Мы поняли, что накопили достаточно идей, которые пора воплощать. Мы поняли, что большинство этих идей неинтересны производителям существующих нотных программ, в основе которых зачастую лежат тупиковые концепции, и мы поняли, что пытаться донести до них эти идеи — это нерациональное использование ресурса.

Да, в прошлом мы уже несколько раз предпринимали попытки построения своей нотной программы, однако потом понимали, что ещё не готовы к этому процессу. Теперь мы готовы.

Мы переболели детской болезнью MusicXML, как основы для внутреннего представления нотации. Мы отказались от идеи использования чужого открытого кода и от идеи вкладывать свои ресурсы в чужие коммерческие проекты.

Теперь у нас свой проект, и у нас всё по-взрослому. У нас scrum, TDD, continuous integration.

А где скрам, там и спринт-ревю. Первый спринт получился довольно длинный, четыре недели (за это время потрачено 89 чистых часов). Будем считать, что его продолжительность вызвана тем, что он был пилотным. Следующие спринты будут длиться по две недели, и поэтому каждую вторую пятницу в 9:00 по московскому времени здесь, в этом ЖЖ, будет проходить спринт-ревю. (Напомним для неискушённых в скраме, что спринт-ревю это встреча, на которой всем заинтересованным в продукте рассказывается о его новых функциях, появившихся с момента предыдущего спринт-ревю.)

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

Вот так выглядит наш нынешний прототип.



Он пока умеет не многое. Но нам нужно было перво-наперво соорудить испытательный полигон.

Это стандартный многодокументный интерфейс.
В документах работает постраничная навигация и масштабирование.
Масштабирование умеет пристраиваться к высоте и ширине страницы (и менять масштаб пропорционально с изменениями размера окна).

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

Мы ввели понятие разделов документа, которое облегчит хранение в одном документе партитур с разным составом, создание мультипьесных файлов, манипуляции с пагинацией, настройками и др.

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



Шаг сетки в любом случае равен расстоянию между линейками нотоносца и позволяет откладывать расстояния при ранжире квадратами (спейсами).

Внутренние расчёты производятся при помощи специальной универсальной единицы измерения, Smart measurement unit, которая поддерживает расстояния в метрической системе или в долях спейсов, привязанных к какому-либо нотоносцу или системе. Здесь мы уже заложили концептуальное отличие от одной известной программы на букву ф, где миллиметры и спейсы абсолютно взаимозаменяемы и конвертируются друг в друга при помощи простого умножения на постоянный коэффициент, в результате чего в этой программе становится возможным установить раштр нотоносца в спейсах. Это примерно такой же нонсенс, как, скажем индивидуальная настройка количества сантиметров в дюйме. При том, что любой школьник знает, что как в дюйме всегда 2,54 сантиметра, так и любой раштр нотоносца всегда равен 4 спейсам (иными словами, между пятью нотными линейками всегда четыре промежутка).

На этом нынешняя функциональность прототипа исчерпывается.

Ах, ну да, довесок. Мы придерживаемся мнения, что интерфейс компьютерной программы должен быть обязательно на английском языке. Однако ради развлечения мы добавили возможность моментального переключения языка интерфейса на русский:



[Кстати, не исключено, что мы вынуждены будем с какого-то момента проводить наши спринт-ревю на английском. (Да-да, на нашем чудовищном доморощенном кондовом английском.) Этому есть две причины: во-первых, нам приходится употреблять массу слов и выражений, которых в русском языке и не существует. Само слово скрам чего стоит. Прямо стыд и срам. А во-вторых, мы, хотя и ставим себе задачу воплотить все тонкости отечественного нотопечатания (мимо которых обычно спокойно проходят западные коллеги), но всё-таки не хотим ограничивать нашу аудиторию лишь одной шестой частью суши.]

Спасибо за внимание, следующее спринт-ревю состоится ровно через две недели, 25 апреля в 9:00 по московскому времени.

Tags: , ,

(16 comments | Leave a comment)

April 1st, 2014
17:52

[Link]

Запуск всех тестов без составления поимённого списка
У меня есть модуль-тесты, которые запускаются из-под maven'а на сервере continuous integration, и из-под Eclips'а во время разработки. Я запускаю их постоянно, чтобы убедиться, что ничего не сломал, добавляя новые функции или изменяя старые. Каждому изменению в коде предшествует написание соответствующего теста, а затем запускаются все тесты, чтобы исключить побочные действия. На данный момент у меня 106 тестов, и это только самое начало (полторы недели работы над проектом).

Проблема такая: Eclipse запускает тесты через TestSuite, в котором перечислены все тестовые классы. Уже сейчас я испытываю от этого неудобство, а когда классов будут сотни, а тестов тысячи, добавление каждого нового класса в список будет отнимать много лишнего времени.

Maven умеет запускать тесты по имени класса, т.е. он запускает все классы, имя которых содержит подстроку "Test". (В данный момент я заставил его тоже пользоваться TestSuit'ом, чтобы унифицировать два процесса.)

Я вижу два выхода: научить Eclipse запускать тесты без поимённого перечисления, как Maven; или прямо запускать Maven из Eclips'а, что можно делать и сейчас, но в этом случае Eclipse не видит результатов тестирования. Значит нужно научить Eclipse распознавать результаты тестов из-под Maven'а.

Таким образом, всё сводится к поиску решения одной из двух задач: научить Eclipse одному или другому.

Ага. По варианту № 1 решение найдено тут: http://stackoverflow.com/questions/2255046/run-all-tests-in-junit-4

Как ни странно,— в ответе, набравшем самое небольшое число баллов. Там говорится, что в последних версиях Eclips'а в окошке Run Configurations есть возможность указать вместо TestSuit'а проект, папку или package, из которого запускать все имеющиеся тесты. И это прекрасно работает. (Только нужно предварительно удалить TestSuite, Потому что иначе Eclipse пытается запустить и его, и зацикливается.)

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

Эту же проблему после удаления TestSuit'ов следует решить и в Maven'е: нужно, чтоб модельные и GUI-тесты запускались раздельно.

Думаю, в Maven'е проблему решить просто: нужно исключить из запуска все тесты, в названии класса которых содержится подстрока "GUITest". А вот в Eclipse такой возможности, кажется, нет. Для Eclips'а проще всего было бы создать для GUI-тестов отдельную папку. Но это будет означать, что эту папку придётся отдельно прописывать для Maven'а, поскольку по стандарту он понимает только две папки. Впрочем, в любом случае нужно прописывать отдельный target для запуска GUI-тестов, поскольку хоть редко, но их всё-равно нужно запускать.

Похоже в стандартной схеме проекта Maven'а не предусматривается второй папки для тестов (integration testing не в счёт).

Ладно, пока попробую существовать в едином тестовом пространстве. Заодно будет стимул, чтоб улучшить GUI-тесты, раз уж они будут запускаться в общем потоке.

Вот такая картинка с покрытием получается после включения GUI-тестов на последнем билде:

Tags: , , ,

(2 comments | Leave a comment)

March 30th, 2014
16:12

[Link]

Кучу вещей, которым нас учат в школе, мы благополучно забываем, а потом спустя много лет радуемся, когда вдруг сами до них доходим. Может быть, это из-за того, что в школе нам не объясняют практической ценности всего изученного, не показывают на примерах, как это можно применить во взрослой жизни?

Tags: ,

(3 comments | Leave a comment)

March 27th, 2014
12:16

[Link]

Фортепианная акколада
Довольно непростой штукой для рисования оказывается фортепианная акколада.



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

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

Может быть, ещё и ширину фигуры регулировать в зависимости от высоты охвата? Для одного стана поуже, для трёх — пошире?

Буду благодарен за любые комментарии.

Tags: , ,

(5 comments | Leave a comment)

March 24th, 2014
21:53

[Link]

Подъёмный кран 2
А помните, товарищи струнники, я тут недавно (пять лет назад) интересовался специальным обозначением под названием Подъёмный кран? Вот таким:



И половина из вас сказали, что никогда такого не встречали (хотя другая половина созналась, что видела этот знак уже даже в музыкальной школе).

Так вот, счастлив вам сообщить, что этот знак внесён, как «стилистическая альтернатива», в новый стандарт музыкальных символов (SMuFL) и имеет unicode-номер uniE5E3.salt01 и название stringsChangeBowDirectionLiga:



Забавно, что авторство этого знака приписывается румынскому виолончелисту Прикопе, а вовсе не Московской филармонии, как считали некоторые. Очень любопытна и вторая альтернатива.

Tags: , ,

(Leave a comment)

March 19th, 2014
18:55

[Link]

Хор мальчиков С.-Петербурга в Финляндии!
Внимание-внимание!

Завтра, 20 марта, в 19:00, единственный концерт в Финляндии всемирно известного
Хора мальчиков Санкт-Петербурга
(художественный руководитель и дирижёр — Вадим ptscholkinПчёлкин)
в Кафедральном соборе города Эспоо по адресу
Kirkkopuisto 5, 02770 Espoo


Tags: ,

(7 comments | Leave a comment)

March 17th, 2014
23:23

[Link]

In Futurum
А вот совершенно замечательное произведение Эрвина Шульгофа под названием In Futurum, состоящее из одних пауз.



Вернее, это не самостоятельное произведение, а часть цикла Fünf Pittoresken. Остальные части вполне традиционны.



Разумеется, у большинства музыкантов сразу возникает ассоциация с сочинением Джона Кейджа 4′33″ (состоящим из молчания обозначенной продолжительности). Вся штука в том, что Кейдж написал свою пьесу в 1952 году, а Шульгоф в 1919.

Однако у любящих нотоводство (© В.И.Даль) при виде In futurum вспоминается скорее Faerie’s Aire and Death Waltz Джона Стампа, представляющая собой пародию на сложную нотацию.



Неизвестно, когда конкретно была создана эта партитура. Вроде бы, её напечатали в 1997, хотя мне кажется, что, скорее всего, где-то в 1970-е. Согласно имеющимся сведениям, Джон Стамп (1944–2006) начал работать внештатным гравировщиком нот в 1967. Так что его Арию в любом случае отделяло от In Futurum, как минимум, полвека. Однако влияние очевидно.

Tags: , , , , ,

(6 comments | Leave a comment)

11:29

[Link]

Несколько картинок с Мюзикмессе
Скрипичных дел мастер




Медных дел мастер




Пиано-деск. Мечта поэта




Электронные пюпитры. Очень популярная штука, сейчас её все делают, кому не лень, но я довольно скептически к ним отношусь.




Большой вариант. (На мой взгляд — всё равно мелковат.)




Тот самый диванчик для интервью в Henle Verlag.




Просто красивая обложка. Три разных нотных полосы, каждая в свой цвет, тиснуты на один лист.

Tags: ,

(3 comments | Leave a comment)

09:39

[Link]

Почему, когда чихаешь, брызги попадают на очки? Они что, кругами летают? Или рикошетят?

Tags:

(8 comments | Leave a comment)

March 15th, 2014
20:39

[Link]

Хор модификаторов

Tags: , , ,

(Leave a comment)

March 14th, 2014
23:33

[Link]

Франкфуртер Мюзикмессе 2014
В каждом путешествии всегда встречаешь много новых людей, и часто эти встречи сопровождаются бурными восторгами с обеих сторон. А потом ты возвращаешься домой, и погружаешься в повседневные дела, а эти новые знакомства отходят в сторону и забываются. Чтоб они вошли в твою рутину, нужно по возвращении написать каждому из них. Или хотя бы оставить себе заметку на память. Вот это и есть такая заметка.

Первая из таких встреч была с доктором Вольфом-Дитрихом Зайффертом, директором издательства Henle Verlag. Они привезли из Мюнхена свой знаменитый красный круглый диванчик, на котором сняты все их интервью на ютубе. Правда, самый первый ролик был снят не на диванчике, а за рабочим столом гравировщика нот Ганса Кюнера. Доктор Зайфферт сказал, что они давно уже не пользуются гравировкой в своём производстве, а полностью перешли на Finale, к которому изготовили собственные шаблоны и плагины. А Ганс Кюнер лишь иногда приходит в издательство, чтобы продемонстрировать своё искусство перед специально собравшимися ценителями, уже только в качестве шоу. Тем не менее, по всему видно, как до сих пор в Henle бережно относятся к нотам (в отличие от другого известного издательства с многовековыми традициями, где решили забить на всё и гнать халтуру).

Другая встреча, которая поразила меня в самую пятку, состоялась довольно неожиданно. Мы были на пресс-конференции, связанной с выходом программы neoScores, и я в самом начале заприметил одного мужичка, простецкий вид которого совершенно не вписывался в эту техническую тусовку, а, скорее, наводил на мысль о чудаке-поэте. А когда после официальной части я и ещё несколько коллег потребовали провести нам демонстрацию продукта, этот мужичок к нам присоединился. И как только у меня созревал какой-нибудь каверзный технический вопрос, этот мужичок на мгновение меня опережал и точно такой вопрос озвучивал! Разумеется, мы с ним тут же зазнакомились, и мужичок оказался Джеймсом Саттоном, программистом из Кембриджа, водиночку написавшим аналогичную neoScore нотную читалку да ещё и соответствующий SDK. Он рассказал, что работал над ней последние четыре года. На мой вопрос, как ему это удалось (потому что такие вещи не делаются «вечером после работы», для них нужно бросить всё и только ими и заниматься), он ответил, что — только благодаря его жене, которая дала ему возможность не ходить на работу, а ковыряться в своём коде, без малейшей надежды, что это когда-нибудь окупится. Его пример представляется очень важным для меня лично, поскольку показывает, что один в поле — воин, и что любой проект можно осуществить. Нужно только взяться за него. С другой стороны, восприятие его проекта окружающими сильно отличалось от восприятия других проектов. Например, выступает докладчик, представляет продукт. И ты знаешь, что за его спиной целая команда, которая сидит где-нибудь в Штатах или в Австралии, и что бы там с докладчиком ни случилось, эта команда будет делать своё дело. А Джеймс передвигался от одной кучки людей к другой, прислушивался к дискуссиям, затем ставил всех в тупик каким-нибудь вопросом, а спустя ещё какое-то время доставал из своего портфеля айпед и какоё-то андроидо-девайс, демонстрируя свой кроссплатформенный продукт. И становилось понятно, что тут в одном лице и программист, и музыкант, и маркетолог. И не всё в равной степени успешно.

Встреча с Майклом Гудом — автором и разработчиком MusicXML — была основной целью поездки. Надо сказать, что три года назад к функциям Майкла неожиданно добавилась ещё одна: его пригласили работать в Finale, и теперь он полностью определяет стратегию её развития. В интернет-форуме MusicXML сейчас проходит оживлённая дискуссия по поводу того, что Finale становится всё более закрытой программой. Например, в 2006 версии они отказались от экспорта в формат ETF, где можно было в текстовом виде увидеть всю внутреннюю кухню программы. Но умельцы продолжили читать эту же кухню из основного двоичного формата MUS. Как вдруг в версии 2014 в программе заменили формат на MUSX, что само по себе являлось данью моде — это переименованный zip-архив. Однако центральный файл данных в этом архиве оказался зашифрован. И умельцы, которые раньше могли читать двоичный формат MUS, теперь оказались бессильны. Больше всех по этому поводу на форуме возмущается Питер Дойч. Майкл Гуд осторожно возражает ему, что, мол, они вынуждены были закрыть формат, чтобы защититься от кривых ручек пользователей, которые чего-нибудь сами поменяют, поломают, а потом грузят службу поддержки. Я придерживался позиции (и озвучивал её), что ничего страшного в закрытии формата нет, поскольку можно вместо утилиты, читающей формат Finale, сделать плагин к Finale, который будет напрямую из программы все данные экспортировать. И вот сейчас Майкл меня просто убил, сообщив в приватной беседе (а мужики-то не знают!) на мой вопрос, почему они 15 лет не обновляли PDK (описание интерфейса для плагинов), что в следующей версии они этот интерфейс вообще закроют, чтобы, опять же, кто попало свои кривые плагины к программе не подключал и не мог повредить данные. Впрочем, на вопрос, что же будет с основополагающими плагинами Паттерсона, Гиезена и Вильямсона, он сказал, что этим людям дадут новый интерфейс и они перепишут свои плагины под новую версию. И тут же предложил вступить в клуб бета-тестеров этого VIP-интерфейса. В общем, очень такая странная стратегия.

На встречу не сумел прилететь Дэниел Спредбёри, который должен был читать доклад о разрабатываемой им новой стандартной кодировке для нотных знаков SMuFL. Вместо этого он прислал свои слайды Майклу Гуду, и тот их озвучил. Но не это поразило меня в самую пятку. Я за политикой не слежу, а оказалось-то вот что. Дэниел Спредбёри это человек из команды разработчиков программы Sibelius. Пару лет назад программу в очередной раз перекупили, и разработчиков распустили, наняв новых. В связи с этим большинство из тех, с кем я сегодня общался, предрекают Sibelius'у скорый и неминуемый крах. А уволенная команда, тем временем, оказалась приглашена фирмой Steinberg (известной по программе Cubase), и они сейчас пишут абсолютно новую нотную программу с ноля. И вот на неё сейчас все и возлагают всяческие надежды. Много интересного о процессе разработки этой программы пишется в блоге Дэниела Спредбёри.

Напоследок я чуть не сцепился с одной дамой на стенде шведских нотных издателей, которая сказала, что в Швеции в производстве наиболее популярна программа Sibelius. Я имел неосторожность спросить, что она думает о будущем этой программы в связи со сменой команды разработчиков. (Как выразился один немецкий коллега, Кристоф Шардт, автор программы PriMus: в таких серьёзных проектах жизненно необходимо, чтобы разработчики были женаты на своём коде. Понятное дело, что о новой команде вряд ли это можно сказать.) Дама бросилась защищать Sibelius. Выяснилось, что она только вчера посетила семинар для дистрибьюторов, на котором были расписаны всяческие радужные перспективы. Видимо, скепсис читался на моём лице без слов, потому что под конец она вручила мне свою визитку, предложив через годик посмотреть, «кто из нас был прав».

Tags: , , , , , , , , ,

(2 comments | Leave a comment)

21:12

[Link]

Симфонии с продолжением
Жаль, Илья Бирман отключил комментарии к своей заметке про симфонии Брукнера. Я бы ему написал, что в гораздо большей степени, чем в третьей и четвёртой симфониях Брукнера ощущение, о котором он говорит («Такое ощущение, что четвёртая — непосредственное продолжение третьей. Как будто он поздно ночью дописал третью, а с рассветом уже взялся за четвёртую»), остаётся от Тринадцатой и Четырнадцатой симфоний Шостаковича. Там всё едино — и тональность, и мотив, на котором строится заключительная часть Тринадцатой и вступительная Четырнадцатой.

Tags: , , , ,

(Leave a comment)

March 11th, 2014
12:45

[Link]

Политические анекдоты сегодня случаются только двух типов: несмешные или омерзительные.

Tags:

(Leave a comment)

March 10th, 2014
21:23

[Link]

Approach to develop a notation software
“What one needs is an extensible system.  I (and I suspect almost all other developers) start with the 'period of common practice' and gradually extend forwards and backwards in time, hopefully with enough room built in to accommodate the extra features.” — David Webber (6.03.2014), Mozart Music Software

Tags: ,

(Leave a comment)

March 1st, 2014
00:48

[Link]

Контекстная реклама
Вот удивительно. Я заказал отель в поездку. Заказал через букинг.цом. И буквально через минуту на всех сайтах в рекламных баннерах мне стали показывать рекламу этого отеля. Какого хрена? Зачем мне рекламируют то, что я уже и так знаю и использую?

То есть, видимо, логика такая. Заходит юзер Петя на ютюб. Ютюб просовывает голову в отдел рекламы и кричит: «Эй! Дайте ка мне быстренько какой-нибудь баннер для Пети». Отдел рекламы быстренько собирается на летучку. На повестке дня вопрос: чем интересуется Петя, что б ему такое прорекламировать, чтоб он не захлопнул тут же, а хотя бы посмотрел пару секунд. Звонят системному аналитику. Говорят: «Алло, Гарсия, не могла бы ты, милая, залезть в петин комп, да посмотреть, чем он там занимается последнее время». Гарсия запускает свои хакерские примочки, ломает файрволы, защиты, смотрит логи и через пару минут выдаёт ответ: «Ну, он тут недавно номер в отеле „Анна“ заказал». Отдел рекламы писает от восторга: «О, он интересуется отелем „Анна“! А у нас как раз их реклама есть! Вот мы ему её и покажем».

На следующий день Петя заходит на ебей. Ебей идёт к рекламщикам и говорит: «Дайте мне что-нибудь для Пети». Те отвечают: «Да знаем, знаем, вот ему отель „Анна“».

И вот Петя ходит по интернету, и со всех сайтов на него отель «Анна» смотрит. И думает Петя: «Ни фига ж себе! видать, я правильный отель заказал, раз его весь мир рекламирует!»

Tags: , , ,

(4 comments | Leave a comment)

February 28th, 2014
12:35

[Link]

Эволюция?
Всё-таки нотация развивается по пути от свободы к закрепощению.

Например, вот такой разрыв вязки, который я скопировал из издания «Тритона» 1926 года, вряд ли сегодня одобрят хоть в одном издательстве мира. И уж точно по доброй воле делать такое никому в голову не придёт.



А всё потому, что компьютер может делать только то, что в нём предусмотрено. При ручной же гравировке такой финт было нарисовать — пара пустяков.

Tags: , , ,

(5 comments | Leave a comment)

February 27th, 2014
19:09

[Link]

Умелые руки
А что сгорает в тостере, когда залезаешь в него ножом? И как это починить?

(Да, я знаю, что залезть в тостер вилкой — это один из первых способов самоубийства в известной песенке, но я же ножом, а не вилкой!)

Tags: ,

(10 comments | Leave a comment)

February 25th, 2014
12:49

[Link]

Не остаться с вымытой шеей
В этом месяце я покупал довольно много книг. А тут как раз начальство на работе спрашивает, каких кому купить книжек. Понятно, что ничего из того, что я покупал сам, притянуть за уши к работе не удалось бы. Тем не менее, упускать шанс не очень хочется. Поэтому — кто что посоветует заказать?

Возможные темы: IT, design, software design, web design, usability, UI, visualization of information etc.

Если советов не поступит, то я думаю заказать один из ежегодников издательства Penrose за какой-то из имеющихся на Амазоне годов, т.е. 1911–1930. Привязывать буду к visualization :) Тоже проблема: какой год выбрать. Там сильный разброс по цене, понятно, что за $200 мне никто не купит, но есть и за $50. Лук-инсайды отсутствуют, так что это кот в мешке.

Да, обязательное условие — покупка именно на amazon.com.

В общем, всяческие советы и рекомендации очень желательны. Выбор нужно сделать на этой неделе.

Спасибо!

Tags: ,

(5 comments | Leave a comment)

February 23rd, 2014
01:51

[Link]

Music Engraving and Printing
Обзор книг по нотоводству вызвал такой бурный отклик у наших читателей, что мы не можем не продолжить рубрику.

Сегодня поговорим о книге Music Engraving and Printing [Гравировка и печать нот] Уильяма Гэмбла, 1923 года издания.



Этот экземпляр нам достался из Городского читального зала Бирмингема, о чём свидетельствует красивая наклейка на переднем форзаце. К сожалению, наклейка закрывает рекламное объявление о продаже инструментов для гравировки нот, и мы так и не узнаем, что входило в комплект. Зато на правой стороне форзаца целиком можно прочитать объявление о полном процессе производства нот в одном здании.



Если честно, я вообще не понимаю, как читальный зал мог расстаться с этой книгой. Ну и что, что ей 90 лет. Она в отличном состоянии, и ещё столько же прослужила бы. Вот интересно, они получили адекватную замену этой книге? Вряд ли. По крайней мере, о другой такой, более современной, нам не известно.

Что же до списка инструментов нотогравёра, то он, к счастью, приведён не только в рекламном объявлении, но и в тексте книги:



Один из инструментов под названием scorer (Тед Росс в 1970-е показывает аналогичный инструмент под названием staff-o-graph, а у нас он назывался просто раштр).



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

А вот и набор пунсонов для наколачивания нотных знаков с фиксированной формой.



Розеткус, оказывается, изобрели за 90 лет до Тёмы. Только его использовали в качестве подставки для пунсонов.



А вот изображения и названия разных раштров. Что удивительно, названия немецкие.



Хотя в заглавии книги упомянута только технология гравировки, несколько глав в ней посвящены и набору с подвижных литер. Вот, например, список литер из нотного шрифта Шенксов.



А вот верстатка с частично набранной системой нотоносцев.



В книге есть отдельная глава, описывающая рацпредложения и изобретения, связанные с нотопечатанием. Для каждого изобретения даже указан номер патента. Вот, например, станок для нотной печати с оптическим прицелом (в верхней части показано, как работает прицел).



Одна плохая новость из этой книги: очень многие награвированные нотные доски (состоящие на 95% из олова) были переплавлены на оружейных заводах в ходе Европейской войны (так они называли Первую мировую). И это происходило как в Германии, так и в Англии. Так что бумажные нотные отпечатки, дошедшие до наших дней, это и есть самая «твёрдая» копия.

Tags: , ,

(4 comments | Leave a comment)

February 20th, 2014
17:46

[Link]

Ежегодник Гутенберга 1931
Музей печатного дела в Базеле (Швейцария) после многочисленных реорганизаций решил избавиться от некоторых экспонатов и, в частности, списал Ежегодник Гутенберга за 1931 год. Мир не без добрых людей, так что в результате том попал к нам.



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

Грузинская обложка


Польская картинка (Тадеуш Кулисевич)


Исследуются как образцы средневековой печати, так и современные.


Любопытно, что буквица дополнена красным штрихом только в самой первой статье, в остальных либо забыли про красное, либо поленились делать второй проход.


Но, собственно, главная для меня статья во всём томе это Нотопечатание: некоторые сегодняшние проблемы, написанная английским композитором Хубертом Фоссом, который был первым музыкальным редактором в издательстве Oxford University Press примерно в то самое время, что мой дед работал в «Тритоне». Так что и проблемы, вероятно, были схожие.

Tags: , , ,

(Leave a comment)

February 19th, 2014
17:10

[Link]

Die Lehre vom Musiknotensatz
Сегодня получили книжку Рудольфа Виттена Die Lehre vom Musiknotensatz [«Наука нотного набора»] 1925 года издания. Очень ценное пособие. По полочкам разложен весь процесс нотного набора с подвижных литер.



Русский читатель мог получить очень общее представление об этом процессе из Очерка истории нотопечатания Б. П. Юргенсона (М., 1928), а также пошаговое описание набора из книги П. П. Коломнина Краткие сведения по типографскому делу (СПб., 1899; репринт М., 2008).

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

Показано, из каких кусочков состоит набор:


Еврейские ноты:


Касса:

Tags: , , , , ,

(Leave a comment)

February 7th, 2014
14:01

[Link]

Следующий раз
А если бы какое-нибудь издательство решило делать ноты для Олимпиады, то всё происходило бы так.

Суббота, 22 февраля, вечер. Завтра Торжественное Закрытие. Но это там, в Сочи. А тут, в Петербурге, хоть и суббота, но весь нотный отдел в сборе. Нет, про Олимпиаду мы уже давно забыли, потому что всё давно сделано и отдано заказчику, тысячный детский хор с Гергиевым ещё в январе записал фонограмму, а теперь неделю сидит в Сочи и репетирует выходы, взмахи и хлопки.

А мы сидим на работе, потому что делаем партии для оперной постановки в Амстердаме (премьера через две недели, а автор принёс материал только вчера; последнее действие ещё не дописано) и одновременно верстаем полное собрание сочинений Слонимского для выставки во Франкфурте. Выставка только через месяц, но в собрании шестьдесят четыре тома.

Из открытой двери нотного отдела валит пар. От компьютера с "Косынкой" отходит главред с кружкой в одной руке и сигаретой в другой. Он специально приехал в субботу, чтобы подбадривать остальных. Оглядывает помещение, принимает озабоченный вид, говорит: "Мы не успеем сделать партии". Щёлкает зажигалкой. Директор в Сочи, поэтому можно курить в помещении.

Междугородний звонок. Звонит директор издательства из Сочи. Почему звонит не на мобильный? Ах, ну да, я же его выключил, чтоб никто не отвлекал.
— Петечка, какое счастье, что ты на работе!
Какое несчастье, что я забыл выключить настольный телефон.
— Что случилось, Самюэль Мануилович?
— Петечка, у нас че-пэ. Валерий Абисалович просит срочно напечатать ещё три произведения для завтрашней церемонии.
— А зачем? Ведь всё уже спето и записано!
— Петечка, здесь сломался магнитофон, поэтому они будут петь вживую.
— Что? Какой магнитофон? Мы в каком веке?
— Вжи-ву-ю! Я не знаю, что у них там сломалось!
— Ну хорошо, так пусть споют то, что уже выучили, зачем новое-то городить?
— Петечка, весь ужас ситуации состоит в том, что они это не споют.
— Как не споют, ведь спели же уже?
— Не спо-ют. Ты знаешь, сколько недель они записывали эту фонограмму? Там сплошная химия. Они это спеть не-мо-гут. К счастью, здесь оказались *** и ***, и Валерий Абисалович попросил их написать три новых пьесы, совершенно простые. Их спою даже я.
— Ктоооо? Гергиев заказал им музыку для Олимпиады???
— Петечка, у него не было другого выхода. Его кругом подставили. Ну и к тому же, их все знают и любят.
— Угу. Все.
— Петечка, скажи мне. Ведь мы сможем это сделать?
— А какой объём?
— Сейчас я дам тебе администратора Валерия Абисаловича, Олечку, она тебе всё объяснит.

Трубку берёт девушка. Олечка. Спрашиваю:
— Вы можете прислать мне PDF?
— Что прислать?
— Ну, ноты, которые надо набрать. В каком они у вас виде?
— А, ноты. Сейчас посмотрю. Тут папка. В ней тетрадь большого формата. Толстая.
— Мне нужно знать объём и состав оркестра для каждой пьесы.
— Состав? Ну... списки оркестрантов не у меня. А зачем вам? Мы сами на ксероксе напечатаем, сколько нужно копий.
— Хорошо. Сколько там дерева, сколько меди в рукописи?
— Дерево??? Папка пластиковая. Тетрадь на пружинке... железной.
— Ладно. Понял. Вы можете сосчитать горизонтальные полоски на первой странице? Или нет. Как вы вообще собирались нам всё это пересылать? У вас есть сканер? или факс?
— Нет, у нас тут ничего нет. Но мы можем зафотать каждую страницу и выложить фотки в контакт.
— Хорошо. Пришлите мне прямо сейчас фото первой страницы и сообщите точное количество страниц. Только не надо в контакт. На почту.

Через минуту снова звонит дядя Сэм. Ну, в смысле, Самюэль Мануилович. Одновременно приходит письмо с фоткой и цифрами.
— Ну что? Как ты думаешь, мы справимся?
Держу ухом трубку, руками на клочке бумажки делю и умножаю в столбик.
— Так... Самюэль Мануилович... Если это делать втроём и начать прямо сейчас, то к семи утра закончим. Но при этом — ни есть, ни спать, ни пописать.
— Петечка, ты гений! Начинайте! В восемь репетиция, они как раз успеют отксерить партии.
— Подождите, подождите, а кто делать-то будет? Все заняты по горло. Вон, Эрнеста Иосифовича спросите — он только что сказал, что мы не успеем сделать партии.
Главред отрывается от пасианса за своим компьютером и подтверждает: — Не успеем!
— Вот. Слышали?
— Петечка, я тебя умоляю. Найди кого-нибудь. Может, у тебя дети согласятся? Мы заплатим любые деньги! Слышишь? Любые деньги.
— Дети заняты. Внукам бы поручил, но они сейчас в хоре, в Сочи. Ладно, я попробую кого-нибудь найти.
— Всё, Петечка, действуй! Если что-то нужно, звони в любое время.

Тем временем по пять штук в письме продолжают приходить фотки рукописи цвета носовой слизи.

Кого позвать? Кого позвать? Все, кто хорошо и быстро умели делать, — либо давно разъехались, либо занимаются чем-то другим. Либо и разъехались и занимаются. Либо они уже сидят со мной в одном помещении, и на них лучше не дышать. (Главред не в счёт.)

Выбор складывается такой: Слава в Германии, Ефим в Израиле и Вова в Мексике. Вернее, не выбор — привлечь-то надо всех троих. Вову лучше всего, потому что у него сейчас день. А остальных придётся будить.

Начинаю со Славы.
— Слава-привет-как дела-ты-можешь-к-утру-набрать-50-страниц-партитуры-и-извлечь-42-партии?
Молчание.
— Слава?
— ...подожди, я записываю...
— Не надо записывать, я сейчас тебе всё пришлю.

Начало хорошее. Осталось двое. Две пьесы, два выстрела. Не промахнуться.
— Фима, привет! Тут такое дело, срочно нужна твоя помощь, никак иначе не выкрутиться.
— Что надо?
— Нужно набрать партитуру... всего 47 страниц. И партии извлечь.
— Ладно, пришли на следующей неделе, я посмотрю.
— Нет, Фима, погоди. Это сейчас надо. Прямо сейчас. К утру.
Молчание.
— Фима? Ты записываешь?
— Ничего я не записываю. Это что, для Сэма, что ли?
— Нет, с чего ты взял? Это для Гергиева.
— Понятно, значит для Сэма. Нет, не буду. Даже не уговаривай.
— Погоди, послушай! Сэм, то есть, Гергиев, любые деньги обещал.
— Да какие деньги, ты что, забыл, как мы познакомились?
— Эх, ну кому я теперь этого *** отдам на ночь глядя...
— Кого-кого? Это правда ***?
— Да. Только сегодня написал.
— Блин, что ж ты сразу-то не сказал. Давай шли скорее, я сделаю.

Фуууф. Ну и последняя.
— Вова, привет! Что делаешь?
— На репетицию еду.
— На репетицию? А у вас уже воскресенье или ещё суббота? Впрочем, какая разница, всё равно, вроде, выходной должен быть?
— Даа, обычно выходной. Но завтра праздник, коррида, представляешь, сам мэр написал два пасадобля, мне дали сделать аранжировку, и завтра мы их играем, так что надо отрепетировать.
— Два чего, бля?
— Пасадобль. Танец такой.
— А, понятно. Слушай. А нельзя отменить репетицию?
— Ты шутишь? А ради чего?
— Нужно срочно к утру (то есть, для тебя — к вечеру) набрать партитуру... 64 страницы на 44 партии. И извлечь партии, соответственно. Ударных много. Хоровые партии я сам сделаю.
— А денег сколько дают?
— Сколько скажешь.
— Ладно, подожди на линии, я что-нибудь придумаю. (Пару минут звучит музыка пасадобля, в паузах телефон говорит что-то женским испанским голосом.) Ну, я договорился. Присылай материал.
— А как же мэр?
— Я сказал ему, что если исполнять его пасадобли на завтрашнем празднике, то они затеряются, и предложил, чтоб он написал ещё десяток, а мы потом устроим фестиваль пасадоблей исключительно в его честь. Он был совершенно счастлив.

Работа закипела. Я пишу скрипт, который высвечивает "градусник" с прогрессом и примерное время окончания работы. Каждый участник нажимает кнопку, когда заканчивает набор очередной страницы. Цифры растут. Пока укладываемся.

Скайп. Звонок из Германии. Слава на линии.
— Петя, у меня тут такой вопрос. Имеет значение, каким способом мы это набрали?
— Ммм... нет, наверное. А в чём подвох?
— Дело в том, что я не хотел слова для вокальной строчки вбивать и погуглил, может они в интернете есть. В результате нашёл не только слова, но и всю партитуру. Нота в ноту совпадает. Только автор стоит не ***, а ###. Ну, это я исправлю, а так, получается, можно ведь уже партии извлекать, да?
— Слава, погоди. Так не может быть. Эту музыку только сегодня написали по просьбе Гергиева. Тут какая-то ошибка. Можешь прислать мне ссылку на то, что ты нашёл? Я спрошу у дяди Сэма, что с этим делать.

Звоню в Сочи.
— Самюэль Мануилович, вот такая ситуация, что делать?
— Петечка, сейчас я тебе дам Олечку, задай ей все остальные вопросы, какие у тебя есть, а я пока постараюсь найти Валерия Абисаловича. Ты представляешь, он уже третью ночь на ногах, третью ночь на ногах... (удаляется.)

Я не спрашиваю у "Олечки", зачем в партитуре теноровая и басовая строчки (ведь в Сочи только детский хор, да?), не спрашиваю, как на фортепиано исполнить созвучие из семи секунд на расстоянии квинты каждая следующая от предыдущей, не спрашиваю, где искать недостающие доли в тактах и куда деть лишние. Расспрашиваю её про олимпиаду, заполняя ожидание до получения ответа на главный вопрос: что мы вообще делаем.

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

PS. Все имена и события в истории вымышлены, все случаения совпайны.

Tags: , , ,

(30 comments | Leave a comment)

February 5th, 2014
21:03

[Link]

В тайском лагере русская парочка подходит к гидам.
Мужик спрашивает по-русски:
-- Где у вас тут вода?
Они не понимают. Тогда баба повторяет громко, медленно и по слогам:
-- Во-да.
Не понимают. Тогда она переставляет ударение на первый слог и делает твёрдым второй.
-- Вó-да. Вó-та.
Поняли. "А, вота кап!"

У самих тайцев тоже забавная манера говорить. На вопрос, есть ли в лагере электричество, отвечают:
-- Си о ло!
Это значит: в шесть часов включат.

Tags: , ,

(Leave a comment)

January 26th, 2014
20:00

[Link]

Буквотворчество
Когда я носил в детский сад свои пластинки, то писал на конверте своё имя, вот таким образом:

uhti-tuhti


А вот ярлычок от подарка, который месяц назад Юле на работе вручал сын её коллеги:
filipp
А ещё помню, что мне жутко нравилось, что в латинском алфавите из обычного а можно сделать d и q, из кk, а из пh. Мне удавалось путём незначительных модификаций получить ещё множество дополнительных букв.

А у вас какие необычные буквы бывают?

Tags: , , ,

(5 comments | Leave a comment)

January 24th, 2014
13:36

[Link]

Позор Гуглу

Tags: ,

(8 comments | Leave a comment)

January 23rd, 2014
22:34

[Link]

Здание Капеллы — оптом и в розницу
Уже поступили в продажу выходящие на Мойку жилые корпуса Капеллы, давно отчуждённые от собственно Капеллы и недавно отремонтированные. У них поменяли адрес. Они уже не называются «Мойка, 20» — этот адрес оставили концертному залу Капеллы. А боковым корпусам дали адреса, соответственно, Мойка, 20а и Мойка, 22а.

http://www.vipflat.ru/prodazha-kvartir/1020-moyki_reki_naberejnaya_22a_kopiya

Напомню, что весь участок, на котором сейчас находится здание Капеллы — от Мойки до Большой Конюшенной — был выкуплен государственной казной в 1810 году по настоянию директора Капеллы — Бортнянского. Здесь жили и работали Глинка, Львов, Римский-Корсаков, Балакирев, Аренский, Смоленский, Климов, Богданов, Кудрявцева, Свешников. В корпусе, выставленном сейчас на продажу, находилась квартира управляющего Капеллы. В советское время её занимал величайший из дирижёров Капеллы — Михаил Климов. В 1886–89 весь комплекс зданий Капеллы был перестроен архитектором Л.Бенуа и не только принял вид, который мы знаем теперь, но и оказался наилучшим образом приспособлен для старейшего певческого коллектива вместе с инструментальными и регентскими классами, известными сегодня, как Хоровое училище.

Собственно, цена вопроса 11,5 миллионов долларов.

Tags: , ,

(3 comments | Leave a comment)

[<< Previous 50 entries]

Powered by LiveJournal.com