You are viewing ptrue

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

[<< Previous 50 entries]

December 16th, 2014
18:10

[Link]

Перевод фольклорных названий
Вдруг кто-то не ходит в ru_translate, для тех продублирую вопрос у себя в журнале.

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

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

Саратовские частушки — Saratov Chastushkas
1. Голосовая («Заболела, заболела Маруси головка») Петровского уезда Саратовской губ. Слышана незадолго до войны 1914 г.— Voice Song (“Marusia’s got a headache”) of Petrovsky uiezd, Saratov guberniia Heard shortly before the War of 1914
2. Батрацкая («Щи я пролил») — Farmworker Song (“I’ve spilled stchi”)
3. Уличная («Милый мой по Волге плавал») — Street Song (“My sweet was floating down the Volga”)
4. Рекрутская («Меня молодца забреют») — Recruitment Song (“I’ll be shaven to the army”)
5. Уличная («На мосту вечор сидела») — Street Song (“I was sitting on the bridge last night”)
5 bis. Уличная («Она меня так и сяк») — Street Song (“She treats me this way and that way”)
6. Уличная («Мой муж свинопас») — Street Song (“My husband is a hog-ward”)

Семь русских песен — Seven Russian Songs
1. Плясовая («Молодка») — Dancing Song (“A young girl”)
2. Свадебная («За горою») — Wedding Song (“Behind the mountain”)
3. Свадебная («Молодой дружкó») — Wedding Song (“Young friend”)
4. Протяжная («Сады мои») — Lyrical Song (“My gardens”)
5. Протяжная («Головушка моя») — Lyrical Song (“My poor head”)
6. Песня-романс («Как на небе чисто») — Song-Romance (“What a clear sky”)
7. Свадебная («Не пора ли нам, братцы») — Wedding Song (“Isn’t it time, my brothers”)

Ой да ты калинушка — Hey Thou Nice Little Snowball-Tree

Tags: , ,

(24 comments | Leave a comment)

December 8th, 2014
21:11

[Link]

Мечта поэта
Нотная пишущая машинка. На ебее продаётся примерно за 3000 евро. Почка никому не нужна?

Tags: , , ,

(7 comments | Leave a comment)

December 7th, 2014
16:03

[Link]

Finale 2014d
Несколько дней назад MakeMusic выпустила обновление d для версии 2014.

Дело хорошее. Большая часть вещей — это исправление косяков предыдущих версий.

1. Теперь снова можно менять конфигурацию палитр инструментов. Ура-ура. Когда на встрече во Франкфурте я сказал, что зря они убрали эту возможность, Майкл Гуд — «директор музыки» — удивлённо поднял брови вверх: «да?» Видимо, позже об этом им говорили и другие. Так что спасибо.

2. Вернули палитры инструментов File и Edit. Ну, в принципе, они не нужны, но, наверное, кто-то не помнит сокращений типа ctrl-O, ctrl-Z и т. д.

3. В палитру View добавили кнопки Page View и Scroll View. Если мне не изменяет память, они уже когда-то там были. Но, право же, ctrl-E удобнее.

4. Можно снова делать крупные кнопки в палитрах. Ну и нафига? Ведь из-за этого на экране нот меньше поместится.

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

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

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

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

Tags:

(6 comments | Leave a comment)

December 4th, 2014
20:54

[Link]

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

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

Tags: ,

(8 comments | Leave a comment)

November 19th, 2014
13:35

[Link]

Случай со светом в Капелле
Описывается начало 1896 года — через пару месяцев после того, как зал Капеллы отреставрировали после пожара и заново освятили.
Несколько дней тому назад имел случай послушать Императорскую капеллу. Она давала духовный концерт в память Львова (пелись все его сочинения). Такое исполнение мне привелось слышать в первый раз в жизни. Концерт давался в собственном концертном зале капеллы, огромном помещении в два этажа вроде театра. Нечего и говорить, что зала была наполнена без остатка (места были от 50 к. до 5 р.). Во время исполнения одного из номеров программы произошел курьезный инцидент. Несколько сот электрических лампочек, ярко освещавших наполненную публикой залу, вдруг погасли, и слушатели очутились в камере-обскуре (зала без окон, а двери, к тому же затворенные, выходят в темные коридоры). Начался было переполох. Достаточно было малейшего пустяка, напр., резкого стука или чьего-нибудь крика, и я уверен, что произошла бы паника со всеми своими последствиями в подобных случаях. К счастию, скоро на сцене показались несколько свечей, которые вызвали легкий смех в публике, так комичны были эти убого светившиеся вдали (на сцене) точки — после сотен электрических огней. Все успокоились, и минут через пять снова запылали все электрические люстры, и хор снова начал свое пение: «Господи во свете лица Твоего».., прерванное исчезновением электрического света как раз на этом слове «свет».
Цит. по: Ардашев П. Н. Петербургские отголоски // Российский Архив: История Отечества в свидетельствах и документах XVIII—XX вв.: Альманах. — М.: Студия ТРИТЭ: Рос. Архив, 1999. — С. 379—381. — [Т.] IX.

