Беспроводное миди или судьба rs232

k-Tracker_

Active Member
26 Мар 2008
231
61
28
Н.Новгород
www.deftaudio.ru
Технический опус о преобразовании MIDI в RS232 я хотел написать давно. Может быть даже на столько давно, что и время этого за сроком давности истекло.
Но нет, появились новые идеи, новое применение, и тема стала вновь актуальной.
Пожалуй, это случилось тогда, когда клиенты начали требовать с уверенностью в голосе наличия USB в миди контроллерах вместо привычного Midi. Не каждому сумеешь объяснить, что перейти на другой микропроцессор, изменить внутреннее ПО и провести его тестирование непростая задача. Вместе с тем, нет ничего сложного распаять примитивный USB-MIDI конвертер внутри прибора, но учитывая доступность внешних дешевых устройств да и, как бы правильнее сказать, некрасивость такого подхода, его отвергли сразу.
На смену ему пришла идея модульности в основе RS232.
Модули:
1. RS-232 <-> MIDI собственного производства. http://www.deftaudio.ru/modules/smartsection/item.php?itemid=21 DIY аналог по ссылке. http://www.pirpk.narod.ru Скорость со стороны RS232 - 38800. Буферизация и алгоритмы предотвращения переполнения буфера присутствуют. Конкретно о выборе драйвера под ОС далее.
2. Любой миди контроллер нашего производства, где привычный миди заменяем на RS232 со скоростью обмена 38800, добавляем обвязку MAX232.
3. Bluetooth <-> RS232, Сделано в Тайвань, модель http://yandex.ru/yandsearch?text=bt-232b&lr=213, стоимость на eBay ~70$+доставка. Отличительная черта в том, что конфигурируется на скорость 38800 в отличие от дешевых аналогов.
4. Bluetooth USB адаптер Bluetake BT007SX + ПО BT Soleil 2.7(из комплекта)

Драйвер:
Никакого ноу хау в использовании RS232 нет, производители музыкальных инструментов давно об этом подумали и написали драйвера, тоже давно )))
Доступны Serial Midi драйверы следующих производителей: Roland, Korg, Yamaha, Kawai. Драйвер под Windows XP, конечно, есть. Vista, Win7, WinXPx64 - увы.
Инструментом для тестирования послужил Miditest 4.6, а также фактор удобства выбора номера COM порта. К реальному COM порту была поключена loopback заглушка, которая замыкала линию transmit на receive. В конечном итоге, был выбран драйвер от Yamaha, как самый удобный.
Message latency: 9.29 ms
Message jitter: 0.99 ms

К слову у драйвера от Roland показатели чуть лучше, но, к сожалению, он не позволяет использовать виртуальный последовательный порт. А это на понадобится для беспроводного подключения далее.
Message latency: 7.10 ms
Message jitter: 0.32 ms

Использование переходника USB-RS232, тестировалось на Belkin(чип PL2303) практически не сказывается на общей задержке. Добавляется 0.3мс.

Для сравнения результат измерения EMAGIC AMT8 еще хуже:
Message latency: 13.59 ms
Message jitter: 1.40 ms


Варианты использования различных модулей:
1. Прямое подключение к COM порту либо к USB-RS232 конвертеру. Получаем миди интерфейс 1x1.
02.jpg


Результат
Message latency: 9.65 ms
Message jitter: 1.18 ms

Хороший результат. Передача стабильная, переполнения буфера в результате преобразования 38800->31250 не происходит. Неплохой вариант миди интерфейса для любителей DIY. (Пометка! DIY конвертер по ссылке вначале я не тестировал, - частота кварца там завышена, но автор схемы уверяет, что сбоев не наблюдается, верю)

2. Беспроводное подключение. Вот она - цель.
Для этого используем Bluetooth-RS232 конвертер с одной стороны, а с другой обычный Bluetooth донгл Bluetake с ПО Bluesoleil(базовой версии из комплекта достаточно).
01.jpg


Не буду тратить время на описание всей инструкции по настройке, расскажу потом, если потребуется.

Результат:
Message latency: 32.04 ms
Message jitter: 6.30 ms


Для беспроводного соединения Bluetooth Class 1 с дальностью до 100м очень терпимый результат.

Фото беспроводного модуля:
bt232_1.jpg

bt232_2.jpg



