Hi, I am trying to send a float to SP using OSC but I run into a few issues. It works fine with integers. I have tried to round at the senders end but still have issues. Any suggestions please?
It’s a bit hard to tell what the exact problem is with the error message half cut off there in the screenshot, but I suspect that you need to place a space between
start. At the moment I think Sonic Pi is having trouble telling the difference between the opt
start: and the value you are giving it (
What’s likely happening here is that there’s an issue in this line:
start = sync "/osc/test"
The result from
sync is always a list. In this case, it’s a list with one element (a float around 0.1-0.4) so the value of
start will be something like
If you want to get at that value you need to look inside the list:
Alternatively, you can use the fancy destructuring assignment mechanism to get the value on assignment:
start, _ = sync "/osc/test"
This asks for the first element to be assigned to
start and the second to be assigned to
_. We use
_ as a means of telling readers of the code that we’re not interested in the value. In this case it will be
nil as there is no second value.
Sorry about this - this is a confusing edge case which is actually just standard behaviour in Ruby. Perhaps a future version of Sonic Pi which moves away from Ruby might make this slightly less confusing.
Ah thanks! I wrongly assumed that there was something wrong with the float number. Thanks for explaining how the list should be handled - It all makes sense and works perfectly now
hahaha. I stand corrected
That’s what I get for never having used sync in that way