Simple OSC Output/Input Examples (4.23.1)

For anyone interested here are four simple OSC output patches using the new 4.23.1 beta OSC Blueprints.

Sending simple OSC messages: https://ccrma.stanford.edu/~rob/ue4/ue4_4.23.1.OSC.png

Receiving simple OSC messages: https://ccrma.stanford.edu/~rob/ue4/…SC_receive.png

Sending bundles of messages: https://ccrma.stanford.edu/~rob/ue4/…OSC_bundle.png

Parsing out 2 different namespaces for incoming messages: https://ccrma.stanford.edu/~rob/ue4/ue4_4.23.1.OSC_receive_2namespaces.png

*Note: In the receiving example, OSC is being sent from another computer, hence the “AddWhitelistedClient” node. That IP could also have been added in the CreateOSCServer node. Also, these are just trial/error working versions so far, not sure if they’re ideal examples.

p.s Thanks Aaron, Ethan, Arthur and team! Built-in OSC!! *

2 Likes

Thanks guys!

Hi Rob, I’m trying to re-create your Receiving example, but I’m new to blueprints and having some problems understanding:

  • what is the variable type used for your Received OSCMessage variable and your My OSC Server variable?
    - I see that with the OSC plugin there a few new OSC variable types available, I assume Recieved OSCMessage ] uses this but not sure about the OSC server, OSCAddress?

  • what is connecting to and triggering the Custom Event OSCMessageReceived ] node?

  • I never tried to make a custom event before, I was able to sort of recreate yours but I don’t know how yours has a message variable input, mine just has target, is yours a specific OSC event dispatcher type?

  1. Right Click and Create Custom Event - give it a name (eg OSCMessage_Event)

  2. Drag the Red output from the OSCMessage_Event object onto the Red Event input on the Bind Event object

  3. Right click on the OSCMessage_Event object and Refresh Nodes

  4. A Blue message output should appear on the OSCMessage_Event object

  5. Right click on the Blue output on the OSCMessage_Event object and choose ‘promote to variable’ - this creates a SET new variable (of type OSC Message)

  6. You can then re-name this new variable to something (eg Received OSCMessage)

For anyone who is struggling to get this to work, on a local connection you have to set the receive IP address to 127.0.01, leaving it blank won’t. Also make sure to check ‘start listening’.

Cool, thanks for doing this. Looking forward to my next project

Hi! I use OSC quite often for my projects but have up til now used Monseur Gustav’s plugin (I made the youtube how-to video). I’m quite keen to use Epic’s implementation as it seems it should be more supported and possibly more stable. I’ve been trying to make a component based message handler but have found a few issues:

1 - Leaving blank address or ‘0’ doesn’t work - or even 127.0.0.1. I have to actually put my PC’s ip address in. My machine does have 2 ip addresses though as I have a direct connection to my NAS. It may be trying to set this address as local. Not very robust IP setting if that’s the problem.

2 - Crashing - I’m using Lemur to send in commands but it causes random crashes after a short amount of time. I don’t know if this is just due to the number of RX messages coming in or if it’s because i’m using a component and should be using a normal actor - I don’t think this should really affect things though.

3 - How does the client setup work? Surely you still need to be able to bind events to messages coming in? Is it just a buffer that fills up that you empty as you go?

Thanks!

I don’t realy understand becouse i’m a total noob, i gues i need someone to make a full stel by step guide dannington cough cough

First you need to take a course on Chuck I think https://www.kadenze.com/courses/introduction-to-real-time-audio-programming-in-chuck/info it is free if you don’t need certificate, it is fun if you have a time.
Than you need to find some patience and take a look at this https://www.youtube.com/watch?v=EM_HYqQdToE here is explaning about dispatcher which are using here.
Than I think rest you figure out youself.

Since i know openframeworks and processing i don’t think i need the course.
i watched the explanation of the node system. watch it at 1.5 speed tho or die of waiting. I have a better grasp now and i’l try again later this weekend.
i’d like to know how to just do it in code tho.
i dont understand the .ck file extention i thought unreal ws all c++ and i dont understand how to propperly ad it and use the output in other files or nodes.

The osc receiver is working with me, but it stops receiving after 15-20 seconds… as if it stopped listening. Is this happening only with me or no?
regards.

Which version of Unreal are you using?

Crash after X seconds workarounds:
https://forums.unrealengine.com/deve…-osc-blueprint

Any way you could someone possibly just save a working Blueprint ? It costs you 0.002 seconds. The screenshots are quite useless if you can’t c what happens before the screenshots starts. I’m sure it is not at all hard to understand but just impossible to know without proper overview or kit to bash.

I started the YouTube video again and 99% is just not useful here. Its very bloated for this use case.
Al I want to do is receive the data from Ableton in OSC. And have the data set parameters. Each thing that needs to listen to something else can listen on a different port.

Hi folks,

Could someone tell me?:

Does the 4th example in the OP (Parsing out 2 different namespaces for incoming messages: https://ccrma.stanford.edu/~rob/ue4/…namespaces.png) allow you to have two different incoming OSC “streams” execute in the same BP?

Basically what i want to do is send multiple CV sources from Eurorack (see vids below) into a BP and effect two different parameters at the same time (or at least so that it seems at the same time, i guess in essence a BP can only execute serially?!)

Thanks!

Thanks for your examples! I am interested in the sending OSC bundle part: How do I get the character location on movement? Your solution unfortunately doesn’t seem to work for me. I cant even print the x,y,z variables on screen. Any idea on how to get the location?