Управление 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), поэтому я ценю ответы и отзывы на мой вопрос.

, 👍1


2 ответа


Лучший ответ:

0

Есть ли способ обнаружения MIDI-сообщений, не требующий дополнительной схемы и использующий только USB-кабель?

Возможно, вы могли бы сделать это с помощью "USB Host Shield", хотя у меня нет опыта работы с ними и я не знаю, могут ли они обрабатывать MIDI - вам придется изучить этот вопрос.

Хотя теоретически управлять светодиодами в программе должно быть легко, я обеспокоен тем, что задержки в последовательной связи и аппаратные прерывания могут затруднить одновременный прием MIDI-сообщений и управление светодиодами.

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

Однако я не уверен, что MATLAB неоптимален по сравнению со стандартной IDE Arduino.

Я не могу комментировать, я никогда не использовал MATLAB. Если вы не используете USB Host Shield, вам обязательно потребуется что-то, что работает на ПК для пересылки MIDI-информации по последовательному порту. Независимо от того, создаете ли вы это в MATLAB или каком-либо другом языке программирования, это ни здесь, ни там, что касается Arduino — вам все равно нужно будет запрограммировать саму Arduino, и это можно сделать в IDE и по-прежнему использовать MATLAB для ПК. часть вашей установки.

,

0
  • У меня нет опыта работы с 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.
,