Всем привет.
В процессе ковыряния с 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 пока будут планировать на глаз. С чем то сложнее точно понадобиться поковыряться для точности.
Тему буду дополнять. Буду рад советам и вопросам.
На всякий случай - я делаю контроллеры для себя и у меня нет потребности выиграть по стоимости. Хотя судя по доллару...
Спасибо.