Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 14:14

    jcelerier on master

    [libmapper] Enable it in config… (compare)

  • 14:13

    jcelerier on master

    add dno format dno working dno (compare)

  • 14:13
    jcelerier closed #746
  • 04:55
    thibaudk ready_for_review #746
  • 04:55
    thibaudk synchronize #746
  • 04:54
    thibaudk synchronize #746
  • Nov 29 23:37

    jcelerier on master

    [audio] Allow to disable portau… (compare)

  • Nov 29 23:35

    jcelerier on master

    [musical] Fix off by one error … (compare)

  • Nov 29 09:46
    thibaudk synchronize #746
  • Nov 26 12:46
    vincentgoudard commented #755
  • Nov 26 12:46
    vincentgoudard commented #755
  • Nov 26 12:45
    vincentgoudard commented #755
  • Nov 26 12:40
    vincentgoudard commented #755
  • Nov 26 12:40
    vincentgoudard commented #755
  • Nov 26 12:10
    avilleret commented #755
  • Nov 26 11:50
    vincentgoudard labeled #755
  • Nov 26 11:50
    vincentgoudard labeled #755
  • Nov 26 11:50
    vincentgoudard opened #755
  • Nov 26 11:50
    vincentgoudard labeled #755
  • Nov 25 09:56

    jcelerier on master

    [audio] ALSA: fix period count … (compare)

Alex Norman
@x37v
seems like the logic is inverted there
Alex Norman
@x37v

see ossia::net::create_node here: https://github.com/ossia/libossia/blob/d8699824ad1adc54ff95f3f7e1ed5e6bf509cb9a/tests/Network/OSCTest.cpp

ahh, i'm using parent->add_child as I might not know the base address.. but I guess I can get that from parent->osc_address ?

Alex Norman
@x37v

@jcelerier so i have 2 protocols, oscquery and OSC UDP (output only) .. when I update a GET only param from software, I don't see an output on OSC (but via HTTP i can see the change), but when I change it to BI or SET i do get an OSC UDP message out..
I'm trying to hunt it down but maybe you can give me a hint for where to look?

looks like osc_protocol::push .. it filters out GET but I think it should filter out SET

Alex Norman
@x37v
@jcelerier ossia/libossia#732
Jean-Michaël Celerier
@jcelerier
agh
ossia/libossia#504 strikes again :)
so, regarding that get / set thing
Jean-Michaël Celerier
@jcelerier

in the feature async/protocols, which is likely getting merged by the end of the week-end as I just have a couple remaining CI failures, you'll find

https://github.com/ossia/libossia/blob/feature/async_protocols/src/ossia/protocols/osc/osc_factory.hpp

