Платы для 3-й версии MIDI-баяна

Прошло примерно 40 дней с момента заказа, и платы у меня.

3 с лишним килограмма плат.

Рекорд здесь у платы панели управления (показано стрелкой на рис. 1). Этих плат мне сделали аж 25 и весит эта стопка 1.2 кг. Это при том, что на самом деле мне надо по 2 платы (основная и запасная на всякий случай), а заказать пришлось по 5 плат — это минимальное количество плат.

Вот вместо того, чтобы заваливать меня лишними платами, которые мне аосблютно некуда деть, т.к. ценность они представляют исключительно для меня, лучше бы они на 50% меньше денег взяли. 🙂

Платы датчиков (которые с прямоугольными окнами) я заказал толщиной 0.6 мм. Тоненькие. Красота неописуемая.

Следующий шаг — запаять все платы и собрать всю схему на столе. А потом пробовать, как всё это хозяйство работает. Правда, для этого понадобится доработать прошивку самого баяна. И написать прошивки для контроллеров клавиатур — да, теперь у правой и у левой клавиатур будут свои контроллеры. Те же самые RP2040-zero, только в SMD исполнении. Чтобы можно было запаять плату контроллера прямо на плату датчиков. (На рис. 1 можно разглядеть соответствующие посадочные места). Как вы уже поняли, показания аналоговых датчиков будут читаться специально предназначенными для этого контроллерами. А информация о клавиатурных событиях будет отправляться в основную прошивку MIDI-баяна по SPI. (Этот способ двустороннего обмена информацией между «главным» контроллером и контроллерами клавиатур я уже отработал.)

Заодно и FreeRTOS освою, раз уж буду писать прошивки контроллеров клавиатур с нуля.

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

Рис. 1

Снова Lusta Dick

Отличия от предыдущего варианта:

  • Звук записан не на телефон, а через внешнюю звуковую карту
  • Во время игры используется гиро-датчик для «подтяжек» (bends)

Если я буду писать третий вариант, то к списку отличий добавится управление «экспрессией» в канале правой руки (где играет труба) с помощью меха.

P.S. бонус-трек 🙂

Условные рефлексы

Я тут довожу до автоматизма «подтяжки» (AKA «bends») с помощью гиро-датчика. В «Ленивом Дике».

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

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

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

Рис. 1

Особенности настройки громкости при игре со включенным мехом

Если играть с выключенным мехом, то всё просто: достаточно настроить соотношение громкостей звучания в настройках клавиатур. В простейшем случае — это «везде по 127». После чего настроить комфортную громкость рукояткой громкости на модуле/усилителе.

Если играть со включенным мехом, то всё несколько сложнее.

  1. По-прежнему нужно настроить соотношение громкостей между клавиатурами. Чтобы, например, басы и аккорды не забивали мелодию.
  2. Общую громкость (в системных настройках баяна) нужно установить максимальной — 127.
  3. Громкость на модуле/усилителе следует настраивать так:
    • Выключить мех, чтобы получить максимальную громкость инструмента.
    • Регулятором громкости на модуле/усилителе настроить громкость «фортиссимо» — это будет та громкость, с которой баян будет звучать при максимальном усилии на мехе. «Фортиссимо» должно звучать «слишком громко для нормальной игры».
    • Снова включить мех.

Здесь дело в том, что стандартное усилие на мехе — это примерно 50% от максимума. И если громкость усилителя настроить на «фортиссимо», как описано выше, то при обычной игре громкость будет нормальная, комфортная. При этом сохраняется возможность выдать «фортиссимо» при необходимости.

Рис. 1 КДПВ

Улучшенная настройка меха

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

И теперь это можно настроить (см. рис. 1).

Рис. 1

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

Ограничители воздуха

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

До некотороего момента я думал, что придётся как-то их делать из дерева. Но с появлением 3D принтера появилась возможность их просто распечатать. А нужную жесткость на изгиб им придаст П-образный алюминиевый профиль.

Это я удачно принтер прикупил.

Рис. 1

Осталось еще начертить и распечатать последний «резонатор» — для верхних 10 нот выборной клавиатуры.

Отечественный производитель ПП

Я тут собрался заказывать платы для 3-й версии баяна. И решил прицениться к отечественному, вот здесь. «Электроконнект».

В общем, см. рис. 1.

Эти цены — из калькулятора. Но я не верю, что после подачи настоящей заявки и общения с тамошним «менеджером» их цена будет уменьшена хотя бы в 2 раза.

Буду продолжать дружить с китайцами. Они на порядок более дружелюбно относятся к штучным заказам от самодельщиков.

Рис. 1

P.S. А китайцы с меня взяли 25 тыр:

Рис. 2

Проект платы правой клавиатуры

Во второй (а наверное надо считать, что не во второй, а в третьей) версии MIDI-баяна самыми сложными (схемотехнически) будут платы с клавиатурными датчиками.

Непростая это задача, определять скорость нажатия клавиш. Но, судя по успешно работавшему прототипу, вполне решаемая.

Рис. 1

FreeRTOS для RP2040 в среде Arduino

Для написания программ для микроконтроллера RP2040 я использую среду Arduino IDE. Это возможно, благодаря этому проекту, в котором реализована поддержка всех плат, основанных на RP2040 и RP2350. И частью этого проекта является порт операционной системы FreeRTOS.

Я вчера до глубокой ночи рубился с этим всем, пытаясь понять, почему не получают управление задачи, назначенные на core 0. Все задачи по-умолчанию запускаются на ядре core 1, а если попробовать явно назначит задачу на другое ядро, то она просто не получает управление. И в документации на FreeRTOS, и в исходных кодах написано, что задачи могут работать на обоих ядрах, т.к. в данном случае реализована поддержка FreeRTOS SMP (Symmetric Multi-Processing).

В реальности оказалось, что нужен лёгкий костыль, в виде функции vTaskDelay() или delay(), вызванной из основного «ардуинного» цикла loop() (см. рис. 1). В этом случае всё начинает работать, как заявлено. (Вообще, годится наверное любая функция из состава FreeRTOS API; я на этот эффект наткнулся, отправляя сообщения в очередь прямо из цикла loop()).

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

Рис. 1

Проезд цистерны из к/ф Джентльмены удачи, Геннадий Гладков

Ещё одна демонстрация возможностей MIDI-баяна.

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

Для записи использован звуковой модуль MB Music Pro.DX. Аккомпанемент (ударные инструменты) играется из этого файла:

Звучит он так:

Но надо понимать, что это MIDI файл. С интернетовским проигрывателем он звучит плохо, т.к. оптимизирован специально под использованный звуковой модуль. Через Pro.DX этот файл звучит отлично.