Как управлять DSP-G1 программно/электронно?

Я хочу генерировать музыку/звуки для видеоигры, которую я делаю вместе со своим сыном (используя Arduino Mega и жидкокристаллический графический дисплей 240x320). У меня есть базовое понимание MIDI-протокола. Я работаю программистом уже более 30 лет. Я читал MIDI-реализацию в руководстве DSP-G1, но не понимаю, как перейти от этого к отправке правильных сигналов с платы разработчика на контакты чипа.

Все, что я нахожу, касается подключения физического MIDI-устройства. Может ли кто-нибудь предоставить или указать мне информацию о том, как управлять DSP-G1 программно/электронно? Я думаю, что мне нужно некоторое оборудование или программное обеспечение, чтобы сериализовать байты протокола MIDI в последовательность изменений напряжения, но весь поиск приводит меня к информации о физическом устройстве.

, 👍2

Обсуждение

У вас есть не та сторона схемы, вы хотите midi out circuit., @Chris Stratton

@ChrisStratton Нет, он хочет знать, как заменить эту схему, когда не используется электрический MIDI-протокол., @CL.

@CL. это было бы не по теме для сайта Arduino, а также не имело бы никакого смысла, так как Arduino легко можно было бы заставить управлять им с помощью транзистора. Гораздо лучше подключить шестерню к существующему разъему, чем модифицировать ее., @Chris Stratton


1 ответ


1

Назначение схемы MIDI-вывода состоит в преобразовании сигнала TTL в ток 5 мА.
Назначение схемы ввода MIDI состоит в том, чтобы преобразовать ток обратно в сигнал TTL.

Если Arduino и DSP-G1 являются частью одной и той же схемы (и разделяют землю), вы можете опустить эти преобразования и подключить передатчик Arduino непосредственно к приемнику LPC810 без каких-либо других необходимых компонентов. (Для LPC810 требуется источник питания 3,3 В, но его вывод RX допускает напряжение 5 В.)

MIDI был разработан для работы с большинством микроконтроллеров, поэтому он использует стандартные сигналы UART со скоростью 31250 бод. Единственная конфигурация, которая вам нужна, - это:

Serial.begin(31250);
,

Да, вы понимаете, что я пытаюсь сделать. Иногда простую вещь труднее найти, чем более сложную. Поэтому, чтобы подтвердить свое понимание, мне нужно использовать последовательные методы, в частности Serial.begin(31250), за которым следует серия вызовов Serial.write (), чтобы отправить поток байтов, такой же, как я бы записал в файл, в формате MIDI, например, https://www.csie.ntu.edu.tw/~r92092/ссылка/midi/, @Gary G

И, похоже, это автоматически перейдет в TX0 (вывод 1) на UNO. Есть ли необходимость что-либо делать с pinMode()? Что, если бы я хотел использовать TX1 на МЕГА? Спасибо за вашу помощь!, @Gary G

И мне бы не понадобилась оптопара, верно?, @Gary G

То, что передается по MIDI-кабелю, - это не MIDI-файл, а только фактические события/сообщения MIDI. Там нет временных меток; байты отправляются в реальном времени. См. фактическую [спецификацию MIDI](https://www.midi.org/specifications/item/the-midi-1-0-specification)., @CL.

Серийный "отправляется в первый UART; остальные -" Сериал1, Сериал2 и т. Д., @CL.

Я должен избегать комментариев типа "спасибо", так что... кхм... Я ценю ваш ответ. Оглядываясь назад, имеет смысл, что чип будет выполнять мои MIDI-команды в режиме реального времени-я бы не ожидал, что он будет выполнять буферизацию, так что еще он может сделать? И, да, я вернулся в https://www.arduino.cc/reference/en/language/functions/communication/serial/ и это действительно говорит о сериале 1 и т. Д.; Я, должно быть, уже просматривал эту часть раньше. Хорошие вещи, которые нужно знать. Ваше руководство придало мне достаточно уверенности, чтобы расстаться с 25 долларами и попробовать эту штуку!, @Gary G