which allows to create more configurable instantiations of the OSC protocols; right now there are two options (host / mirror) which controls how the get/set thing is handled ; "host" can do everything (as it's, in the mental model of the thing, where the "actual" parameters are, e.g. it's a synth or something like that, while "mirror" is just a controller (which is what the original osc_protocol class is) ; as such, a controller can send messages to nodes that the host advertises as "set" (from the point of view of the controller, those methods are setters) and cannot send messages to nodes that the host advertises as "get" as those are, well, getters

more schematically:

host:

/a int, get
/b int, set
/c int, bi

means that the OSC clients to that host should be able to write the following class:

class host {
 int get_a();

 void set_b(int);

 int get_c(); 
 void set_c(int);
};
Jean-Michaël Celerier
@jcelerier
(now, my personal take on this is that this is an artefact of the old jamoma j.message, j.parameter, etc etc's workings ; "oop-like" access should not be handled at the protocol level but at the UI level of whatever's using ossia instead, with the access_mode only being a metadata)
Jean-Michaël Celerier
@jcelerier
@avilleret do we still care about 32-bit ?
it seems that MSVC is having an internal compiler error but only on 32-bit :|
max 8 is 64-bit only no ?
and we don't support max 7 anymore, or do we ?
Antoine Villeret
@avilleret
hi @jcelerier, imho we can ditch 32bit builds. Puredata is still available as 32bit on Windows, but who need it ?
Jean-Michaël Celerier
@jcelerier
it's just the max build which is failing
but if you think that 32 bit windows pd is unused then yeah
Antoine Villeret
@avilleret
if it builds fine, then keep it until it fail, concerning Max, I don't care supporting Max7, so we can disable Max 32bit builds
I'll try to port more build to github-action today, without any guarantee though
Alex Norman
@x37v
@jcelerier okay cool, i'll try out this osc factory. Thanks!
Alex Norman
@x37v
@jcelerier not sure if all of these protocols should support multiplex, but i updated my test to use the factory setup: ossia/libossia#735
Alex Norman
@x37v
does the new protocol setup for OSC have an output only UDP configuration?
Alex Norman
@x37v
looks like no, and i'm not entirely sure how i'd add it with the new setup
Jean-Michaël Celerier
@jcelerier
fixing that quickly @x37v
in terms of API i'm just changing the socket_configuration to optionals
so that it's easy to choose between only sender, only receiver, or both
will push as soon as the tests pass
:)
Jean-Michaël Celerier
@jcelerier
thanks for the extensive test, reviewing it
Alex Norman
@x37v
fantastic @jcelerier ! thanks, I was thinking optionals would be nice, though, the container is called bidir or something so i wasn't quite sure :)
will test out this approach in the example in the next few hours
Alex Norman
@x37v
I updated my PR, rebased against the async_protocols branch and fixed up the test, still failing on that SET getting sent out though
but as is, this should be usable for my purposes, it'll just have extra messages out that i consider noise.. but not that big of a deal
Alex Norman
@x37v
okay, another thing. considering the new complexity of osc protocol configurations, seems like it would be nice to have a visitor based to get ip/port so, for instance, i can find and remove OSC senders from the muliplex protocols.. maybe something already exists?
i think I can figure out the exact type i'm using and do a dynamic cast like i used to do, but i imagine its something that would be generally useful in the lib
Alex Norman
@x37v
okay, the SET output isn't just noise now, it is causing crashes because websockets can handle a lot bigger OSC encoded messages on the input than UDP osc can send out (I believe)
when i add a UDP OSC output to my multiplex protocol that also has a OSCQuery protocol, i get crashes when I send these large WS messages.
it might make sense for me to chunk these smaller either way
Jean-Michaël Celerier
@jcelerier

okay, the SET output isn't just noise now, it is causing crashes because websockets can handle a lot bigger OSC encoded messages on the input than UDP osc can send out (I believe)

agh indeed, I'll add a filter + log

hmm
although a crash shouldn't happen
do you have a repro ? I have some tests that send large messages, and if it's > the max UDP size, it just gives an error during send
well I can easily do a check on my end given what you said, trying that

okay, another thing. considering the new complexity of osc protocol configurations, seems like it would be nice to have a visitor based to get ip/port so, for instance, i can find and remove OSC senders from the muliplex protocols.. maybe something already exists?

It does not exist, what would your dream API for that look like ?

Alex Norman
@x37v

do you have a repro ? I have some tests that send large messages, and if it's > the max UDP size, it just gives an error during send

I'll try to create a test case for it.

Alex Norman
@x37v

okay, another thing. considering the new complexity of osc protocol configurations, seems like it would be nice to have a visitor based to get ip/port so, for instance, i can find and remove OSC senders from the muliplex protocols.. maybe something already exists?

It does not exist, what would your dream API for that look like ?

Hmm. I'm not sure, I kinda liked just being able to dynamic cast to the osc protocol before and get the port and ip.. so something simple ideally without having to make my own visitor.. in the mean time I have a std::set of pairs of ip/port that i keep and to remove a specific OSC outbound I clear everything from the multiplex protocols except an oscquery protocol, then i remove the ip/port from the std::set and add the OSC outbounds back.
not ideal, but works.. but really only because the oscquery protocol is pretty simple to get the type of

Jean-Michaël Celerier
@jcelerier
thanks @x37v, checked, fixed that large size thing and commented on the PR
btw @/all I'm not sure this is entirely 100% strictly necessary but maybe we should have at some point a small chat session on improving the contribution process ? so far it seems to work well but I'm sure we can find some small quality-of-life improvements, also maybe do a pass on whatever automated tool we can use, e.g. was thinking of commit hooks for various sanitizations
Alex Norman
@x37v
@jcelerier updates (re OSC out crash issue) are working well, thanks!