Адаптеры USB Midi Кабели
Разъемы: USB 2.0 (am) — USB 2.0 (bm), длина кабеля (компьютерные кабели): 7.50 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель HAMA USB — USB-B (00045024)
предназначен для подключения синтезатора или MIDI — клавиатуры к любому компьютеру или ноутбуку
Самовывоз, Почта РФ, Курьером, Логистическая компания
Интерфейс (кабель) USB — MIDI
Длина кабеля (компьютерные кабели): 0.10 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Переходник VCOM USB — 2xPS/2 (VUS7057) 0.1 м
M-AUDIO MidiSport UNO USB Внешний USB MIDI интерфейс по выгодной цене
Самовывоз, Почта РФ, Курьером, Логистическая компания
M-AUDIO MidiSport UNO USB Внешний USB MIDI ин.
2 входа, 2 выхода-MIDI интерфейс (32×32 MIDI каналов) ● MultiPlat ТМ доступны для 32-битных и 64-битных платформ Windows, ● USB 2.0 для высоко-скоростного соединения ● Plug&play для Mac и Windows платформ ● Cовместимый с Windows XP, Vista (32-бит)
Самовывоз, Почта РФ, Курьером, Логистическая компания
ICON MIDI Port 2 Кабель USB — MIDI (2 входа.
USB-совместимый MIDI-интерфейс. 4 MIDI порта: конфигурации 1 вход / 3 выхода, 2 входа / 2 выхода, 4 выхода. Автоматическое распознавание режимов MIDI входа/выхода. Возможно одновременное использование нескольких конвертеров MIDIFLEX4 для увеличения количества MIDI-порто.
Самовывоз, Почта РФ, Курьером, Логистическая компания
Nektar MIDIFlex4 USB MIDI интерфейc
Разъемы: USB 2.0 (am) — USB 2.0 (bm), особенности: позолоченные контакты, ферритовые кольца, экранированный кабель, длина кабеля (компьютерные кабели): 1.80 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Defender USB — USB (USB04-06PRO)
Тип: переходник, разъемы: USB 2.0 (af) — microUSB (bm), особенности: позолоченные контакты
Самовывоз, Почта РФ, Курьером, Логистическая компания
Переходник HAMA USB — microUSB (00078426)
Разъемы: USB 2.0 (am) — USB 2.0 (bm), длина кабеля (компьютерные кабели): 1.80 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель NingBo USB — USB-B (USB2.0-AM-BM)
Внешний (USB) MIDI интерфейс: 1 вход, 1 выход, компактный, MIDI-кабель в комплекте с разъёмами (5 DINmale)-1,7 метра + 70 см USB, Windows 98 SE, 2000, ME, XP, Macintosh Mac OS 8.6 и выше
Самовывоз, Почта РФ, Курьером, Логистическая компания
M-Audio MidiSport UNO USB Внешний (USB) MIDI.
Тип: переходник, разъемы: USB 3.1 (af) — USB 3.1 Type-C (m), особенности: позолоченные контакты
Самовывоз, Почта РФ, Курьером, Логистическая компания
Переходник HAMA USB — USB Type-C (00135712)
Разъемы: USB 2.0 (am) — USB 2.0 (bm), длина кабеля (компьютерные кабели): 1.80 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель HAMA USB — USB-B (00029099)
Тип: кабель, разъемы кабеля: USB 2.0 Type C (m) — USB 2.0 Type C (m), длина кабеля: 0.75 м, максимальный ток: 3 А
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель HAMA USB Type-C — microUSB (00135719)
M-Audio MidiSport UNO USB — самый компактный интерфейс серии Midisport
Самовывоз, Почта РФ, Курьером, Логистическая компания
MIDI-интерфейс M-Audio MidiSport UNO USB
тип: кабель, разъемы кабеля: USB 2.0 (am) — microUSB (bm), длина кабеля: 1 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель WK USB — micro USB (RC-050m)
Разъемы: USB 2.0 (am) — miniUSB (bm), длина кабеля (компьютерные кабели): 1 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Buro USB — miniUSB (USB2.0-M5P-1)
Разъемы: USB 2.0 (am) — USB 2.0 (bm), длина кабеля (компьютерные кабели): 5 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель HAMA USB — USB-B (00029195)
Конвертер USB 3.0 —> HDMI
Самовывоз, Почта РФ, Курьером, Логистическая компания
Переходник USB — HDMI Cablexpert A-USB3-HDMI-.
Peavey PV 10′ MIDI CABLE 3-х метровый MIDI кабель
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель MIDI PEAVEY PV 10 MIDI CABLE
Производитель: CQITeng (Китай). Гарантия: 12 мес. В нашем интернет-магазине можно купить отличные товары по доступной цене. Идеальное соотношение цены и качества
Самовывоз, Почта РФ, Курьером, Логистическая компания
Переходник из HDMI в VGA. Не работает с PlayS.
Адаптер длиной 10 см предназначен для подключения к смартфонам, планшетам, ноутбукам с разъёмом USB Type-C различных периферийных устройств. Это могут быть клавиатуры, мыши, модемы, внешние диски и т. д. Пропускная способность интерфейса 0,48 Гбит/с. Экранирование позво.
Самовывоз, Почта РФ, Курьером, Логистическая компания
Переходник Atcom USB OTG — USB Type-C (АТ4716.
тип: кабель, разъемы кабеля: USB 2.0 Type C (m) — USB 2.0 (am), длина кабеля: 1 м, максимальный ток: 2 мА
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Qumo USB — USB Type-C (Chameleon 10w)
Разъемы: USB 2.0 (am) — microUSB (bm), особенности: плоский кабель, длина кабеля (компьютерные кабели): 1 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Defender USB — microUSB (USB08-03P)
INVOTONE ACMIDI1002 — MIDI кабель, длина 2 м по выгодной цене
Самовывоз, Почта РФ, Курьером, Логистическая компания
INVOTONE ACMIDI1002 — MIDI кабель, длина 2 м
Разъемы: USB 2.0 (am) — USB 2.0 (am), особенности: ферритовые кольца, длина кабеля (компьютерные кабели): 1.80 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Atcom USB — USB (AT6614) 1.8 м
Тип: кабель Разъемы кабеля: USB 2.0 (am) — USB 2.0 (bm)
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель USB 2.0 Тип A — B iFi Audio Accessory.
Разъемы: USB 2.0 (am) — microUSB (bm), длина кабеля (компьютерные кабели): 1.80 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Defender USB — microUSB (USB08-06)
тип: переходник, разъемы кабеля: USB 2.0 (am) — microUSB (bm)/USB Type-C (m), длина кабеля: 1 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Переходник Xiaomi USB — microUSB / USB Type-C.
USB адаптер AF-BM по выгодной цене
Самовывоз, Почта РФ, Курьером, Логистическая компания
USB адаптер AF-BM
Переходник предназначен для зарядки современного мобильного оборудования USB Type-C с помощью устаревшего зарядного устройства с разъёмом microUSB. Также подходит для подключения различных мобильных устройств USB Type-C к порту USB компьютера старым кабелем USB A — micr.
Самовывоз, Почта РФ, Курьером, Логистическая компания
Переходник Atcom MicroUSB — USB Type-C (АТ810.
USB-кабель «W Cable 3 в 1» с разъемами micro-USB и Lightning, USB type-C подходит для зарядки практически любого смартфона и планшета на базе Android или Apple. USB-кабель от бренда XOOPAR изготовлен из прочного специального материала, который не запутывается и не переп.
Самовывоз, Почта РФ, Курьером, Логистическая компания
USB-переходник «XOOPAR W CABLE 3 в 1»
Разъемы: USB 2.0 (am) — USB 2.0 (af), особенности: позолоченные контакты, экранированный кабель, длина кабеля (компьютерные кабели): 1.80 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Atcom USB(m) — USB(f) (AT3688) 1.8 м
тип: переходник, разъемы кабеля: USB 2.0 (am) — microUSB (bm)/USB Type-C (m), длина кабеля: 0.30 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Переходник Xiaomi USB — microUSB / USB Type-C.
Кабель-адаптер USB AM — COM port 9pin способен в значительной мере расширить коммуникационные возможности любого современного компьютера. Он сделан из высококачественных материалов и с применением современных технологий литья. Для защиты о коррозии, оба штекера имеют хр.
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель VCOM USB — DB9 (VUS7050) 1.2 м
Кабель для PicoLCD USB 5 pin to 5 pin cable — 200mm cable (
8 in) — end_1 is 0.1″ plug (connects to the USB-LCD) — and_2 is 0.1″ (connects to internet PC USB header) . Note: On the motherboard USB header only one row (1×5) will be used, the 2nd row is left open)
Самовывоз, Почта РФ, Курьером, Логистическая компания
Адаптер, переходник mini-box CAB-USB-5pin-5pi.
Тип: MIDI интерфейс для подключения через шину USB для PC и Mac MIDI интерфейс: 1 х 1 вход/выход, MIDI интерфейс (16 х 16 MIDI каналов) Питание: USB Комплектация: MIDISPORT 1×1 USB MIDI интерфейс, MAudio MIDISPORT Series CDROM программное обеспечение для Windows и Macin.
Самовывоз, Почта РФ, Курьером, Логистическая компания
USB MIDI интерфейс M-AUDIO MIDISPORT 1×1 USB
Behringer LINE2USB — линейный стерео USB-аудиоинтерфейс (кабель), 44.1кГц и 48 кГц, длина 2 м. по выгодной цене
Самовывоз, Почта РФ, Курьером, Логистическая компания
Behringer LINE2USB — линейный стерео USB-ауди.
тип: кабель, разъемы кабеля: USB 2.0 (am) — USB 2.0 (af), длина кабеля: 3 м, ферритовые кольца, позолоченные контакты
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Defender USB — USB (USB02-10PRO)
Разъемы: USB 3.1 Type-C (m) — USB 3.1 (m), длина кабеля (компьютерные кабели): 1 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Buro USB — USB Type-C (BHP USB3-TPC 1)
тип: кабель, разъемы кабеля: USB 2.0 (am) — miniUSB (bm), длина кабеля: 3.20 м, позолоченные контакты
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Eagle Cable USB — miniUSB
Разъемы: USB 2.0 (am) — USB 2.0 (bm), особенности: позолоченные контакты, экранированный кабель, длина кабеля (компьютерные кабели): 1.80 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Atcom USB-A — USB-B (AT3786) 1.8 м
Кабель-переходник USB-CM—USB-CF+audio по выгодной цене
Самовывоз, Почта РФ, Курьером, Логистическая компания
Характеристики: Партномер: CCB-mUSBp1m интерфейс: USB 2.0 тип кабеля: AMmicroBM длина: 1
Самовывоз, Почта РФ, Курьером, Логистическая компания
USB кабель AMmicroBM 1 м CCB-mUSBp1m
Переходник от бренда Exployd — это переходник, у которого с одной стороны разъем, подключающийся к смартфонам Айфон, с другой — Type-C. Адаптер подключается к iPhone, iPad или iPod с разъёмом Lightning 8 pin к кабелям и зарядным устройствам Type-C для подзарядки и синхр.
Самовывоз, Почта РФ, Курьером, Логистическая компания
Переходник OTG сTypeC (F) на Lightning Exploy.
Разъемы: USB 2.0 (am) — USB 2.0 (bm), особенности: ферритовые кольца, длина кабеля (компьютерные кабели): 5 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Buro USB — USB-B (USB2.0-AM/BM-5M-MG)
Разъемы: USB 2.0 Type-C (m) — USB 2.0 (am), длина кабеля (компьютерные кабели): 1 м
Самовывоз, Почта РФ, Курьером, Логистическая компания
Кабель Defender USB Type-C — USB (USB09-03PRO.
Источник
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 в корпусе и с кабелями.
На момент написания этой статьи мне известны несколько интересных проектов:
- Схема из документации на чип CH345 фирмы «Nanjing Qinheng Microelectronics».
- Старые проекты на микроконтроллерах Atmega с программной реализацией протокола USB в режиме только Low Speed. А начиная с Windows 7 для USB-устройств типа Audio Class требуется минимум режим Full Speed.
- Библиотека MIDIUSB для плат семейства Arduino с аппаратной поддержкой USB-интерфейса (Atmega32u4, Cortex-M), а также Maple и т.д.
Электрические принципиальные схемы во всех проектах содержат много типовых фрагментов, основанных на рекомендациях стандарта MIDI. Поэтому оставалось выбрать микроконтроллер с поддержкой USB режима Full Speed, найти в продаже оптрон PC900V и розетку DIN-5 (MIDI).
Принципиальная электрическая схема платы
Сердцем моего MIDI2USB адаптера стал 8-битный микроконтроллер EFM8UB20F64G фирмы Silicon Laboratories. Мне он очень нравится, и я использую его везде, где могу. Этот контроллер является преемником (после ребрендинга) контроллера С8051F380, который пришёл на смену легендарному C8051F320 – удачной разработке фирмы Cygnal, которую в 2003 купила SiLabs.
Перечислю свои аргументы в пользу микроконтроллера EFM8UB20F64:
- удобство разработки ПО, которое выражается в наличии быстрых и простых в использовании GPIO, SPI, UART, USB, PCA;
- улучшенное 8051-ядро (1-2 такта на команду, 48MIPS), изменение частоты «на лету»;
- встроенный регулятор напряжения, толерантность выводов к +5В, ток до 100 мА;
- встроенный точный тактовый генератор с калибровкой от USB-хоста (± 0.25%);
- наличие библиотек USBXpress, VCPXpress, USB Device API и примеры для быстрого старта;
- чистая errata.
Программировать этот контроллер приятно, т.к. регистров мало и можно сосредоточиться на решении прикладной задачи. Увы, арифметические операции (особенно 32-битные) выполняются медленно, но в остальном EFM8 хорош. Разработка программного обеспечения для USB-устройств – это не простая задача. И тут есть главное преимущество контроллеров SiLabs – это библиотеки USBXpress, VCPXpress, USB Device API. Даже фирма Texas Instruments в своих платах SmartRF использует контроллеры C8051F320.
Оптрон – это второй по важности компонент в адаптере. Я решил взять 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. Он складывается из следующих частей:
- микроконтроллер, 15mA;
- три светодиода, 15mA (3х5mA);
- микросхема 74LVC2G04, 10 mA;
- оптрон PC900V, 10 mA.
Двухслойная печатная плата была изготовлена американцами в OSH Park, толщина 1.6мм, медь 0.035мм, материал FR-4.
Программная часть
Создание программного обеспечения для оборудования – важный и ответственный этап разработки. К счастью, во всех современных операционных системах есть драйверы для 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 я не стал, а просто писал совместимый код на С для всех сред разработки.
Код проекта разделён на несколько функциональных частей
- В файле «main.c» находится точка входа, объявления глобальных переменных, вызов инициализация периферии и главный цикл программы.
- В файл «init.c» содержит настройку тактирования, портов, UART и его прерываний.
- В файле «descriptors.c» можно найти USB-дескрипторы для устройства типа Audio Class.
- В файле «midi.c» находятся две функции для преобразования MIDI-сообщений в USB-события и обратно. Используется автомат состояний.
- Файл «usbconfig.h» содержит макросы и определения (#define) для настройки режимов работы библиотеки USB Device API.
Посмотрим на функцию main() с настройкой портов, периферии и главным циклом.
Библиотека фирмы 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 и сделать устройство по рекомендованной китайцами референс-схеме. Но мой вариант универсальный, т.к. позволяет изменить прошивку, добавить нужный функционал или исправить найденные ошибки. В конце концов я получил знания, опыт и моральное удовлетворение от законченного проекта. И, наконец, я дописал статью, а вы её дочитали.
Источник