Забавно, что автор не заметил окон в зале — вероятно, из-за тёмного зимнего времени года. Летом сквозь эти окна в зал пробивается яркий свет, даже при вечерних концертах. Это те самые окна, о битье которых учениками пишет Смоленский:
2 мая в Капелле был сделан взрыв водопроводной трубы, которую зарядили бертолетовою солью и порохом. От этого увеселенья увезли в госпиталь ученика Судакова с раздробленною ногою и пропечатали Капеллу в газетах. На другой или на третий день был назначен отъезд Капеллы [на летний период] в Петергоф, ежегодно отмечавшийся битьем стекол. И на этот раз было разбито в полтора-два часа 145 стекол... Оказалось, что переводные экзамены в эту весну были зачем-то отменены, и потому в Капелле царила самая полная праздность, дети и юноши, не занятые ничем, вели себя Бог знает как.

[...]

Розанов, из чухонцев, решительно ничего не делал в Капелле и жил воровством и кулаком. Про свою игру на контрабасе он сам сказал мне, что он, ставящий в недоумение преподавателей своим отношением к занятиям, числится в классе контрабаса лишь для того, чтобы иметь право жить в Капелле «в долг». Чтобы охарактеризовать этого 18—19-летнего, но уже очень пожившего и истрепанного юношу, запишу его столкновения с смотрителем зданий Капеллы М. Ф. Гейслером. Последний, идя по двору весной 1901 года, увидал юношу, делавшего бомбочки из талого снега и старавшегося разбить ими высоко расположенные цветные (и дорогие) окна в концертном зале. «Послушайте, что вы делаете?» — «Бью стекла...» — «Но зачем?» — «Какое вам дело?..» — «Я сейчас же заявлю управляющему!» — «Пожалуйста!» — «Как ваша фамилия?» — «Узнайте от воспитателя... впрочем, скажу: моя фамилия Розанов, но не смешайте с другим: я — Розанов первый, а не второй».
Цит. по: Русская духовная музыка в документах и материалах. Т, IV. Степан Васильевич Смоленский, Воспоминания: Казань, Москва, Петербург. - М, 2002. С. 444, 452.

Tags: , , ,

(Leave a comment)

November 18th, 2014
23:27

[Link]

Имена на фронтоне
На фронтоне Капеллы — семь имён: Разумовский, Ломакин, Львов, Бортнянский, Глинка, Турчанинов, Потулов. Среди них есть известные, есть не очень.

Уместным образом Бортнянский занимает центральное место в этом списке. Он является воспитанником и директором Капеллы, поднявшим её на небывалую высоту.

Слева от него — другой директор, Львов. Было двое Львовых, отец и сын, оба по очереди занимали директорское место. Вне всякого сомнения, повод для нанесения фамилии на фронтон подал сын — именно он известен, как автор «народного» гимна Боже, Царя храни.

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

Справа от Бортнянского — Глинка, чьё имя Капелла носила с 1954 года, а в 1990-е потихоньку об этом решила забыть. И справедливо. Глинка едва проработал в Капелле два года, страшно тяготился этой работой, прогуливал её. В школе учат легендам о том, как Глинку гнобил Львов, но, сдаётся мне, это всё досужий вымысел. Львов, наоборот, готов был пылинки с Глинки сдувать, чуть ли не на коленях упрашивал его, чтоб тот ну хоть раз в неделю вышел на работу, ну хоть до весны бы доработал, и так далее.

На правом конце фронтона самые малоизвестные имена: Пётр Иванович Турчанинов (1779–1836) и Николай Михайлович Потулов (1810–1878), церковные композиторы-регенты. О них я ничего не знаю — даже их степень вовлечённости в дела Капеллы.

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

Однако у меня появилось сомнение в обоснованности этой версии. Учитывая такое количество церковных деятелей среди названных имён, да и самою церковную природу Придворной певческой капеллы, очень вероятно, что фамилия Разумовский указывает на протоиерея Дмитрия Васильевича Разумовского (1818–1889), автора эпохального труда Церковное пение в России (охватывающего также и время господства Капеллы) и профессора соответствующей кафедры Московской консерватории.

