Настройка usb midi что это
Конфигурация USB: RNDIS, MTP, PTP, MIDI. Что это такое на телефоне Android?
В режиме разработчика на смартфоне Андроид пользователь может найти массу крайне интересных пунктов меню, которые зачастую вызывают большой интерес. В этой статье мы рассмотрим подраздел «Конфигурация USB» и узнаем, что обозначают пункт этого подраздела.
Для начала откроем режим разработчика. Пример на базе смартфона Samsung. Идем в настройки.
Далее находим раздел «Параметры разработчика» или «Режим разработчика. Если он у вас вдруг отключен, включите его с помощью нашей инструкции.
Включаем режим при необходимости и находим пункт «Конфигурация USB» или «Конфигурация USB по умолчанию» или «Выбор настройки USB», например:
Видим следующее (Samsung):
Что значит этот подраздел? С его помощью вы можете выбрать, какое действие используется при подключению смартфона к компьютеру или ноутбуку. К примеру, вы можете включить передачу файлов, а можете — только передачу изображений и видео.
Теперь пройдемся по каждому пункту.
Пункты меню
Передача файлов (MTP или Media Transfer Protocol). Передача любых доступных файлов, будь то музыка, видео, фотографии, документы и т.д.
Передача изображений (MTP или Picture Transfer Protocol ). В этом режиме при подключении смартфона к компьютеру или ноутбуку и после разблокировки экрана становится доступна передача изображений, а также видеороликов.
USB-модем (RNDIS или USB Ethernet). Подключается как USB-модем, то есть вы можете использовать смартфон как точку доступа для ПК или ноутбука.
MIDI. Позволяет использовать ваш смартфон как MIDI-устройство.
Аудиоисточник. Использование вашего смартфона как источник вывода звука.
Только зарядка. В этом случае доступ к данным после разблокировки экрана не осуществляется, смартфон лишь заряжается от вашего ПК или ноутбука.
Есть один нюанс. Некоторые смартфоны при выборе одного из режимов используют выбранный вами пункт по умолчанию постоянно. Так, если вы выбрали «Только зарядка», то при подключении смартфона к ПК или ноутбуку каждый раз будет использовать именно указанный вариант подключения. Если выбрали «Передача файлов», то после подключения и разблокировки рабочего стола каждый раз будет доступна файловая система смартфона и для любого компьютера, что может быть опасно в некоторых случаях. Будьте внимательны.
Друзья! Если наш сайт помог вам или просто понравился, вы можете помочь нам развиваться и двигаться дальше. Для этого можно:
Что такое USB MIDI?
Что такое MIDI через USB?
MIDI — это аббревиатура от Music Instrument Digital Interface (он же МИДИ) — цифровой протокол передачи данных между электромузыкальными инструментами (ЭМИ). … ЭМИ это инструмент, звучащий в результате электронного синтеза (в народе — синтезатор).
Что такое режим MIDI?
Это спецификация интерфейса удаленного сетевого драйвера. … Режим, который использует интерфейс USB для вывода звука с компьютера. MIDI. Этот режим дает возможность использовать смартфон в качестве MIDI-устройства: например, MIDI-клавиатуры для создания музыкальных композиций в специализированных программах.
Что такое MIDI вход на телефоне?
MIDI IN, как вы, наверное, уже поняли, это вход для поступающей извне MIDI-информации, другими словами, «уши». MIDI OUT предназначен для отправки MIDI-информации за пределы данного устройства.
В чем разница между синтезатором и миди клавиатурой?
MIDI-клавиатуры бывают только цифровыми, а синтезаторы как цифровыми, так и аналоговыми. Функции цифровых инструментов очень похожи между собой. … Главные функции синтезатора – проигрывание и запись звука. Да, MIDI-клавиатуры также способны воспроизводить звук, однако в основном они используются как контроллеры.
Что такое PTP через USB?
PTP — цифровая камера
PTP означает «Протокол передачи изображений». Когда Android использует этот протокол, он представляется компьютеру как цифровая камера. MTP фактически основан на PTP, но добавляет больше функций или «расширений».
Как подключить телефон к телевизору с помощью USB?
Как настроить USB подключение на Андроиде?
Вернитесь в основное меню настроек и перейдите в раздел «Для разработчиков» Выбрать «Конфигурация USB» Выбрать MTP подключение для передачи файлов Если на вашем ПК не установлены Android драйвера, то установить
Как включить режим PTP?
Для этого необходимо: подключить устройство с помощью USB-кабеля к компьютеру, а дальше на смартфоне или планшете в выдвигающейся шторке нажать на «Подключение USB» и в появившемся окне выбрать режим PTP.
Как использовать телефон в качестве флешки?
Чтобы Android подключался к компьютеру как накопитель:
Как использовать телефон в качестве USB модема?
Как подключить Android-смартфон как USB-модем
Можно ли использовать телефон как миди клавиатуру?
Для того что бы использовать Ваш гаджет в качестве Midi устройства, необходимо иметь Fl Studio от одиннадцатой версии. Далее необходимо скачать в PlayMarket или Itunes (в зависимости от установленной на вашем портативном устройстве операционной системы) программу «IL Remote». Она бесплатна в обоих случаях.
Как правильно выбрать синтезатор для начинающих?
Топ-5 синтезаторов для начинающих
Для чего нужна миди клавиатура?
Миди-клавиатура – это разновидность клавишного инструмента, который позволяет музыканту играть на клавишах, используя звуки, заложенные в компьютере. MIDI – это язык при помощи которого, музыкальный инструмент и компьютер понимают друг друга.
Всё что нужно знать о MIDI-интерфейсах
MIDI-интерфейсы — очень полезный для музыкантов инструмент, позволяющий объединить самые разные электронные инструменты в один большой сетап. В этой статье мы расскажем все, что нужно знать про это устройство, а также подскажем, на что обратить внимание при покупке.
Что такое Миди?
Формат MIDI был разработан в начале 80-х годов с целью стандартизации быстро растущего количества цифрового музыкального оборудования. Производителям нужен был простой способ сделать свою продукцию совместимой с устройствами других брендов. В 1981 году основатель Roland Икутару Какехаши предложил идею универсального языка для музыкальных инструментов другим крупным игрокам на рынке, включая Oberheim, Sequential Circuits и Moog. Финальный вариант MIDI был наконец представлен в 1982 году.
Миди (MIDI — Music Instrument Digital Interface) — это протокол передачи данных, который позволяет связывать между собой различное музыкальное оборудование. Это могут быть синтезаторы, драм-машины, семплеры, DJ-контроллеры и т.д. Однако важно понимать, что данный протокол не передает между устройствами аудио сигналы. Вместо этого он передает цифровые данные — миди-сообщения, которые представляют собой двоичный код (нули и единицы).
Миди сообщения
Самое интересное в протоколе MIDI — это сообщения, которые передаются от устройства к устройству. Каждое такое сообщение соответствует определенному параметру и говорит другому устройству, что нужно делать, какие параметры нужно изменить, как должна вести себя система или какие ноты играть и т.д.
MIDI-сообщения можно разбить на два типа: системные сообщения и канальные сообщения. Большую часть времени вы будете иметь дело с канальными сообщениями. Хотя некоторые важные функции, такие как синхронизация (Clock) и управление воспроизведением (остановка, запуск и продолжение), являются системными сообщениями.
Начнем с канальных сообщений. Они способны передавать до двух видов данных одновременно. Например, сообщения активации и деактивации какой-либо ноты включают в себя информацию о значении номера ноты (ее высота), а также о значении скорости нажатия на нее, т.е. интенсивности, с которой она была сыграна. Таким образом MIDI может передавать выразительность исполнения.
Вот некоторые основные канальные сообщения и их описание:
Активация и деактивация ноты (Note On/Off): содержит информацию о том, какие ноты и когда были нажаты и отжаты, включая скорость нажатия на клавиши.
Послекасание (Aftertouch): дополнительное давление на клавишу после ее нажатия. Этот параметр в основном используется для модуляции звука
Изменение значения контроллера (Control Change): определяет изменение значения параметра на устройстве. Например, какой-либо регулятор или фейдер на миди-контроллере можно назначить на управление частотой среза фильтра синтезатора. За это как раз и будет отвечать сообщение формата Control Change
Изменение значения программы (Program Change): изменяет номер патча (предустановки) на устройстве
Давление в канале (Channel Pressure): общее значение давления для всех нажатых клавиш. Работает по похожему принципу с послекасанием, только для всех клавиш сразу
Изменение регулятора высоты звука (Pitch Bend): изменение колеса или рычага питча.
Что касается системных сообщений, так вот некоторые наиболее важные:
Синхронизация (Clock): синхронизирует по темпу подключенный девайс с мастер-устройством
Управление воспроизведением (Transport): передает устройству команды для запуска, остановки или продолжения воспроизведения
Специальные системные сообщения (sysex): позволяют производителям оборудования создавать свои собственные типы сообщений. Некоторые старые MIDI-устройства широко используют sysex.
По началу все это может показаться очень сложным, но большинство MIDI-задач все устройства обрабатывают вообще без вашего ведома в автономном режиме. Поэтому досконально разбираться во всех технических деталях совсем не обязательно.
Что такое Миди-интерфейс?
Миди-интерфейс — это устройство, которое связывает между собой различные миди-совместимые устройства при помощи стандартного 5-контактного разъема. К таким устройствам можно отнести как различные синтезаторы или драм-машины, так и компьютеры или даже смартфоны.
Наиболее популярны интерфейсы, которые способны подключаться к компьютеру. Ведь именно там в подавляющем большинстве на различных цифровых звуковых рабочих станциях (DAW) сегодня создается музыка. Существуют автономные MIDI-интерфейсы, практически все из которых подключаются к компьютеру или смартфону через USB. А также интерфейсы могут быть интегрированы в клавиатуры, контроллеры и аудиоинтерфейсы.
Упомянутые выше 5-контактные разъемы бывают 3 видов: MIDI out, MIDI in и MIDI thru. Понимать в чем между ними разница очень важно, потому что при неправильном подключении миди-соединение не будет работать.
MIDI out: позволяет направить данные, сгенерированные внутри одного устройства, например, нажатием на клавишу или поворотом регулятора, на другие MIDI-устройства. Этот разъем можно подключать только к MIDI in.
MIDI in: принимает данные от внешнего источника. Этот разъем может быть подключен как к MIDI out, так и MIDI thru
MIDI thru: целью этого разъема является передача точной копии данных, полученный устройством в MIDI In. Это позволяет объединить большое количество девайсов в цепочку, управляемую общим источником или контроллером, создавая таким образом сложный сетап. Этот разъем можно подключать только к MIDI in.
Зачем покупать Миди-интерфейс
Для подключения миди-совместимого оборудования к компьютеру
Это, пожалуй, самая распространенная причина приобретения миди-интерфейса. Некоторое музыкальное оборудование, например, старенькое цифровое пианино, не оснащено привычным всем портом USB для подключения к компьютеру, при этом зачастую миди-разъемы там все же есть. Как раз в таких случаях миди-интерфейс и приходит на помощь. Подключаем миди-кабелем цифровое пианино к разъему Midi in и используем его, как обычную миди-клавиатуру в любой цифровой рабочей станции (например, Ableton или Cubase).
Или, скажем, у вас уже практически полностью готова аранжировка нового трека. Вы играете с каким-нибудь железным синтезатором и вдруг понимаете, что накрутили тот самый звук, которого не хватало для завершения композиции. Более того, в проекте уже даже есть партия для него. В таком случае также можно подключить миди-интерфейс к синтезатору и настроить все так, чтобы ноты игрались прямо из вашего компьютера.
Синхронизация оборудования с компьютером
Данная функция будет наиболее полезна, если вы собираетесь играть лайвы с использованием компьютера. Например, на каком-либо внешнем синтезаторе у вас настроена секвенция. Чтобы она играла бит в бит с остальной композицией, можно подключить устройство к миди-интерфейсу и синхронизировать его с вашей DAW.
Подключение к iOS
На рынке сегодня есть специальные миди-клавиатуры, разработанные для iOS-устройств. Но если у вас уже есть клавиатура с миди-выходом, то к iPad можно подключиться и с помощью миди-интерфейса.
Подключение нескольких устройств
Cо временем, когда вы начнете обрастать различными синтезаторами и драм-машинами, вы скорее всего задумаетесь о расширении своего сетапа для одновременного подключения к компьютеру сразу нескольких устройств. Чем больше оборудования, тем больше разъемов вам понадобится. А это означает, что вам нужно будет приобретать дополнительные MIDI-интерфейсы, чтобы обеспечить достаточное портов для всех устройств.
На что обращать внимание при покупке миди-интерфейса
Количество Миди-разъемов (In/Out/Thru)
Количество миди-разъемов стоит подбирать по количеству имеющихся у вас устройств. Если вам нужно подключить к компьютеру только клавиатуру, то скорее всего вам будет достаточно интерфейса с 1 входом и 1 выходом. Продумайте заранее, не планируете ли вы расширять свой сетап в ближайшем будущем, не понадобятся ли вам дополнительные разъемы. Возможно, стоит сразу взять миди-интерфейс с большим количеством портов на запас.
Тип подключения
Изначально миди-интерфейсы были оснащены только 5-контактными миди-разъемами и служили исключительно для того, чтобы связывать различное музыкальное оборудование между собой. Со временем появились интерфейсы с USB-портами, позволяющими подключиться к компьютеру. Естественно, они быстро стали очень популярными, и сейчас практически весь рынок представлен именно такими моделями.
В последние годы с развитием беспроводных технологий новым MIDI-интерфейсам вообще перестали быть нужны кабели для подключения к устройствам. Такие модели не только удобны в настройке, но и позволяют избежать бардака с проводами.
Питание
Питание MIDI-интерфейсов напрямую влияет на их мобильность и удобство в использовании. В основном питание осуществляется с помощью стандартного адаптера переменного тока. Такой вариант ограничивает мобильность, но более стабилен в работе. Другой вариант — USB-интерфейсы, которые питаются напрямую от устройства, к которому подключены.
Mac/PC совместимость
Перед приобретением важно выяснить, совместим ли интерфейс с операционной системой вашего устройства/компьютера. Хотя большинство MIDI-интерфейсов, представленных на рынке, прекрасно работают со всеми основными операционками, есть некоторые модели, которые разработаны специально для какой-то одной.
MIDI2USB – музыка нас связала
Рис.1 Российско-китайско-американский конвертер MIDI в USB. Фото автора.
Люди любят музыку. Многие умеют играть на музыкальных инструментах. А некоторые пробуют импровизировать и даже сочинять музыку. Электронные музыкальные инструменты можно подключать к компьютеру и получать дополнительные творческие возможности. Это вроде бы простое дело, но большинство дешёвых китайских адаптеров USB-MIDI работают посредственно. Кому интересно, как я сделал свой MIDI2USB-адаптер, приглашаю читать
Постановка задачи
Пару лет назад мой племянник, который учится музыке, начал импровизировать и сочинять музыку. Мне хотелось, чтобы его творчество не пропало, но записывать его музыкальные этюды удавалось только на диктофон. Качество такой записи было неудовлетворительным. Хотелось осуществлять запись нот напрямую в Cubase или MuseScore, а затем их редактировать. Для этого я решил купить китайский адаптер (конвертер) USB-в-MIDI.
Такой кабель-адаптер стоит дёшево и, как оказалось, работает плохо. Передача данных от синтезатора (электрического пианино) в компьютер не работает. Если играть одним пальцем, то несколько нот удаётся записать, а когда берёшь аккорд или играешь гаммы, то адаптер зависает и превращается в кирпич. Другое направление, т.е. передача данных из компьютера в синтезатор работает хорошо. В отзывах многих покупателей можно найти подобные истории.
Способы доработки китайского адаптера
В интернете есть немало дискуссий как улучшить или доработать китайский адаптер. В некоторых версиях этого адаптера предусмотрен, но не распаян оптрон, который обеспечивает гальваническую развязку компьютера и синтезатора. Увы, в моём случае доработка была затруднительна, т.к. вместо оптрона установлены два NPN-транзистора. Отмечу, что MIDI-стандарт прямо указывает использовать оптоизолятор, например, PC900V или 6N138. Схожими характеристикам обладают оптопары H11L1M (DIP-8) или H11L1SM (SO-6). Можно использовать и другие компоненты с подходящими параметрами.
Рис.2. Китайский адаптер в процессе демонтажа. Фото автора.
На фото видно, что в корпусе достаточно места чтобы разместить оптоизолятор и сопутствующие элементы. Некоторые умельцы выпаивают имеющиеся компоненты и на их место устанавливают оптоизолятор с «обвесом». Очевидно, что для этой операции требуются не только знания, но и хорошая моторика рук.
Но недостаточно обеспечить оптическую изоляцию музыкального инструмента и компьютера. Требуется ещё точный кварцевый генератор или резонатор, чтобы обеспечить тактирование последовательного интерфейса UART в соответствии со стандартом MIDI. В китайском адаптере, который я купил, отсутствует не только оптопара, но и кварцевый резонатор. Конечно, существуют микросхемы, в которых блоки тактирования калибруются на заводе, но тут ничего подобного нет. В общем, работоспособность этого китайского изделия низкая. Существуют адаптеры, построенные на микросхеме CH345 – преобразователе USB в MIDI в корпусе SSOP-20, но это не мой случай. Микросхема CH345 имеет аппаратные USB-метки Vendor ID: 1a86, Product ID:752d. Впрочем, любая «левая» микросхема может выдавать (и выдаёт) такие же идентификаторы и даже может «притвориться» чем угодно.
Последний небольшой недостаток, который я выявил в китайском адаптере – это программное обеспечение (прошивка). Если говорить точнее – это малый размер буфера для конечных точек (EndPoints), всего по 8 байт. Этого достаточно для передачи нажатых нот, потому что MIDI-сообщение по USB интерфейсу состоит из 4 байт (номер кабеля, номер команды и 2 байта данных). А вот всякие расширения, например SysEx, могут быть большего размера.
Через некоторое время я купил другой кабель-адаптер, который носил громкое название “Professional USB MIDI Interface”. Этот адаптер стоил существенно дороже и работал значительно лучше, но всё равно с ошибками. Проявлялось это в том, что спустя несколько минут игры на синтезаторе, он вдруг начинал пропускать нажатия клавиши или наоборот – не воспринимал отпускание клавиши. Я был разочарован результатами работы китайских адаптеров я и решил последовать совету: «Если хочешь сделать что-то хорошо, то сделай это сам».
Аппаратная часть
Сначала надо было продумать схему будущего устройства и изучить опыт других инженеров. Имеющийся адаптер внешне выглядел очень хорошо, поэтому я решил использовать от него корпус, светодиоды и экранированные кабели. Тем более, что в Москве MIDI-кабели стоят дороже, чем готовый китайский адаптер. Китайскую плату я вытащил, измерил её габариты и стал изучать MIDI-стандарт и удачные MIDI-проекты в открытом доступе.
Рис.3 Адаптер USB-MIDI в корпусе и с кабелями.
На момент написания этой статьи мне известны несколько интересных проектов:
Принципиальная электрическая схема платы
Сердцем моего MIDI2USB адаптера стал 8-битный микроконтроллер EFM8UB20F64G фирмы Silicon Laboratories. Мне он очень нравится, и я использую его везде, где могу. Этот контроллер является преемником (после ребрендинга) контроллера С8051F380, который пришёл на смену легендарному C8051F320 – удачной разработке фирмы Cygnal, которую в 2003 купила SiLabs.
Перечислю свои аргументы в пользу микроконтроллера EFM8UB20F64:
Оптрон – это второй по важности компонент в адаптере. Я решил взять Sharp PC900V, потому что именно он указан в рекомендуемой схеме MIDI-спецификации. Особенность этого оптрона – быстрые времена включения и выключения (1мкс и 2мкс), а также наличие цифрового выхода. Но есть и недостатки – большие размеры микросхемы (7х10мм) и выгорание на 50% через 5 лет эксплуатации. Габариты оптрона не позволили разметить все компоненты на одной стороне платы. Ещё мне не хотелось отказываться от разъёма MIDI, который занимал много места.
Рис.4 Задняя сторона платы с оптроном PC900V и светодиодами. Фото автора.
Выходной каскад собран по рекомендованной стандартом схеме на логической микросхеме 74LVC2G04, состоящей из двух инверторов. Основная цель этого компонента – преобразование уровней логических сигналов из 3В => 5В и обеспечение выходного тока не менее 10 mA.
Остальные компоненты выполняют вспомогательные функции и не оказывают существенного влияния на работу устройства. Резисторы, конденсаторы, диоды и светодиоды могут быть заменены в разумных пределах. Вместо разъёма mini-USB можно поставить micro-USB или сделать штыревой разъём под пайку кабеля, как делают китайцы. Разъём MIDI занимает много места и в корпус не помещается, поэтому он используется только в версии адаптера без корпуса. Сигналы MIDI-IN и MIDI-OUT выведены на штыревой разъём для распайки кабеля. В общем, следовало бы скорректировать расположение светодиодов и разъёмов для их оптимального расположения в корпусе.
Рис.5 Отладочная и коробочная версии адаптера MIDI2USB. Фото автора.
Общий ток потребления не превышает 50 mA. Он складывается из следующих частей:
Программная часть
Создание программного обеспечения для оборудования – важный и ответственный этап разработки. К счастью, во всех современных операционных системах есть драйверы для MIDI устройств, подключаемых к порту USB. Задача сокращается и требуется написать только прошивку (firmware) для адаптера.
Обычно я использую Keil uVision PK51 совместно с Configuration Wizard 2, иногда IAR Embedded Workbench, и совсем редко SiLabs Simplicity Studio. Каждая среда имеет достоинства и недостатки. В этом проекте я решил использовать IAR, потому что хотелось иметь «С с классами». Кроме того, компилятор IAR предоставляет доступ ко всем битам системных регистров. Например, P2_bit.B0 = 1; или PCA0MD_bit.WDTE = 0;
Нет необходимости использовать «магические константы» или многоэтажные битовые выражения, которыми пестрят CMSIS или «SI_EFM8UB2_Register_Enums.h». Увы, весь этот функционал объявлен в файле «ioEFM8UB20F64G.h», который оказался не совместим с библиотеками «si_toolchain.h» (например, макрос B0..B3). Переводить проект в Keil uVision PK51 я не стал, а просто писал совместимый код на С для всех сред разработки.
Код проекта разделён на несколько функциональных частей
Библиотека фирмы SiLabs для USB-устройств состоит из набора подпрограмм, которые компилируются и включаются в проект в зависимости от настроек в файле «usbconfig.h». Это очень напоминает библиотеку «libusb, V-USB», которую можно встретить в коде для микроконтроллеров фирмы Atmel (ныне Microchip). Надо отметить, что у SiLabs получилась хорошая и удобная библиотека с точки зрения программиста.
Важную роль в работе любого USB-устройства играют описатели (дескрипторы) устройства, конфигурации и интерфейсов. С помощью этих дескрипторов устройство сообщает хосту (компьютеру) о своих требованиях, возможностях, параметрах и т.д. Функция обработки запросов дескрипторов обычно имеется в каждой USB-библиотеке, а от программиста требуется лишь правильно заполнить структуры данных, содержащих эти дескрипторы.
Обо всех дескрипторах, топологии и терминологии подробно и детально написано в стандарте «Universal Serial Bus Device Class Definition for MIDI Devices». А для быстрого старта и погружения в тему достаточно изучить информацию, которую предоставляют программы «usbview.exe» из пакета Windows Driver Kit 7600 или «USB Descriptor Dumper». Кое-что можно даже скопировать к себе в программу.
Рис.6 Информация о дескрипторах в программе «usbview.exe»
Дескрипторы и соответствующие массивы и структуры размещается во флэш-памяти микроконтроллера (сегмент кода), потому что эти данные не изменяются (константы). Хранение констант во флэш-памяти – типичный программистский приём, который позволяет экономить оперативную память.
Следует обратить внимание на поля Vendor_ID и Product_ID в структуре описателя устройства. Это пара чисел для уникальной идентификации USB-устройства. Чтобы получить для своего устройства такой номер надо заплатить денег организации USB-IF или направить запрос владельцу существующего Vendor_ID (производителю микроконтроллеров) и получить Product_ID. А можно, например, как китайцы использовать чужие наиболее подходящие VID & PID. Для открытых проектов есть вариант получить бесплатно Product_ID.
Ещё один момент, на который следует обратить внимание при разработке USB-устройств звукового класса MIDI Streaming – это разъёмы (Jack). Разъёмы – это воображаемые (виртуальные) сущности для описания топологии и связей между устройством и хостом. Они бывают входные (In Jack) и выходные (Out Jack), внутренние (Embedded) и внешние (External). У каждого разъёма есть уникальный идентификатор Jack_Id (число от 0 до 15). Выходные разъёмы содержат номер источника Source Id, т.е. номер разъёма для подключения. Наконец, поверх образованных каналов (потоков ввода и вывода) работают звуковые конечные точки (audio end-point, EP). Это почти обычные Bulk EP, у которых в дескрипторах есть информация о привязке к разъёму.
Рис. 7 Разъёмы Jacks и виртуальные потоки в USB (класс MIDI).
Обмен данными в звуковом USB-устройстве класса MIDI заключается в передаче 32-битных пакетов (USB-MIDI Event Packet). Из MIDI-устройства приходят сообщения длиной 1, 2 или 3 байта. При передаче по USB к этим байтам добавляется головной байт с номером кабеля и кодом команды. Если пакет получается менее 4 байт, то он дополняется 0. В текущей версии прошивки я не заполняю нулями до 32-битной границы. Это работает. Вопрос остаётся открытым.
Например, в кабеле №1 команда нажатия клавиши Note On (время передачи 960us) преобразуется в следующий пакет:
MIDI: 0x90 0x60 0x7f => USB: 0x19 0x90 0x60 0x7f
Рис.8 Схема пакета USB-MIDI Event Packet из USB спецификации.
Прямое и обратное преобразование выполняются функциями MIDI2USB() и USB2MIDI (). В этих функциях применён автомат состояний, когда по мере поступления входных данных функция переходит из состояния ожидания (IDLE) в состояние приёма команд (STATUS), а затем в состояние приёма данных (DATA), и, наконец, отправка данных с возвратом в исходное состояние ожидания.
В MIDI-протоколе байты данных в сущности являются 7-битными (0..127). У них всегда старший 8-ой бит установлен в 0. Команды (байты статуса) наоборот всегда идут с установленным старшим битом в 1, т.е. имеют значения от 128 до 255.
Рис. 9 Типы байтов в MIDI-протоколе.
Все схемы и исходные тексты, а также готовая прошивка находятся у меня в git-хранилише. Лицензия MIT.
Программное обеспечение
После монтажа платы следует запрограммировать микроконтроллер. Для этого можно использовать или фирменный/клон SiLabs C2 Debug Adapter, или J-Link v10+ (с поддержкой EFM8), или прошитый на заводе bootloader (ревизия Rev-B), или, наконец, Arduino с соответствующим скриптом. Для проверки и отладки MIDI-сообщений очень помогает программа MIDI-OX.
Рис.10 Интерфейс программы MIDI-OX.
Если работать с Cubase, то следует установить Asio-драйверы, потому что при использовании DirectSound и DirectInput наблюдается задержка между нажатием клавиши и воспроизведением ноты. Задержка не связана с аппаратной частью и является особенностью реализации ОС. В общем, устройство отлично выполняет свои функции с инструментом Casio CDP-100.
Рис.11 Интерфейс программы Cubase 5.
Экспериментальные прошивки генерировали максимально возможный поток нот и других MIDI-команд. Какофония была ужасная, но всё работало, как задумано. А с помощью MuseScore 3.2 можно записывать и воспроизводить mid-файлы.
Результаты работы
Решение применить 8-битный микроконтроллер EFM8UB20 кому-то может показаться спорным. Конечно, есть и другие варианты и контроллеры. Альтернативный путь – это выбрать сугубо аппаратное решение на преобразователе CH345 и сделать устройство по рекомендованной китайцами референс-схеме. Но мой вариант универсальный, т.к. позволяет изменить прошивку, добавить нужный функционал или исправить найденные ошибки. В конце концов я получил знания, опыт и моральное удовлетворение от законченного проекта. И, наконец, я дописал статью, а вы её дочитали.