Датчик положения — финал

Это короткий ответ на вопрос «зачем в баяне нужен датчик положения».

Датчик реагирует на повороты по двум осям: X (вправо) и Y (вперёд). Рабочий диапазон углов от 0 до 15 градусов.

На любую ось можно настроить следующие контроллеры:

  • бенд (подтяжка) вверх
  • бенд вниз
  • управление силой вибрато (от нуля до максимума)
  • включение/выключение режима Portamento

Глубина бенда может настраиваться в диапазоне от 1 до 4 полутонов.

Датчик положения

Теперь датчик положения является частью схемы баяна. И даже прошивка без него уже не запустится. 🙂

В данный момент реализован, скажем так, драйвер датчика, который умеет:

  • Калибровать датчик, чтобы он «знал», какое положение баяна является рабочим.
  • Сохранять калибровочные данные в EEPROM
  • Читать калибровочные данные из EEPROM при старте системы
  • Перекалибровывать датчик заново, если баян включен с нажатой кнопкой «стрелка вверх»
  • Читать данные с датчика примерно 65 раз в секунду и если его показания изменились — то отправлять соответствующее событие в системную очередь.

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

Отслеживаются повороты инструмента по двум осям:

  • X — влево/вправо
  • Y — вперёд/назад
Рис. 1

Lusta Dick — промежуточный результат

Я тут решил, что пришло время продемонстрировать, на что способен MIDI-баян в его текущем состоянии.

Заодно и обкатаю Lusta Dick на публике.

Первый шаг к т.н. «активной» клавиатуре сделан

Сегодня у темы MIDI-баяна небольшой праздник. Есть работающий способ отпределять скорость нажатия клавиш (см. рис. 1).

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

Рис. 1

Видео-дополнение к предыдущей заметке про датчик давления

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

Обращать внимание нужно на управление громкостью с помощью меха. На мои кривые руки, не всегда попадающие в кнопки, внимания не обращать. 🙂

(ЖЖ почему-то не показывает встроенный видео-плеер. Поэтому идите на основной блог по ссылке ниже. Там всё показывает.)

Про реалистичность работы датчика давления

Всё-таки для реалистичной работы датчика давления 40 измерений в секунду — это слишком мало.

Сегодня я провёл эксперимент и поставил 70 измерений в секунду.

И получилось хорошо. Появилась возможность делать действительно резкие акценты мехом. Темоло зазвучало по-другому. Ну и в целом работа мехом теперь очень похожа на «аналоговый» инструмент. Теперь я доволен. Так и оставлю.

Рис. 1

Готов полный аккомпанемент для Lusta Dick

Готово то, для чего придумывалась и реализовывалась возможность проигрывать в аккомпанементе не только ударные, но и мелодию.

Вот так это звучит через мой синтезатор:

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

«Мультикнопки» готовы

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

Теперь у меня не 4 программируемых кнопки, а, типа, 12. Для каждой из 4-х физических кнопок можно программировать одиночное, двойное и тройное нажатие.

Вот демонстрация того, как это выглядит:

Алгоритмы работы кнопок

Мне нравится, как Alex Gyver реализует кнопочное управление своими самоделками. Минимум кнопок (обычно всего одна), максимум возможностей. За счет комбинирования многократных нажатий и удерживаний.

Тоже так хочу.

И на днях скачал себе библиотеку EncButton, реализующую всю эту красоту. Непосредственно её использовать мне оказалось неудобно, и я решил взять оттуда алгоритмы и реализовать всё самостоятельно.

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

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

Рис. 1 «Hold»