Мысли про скорость

Пока я нахожусь вдали от компьютера, приходят в голову разные мысли. Одна из них — это вопрос: способен ли будет мой баян перегрузить MIDI out порт командами в том случае, когда будут меняться настройки всех трёх активных midi каналов при нажатии кнопки «смена пресета». Для каждого канала надо будет установить примерно 15 параметров. Один параметр — это одна midi команда из 3-х байтов. Т.е. при смене пресета нужно будет отправить порядка 50 байт, и мне было интересно, сколько времени это может занять; будет ли эта задержка заметна во время игры.

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

Скорость обмена данными у MIDI интерфейса — 31250 бод. То есть порядка 2900 байт в секунду. То есть порядка 1000 midi-команд в секунду. То есть мои несчастные 15 команд пролетят за 15 миллисекунд.

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

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

Рис. 1 (КДПВ)

Баян впервые собран

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

Можно играть обеими руками.

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

Черновая проверка датчика давления показала, что отработка нештатных ситуаций прошивкой работает отлично. 🙂 При одновременной работе датчика давления и большого количества музыкальных клавиш переполнялась внутренняя очередь MIDI-сообщений и прошивка вылетала в индикацию внутренней ошибки (баян перестаёт реагировать на внешние раздражители и высвечивает на светодиодах код ошибки). Видимо, очередь на 4 MIDI-сообщения была слишком маленькой; увеличил до 7. И слегка поменял внутреннюю логику разгребания этой очереди и отправки команд в синтезатор через MIDI-out порт.

Сейчас всё работает чётенько. 🙂

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

Рис. 1

Режим готовых аккордов настроен

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

Я сегодня потратил часа 2, чтобы настроить датчики для режима аккордов. И когда я переключил на выборку, то для 9 нот из 12 была сбита настройка выборки: магниты пролетали мимо датчиков, и в крайнем положении рычагов ноты не звучали.

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

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

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

