Технический опус о преобразовании 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.
Результат
Message latency: 9.65 ms
Message jitter: 1.18 ms
Хороший результат. Передача стабильная, переполнения буфера в результате преобразования 38800->31250 не происходит. Неплохой вариант миди интерфейса для любителей DIY. (Пометка! DIY конвертер по ссылке вначале я не тестировал, - частота кварца там завышена, но автор схемы уверяет, что сбоев не наблюдается, верю)
2. Беспроводное подключение. Вот она - цель.
Для этого используем Bluetooth-RS232 конвертер с одной стороны, а с другой обычный Bluetooth донгл Bluetake с ПО Bluesoleil(базовой версии из комплекта достаточно).
Не буду тратить время на описание всей инструкции по настройке, расскажу потом, если потребуется.
Результат:
Message latency: 32.04 ms
Message jitter: 6.30 ms
Для беспроводного соединения Bluetooth Class 1 с дальностью до 100м очень терпимый результат.
Фото беспроводного модуля:
п.с. обратите внимание, что все числовые показатели получены либо на serial либо midi петле, т.е. выход замкнут на вход. т.е. все значения делим пополам и получаем реальную задержку на передачу данных в одном направлении.
п.п.с оригинальный пост на технологии. мне показалось, здесь он больше к месту.
Но нет, появились новые идеи, новое применение, и тема стала вновь актуальной.
Пожалуй, это случилось тогда, когда клиенты начали требовать с уверенностью в голосе наличия 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.

Результат
Message latency: 9.65 ms
Message jitter: 1.18 ms
Хороший результат. Передача стабильная, переполнения буфера в результате преобразования 38800->31250 не происходит. Неплохой вариант миди интерфейса для любителей DIY. (Пометка! DIY конвертер по ссылке вначале я не тестировал, - частота кварца там завышена, но автор схемы уверяет, что сбоев не наблюдается, верю)
2. Беспроводное подключение. Вот она - цель.
Для этого используем Bluetooth-RS232 конвертер с одной стороны, а с другой обычный Bluetooth донгл Bluetake с ПО Bluesoleil(базовой версии из комплекта достаточно).

Не буду тратить время на описание всей инструкции по настройке, расскажу потом, если потребуется.
Результат:
Message latency: 32.04 ms
Message jitter: 6.30 ms
Для беспроводного соединения Bluetooth Class 1 с дальностью до 100м очень терпимый результат.
Фото беспроводного модуля:


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