_noise писал(а):Ты кому на какой вопрос ответил, или в чём смысл остальной части месседжа после "не понимаешь"?
Тебя хотел просветить, но видимо это безнадежно )
khomych писал(а):или пройдет чтото наподобии получил байт-отправил байт?
По-моему проще так для начала сделать, точнее не байт а миди команду полную.
Схема устройства простая: http://read.pudn.com/downloads133/sourc ... -zener.png только надо пустить миди входной поток на ногу 2 через оптрон или если не страшно напрямую через резистор 150 Ом, а прога тоже не особенно хитрая от пакета v-usb-midi взять и дописать немного. Может немного позже и прогу напишу, хотя скорее у меня будет не переходник а миди контроллер с разъёмом midi фру, чтобы синтезатор можно было подключить и команды контроллера и клавы не конфликтовали.
Не знаю как сделать, видимо придётся команды с синтезатора сразу же пересылать, а от контроллера в очередь ставить.
я тоже хотел сделать в моем миди контроллере (он на ATMEGA16 <>ЮСБ) сделать вход МИДИ для подключения клавиш, но меня терзают смутные сомнения, а вдруг контроллер не справится и т.д. все таки контроллер и так работает на пределе. каждая комманда на счету, дополнительные прерывания использовать не рекомендуется (не проверено). у меня основная заминка в клавишах. они у моего сумасшедшего товарища. забрать проблематично. он включает драм машину и ходит по комнате кругами......
я согласен, что надо "ловить" полную миди посылку и потом уже отправлять. кто нибудь, промониторьте, что именно клавиши шлют на миди. нет ли "лишних" комманд. типа ДАТА или СИНХРОНИЗАЦИЯ...
или придется фильтровать команды. типа все кроме noteon, noteoff, controller change.
или делать по другому. если у принятоно байта старший бит == 1, значит это начало МИДИ команды, ставим его первым, потом ждем еще два байта со старшим битом равным 0 и шлем куда надо....
Возникла мысль: интересно как воспримет компьютер, если всё-таки побайтно высылать миди сообщение, то есть к примеру намеренно поставить между каждым байтом какую-то задержку и посмотреть что выйдет. Если сработает, тогда получается что переходник делается проще простого.
Хотел было сделать похожий переходник на базе одного мк и библиотеки V-USB, позже выяснилось, что V-USB способна только на 6400 бит в секунду, так что теперь понятно почему в UART2MIDI автор поставил FT232RL для организации USB интерфейса
khomych писал(а):Avarges, а откуда такие сведенья про 6400 бит/с? хотя я подозревал, что у V-USB 31250 б/c нет..... я в печали...
Прочитал в статье Рюмика, дальше расчёт простой: вызов USBPool минимальный интервал выставляется в конфиге: 10мс, за один раз можно послать 8 байт, получается 64 бита 100 раз в секунду можно послать.
Также у меня пошли большие сложности, когда я запустил таймер1 с прерыванием 1800 Гц для целей динамической индикации, в общем с юсб функционалом это дело как-то не дружит.
Вариант который испульзую я. Переходник MIDI-USB на микрухе CP2103. Стоит конечно же немного дороже FT232, но зато не требует никаких лишних телодвижений ввиде драйверов и прочей лабуды. А в винде устанавливается транслятор UART-MIDI, который бесплатно качается с сайта Roland. Вот ссыль http://ftp.roland.co.jp/support/en/down ... _wxp2k.zip. А потом MidiYoke. И никаких заморочек с вопросами несовместимости скорости и т.д. Работает на ура уже миниму год.
mr_gard писал(а):Интересно... Попробую PL2303 прикрутить - авось получится... Никто еще не пробовал?
Хочу поделиться опытом создания MIDI USB кабеля на PL-2303.
В свое время, так как в Windows 7 не было драйвера Game порта для моей звуковой карты Sound Blaster Live!, из-за того, что Microsoft отказалась от его поддержки в ОС старше XP, я решил подключить синтезатор к USB порту. Возникла идея сделать MIDI USB кабель на основе PL-2303. Эта микросхема была в старом кабеле от телефона Samsung X100. Я долго пытался переключить PL 2303 на скорость 31250 для работы с MIDI, уже было хотел все бросить, упорно не работала на такой скорости, но потом мне удалось рассчитать и подобрать делитель по статье. В итоге все заработало как надо)) и до сих пор работает стабильно без тормозов и косяков, получился хороший MIDI USB кабель)
Кабель MIDI USB на PL-2303
Чтобы все работало, необходимо поставить драйвер, скачав с сайта производителя Prolific. После установки, в реестре нужно сделать запись в ветке: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ser2pl]
Теперь в программах, при выборе скорости порта 31250 или 38400, микросхема PL 2303 будет работать как надо для MIDI, на 31250.
Для передачи MIDI данных с виртуального COM порта в виртуальный MIDI порт (я использовал MIDIYoke (Windows 7 x32), LoopBe1 (Windows 8 x64)), который, как обычный, можно открывать в музыкальных программах. Я использовал драйвер Roland Serial MIDI driver (работает на Windows 7 x32, для ОС Windows 8 x64 использовал прогу автора темы на форуме).
Схема моего преобразователя MIDI в UART для кабель MIDI USB на PL-2303
Использовал оптрон 6N137, быстрый с низким током, как раз для MIDI, сделал 3 порта MIDI IN, MIDI OUT, MIDI THRU и два светодиода для индикации. Собрал в корпусе из под видео кассеты VHS, туда вошла и плата от кабеля PL-2303 и плата преобразователя MIDI UART.