Mnóstwo modułów OSC w Pythonie-którego użyć?

Open Sound Control (OSC) - protokół komunikacji między komputerami, syntezatorami dźwięku i innymi urządzeniami multimedialnymi, zoptymalizowany pod kątem nowoczesnych technologii sieciowych. Szczególnie powszechne jest używanie OSC z MAX/MSP -- co w rzeczywistości jest tym, co robię, używając OSC z Pythonem do rozmowy z innym podsystemem W MAX.

Istnieje kilka modułów Pythona, które obsługują OSC. Świetnie. I wszyscy twierdzą, że są proste, użyteczne i doskonałe. Na ryzyko zejścia w subiektywne terytorium, jakie przypadki użycia sugeruje twoje doświadczenie dla następujących modułów?

Przypuszczam, że prosta implementacja służyłaby mi najlepiej, ponieważ mam tylko zerową znajomość OSC. A ja używam Pythona 2.7.

Author: Wes Modes, 2014-03-03

5 answers

Używałem pyOSC z wielkim sukcesem na OSX. Kod nie jest zbytnio rozwijany, ale jest to najprawdopodobniej spowodowane jego stabilnością i prostotą. Krótko próbowałem txosc i może to wymagać dalszych testów.

Moje użycie pyosc jest ograniczone, ale działa dobrze. np.

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)
 9
Author: ptr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-04 10:18:47

To nie jest dokładnie to, co zadano pytanie, ale myślę, że warto wspomnieć tutaj: jedną irytującą rzeczą w różnych modułach OSC Pythona jest to, że większość pracuje z Pythonem 2.x lub z Pythonem 3.x , ale nie z obu, co oznacza, że być może będziesz musiał zmienić bazę kodu i przepisać część swojej aplikacji w przyszłości.

Jedyny, który znalazłem, celuje w oba Pythony 2.x i 3.x to Pyliblo , które w rzeczywistości jest opakowaniem dla biblioteki C Liblo. Liblo zostało specjalnie przetestowane pod kątem pracy z Pd i SuperCollider (patrz notatka na końcu strony głównej), na czym mi najbardziej zależało podczas korzystania z takich bibliotek... Minusem Liblo jest to, że jest nieco trudniej pracować na MS Windows, ponieważ obsługuje tylko wątki POSIX (pthreads), ale nie natywne API wątków win32, więc potrzebujesz biblioteki emulacji, jak wyjaśniono w http://liblo.sourceforge.net/README-platforms.html . ale można go również skompilować z wyłączonym wątkiem na Windows.

 6
Author: Fizz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-18 12:11:12

Używam pyOSC od lat... i "byłem tam", kiedy migrował z Pythona 2 do 3. Cóż... jeśli nie pamiętam dobrze, poprosiłem opiekuna w tym momencie (Artema Baguinskiego), aby to zrobił!

Teraz, są dwie strony, które hostują pyOSC... a jeśli chodzi o twoje pytanie, jedna ze stron (najstarsza) hostuje wersję Python2. I ta w Githubie (że też jest stara i już nie rozwijana), Wersja Python3.

Nie jestem pewien wersji pyOSC, bo OSC.py changelog nic nie mówi o wersji Pythona. Może to nie było poprawnie udokumentowane.

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

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

Jak powiedział ptr, jest to bardzo łatwe do wdrożenia. Używam do podłączenia silnika gry Blender z PureData.

 2
Author: Mario Mey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-25 02:00:52

Dla każdego, kto natrafia na to pytanie stackoverflow za każdym razem, gdy szuka implementacji OSC w Pythonie i kto potrzebuje działającej implementacji OSC dla Pythona 3-mogę potwierdzić, że osc4py3 działa dobrze i jest dobrze udokumentowane.

Moje wyniki ankiety z 22 stycznia 2018:

PyOSC : nie wydaje się być utrzymywana i nie mogłem znaleźć działającej wersji Python3, Niektóre linki, które znalazłem do wersji, które twierdziły, że są aktualizowane dla python3, zostały złamane.

Aiosc : działało w testowaniu (i wydawało się fajną implementacją), ale z jakiegoś powodu nie powiodło się z błędem "zbyt wielu otwartych plików" po kilku sekundach na przepustowości, której potrzebowałem.

Osc4py3: zainstalowany z pip, działał dobrze i dał mi zero problemów z około tysiącem wiadomości na sekundę, o ile upewniłem się, że wywołałem osc_process() po każdej wiadomości.

Może być inna wersja OSC, która jest szczególnie dobrze zaprojektowana dla py3k i że więcej ludzi używa, ale ponieważ pole jest nadal trochę nieprzejrzyste, czułem, że to prawdopodobnie najbardziej odpowiednie miejsce, aby się tym podzielić. Mam nadzieję, że oszczędzi to komuś jeszcze trochę czasu.

 1
Author: Dan McAnulty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-23 02:27:49

Chcę tylko wspomnieć, że niedawno zacząłem nową implementację, w celu czystego kodu i wsparcia dla python2.7 i python3 (tylko testowane 3.6, ale kod core nie używa niczego konkretnego do niego). Można go znaleźć na https://pypi.org/project/oscpy/ i https://github.com/tshirtman/oscpy jeśli jesteś zainteresowany, nie ma jeszcze Zaawansowanego dopasowywania adresów (ale nie jestem pewien, ile osób tego używa), ale uważałem, aby zachować czysty kod i udokumentowane. To licencja MIT.

 1
Author: Tshirtman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-09 23:31:00