Comments (10)
@artfwo I assume that most people would/should be using pymonome instead?
generally, yes, reasons are: there's a tutorial on grid studies, the API is a bit more pythonic, it uses the OSC protocol and so handles multiple devices gracefully.
Are there any advantages to libmonome's Python bindings over pymonome?
It doesn't need serialosc, but then again, i don't know if that's an advantage - the rest of "bindings" we have on grid studies also depend on serialosc.
For extreme cases you can always use pyserial with standardised event loops, which I think I would prefer over libmonome's module.
from libmonome.
i'd be fine dropping it, but i'm also not aware if anyone is actually using it. as far as i know @artfwo is the foremost monome-in-python user :)
from libmonome.
@artfwo Do you think there would be an advantage in refresh rate for libmonome's Python bindings over pymonome?
from libmonome.
@simonvanderveldt when directly accessing devices through libmonome you don't hit the the UDP buffer size limits (which you will hit with serialosc), you will hit the serial i/o buffer though. in practice the framerates in both cases can go crazy high (beyond visible refreshing), for example i currently run the arc at 100 fps through serialosc/pymonome in my live setup, but if I set the framerate to 1000 it will still work - actual framerate will be probably lower due to some UDP packets skipped, but i won't be able to notice this with naked eye.
from libmonome.
@artfwo Thanks for the explanation, sounds like pymonome is plenty fast :)
Unless anything else comes up it seems like it should be fine to drop the Python bindings I guess? Shall I try to create a PR or would you prefer that you do it?
from libmonome.
@simonvanderveldt please do so if you like, sorry, i have somehow busy week again.
from libmonome.
i'm gonna go ahead and nuke the python bindings and monomeserial
from this library, which will henceforth be focused on offering a clean C binding to serial devices. (since the other tools handle the other jobs better, and are better maintained.)
from libmonome.
on second thought, may as well leave the Cython bindings. it does offer a lightweight means of directly controlling the serial device, handling protocol detection/rotation/etc.
from libmonome.
@catfact an alternative to Cython bindings is pyserial that provides a more pythonic API and is compatible with standard Python event loops (pyserial-asyncio), but the downside is of course that you have to write a grid protocol layer on top of it.
from libmonome.
Please don't nuke the python bindings:
- It works works perfectly with the latest python (tested on 3.9.9)
- The cython code is really minimal (without the header section which doesn't change, it's just 861 words (using
wc -w
) and 343 lines (usingwc -l
) which is hardly a maintenance burden. - It's a great place for python-centric people to grok the c-api and experiment with
libmonome
via python scripting.
from libmonome.
Related Issues (20)
- Can we get a tag for v1.1 HOT 1
- problems with event handling via python HOT 4
- Build instructions HOT 1
- Broken with liblo 0.27
- Can't get examples to work HOT 2
- Can't build with clang HOT 6
- liblo not found on OS X 10.9 HOT 8
- Checking for liblo fails HOT 6
- Homepage is not reachable HOT 1
- Compilation fails when building without udev HOT 5
- Add option to not run ldconfig (or don't run it at all?) HOT 1
- Python binding no longer gets built/fails building HOT 6
- Add pkg-config file to make it easier for other projects to use libmonome?
- macOS Mojave build failure, due to -mmacosx-version-min=10.5
- Build fails with Python > 3.6 because of old waf version HOT 3
- [Question] Difference between LED intensity and LED level all HOT 2
- OpenBSD support HOT 2
- liblo not found: macOS12.6 + M1
- `monome_event_next` sometimes produces odd results HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libmonome.