В общем-то, можно начинать писать прошивку приемника, который будет принимать байтики из баяна и отправлять их в MIDI порт.
И начать надо с алогритма поиска свободного канала (на стороне передатчика) и автоматического поиска передатчика на всех каналах (на стороне приемника). Не хочу вручную каналы связи задавать; пусть само трудится.
Те мелодии, которые встроены сейчас в прошивку v1.00, — это по сути последовательность миди-команд. Раз уж у нас будет контроллер, в котором дофига памяти, почему бы не читать MIDI-файлы с флешки?
Теоретически, можно будет вообще любые «минусовки» проигрывать, не только партию ударных.
Здесь показываю упомянутый ранее новый способ выбора инструмента.
В целом, этот экран повторяет тот же самый интерфейс, который используется в самом синтезаторе ATEMP. Можно перебирать группы инструментов, а потом выбирать инструмент внутри группы. Или же просто продолжая нажимать стрелки вправо-влево можно перебрать вообще все звуки, которые реализованы в синтезаторе.
Мне не нравится, как сейчас в текущей версии прошивки происходит выбор инструментов. Если для какого-то инструмента (номера программы в терминах MIDI) есть варианты звучания (разные «банки», переключаемые MIDI командой CC 0 vv), то надо сначала выбрать номер инструмента, а потом перебирать все доступные для него варианты звучания. И при этом видишь только номера инструментов и номера вариантов; очень много нажатий кнопок (даже в адаптированном к синтезатору варианте) и совершенно никакой наглядности.
Делаю экспериментальный вариант спец-экрана для выбора инструмента. Будет два селектора: «группа инструментов» (пианино, электронные пианино, органы, гитары, и т.п.) и «инструмент внутри группы». И чтобы перебирались не номера, которые фиг запомнишь, а нормальные названия групп и инструментов (текстом).
И беда пришла , откуда не ждал. Я, ни в чём себе не отказывая, добавил все названия всех групп инструментов на руссском, каждое название длиной до 20 символов (ширина экрана). И прошивка перестала влезать во флеш-память. 🙁 Там оставалось свободным примерно 6 килобайт флеш-памяти, и табличка с текстом заняла их все, и даже больше.
Пришлось утоптать тексты: ограничил длину названий 15-ю символами и, главное, перевёл всё обратно на английский. В результате осталось свободным примерно 2 килобайта флеша.
Этого достаточно для добавления поддержки одного синтезатора, но недостаточно для дальнейшего развития, когда понадобится поддерживать несколько синтезаторов. Ну и объём кода тоже наверняка увеличится ещё.
А значит надо менять платформу.
Изучив варианты, я думаю, что остановлюсь на RP2040-Zero (см. рис. 1). Там 2 процессора, 264 кб ОЗУ, 2 Мб флеша. И оно давно поддерживается средой Arduino IDE. У меня есть одна внешняя зависимость: библиотека подержки OLED экрана GyverOLED; так вот она, вроде, нормально компилится для RP2040 (работу пока проверить не на чем). Т.е. переход вполне реален. Надо заказать пару контроллеров и слепить прототипчик.
Там, правда, нет встроенной EEPROM памяти. И это жирный минус. Придётся лепить внешнюю микросхему AT24C256. Но это решаемо.
Буквально на днях я вдруг осознал, что после изготовления MIDI-баяна я на 100% понимаю, как сделать самодельную электронную ударную установку. Подобную той, что на рис. 1. Даже палочки могу самостоятельно выточить, благо, токарный станок никуда не делся.
Даже немножечко зачесались руки. 🙂 Но пока я к такому подвигу не готов. Да и баян надо до ума довести сначала.
Кстати, эта установка, которая на фото, изготовлена Романом Мурашко. Если вдруг я буду делать своё, то скорее всего оно мне по деньгам обойдётся дороже, чем если бы купить готовую установку у Романа. Но тут для меня, как для самурая, будет важен именно процесс.
Тестовое склеивание закупленного листового ПВХ (3 мм) прошло замечательно. (См. рис. 1)
Соединение весьма прочное и, что важно, эластичное. Отличный материал для поклейки всяческих коробочек и мелких корпусов. И режется проще, чем материал серых канализационных труб (в трубах пластик гораздо более плотный).
Я тут надумал сделать источник бесперебойного питания для моего домашнего сервера печати, сделанного на основе Orange Pi PC Plus. И даже закупил соответствующий модуль (см. рис. 1).