Csaba:
Check out the mrpeach-to-vanilla-osc.pad here: https://github.com/danomatika/BangYourHead/tree/master/6.Communication https://github.com/danomatika/BangYourHead/tree/master/6.Communication
It has a basic overview on sending/receiving OSC in Pd vanilla as well as a small cheatsheet when coming from the mrpeach objects.
In my usage, I have not run into any major issues with Pd's vanilla OSC handling but a couple of come to mind:
ie. (pseudo code)
msg = newOSCMessage("/some/address") msg.addFloat(123)
Avoid encoding numeral indices in the address, if possible. I prefer to make indices the first argument, so:
/trigger0/0 could be /trigger 0 0 where the "0" index is the first argument and the second argument would be the state
The issue is that when [oscparse] parses the message, it breaks it into a list. Any parts of the address are sent as symbols so matching to "0" index in "/trigger0/0" address has to be matched as a symbol and not a float in pd.
Example, parsing /trigger0/0 -> results in a list:
symbol: "trigger0" symbol: "0"
Whereas parsing /trigger0 0 -> results in a list
symbol: "trigger0" float: 0
On Feb 9, 2021, at 11:47 AM, pd-list-request@lists.iem.at wrote:
hi Csaba - i have done a fair amount of work with OSC in Unity and i highly recommend the extOSC plugin for this (it's free). https://github.com/Iam1337/extOSC https://github.com/Iam1337/extOSC
I agree. Don't roll your own unless you're familiar with OSC and fiddling with networking bytes.
Scott:
homemade OSC sounds cool but there are a lot of flavors and not all of them play well with PD. i tried a number of options and what worked on receive in PD was the following:
[iemnet/udpreceive] (with the port set at loadbang) -> [oscparse] - [list trim] and then [route] to send it places.
I'd be curious to know why [netreceive] didn't work for you in your case. We recently did an overhaul of all the networking, so I imagine the vanilla [netreceive] may work for you now. If there is a bug, it would be good to know about it...
Dan Wilcox @danomatika http://twitter.com/danomatika danomatika.com http://danomatika.com/ robotcowboy.com http://robotcowboy.com/
hi Dan - re netreceive - i have not updated the patch on the OSC receiving front for some time. i started making this patch in late 2018 i believe and after a lot of testing this is what worked and has worked since from Unity to PD. i'm using .50.0 at the moment. i'd be happy to do netreceive testing some more. it's an easy substitute. what version would you want me to test?
best, scott
On Tue, Feb 9, 2021 at 4:32 AM Dan Wilcox danomatika@gmail.com wrote:
Csaba:
Check out the mrpeach-to-vanilla-osc.pad here: https://github.com/danomatika/BangYourHead/tree/master/6.Communication
It has a basic overview on sending/receiving OSC in Pd vanilla as well as a small cheatsheet when coming from the mrpeach objects.
In my usage, I have not run into any major issues with Pd's vanilla OSC handling but a couple of come to mind:
- If you are sending arguments with your message, it may help to send them
explicitly,
ie. (pseudo code)
msg = newOSCMessage("/some/address") msg.addFloat(123)
- Avoid encoding numeral indices in the address, if possible. I prefer to
make indices the first argument, so:
/trigger0/0 could be /trigger 0 0 where the "0" index is the first
argument and the second argument would be the state
The issue is that when [oscparse] parses the message, it breaks it into a list. Any parts of the address are sent as symbols so matching to "0" index in "/trigger0/0" address has to be matched as a symbol and not a float in pd.
Example, parsing /trigger0/0 -> results in a list:
symbol: "trigger0" symbol: "0"
Whereas parsing /trigger0 0 -> results in a list
symbol: "trigger0" float: 0
On Feb 9, 2021, at 11:47 AM, pd-list-request@lists.iem.at wrote:
hi Csaba - i have done a fair amount of work with OSC in Unity and i highly recommend the extOSC plugin for this (it's free). https://github.com/Iam1337/extOSC
I agree. Don't roll your own unless you're familiar with OSC and fiddling with networking bytes.
Scott:
homemade OSC sounds cool but there are a lot of flavors and not all of them play well with PD. i tried a number of options and what worked on receive in PD was the following:
[iemnet/udpreceive] (with the port set at loadbang) -> [oscparse] - [list trim] and then [route] to send it places.
I'd be curious to know why [netreceive] didn't work for you in your case. We recently did an overhaul of all the networking, so I imagine the vanilla [netreceive] may work for you now. If there is a bug, it would be good to know about it...
Dan Wilcox @danomatika http://twitter.com/danomatika danomatika.com robotcowboy.com