Самодельная MIDI система для баяна или гармони

Больше
7 года 6 мес. назад #38300 от Александр
Я почти доделал MIDI-баян. Не хватило всего 4 датчика Холла.
На левой клавиатуре пока не работает несколько чёрных кнопок.
Датчики на левой половине установлены прямо около клапанов. По одному датчику на клапан.
Внешне ничего не поменялось, а внутри добавился кабель, идущий через мех и два разъёма, соединяющие кабель с половинками баяна.
Кабель уложен змейкой и приклеен к меху в нескольких местах. В результате он растягивается при разжатии меха и складывается при сжатии. Сам кабель сделал из тонкого провода с силиконовой изоляцией (размер 30AWG). Он не перетирается и очень гибкий.
Разъёмы PLD-20 и PBD-20, обычные штыревые с шагом 2.54.
Разъёмы запаяны на небольшие платы, а эти платы прикручены саморезами к половинкам баяна.
Провод, идущий от датчиков к разъёмам проходит через отверстие в стенке полукорпуса. Отверстие после установки проводов залито канифольно-восковой мастикой. Воздух не пройдёт.

Свежая версия программы для Arduino Nano во вложении
В программе:
- каждый датчик левой половины (каждый клапан) обрабатывается как одна нота. В идеале нужно добавить дополнительные ноты, т.к. в моём баяне один клапан это две ноты из соседних октав.
- левая и правая клавиатуры обрабатываются как один канал MIDI. Нужно будет разнести их по разным каналам.
- нет переключения режимов. Хотелось бы добавить различные настройки для левой клавиатуры. Например аккорды для красивого звучания (по 2 ноты на клапан) или аккорды для Synthesia (простые, для заучивания песен). А также добавить сдвиг на тон/полтона (до+/- октавы) правой клавиатуры.

Если будет интересно, могу записать видео, как работает баян в сборе.
Вложения:
Спасибо сказали: Anatoliy, Леонид

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
7 года 6 мес. назад #38419 от Леонид
Александр,
Замечательный труд. Я бы даже сказал, вдохновляющий.
Выложите, пожалуйста, пример звучания сего чуда. Идеально было бы, с видеорядом - дабы сопоставить моменты нажатия с началом звучания. Маленький вопрос, извините, коль пропустил: проблема с задержками срабатывания разрешилась?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
7 года 6 мес. назад #38428 от Александр
Да, конечно вот видео:
Первое видео с программным синтезатором. Звук заметно тормозит и играть нормально не получается.

Второе видео, с аппаратным синтезатором на SB X-fi. Задержка не ощущается.


Да, всё решилось заменой программного синтезатора на аппаратный. Все задержки происходят на стороне синтезатора. Сам баян работает очень быстро.
Спасибо сказали: Леонид

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
7 года 6 мес. назад #38482 от Леонид
У меня пара вопросов по теме:
--
* А чувствуется ли, и имеет ли принципиальное значение то, что датчики нажатия кнопок цифровые?
* Поскольку сейчас вполне доступны т.н. одноплатные компьютеры на ARM-е; может есть смысл синтез звука делать на них, а взаимодействовать с ними по схеме "обе клавиатуры -> шифратор -> порты GPIO", т.е. без посредника в виде MIDI?
--

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
7 года 6 мес. назад #38486 от Александр
- Используемые датчики (OH137) имеют время переключения от 0.14 до 1.4 микросекунды. Это время перехода выхода из 0 в 1 или наоборот. Задержка от момента появления магнитного поля (превышения порогового значения) до появления выхода будет ещё меньше. Если считать грубо, то задержка будет около 0,002мс. Человек такую задержку не почувствует, даже если захочет.
Это заметно по второму видео из моего предыдущего поста. Даже со всеми задержками в системе можно играть максимально быстро (С учётом цепочки: датчик, контроллер, обмен по MIDI, преобразование в USB, драйвер MIDI в ПК, драйвер звуковой карты, звуковая карта).
Вообще, датчики это наверное самая быстрая часть в этой цепочке (0,002мс). Отправка MIDI команды значительно длиннее (1,2 мс). Ну ещё звуковая карта скорее всего очень быстро отрабатывает команду, так как там стоит специализированный DSP.

- Да, вполне, это хорошая идея. Как раз это и делают все синтезаторы. Ведь MIDI у них это всего лишь выход, на котором сигнал появляется одновременно с воспроизведением. Однако, есть куча "НО", против этой идеи.
- Программировать такой контроллер будет не просто, слишком много всего нужно сделать.
- Нужно будет самому реализовать систему музыкальных банков собственного формата или использовать формат soundfont.
- Нужно придумать механизм обновления банков. На ПК это делается просто парой кликов мышки, а здесь придётся делать загрузчик и программу для ПК, чтобы заливать их.
- Качественно написать код проигрывания звуков, применяя DMA и оптимизировать программу, иначе получится что-то тормозное вроде софт-синтезатора от CoolSoft .
В идеале нужно взять FPGA с достаточным количеством ресурсов, внешней FLASH и DDR памятью и хорошим аудио ЦАПом, сделать свою звуковую карту, которая будет работать максимально быстро, без заметных задержек. Но это уже серьёзная инженерная задача.

А в случае MIDI баян можно подключить через USB переходник к телефону, планшету, ПК, синтезатору и т.д. Просто пользоваться и при этом совершенно не думать как там звуки воспроизводятся.
Спасибо сказали: Леонид

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
7 года 5 мес. назад #38925 от Андрей Воронин
Андрей Воронин ответил в теме Самодельная MIDI система для баяна или гармони
[quote="Это аналог матричной клавиатуры, только на датчиках холла[/quote]
Здравствуйте Александр. будет ли корректно работать программа при нажатии одновременно нескольких кнопок на правой клавиатуре, например будет ли звучать аккорд, поскольку прочитал в статье:
cxem.net/mc/book45.php
...При всех преимуществах матричная схема подключения обладает и одним недостатком. С её помощью тяжело реализовать чтение комбинаций кнопок. В случае, когда на такой клавиатуре будут нажаты любые три кнопки, образующие между собой прямой угол (например, SB1,SB2,SB5), то программой опроса будет зафиксировано ложное нажатие кнопки, лежащей в свободном углу прямоугольника (в данном случае SB6). При определённом раскладе такой “фантомной” кнопкой может оказаться любая кнопка на клавиатуре.
Так как я не силен в этом вопросе, прошу заранее извинить меня, только начал изучать вопрос, может в файле управляющей программы это предусмотрено.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.902 секунд
Работает на Kunena форум