Было бы любопытно узнать о возникновении этого списка имён и реальном замысле автора.

Очень может быть, что, как и в случае со Львовыми, фамилия Разумовский тоже может трактоваться неоднозначно, и, более того, указывать на двойственную сущность Капеллы — светскую и духовную.

Tags: , , , , , , , , , ,

(8 comments | Leave a comment)

November 12th, 2014
01:19

[Link]

Современные методы в здравоохранении
Последние пару лет, посещая при случае поликлинику (в Финляндии), обратил внимание, что врачи стали активно пользоваться в своей практике интернетом. Они спрашивают, что у тебя болит, потом вбивают симптомы в гугл. Получают в ответ кучу картинок, как выглядят болезни с такими симптомами. Выбирают картинку, похожую на тебя, и объявляют: "О, у вас нейро-бластома, голубчик". Ну или что-то в этом духе. Потом гуглят дальше и говорят: "а ещё она бывает такая и вот такая". Ещё немного гуглят и говорят: "а если не бросите пить, то через год она станет вот такая". И не стесняются эти картинки тебе показывать. И потом даже скачивают описание болезни и методы лечения и распечатывают для тебя.

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

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

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

А вы что думаете на этот счёт? А в вашей стране врачи тоже так работают?

Tags: , ,

(12 comments | Leave a comment)

October 27th, 2014
18:33

[Link]

«Озон» жжёт!
То, чтó у них «есть мне предложить», мне очень кстати.

Tags: , ,

(4 comments | Leave a comment)

October 23rd, 2014
20:11

[Link]

Стерео
Прислали для набора рукопись, скопированную на цветном ксероксе. Двести с лишним страниц, выглядящих вот так:



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

Это я к чему? Завтра спринт-ревью отменяется :)

Tags: ,

(26 comments | Leave a comment)

October 19th, 2014
13:28

[Link]

Art dolor
Под таким названием проходит выставка портретов пера Гии Бугадзе в фойе тбилисского Музыкального центра им. Джансуга Кахидзе. Четырнадцать композиторов со своих портретов выражают скорбь по поводу нынешнего состояния высокого искусства. В интернете я не нашёл ни одного изображения с этой выставки, так что пусть будут тут, хотя бы нащёлканные мобильником.

остальные 13Collapse )

Tags: , , , , , , , , , , , , , , , , , ,

(1 comment | Leave a comment)

October 15th, 2014
16:20

[Link]

Что, такие разводки ещё не вышли из моды?
Jacob: Hello Peter
Peter: Hello Jacob. Do I know you?

Jacob: you speak english
Peter: you too

Jacob: please can we talk now?
Peter: aren't we doing it already?

Jacob: I'm Jacob Jeff, I work in the bank as account auditor
Peter: Ok, nice to meet you.

Jacob: and you? thanks
Peter: I'm Peter Trubinov, musicologist. So what can I do for you?

Jacob:
I have a deal which i want to introduce to you and it will be benefit for you and me
As i work in the bank, In my department I discovered an abandoned sum of $6200.000 US Dollars in an account that belongs to one of our foreign customers Late Engineer Vladimir Trubinov, of your country who unfortunately died of kidney cancer with nu-identified family or relative.
I am contacting you to stand in as a next of kin to his deposited funds in our bank here since you share the same last name with our late client
On confidence of patent recovering, I will give you more information, hence you will corporate with my due understanding and knowledge of bringing this
claim to a best conclusion
For further correspondence and confirmation, I will furnish you with detailed clarification on receipt of your response. Please observe utmost confidentiality, and be rest assured that this claim would be most profitable for both of us
I want you to understand everything about this transaction very clearly before we proceed but please create email address at www.hotmail.com or www.Gmail.com and use it to respond directly to my private email address below so that i will send you all the details and explanation of this deal: akquarrias@gmail.com

Peter:
Sorry I cannot help. This case has obviously nothing to do with me or my family. Bye

Tags: , ,

(13 comments | Leave a comment)

October 4th, 2014
12:56

[Link]

Пожар в Капелле
Сегодня, ровно 120 лет назад.


Tags: , ,

(Leave a comment)

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-ввода не произойдёт действие — нажатие клавиши на клавиатуре, щипок струны на грифе, дуновение на ЭДИ и т. п. Программа слушает все устройства, и подключит то из них, которое в этот момент сработало.

Шаг сделан, следующие шаги — в следующем спринте.

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: , ,

(9 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)

[<< Previous 50 entries]

Powered by LiveJournal.com