Множество модулей Python OSC - какой из них использовать?

Open Sound Control (OSC) - это протокол для связи между компьютерами, звуковыми синтезаторами и другими мультимедийными устройствами, оптимизированный для современных сетевых технологий. Особенно часто используется OSC с MAX / MSP-что на самом деле я и делаю, используя OSC с Python для разговора с другой подсистемой в MAX.

есть куча модулей python, которые поддерживают OSC. Отличный. И все они утверждают, что они просты, полезны и совершенны. Рискуя переходит в субъективная территория, какие варианты использования предлагает ваш опыт для следующих модулей?

Я полагаю, что простая реализация послужит мне лучше всего, так как у меня есть только поверхностное знакомство с OSC. И я использую Python 2.7.

5 ответов


я использовал pyOSC с большим успехом на OSX. Код не находится в стадии разработки, но это, скорее всего, связано с его стабильностью и простотой. Я коротко попробовал txosc и это может потребовать дополнительного тестирования.

мое использование pyosc ограничено, но оно работает хорошо. например.

import OSC
c = OSC.OSCClient()
c.connect(('127.0.0.1', 57120))   # connect to SuperCollider
oscmsg = OSC.OSCMessage()
oscmsg.setAddress("/startup")
oscmsg.append('HELLO')
c.send(oscmsg)

Это не совсем то, что задал вопрос, но я думаю, что здесь стоит упомянуть: одна раздражающая вещь о различных модулях Python OSC заключается в том, что большинство работает с Python 2.x или С Python 3.x , но не, что означает, что вам, возможно, придется изменить базу кода и переписать часть вашего приложения в будущем.

единственный, который я нашел, который нацелен на оба Python 2.x и 3.х Pyliblo, который на самом деле является оберткой для C библиотека Liblo. Liblo был специально протестирован для работы с Pd и SuperCollider (см. Примечание В конце его главной страницы), что меня больше всего заботило при использовании таких библиотек... Недостатком Liblo является то, что немного сложнее работать с MS Windows, потому что он поддерживает только потоки POSIX (pthreads), но не собственный API потоков win32, поэтому вам нужна библиотека эмуляции, как описано вhttp://liblo.sourceforge.net/README-platforms.html. Но ты можешь. также скомпилируйте его с отключенной потоковой передачей в Windows.


Я использую pyOSC в течение многих лет... и "я был там", когда он мигрировал с Python 2 на 3. Что ж... если я не помню хорошо, я попросил сопровождающего в тот момент (Артем Багинский) сделать это!

теперь есть две страницы, на которых размещен pyOSC... и, что касается вашего вопроса, одна из страниц (самая старая) хост-версия Python2. И тот, что в Github (что он тоже старый и больше не развивается), версия Python3.

Я не уверен в версиях pyOSC, потому что OSC.py журнал изменений ничего не говорит о версии Python. Может быть, это не правильно docummented.

pyOSC 0.3.5 (Python2):https://trac.v2.nl/wiki/pyOSC

pyOSC 0.3.6 (Python3):https://github.com/ptone/pyosc

Как сказал ptr, это очень легко реализовать. Я использую для подключения игрового движка Blender с PureData.


для всех, кто сталкивается с этим вопросом stackoverflow каждый раз, когда они ищут реализацию python OSC и кому нужна рабочая реализация OSC для Python 3 – я могу подтвердить, что osc4py3 работает хорошо и хорошо документирован.

мои результаты голосования от 22 Янв 2018:

pyOSC: похоже, не поддерживается, и я не смог найти рабочую версию Python3, некоторые ссылки, которые я нашел на версии, которые утверждали, что были обновлены для python3, были сломанный.

aiosc: работал в тестировании (и казался классной реализацией), но по какой-то причине он потерпел неудачу с ошибкой "слишком много открытых файлов" через несколько секунд в нужной мне полосе пропускания.

osc4py3: установлен с pip, хорошо работал и дал мне нулевые проблемы примерно с тысячью сообщений в секунду, если я убедился, что вызываю osc_process() после каждого сообщения.

там может быть другая версия OSC там это особенно хорошо разработано для py3k и что больше людей используют, но поскольку поле все еще немного непрозрачно, я чувствовал, что это, вероятно, самое подходящее место для этого. Надеюсь, это сэкономит кому-то еще немного времени.


Я просто хочу упомянуть, что недавно я начал новую реализацию с целью чистого кода и поддержки python2.7 и python3 (только проверено 3.6, но основной код не использует ничего конкретного для него). Его можно найти в https://pypi.org/project/oscpy/ и https://github.com/tshirtman/oscpy Если вы заинтересованы, он еще не имеет расширенного сопоставления адресов (но я не уверен, сколько людей на самом деле используют это), но я был осторожен в сохранении код чистый и документированный. Это лицензия MIT.