Прошивка для MIDI-баяна готова

Сегодня вечером после работы я закончил работу над прошивкой MIDI-баяна. Даже не верится. Реализовал все функции, которые хотел:

  • Полная поддержка готово-выборной левой клавиатуры. На механизм переключателя установлен свой собственный датчик, и контроллер при включении сам определяет текущий режим. Само собой, переключение режимов тоже определяется. В готовом режиме басы и аккорды играют в разные MIDI каналы, которые можно настраивать совершенно независимо. Т.е. на бас можно настроить звук контрабаса, а на аккорды — гитару или, например, фортепиано. В режиме выборной клавиатуры вся левая рука играет в один канал (что логично). Само собой, канал для выборки настраивается независимо от каналов баса и аккордов.
  • Особенность конструкции левой клавиатуры моего баяна в том, что басы там играют октавами. Т.е. при нажатии одной клавиши баса механизм открывает два клапана: одна нота в контроктаве и одновременно с ней та же нота в большой октаве. Для баяна это хорошо, т.к. добавляет красок в басовый звук. А вот для MIDI инструмента — это уже недостаток, т.к. далеко не каждый инструмент будет хорошо звучать с октавами в басах. Поэтому я сделал спец-режим «запрет октав в басах». Если он включен, то контроллер игнорирует нажатия более высоких басовых нот, если уже нажата соответствующая низкая нота. Само собой, датчики должны быть настроены так, чтобы датчик низкой ноты срабатывал чуть-чуть раньше, чем датчик высокой ноты.
  • Работа меха регистрируется дифференциальным датчиком давления, который измеряет разницу между давлением внутри герметичного корпуса и давлением снаружи. Также есть режим игры с выключенным датчиком давления; в этом случае громкость звука настраивается через меню настроек.
  • Имеется возможность сохранения 6 вариантов настроек всех MIDI-каналов (правая рука, бас, аккорд и выборка) — т.н. «пресетов». Каждый пресет включается своей кнопкой; текущий пресет обозначается соответствующим горящим светодиодом. (См. заметку про дизайн панели управления.) Запоминание настроек происходит интуитивно просто: как только все звуки настроены как надо, достаточно нажать и удерживать кнопку соответствующего пресета. После обнаружения длительного нажатия, соответствующий светодиод сначала быстро заморгает, обозначая, что «сейчас будет записан выбранный пресет». Если в течение 3-х секунд после начала моргания кнопку не отпустить, то пресет запишется в энергонезависимую память (EEPROM). По похожему алгоритму запоминаются радиостанции в некоторых автомагнитолах.
  • Поскольку настроек у MIDI каналов много, и перебирать их через меню не всегда удобно, реализованы 4 настраиваемых кнопки быстрого доступа к настройкам. Если в момент редактирования нужного параметра нажать и удерживать кнопку быстрого доступа, то эта кнопка станет связана с этим самым параметром. И для повторного изменения данного параметра достаточно будет один раз коротко нажать эту кнопку быстрого доступа (и сразу можно будет менять параметр «стрелочками»). Очень удобно.
  • Если контроллер обнаруживает, что настройки звука изменились, то светодиод текущего пресета начинает медленно мигать, показывая, что имеются несохранённые изменения. Эти изменения можно сохранить либо в текущем пресете, либо в любом другом. А можно и не сохранять.
  • Имеется встроенная ритм-машина, которая может работать в двух режимах:
    • ручной — когда при каждом нажатии басовых клавиш проигрывается один звук ударных инструментов (например барабан «бочка»), а при нажатии аккордов — другой звук (например «тарелка»).
    • автоматический — когда проигрываются заранее запрограммированные мелодии (в данный момент у меня сделаны 5 штук: 2 метронома (3/4 и 4/4) и 3 простых ритма). Автоматический режим может стартовать либо по кнопке на панели управления, либо при первом нажатии любой басовой клавиши.
  • Имеется «упрощенный» режим выбора некоторых настроек, адаптированный специально для синтезатора ATEMP MIDI HW Synth. В этом режиме значения параметров, не реализованные в синтезаторе, просто пропускаются; выбрать можно только то, что поддерживается синтезатором. В основном это касается выбора дополнительных банков инструментов.
  • Все настройки сохраняются с энергонезависимой памяти, и при следующем включении инструмент восстанавливает то состояние, в котором он был выключен.

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

Рис. 1

Добавить комментарий