Tagged: OSC Toggle Comment Threads | Keyboard Shortcuts

  • frankiezafe 15:13 on 2018-10-25 Permalink | Reply
    Tags: , gdnative, , OSC   

    The OSC GDnative module for godot is on its way in gitlab.

    In the meanwhile, we have compiled a standalone version of Godot 3.0 including the gdosc library. The executable is available here:


  • frankiezafe 22:49 on 2018-03-21 Permalink | Reply
    Tags: , , OSC,   

    A lot of work has been done on the OSC addon for godot this week: 2 new classes for reception and emission fully integrated in the engine (with icon and UI configuration) and an OSCmessage class available in gdscript to read the received message.

    The repositiories are here:

    Next move is to create a GDNative extension, to enable distribution of the addon.

  • frankiezafe 20:44 on 2018-03-18 Permalink | Reply
    Tags: , , , , OSC   

    Starting godot development with a little help to Michal Seta on his OSC addon.

    First impressions are fantastic! Godot’s architecture is prepared with indie programmer in mind: the engine is obviously open source, it is really easy to interact with the core classes of the engine, receive notifications of the main events, and childish to compile!

    A really nice piece of framework!

  • frankiezafe 21:09 on 2018-02-14 Permalink | Reply
    Tags: , , , OSC,   

    Second phase of the work: sending the user inputs from client to server and process the interactions. There is still a small issue with the relative position on the screen of the client, to fix tomorrow, and implementing visual feedback in the client.

  • frankiezafe 23:05 on 2018-02-13 Permalink | Reply
    Tags: , , , OSC, , synchronisation,   

    Always the same surprise when one application controls another! In this case, the application on the left is running on my workstation, receiving and visualising the position and rotations sent by the laptop on the right. The laptop is running the physical worlds.

    Tomorrow I’ll remount the mouse control in the client (the one on the left), and it will be possible to play at 2 in the same physical world!

    (done with my crappy webcam, sorry fot the quality)

  • frankiezafe 20:42 on 2017-04-17 Permalink | Reply
    Tags: , OSC, , ,   

    To prepare the work session between Tomas Turine and Lisa Nelson, I prepared a OSC serialisation of all the objects available in the 3D world, including mouse and cameras, and built an interface in pd to visualise and use the data.

  • frankiezafe 19:22 on 2016-10-19 Permalink | Reply
    Tags: , , , OSC   

    Long time no seen!

    After fixing tiny and absolutly not sexy issues in bullet code, programming went to an even less fancy topic: efficient temporary storage of udp packets.

    Indeed, OSC messages (basically udp messages) arrives asynchronously. The display thread is running at ~60fps, but messages can pop in at any time. To avoid a display thread interruption each time a message is received, they have to be stored until the main thread request them.

    The first approach was to push them in a std::vector. If the main thread never requested them, this vector might eventually become VERY long. To solve that, setting a maximum size seemed to be a good option. Each time a new message is received, if the vector is longer than maximum, the first element, witch is also the oldest, is deleted.

    There’s 2 important performance issues in this approach (fixed by the new one :)):

    • removing the first item ( =>resizing the vector) and push back an item at each reception ( =>resizing the vector once again) is not efficient at all;
    • read and write access to the same object, implying that you can not write while reading and reverse.

    Sooner in my life, someone told me about ring buffer. The name was nice and the idea behind was appealing!

    Here is what has been implemented in the class that receives and parses the OSC messages (readable text below the image, click to enlarge).


    polymorph::POscReceiver – ring buffer logic

    POscReceiver uses ring buffer to store received messages temporarily.
    If its capacity is 10, it uses an array of 10 PMessageData.
    When the maximum number of messages is reached, the oldest message is overwritten.
    The position of the oldest one is shifted by one each time a new message is stored in an “overflowed” array.


    polymorph::POscReceiver – read and write buffer

    POscReceiver uses 2 ring buffers.
    Reception and parsing are managed in a separated thread.
    Buffers are swapped when the main process request a read access.

  • frankiezafe 11:29 on 2016-09-16 Permalink | Reply
    Tags: , , OSC,   

    A bit of architecture

    Concerns sound sources located in the 3d environment.

    On the C++ side, sound::system manages all the sound sources and knowns about the location and orientation of the cam. It also contains the general configuration of the mix (gain, number of tracks, etc.).

    At each frame, the sound::system renders a serie of relations, representing the position of sources in the camera local coordinates (where are the sound sources in the user point of view, to be a bit simplier).

    The sound::system being aware of the number of tracks in the sound engine, it is able to manage efficiently wich source to send to witch track. For instance, if the number of active sound sources is higher than the number of tracks, sound::system will order the closer or the most important sources to send to the sound engine.

    On the #puredata side, the job is simplified. All tracks are similar and reacts to messages sent by sound::system.

    Each sound source knowns about the sound file to load. This info is sent onnce when the source becomes active : activated status.

    Sound::system is able to handle 2 types of communication.

    • In edition, it sends osc messages to puredata, the program with graphical interface. This allows musician to work live on the sound.
    • In production, it sends the messages to libpd internally.

    This 2 modes implies using custom objects in pd that are able to use both modes.


    Thanks to @yacine_sebti for his expertise in pd.

    Currently in development in .

  • frankiezafe 17:53 on 2016-08-18 Permalink | Reply
    Tags: , , , OSC   

    First Ogre addon for OSC.

    Repository: https://bitbucket.org/frankiezafe/ogreosc

    It was a hell with OgreBullet addon. A part of the reason was that I didn’t get the way CMake is dealing with the compilation, installation and so on. The OgreOsc addon was a good way to get it.

    The addon doesn’t do a lot for now: it just contains a simple sender. Other classes will as soon as I need them.

  • frankiezafe 16:44 on 2016-08-16 Permalink | Reply
    Tags: OSC, , , reverb,   

    Playing with reverb, linked to camera position.

    For peel, the reverb should increase a sensation of emptiness, and rotations around the tube will make the sound vary. Later this week, Daniel will make investigate this topics.

    patch-network.pd  - -home-frankiezafe-projects-peel-work_cpp-assets-pd_672

    PURE DATA: 33 Reverb and Delay on youtube

    By the way, the new way of puredata to manage addons via deken is great, even if searching is tricky until you know exactly the object’s name you are searching for.

    About freeverb~

Compose new post
Next post/Next comment
Previous post/Previous comment
Show/Hide comments
Go to top
Go to login
Show/Hide help
shift + esc