Управление MIDI-клавиатурой
Я относительно новичок в Arduino и хочу реализовать простую систему, использующую MIDI-клавиатуру для
(i) обнаруживать нажатия клавиш (через MIDI-сообщения) с клавиатуры
(ii) хранить информацию о MIDI-сообщениях (нажатая нота, скорость нажатия)
(iii) Загораются светодиоды на клавиатуре в зависимости от того, какая клавиша была нажата
В настоящее время я нахожусь на стадии планирования и рассматриваю возможность использования Arduino Mega. У меня есть две проблемы, в которых я не уверен:
(i) Моя клавиатура имеет только соединение USB A с разъемом USB B, первое из которых подключается к компьютеру, а второе — к клавиатуре. До сих пор в моих поисках я видел, что для всех проектов Arduino-MIDI требуется 5-контактный MIDI-кабель для взаимодействия с Arduino с использованием схемы на этой веб-странице (https://www.instructables.com/id/Send-and-Receive-MIDI-with-Arduino/). Есть ли способ обнаружения MIDI-сообщений, который не требует дополнительной схемы и использует только USB-кабель?
(ii) Хотя теоретически управление светодиодами должно быть простым в программе, я обеспокоен тем, что задержки в последовательной связи и аппаратные прерывания могут затруднить одновременный прием MIDI-сообщений и управление светодиодами.
Одним из способов избежать этих проблем является использование пакета MATLAB MIDI (https://uk.mathworks.com/help/audio/ug/midi-device-interface.html#mw_80dc54f4-867c-43c0-a159-e56ee62ec4ab) для взаимодействия с MIDI-устройство и используйте пакет MATLAB Arduino для управления Arduino. Однако я не уверен, является ли MATLAB неоптимальным по сравнению со стандартной IDE Arduino.
Это мой первый вопрос на Arduino StackExchange (или на любом другом сайте StackExchange), поэтому я ценю ответы и отзывы на мой вопрос.
@LobCity, 👍1
2 ответа
Лучший ответ:
Есть ли способ обнаружения MIDI-сообщений, не требующий дополнительной схемы и использующий только USB-кабель?
Возможно, вы могли бы сделать это с помощью "USB Host Shield", хотя у меня нет опыта работы с ними и я не знаю, могут ли они обрабатывать MIDI - вам придется изучить этот вопрос.
Хотя теоретически управлять светодиодами в программе должно быть легко, я обеспокоен тем, что задержки в последовательной связи и аппаратные прерывания могут затруднить одновременный прием MIDI-сообщений и управление светодиодами.
Маловероятно. Вы должны были сделать что-то очень неправильное, чтобы он так медленно реагировал, что вы заметили задержку.
Однако я не уверен, что MATLAB неоптимален по сравнению со стандартной IDE Arduino.
Я не могу комментировать, я никогда не использовал MATLAB. Если вы не используете USB Host Shield, вам обязательно потребуется что-то, что работает на ПК для пересылки MIDI-информации по последовательному порту. Независимо от того, создаете ли вы это в MATLAB или каком-либо другом языке программирования, это ни здесь, ни там, что касается Arduino — вам все равно нужно будет запрограммировать саму Arduino, и это можно сделать в IDE и по-прежнему использовать MATLAB для ПК. часть вашей установки.
- У меня нет опыта работы с USB MIDI, но я (почти) уверен, что он должен работать с экраном (как уже пишет Маженко).
- У меня есть опыт работы со следующей библиотекой. Я использовал его для обычного (DIN5) MIDI, а не через USB, но, похоже, он поддерживает и USB: https://github.com/FortySevenEffects/ arduino_midi_library Эта библиотека основана на прерываниях, старайтесь, чтобы прерывания были как можно короче, вы можете выполнять обработку MIDI-сообщений в основной функции вместе с управлением светодиодами.
- Я создал (временное) соединение USB, которое работало довольно хорошо, так что да, с Mega легко использовать 3 (или 4) MIDI-канала, используя DIN5. Это более чем достаточно быстро. MIDI составляет всего 31 250 бод.
- Я обнаружил, что очень раздражает использование единственного UART Arduino Uno для использования как для MIDI, так и для отладки/загрузки, поэтому проще использовать 3 UART от Mega, а когда ваша программа заработает, используйте основной RX/ TX и для MIDI (сделайте его гибким).
- Если вы думаете об использовании серийного номера программы: забудьте об этом, по крайней мере, для чтения MIDI.
- Как правильно получить MIDI с Arduino, с 6n138?
- exit status 1 - expected primary-expression before '(' token
- Как правильно отправить MIDI с помощью ESP8266?
- ESP32 USB HID/MIDI библиотека (не BLE)
- ATtiny85 MIDI IN с использованием SoftwareSerial – возможно ли это?
- MIDI клавиатура управляемая светодиодная лента
- Отправка MIDI CC на несколько миди-каналов
- Сборка mocoLUFA под OSX и Linux