Сегодня я с этим возился аж до полуночи. Завтра на свежую голову тщательно проверю ещё раз все датчики и буду прикручивать плату датчиков в рабочем положении. После этого просверлю отверстие в левой деке и, пожалуй, продену в него провод. (Операция эта условно-необратимая, потому что потом я припаяю к концу провода разъём, и вытащить провод обратно уже будет нельзя.

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

Рис. 1

Настроены датчики левой клавиатуры

Почти настроены. Выборный режим полностью работает (см. видео ниже).

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

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

Рис. 1

Занимаюсь настройкой положения датчиков левой клавиатуры

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

Дело, можно сказать, вообще не двигалось, пока я не нашёл способ фиксировать плату в одном и том же положении, не прикручивая её шурупами. (Прикручивать буду в самом конце, когда буду уверен, что все датчики работают как надо и дальнейшая коррекция положения платы уже точно не нужна). Положение «ближе-дальше» определяется шириной картонной проставки, временно (а может и не временно) приклеенной перед платой, между бортиком и платой (см. рис. 1). А положение «вправо-влево» определяется «приметами на местности»; в данном случае — центр крепёжного отверстия платы должен точно совпадать с краем проставки.

Эта проставка на рис. 1 — уже третья, шириной 5 мм. Предыдущие 2 (7 мм и 6 мм) оказались слишком широкими, не позволяющими правильно выставить дальний ряд датчиков. В текущем положении далчики ближнего ряда слишком высовываются вперёд, но эту проблему можно решить подгибкой ножек.

Процесс очень небыстрый. Вчера за 2 часа я настроил только половину басов. Т.е. 12 датчиков дальнего ряда. 12 — потому что в этом баяне басы играют октавами, т.е., например, одновременно с самым левым рычагом на рис. 1 (Фа контр октавы) нажимается и 13-й рычаг (Фа большой октавы).

Эта особенность механизма, кстати, является проблемой для MIDI инструмента. Далеко не каждый вариант басового звука будет хорошо звучать октавами. Поэтому в прошивке буду делать отключаемый режим программного запрета на октавы в басах; т.е. если нижняя басовая нота уже звучит, то контроллер не будет отправлять в синтезатор команду включения верхней басовой ноты даже если соответствующий датчик сработал. (Придётся израсходовать 2 байта ОЗУ на запоминание текущего состояния 12-ти нижних басовых нот.)

Рис. 1

Полбаяна уже умеет играть

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

Декоративную решетку пока прикрутить не получится, т.к. она будет упираться в плату датчиков 1-го и 2-го рядов (см. рис. 1). Как я ни старался опустить её как можно ниже, всё равно пришлось её поднять над рычагами так, что она в результате не помещается в штатные габариты этой части баяна. Положение платы выверено очень точно; если её опустить вниз хотя бы на 0.5 миллиметра, то некоторые рычаги клапанов среднего ряда по ней уже будут стучать, что недопустимо. Ну вот такой у меня баян, ничего с этим не поделать.

Придётся декоративную решётку тоже поднимать миллиметра на 2-3. Буду изобретать какие-нибудь прокладки между решеткой и корпусом баяна.

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

Рис. 1

Вот так выглядит правый полукорпус изнутри:

Рис. 2

Герметизировать отверстие для проводов я пока не стал; на тот случай, если вдруг придётся зачем-нибудь всё разбирать.

Но разъёмы (MIDI-out и питание) я уже герметизировал. Обернул каптоновым скотчем — получилась как-бы опалубка, которую я залил термоклеем. В результате все щели в разъёмах перекрыты. При самой финальной сборке останется дополнительно герметизировать отверстие MIDI разъёма, и всё. Отверстие разъёма питания герметизировать е буду, т.к. мне кажется, что этот разъём и так уже достаточно плотно сидит в корпусе на резьбе.

Думал я, что вчера и сегодня буду работать над левым полукорпусом. Но не получилось. Оба вечера я играл на правой половинке: разучиваю «The Cat» Джимми Смита. Очень,очень затягивающее занятие. Но надо будет хотя бы завтра вечером начать работу над левой клавиатурой.

Смонтировал немножко электроники в правый полукорпус

Сегодня я подготовил места крепления платы микроконтроллера и дифференциального датчика давления (см. рис. 1).

Заодно просверлил в деке 2 отверстия ∅4 мм. Одно отверстие для силиконовой трубки, которая будет соединять один из входов датчика давления с внешней средой (т.е. с зоной условно-нулевого давления). А второе отверстие — для жгута проводов, которые пойдут к плате панели управления и к платам датчиков правой клавиатуры.

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

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

Рис. 1

Установил гнёзда

Гнездо MIDI-out (которое DIN-5) в данный момент держится на трении. Отверстия под крепёжные винты я делать не буду, чтобы не дырявить лишний раз герметичный корпус. Думаю, что при финальной сборке это гнездо отлично будет держаться на термоклее, которого придётся наляпать в изобилии, т.к. этот разъём сам по себе не герметичен.

А вот разъём питания вкручен в стенку корпуса на резьбу. Длина резьбовой части разьёма оказалась практически равна толщине стенки. Поэтому я просверлил в стенке отверстие 7.5 мм и нарезал резьбу М8×0.75. Благо нужный метчик у меня нашёлся. При финальной сборке перед закручиванием я намажу резьбу разъёма клеем (не суперклеем, а каким-нибудь ПВА или «Моментом». Сам разъём выглядит герметичным. Надеюсь, не придётся его заливать термоклеем.

Рис. 1

Снаружи это выглядит так:

Рис. 2

Магниты 3 ряда приклеены

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

Следующий шаг — сверление монтажных отверстий в корпусе для разъёмов MIDI-out и питания. И сверление отверстия в правой деке, через которое будет проходить жгут из 12 проводов МГТФ 0.12 к плате 1-го и 2-го рядов и к плате панели управления.

Про панель управления я ещё не решил, как её крепить на время наладки датчиков. В итоговом варианте она будет крепиться на декоративную решётку, примерно в то место, где у многотембровых инструментов находятся переключатели регистров. Но на время наладки, думаю, прилеплю её просто на корпус на 2-сторонний скотч. Главное предусмотреть, чтобы соответствующие жгуты проводов были достаточной длины, чтобы дотянуться до места. Но с этой стороны проблем не ожидаю: 40 метров провода МГТФ должно хватить. 🙂

Рис. 1

Вообще, я уже устал от этой работы. Начинаю понимать, почему Бутусов за установку одной MIDI-системы в один инструмент берёт 200 тыр.

P.S. На рис. 1 — магниты, приклеенные неправильно. 🙂 Надо было клеить с другой стороны рычагов и с противоположным направлением полюсов. Вот что значит «устал». В результате в тот же вечер я эти 18 магнитов отодрал и переклеил по-правильному.

Магниты 1-го и 2-го рядов приклеены

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

Откуда знаю, что крепко? Знаю, потому что несколько магнитов 2-го ряда пришлось отламывать и переклеивать. Они, видите ли, выпирали за габарит рычага и стучали по плате. Переклеил так, чтобы магниты не выпирали. Теперь не стучат. Но всё равно осталась пара мест, где рычаги задевают плату, если нажать клавишу «с размаху». Т.е. всё-таки придётся саму плату слегка поднимать над рычагами. Немного, не больше, чем на миллиметр. Но придётся.

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

Рис. 1

На очереди — подгибка датчиков на плате 3-го ряда и приклеивание магнитов на рычаги 3-го ряда.

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

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