Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Nov 26 15:00
    matcham closed #808
  • Nov 26 15:00
    matcham commented #808
  • Nov 25 20:41
    jcelerier commented #808
  • Nov 25 20:38

    jcelerier on ossia.cue

    [max] Fix repetition filter eve… (compare)

  • Nov 24 14:20
    matcham commented #808
  • Nov 24 13:59
    jcelerier closed #809
  • Nov 24 13:59
    jcelerier commented #809
  • Nov 24 13:59
    jcelerier commented #808
  • Nov 24 13:58
    jcelerier commented #808
  • Nov 24 10:50
    matcham pinned #791
  • Nov 24 10:48
    matcham commented #808
  • Nov 24 09:54
    matcham commented #786
  • Nov 24 09:49
    matcham commented #808
  • Nov 24 09:47
    matcham commented #808
  • Nov 23 21:49
    jcelerier labeled #809
  • Nov 23 21:49
    jcelerier labeled #809
  • Nov 23 21:49
    jcelerier opened #809
  • Nov 23 20:42
    jcelerier commented #786
  • Nov 23 20:42
    jcelerier assigned #808
  • Nov 23 19:11
    jln- commented #808
Jean-Michaël Celerier
@jcelerier

before I go modifying the library, is it currently possible to add an OSC destination without a new local port?

I think that for this one would have to make another implementation of the "osc" class. In the branch i've been working on the last few months it should not be very hard:

the osc class looks like https://github.com/ossia/libossia/blob/feature/async_protocols/src/ossia/protocols/osc/osc_generic_protocol.hpp

and is parametrized like https://github.com/ossia/libossia/blob/feature/async_protocols/src/ossia/protocols/osc/osc_factory.cpp

so to send to multiple clients, what I'd do is :

  • change that template to have different socket types for sending & receiving
  • putting the multiplexing in the "sending" socket type, e.g. instead of udp_socket it'd be something like
    class multiple_sockets {
       std::vector<upd_socket> m_sockets;
      void open() { for(auto& socket : m_sockets) { socket.open(); } }
      void write(const char* data, std::size_t sz) { for(auto& socket : m_sockets) { socket.write(data, sz); } }
    };

am I just not seeing a cmake configuration option for the fast c++ ?

well, "fast C++" is basically the default API that it builds when nothing is specified

Alex Norman
@x37v
@jcelerier is this new branch ready to use do you think?
I was thinking I would just use the mutli protocol thing and then just make port 0 mean 'no receiver' for the receiver port and then add/remove outgoing protocols at runtime
Jean-Michaël Celerier
@jcelerier
hm, so I've been using it in score for ~2 months and haven't noticed issues there
but there hasn't been more testing than that
(and it's missing a port of the oscquery server protocol)
likely the api is going to change a bit more, for instance with that multi-client thing, that would be a very useful feature and I want to make sure that it works
(or at least that it's very easy for an user of the lib to make it work by combining a few building blocks)
Alex Norman
@x37v
ahh, the oscquery part is the most important part for my application
Alex Norman
@x37v
@jcelerier it looks like the multi_protocol setup isn't actually going to solve my problem because if one of its children is oscquery, and another is osc, I don't get the echos (set_echo(true)) i need from oscquery -> osc, the UDP osc protocol only gets the changes that are triggered via local operators, push_value
I'm wondering if you have any advice? I'm trying to get both oscquery AND a list of outbound UDP, all echoing incoming changes as well as local changes.
I see that the oscquery client has this thing open_osc_sender which looks like it might actually do what i'm talking about.. but i don't actually see how to initiate it.
the json_query_parser parses a message StartOscStreaming that looks like maybe it initiates it? So maybe there is a WS data command I can send that actually achieves what i'm trying to do already? Or, am I on the wrong path?
i'm forked from a recent master FYI
djiamnot
@djiamnot:matrix.org
[m]
hey all. So tried to dive into https://github.com/OSSIA/ossia-sclang but hit a wall quite quickly with WebSocketServer not found.
I cannot locate such class and no official quark turns up anything similar.
any clue?
Thibaud Keller
@thibaudk
Hi @djiamnot:matrix.org
to use oscquerry you will need a spescial build
but the sclang quarck also suports plain osc
simply replace exposeOSCQueryServer() by exposeOSC()
if you are interested in the build that includes both HTTP and Websocket primitives, you can find it here
djiamnot
@djiamnot:matrix.org
[m]
I think I was interested in the OSCQuery, but will try exposeOSC() first
djiamnot
@djiamnot:matrix.org
[m]
😱, that's a customised SC3
Thibaud Keller
@thibaudk
yes
djiamnot
@djiamnot:matrix.org
[m]
wow. That's hardcore!
Thibaud Keller
@thibaudk
it's @pchdev 's handy work
we have discussed it on the supercollider page
but i am starting to wonder if merging it is feasible in the near future
djiamnot
@djiamnot:matrix.org
[m]
oh, interesting! Some good points raised there, it's true
Thibaud Keller
@thibaudk
for a quick demo of the quarck using OSC, you can have a look at https://www.youtube.com/watch?v=6a01Ij_sYNc
djiamnot
@djiamnot:matrix.org
[m]
ok, that's cool!
what's unclear now, is how to use the "learn" feature
Thibaud Keller
@thibaudk
in score you mean ?
djiamnot
@djiamnot:matrix.org
[m]
yes, in score
like you do on that video
Thibaud Keller
@thibaudk
first add a devices, select the osc protocol (not OSCQuery)
you can change the name of the device. The ports have the same defaults as the quarcks so you don't have to change them
djiamnot
@djiamnot:matrix.org
[m]
yes, I did that, but is there something to do on the SC side?
Thibaud Keller
@thibaudk
yes
once the device is created, right click and select learn (the window appears)
the in SC
evaluate ~yourDevice.exposeOSC();
replacing ~yourDevice with the one you created in SC
when evlauating exposeOSC() all deffault values are sent to score once for learning
here is a little code example
djiamnot
@djiamnot:matrix.org
[m]
right! I confirm that this is the way!
this is getting very exciting!
Thibaud Keller
@thibaudk
(
d = OSSIA_Device("supercollider");
n = OSSIA_Node(d, "MonNode");

d.exposeOSC();

v = OSSIA_Parameter(n, "MonVec", OSSIA_vec3f, [[-pi, -pi, -pi], [pi, pi, pi]], [0, 0, 0]);
//v.unit_(OSSIA_orientation.euler);
v.unit_(OSSIA_position.cart3D);
r = OSSIA_Parameter(n, "MonRange", OSSIA_vec2f, [[-30, -19], [10, 27]]);
// r.unit_(OSSIA_position.cart2D);
f = OSSIA_Parameter(n, "MonFloat", Float, [-6.3, 99.5]);
h = OSSIA_Parameter(n, "MonInt", Integer, [ 0, 64 ]);
b = OSSIA_Parameter(n, "MonBool", Boolean, critical:true);
g = OSSIA_Parameter(n, "MonPrint", String, default_value: "imprimer des choses");
n.gui();
)
the quarck also includes a simple gui library, that can be called on a parameter or on a node (to show GUI of all direct children)
here it is called on the node with n.gui()