п.с. обратите внимание, что все числовые показатели получены либо на serial либо midi петле, т.е. выход замкнут на вход. т.е. все значения делим пополам и получаем реальную задержку на передачу данных в одном направлении.

п.п.с оригинальный пост на технологии. мне показалось, здесь он больше к месту.
 
Пожалуй, это случилось тогда, когда клиенты начали требовать с уверенностью в голосе наличия USB в миди контроллерах вместо привычного Midi. Не каждому сумеешь объяснить, что перейти на другой микропроцессор, изменить внутреннее ПО и провести его тестирование непростая задача.
А почему бы не посоветовать клиентам обзавестись обычным юсб-миди?
Все эти трахания с Рс232 от нежелания сделать обычный юсб>миди адаптер, вот и городится огород (.
 
General Dead,
Зачем его делать, если проще купить? eBay - от 5$ )))))))
Midi конвертер на основе rs232 - это смешно :) и никак не было целью. А вот применить BT-232, к тому же как видишь успешно, получилось. Собственно, все ради него... :pardon:
 
  • Like
Реакции: General Dead
джиттер 6,3 мс - а что делать с таким миди? разве что для управления какими-то параметрами техническими, где тайминг не важен, а для ноток неприменимо.
 
джиттер 6,3 мс - а что делать с таким миди? разве что для управления какими-то параметрами техническими, где тайминг не важен, а для ноток неприменимо.

Саш, согласен, джиттер уплыл не слабо... Хотя опять же все зависит и от величины передаваемого пакета. В Miditest он стоит на все 100%. Интересно было б посмотреть на прямое соединение двух BT232 без юсб донглов и софта вовсе. Как нибудь при случае...
 
так и сделано в п.2, читай внимательнее :dance3:
Имелось ввиду с обычным ЮСБ>МИДИ без рс232, а у тебя все вокруг УАРТА пляшет. Так что я внимательно читаю :wink:
2. Беспроводное подключение. Вот она - цель.
Для этого используем Bluetooth-RS232 конвертер с одной стороны, а с другой обычный Bluetooth донгл Bluetake с ПО Bluesoleil(базовой версии из комплекта достаточно).
 
Ничего не понял, опиши подробнее идею.
MIDI>USB -->USB>Bluetooth----Bluetooth>USB. Т.е все тоже самое как и с RS232, но вместо него ЮСБ.
Это если есть такой девайс который транслирует ЮСБ в блютуз как тот что у тебя на рисунке- RS232>Blutooth
 
MIDI>USB -->USB>Bluetooth
т.е. в этой связке MIDI>USB USB-это хост.
А ты сможешь хост написать для донгла USB>Bluetooth? Я точно нет )))))
в промежуточном UART ничего страшного нет, его скорость выше midi, появляется минимальная задержка в размере трех тактов от 12Мгц клока - -- согласись, это ни что )))) о джиттере и говорить не надо... Все задержки ползут при переходе в Bluetooth, как вариант при отсутствии второго BT232, можно две системы завязать донглами, поднять виртуальный ком порт, поверх которого тот же ямаховский драйвер. Тогда будет все ясно.
 
MIDI>USB -->USB>Bluetooth
т.е. в этой связке MIDI>USB USB-это хост.
А ты сможешь хост написать для донгла USB>Bluetooth? Я точно нет )))))
Я ж сказал это если есть такой транслятор, который туп принимает траффик с ЮСБ и транслирует его черезблютуз на приемник, т.е грубо говоря блютуз адаптеры это вместо обычного юсб шнура.
 
Я ж сказал это если есть такой транслятор, который туп принимает траффик с ЮСБ и транслирует его черезблютуз на приемник, т.е грубо говоря блютуз адаптеры это вместо обычного юсб шнура.
Универсальным такое решение не сделаешь, Bluetooth поток до 3-х Mbit/s, что даже ниже USB 1.0... Так что RS232 в моем случае более чем оправдан.
Кстати, появились совершенно копеечные Uart(9600)-BT, этого для простых контроллеров и клавиатур более чем достаточно. Надо только драйвер поправить, а такая возможность есть.
 
Bluetooth поток до 3-х Mbit/s, что даже ниже USB 1.0..
А у миди 31250бит\с ). А почему требуется минимум ЮСБ 1.1 full speed так это из-за наличия end point которых нету в low speed, емнип.
Так что RS232 в моем случае более чем оправдан.
Так я обратного и не утверждал).
 

Сейчас просматривают