Дальнейшее развитие MIDI-баяна

Мне не нравится, как сейчас в текущей версии прошивки происходит выбор инструментов. Если для какого-то инструмента (номера программы в терминах MIDI) есть варианты звучания (разные «банки», переключаемые MIDI командой CC 0 vv), то надо сначала выбрать номер инструмента, а потом перебирать все доступные для него варианты звучания. И при этом видишь только номера инструментов и номера вариантов; очень много нажатий кнопок (даже в адаптированном к синтезатору варианте) и совершенно никакой наглядности.

Делаю экспериментальный вариант спец-экрана для выбора инструмента. Будет два селектора: «группа инструментов» (пианино, электронные пианино, органы, гитары, и т.п.) и «инструмент внутри группы». И чтобы перебирались не номера, которые фиг запомнишь, а нормальные названия групп и инструментов (текстом).

И беда пришла , откуда не ждал. Я, ни в чём себе не отказывая, добавил все названия всех групп инструментов на руссском, каждое название длиной до 20 символов (ширина экрана). И прошивка перестала влезать во флеш-память. 🙁 Там оставалось свободным примерно 6 килобайт флеш-памяти, и табличка с текстом заняла их все, и даже больше.

Пришлось утоптать тексты: ограничил длину названий 15-ю символами и, главное, перевёл всё обратно на английский. В результате осталось свободным примерно 2 килобайта флеша.

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

А значит надо менять платформу.

Изучив варианты, я думаю, что остановлюсь на RP2040-Zero (см. рис. 1). Там 2 процессора, 264 кб ОЗУ, 2 Мб флеша. И оно давно поддерживается средой Arduino IDE. У меня есть одна внешняя зависимость: библиотека подержки OLED экрана GyverOLED; так вот она, вроде, нормально компилится для RP2040 (работу пока проверить не на чем). Т.е. переход вполне реален. Надо заказать пару контроллеров и слепить прототипчик.

Там, правда, нет встроенной EEPROM памяти. И это жирный минус. Придётся лепить внешнюю микросхему AT24C256. Но это решаемо.

Рис. 1

MIDI всякое

Буквально на днях я вдруг осознал, что после изготовления MIDI-баяна я на 100% понимаю, как сделать самодельную электронную ударную установку. Подобную той, что на рис. 1. Даже палочки могу самостоятельно выточить, благо, токарный станок никуда не делся.

Даже немножечко зачесались руки. 🙂 Но пока я к такому подвигу не готов. Да и баян надо до ума довести сначала.

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

Рис. 1 Взято отсюда

Листовой ПВХ

Тестовое склеивание закупленного листового ПВХ (3 мм) прошло замечательно. (См. рис. 1)

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

Теперь буду клеить корпус для ИБП.

Рис. 1

«Инквизитор» №14 подоспел

Кстати, я забыл поделиться хорошей новостью: закончена 14-я книжка из цикла «Инквизитор»: «Божьим промыслом Пожары и виселицы«.

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

Рис. 1

ПВХ. Облом.

Я тут надумал сделать источник бесперебойного питания для моего домашнего сервера печати, сделанного на основе Orange Pi PC Plus. И даже закупил соответствующий модуль (см. рис. 1).

Рис. 1
Читать далее «ПВХ. Облом.»

Эффект Манделы

Есть такой канадский товарищ Matthias Wandel, и он использует Raspberry Pi для разных целей время от времени. И я до какого-то момент был уверен, что у Raspberry Pi есть для этого АЦП вход. И ещё слегка сокрушался, что у ближайшего долее дешевого аналога (т.е. у Orange Pi) этого самого АЦП входа нет.

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

Вот ведь.

Рис. 1 КДПВ

Мысли о будущем

Проект MIDI-баяна я опубликовал ранее, а сегодня я туда добавил коротенький видео-обзор. (Лишний раз убедился, что видео-блогер из меня не получится. Для выступлений перед камерой нужна спец-привычка, чтобы с одной стороны не тупить, а с другой стороны всё говорить правильно с первого раза.)

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

Во-первых, надо добавить режим Portamento (если он нормально поддерживается моим синтезатором). Для этого нужна будет одна дополнительная настройка в списке параметров звука. Это не проблема. Но нужна будет ещё кнопка активации этого самого режима; без кнопки нехорошо. И единственный способ организовать такую кнопку — это сделать программируемые кнопки быстрого доступа к настройкам ещё более многофункциональными: чтобы можно было их переключать в разные режимы работы специальной системной настройкой. Т.е., например, кнопка F4 может быть настроена либо как кнопка быстрого доступа, либо как кнопка активации режима Portamento. Общая идея, как такое можно сделать, у меня уже есть. Но программирования там будет довольно много, больше, чем на 1 вечер.

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

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

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

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

В-шестых, я в первой версии прошивки тупанул, и использовал 32-разрядные счётчики таймеров, хотя вполне хватило бы 16-разрядных. Надо будет переделать. (И тем самым сэкономить примерно 60 байтов ОЗУ).

Продолжаю накапливать идеи для реализации во второй версии прошивки.

Рис. 1 КДПВ