Автор Тема: Мои Midi контроллеры  (Прочитано 832 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Stars Автор темы

  • Новичок
  • *
  • Сообщений: 97
  • Репутация: +113/-0
  • Far beyond through the stars
Мои Midi контроллеры
« : Марта 11, 2021, 21:31:28 »
Всем привет.

В процессе ковыряния с midi в Pangea cp-100fx тут:
https://guitarplayer.ru/equipment-effects-amps/amt-pangaea-cp-100fx-novyj-emulyator-gitarnogo-kabineta-i-ne-tolko/msg11692694/#msg11692694
потянуло меня собрать девайс на arduino чтобы управлял петлями в борде и в том числе работал бы по midi в обе стороны. Например, включал педали, запускал запись в секвенсоре и ставил пресет в Pangaea и выставлял режим в идущем ко мне whammy.
Посмотрел что есть из DIY, а так же готовую продукцию у Morningstar и DisasterArea. Нюансов много потому решил начать с простого проекта, а дальше масштабировать.

У DisasterArea есть такая малышка, которая настраивается через Web



Решил начать с нее, но адаптировать под себя и свои знания.
Убрать историю с multijack и midi вход на 5din - Не хочу пока ковыряться с мультиплексорами.
Не использовать web для конфигурации, по опыту мне быстрее накидать Win приложение.

Что хочу:
 - 6 событий на кнопке (Press, Release, Click, Single Click, Double Click, Hold)
 - 4 вида команд (Note On, Note Off, Control Change, Programm Change)
 - до 4 команд на каждом событии
 - подключение педали экспресии
 - USB Midi отключаемый
 - MIDI USB Analog Thru отключаемый
 - корпус с кнопкой 1590lb

У меня большой опыт в программировании систем верхнего уровня на .Net, но программирование контроллеров напрямую хотел избежать.
Как прототип за основу взял arduino leonardo 32u4 (внутрь пойдет ее младшая по размерам версия Arduino micro).
Почему Arduino:
 - не требует очень глубоких знаний
 - есть готовые открытые библиотеки
 - на борту EEPROM
 - у меня не настолько сложная логика чтобы бороться за память



Почему 32u4
 - два serial работающих независимо
 - работа с аппаратным USB, причем один из Serial работает с ним параллельно
 - готовая библиотека для работы midi usb

 Заказал контактную momentary кнопку типа 2pdt и корпус, остальное лежало дома.
Пока все это дело идет, взялся за программы.

хорошенько погуглив интернет нашел пару библиотек которые дружил между собой midi.h и usbmidi.h
за обработку событий кнопки хорошо легла библиотека AlexGyver, где все события кнопки работают "из коробки". В итоге, пара недель по вечерам - прошивку закончил.
Главное что удалось получить масштабируемую программу. Так же успешно зашло сохранение настроек и событий в EEPROM (одна кнопка, 6 событий, 4 миди события занимает 120 байт, уверенно эта штука масштабируется до 7 кнопок и двух педалей экспресии. Удалось даже подстраховаться и добавить возможность калибровки педали и смену пинов для э4кстра педалей у кого tip и ring работают обратно.

В процессе появилась первая недоработка - для большого контроллера, с экраном, 5 кнопками, 8 миди событиями, пресетами и тем более банками - своей EEPROM очевидно не хватит. Потребуется внешняя EEPROM. И код придется хорошенько перерабатывать.
Итого, касательно кода, на будущее:
 - добавить внешнюю EEPROM
 - при расширении добавить возможность работать с пресетами (все вытекающие - листание пресетов и их названия, по желанию можно добавить банки)

Что то похожее придется неплохо расширять



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

Касательно задержек в работе midi - не заметил что-то чтобы мне мешало. Возможно они есть, но на данный момент меня все устраивает.

Идем дальше
Serial у Arduino прост как палка, однако пришлось поковырять и придумать свой небольшой протокол для общения. Все переживания касательно буфера в 64 байта у Arduino оказались напрасны. Она спокойно заполняет 120 байт в прыжке в нужном порядке выстраивая команды.

Дальше дело за программой настройки. Тут проще, все же проф стезя. Сейчас в процессе работы над ней, но в целом основные функции она начала выполнять




И все это конечно классно, опыта и головы пока хватает. Но впереди самое интересное - макет плат и работа с корпусом. Первое буду раскидывать в DipTrace и заказывать у китайцев, а второе, в связи с отсутствием опыта в том же fusion 360 пока будут планировать на глаз. С чем то сложнее точно понадобиться поковыряться для точности.

Тему буду дополнять. Буду рад советам и вопросам.
На всякий случай - я делаю контроллеры для себя и у меня нет потребности выиграть по стоимости. Хотя судя по доллару...
Спасибо.
« Последнее редактирование: Марта 11, 2021, 22:15:17 от Stars »

Оффлайн Tander

  • Ветеран форума
  • ******
  • Сообщений: 3731
  • Репутация: +475/-0
    • Efremoff
Re: Мои Midi контроллеры
« Ответ #1 : Марта 12, 2021, 15:21:32 »
Сразу скажу, что Ардуина не работает нативно в миди через USB.  - т.е. нужна дополнительная "прокладка" в виде
The Hairless MIDI<->Serial Bridge.

Правильно что взял леонардо atmega32u4 или ARM на борту - тогда будет работать нативно Midi Over USB. Если требуется больше I/O - то можно взять Arduino Mega, где в качестве USB чипа стоит atmega 16u4 - его тоже можно запустить с Midi Over USB.

Для себя сделал контроллер: https://guitarplayer.ru/equipment-craft/prostoj-midi-kontroller-dlya-soft-kombajnov-kompyuternyh-guitarrig-overloud/


... и добавил:

Мне нужно было много пинов свободных, но при этом у меня было мало места - поэтому я взял компактный китайский клон на 2560 - на обычном CH340 интерфейсе. Как "домашнее" решение пойдет, но вот думаю попробовать перенести все на какой-то ARM контроллер, чтобы избавится от Hairless моста. Или Teensy длинную поставить - но нужно будет посчитать - хватит ли ног, или все же попробовать впихнуть стандартную Arduino Mega 2560 с 16u4 в качестве USB-интерфейса. Или попрбовать заюзать на эти задачи что-то типа RPi Zero - маленькие габариты, небольшая цена - и при этом полноценный компьютер - жаль конечно его на такие задачи простые ставить, но что сделать? ))
« Последнее редактирование: Марта 12, 2021, 22:52:39 от Tander »

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • Репутация: +2264/-69
  • не шарю ваще
Re: Мои Midi контроллеры
« Ответ #2 : Марта 12, 2021, 19:47:14 »
Сразу скажу, что Ардуина не работает нативно в миди через USB. 
у него леонардо - то есть атмега32u со встроенным юсб - там при помощи LUFA делаются вполне самодостаточные юсб-устройства.

Оффлайн Tander

  • Ветеран форума
  • ******
  • Сообщений: 3731
  • Репутация: +475/-0
    • Efremoff
Re: Мои Midi контроллеры
« Ответ #3 : Марта 12, 2021, 22:51:08 »
Да, я ниже написал про 32u4.