OSC Message has no effect


(Zor) #1

Hi,

I’m trying to send OSC messages to Ardour, for instance I’m trying to set the transport speed, but Ardour doesn’t seem to accept the message (nothing is displayed in the log, except that it’s listening on port 3819).

I’ve checked with another program and the UDP packet is sent on the 3819 port, and has the following content :
2F (’/’) 73 (‘s’) 65 (‘e’) 74 (‘t’)
5F (’_’) 74 (‘t’) 72 (‘r’) 61 (‘a’)
6e (‘n’) 73 (‘s’) 70 (‘p’) 6F (‘o’)
72 (‘r’) 74 (‘t’) 5F (’_’) 73 (‘s’)
70 (‘p’) 65 (‘e’) 65 (‘e’) 64 (‘d’)
00 () 00 () 00 () 00 ()
2c (’,’) 66 (‘f’) 00 () 00 ()
3e e4 b8 54
00 00 00 00

Which is :
/set_transport_speed****,f**---- ("*"are 0, “-” are my float value, between 0.1 and 1.0)

I’ve followed the first message example for setting the oscillator freq on this page : http://opensoundcontrol.org/spec-1_0-examples#typetagstrings

I’ve tried to reverse the float bytes order, with or without four zeros after the command, checked that address, parameter and value are 4 bytes aligned, but it doesn’t work.
If someone has any idea of what I’m doing wrong, it would be fantastic :slight_smile:
thanks


(Len) #2

I should first ask which version of Ardour you are using. You should be able to monitor incoming OSC messages if you set the Debug mode to “Log All Messages”. I would suggest as a test to try using oscsend with a line like:
oscsend localhost 3819 /set_transport_speed f 1.0
Note that if you are running an OSC server on the same host it can not have the same receiving port as Ardour does. 8000 is suggested as it is already the default. So the controller sends from 8000 to 3819 and Ardour returns any feedback to 8000. The setup dialog will allow this to be changed of course.
It seems you are not using a lib for OSC as such it may be worth while using oscdump to monitor what you are sending as an osc message. liblo is not hard to use and I would think does not use a lot of memory.


(Zor) #3

I’m using Ardour 5.12 on Windows. I’ve indeed set the debug mode to “Log All Messages”.
I’m not running an OSC server, and as I said Ardour is listening on port 3819 (seen in the log), and messages are really sent on this port and I can receive them with a program on my own (of course I close this program when I launch Ardour to free the port).
I will try to send messages with oscsend from a Pi or other Linux machine I have if there’s no alternative to oscsend on windows (or I will embed a osc lib in my windows program, it may help too).
Thanks


(Zor) #4

I’ve tested with OSC Data Monitor tool, it receives my messages so they seem to be formatted correctly.
I also installed OSC Surface application, and Ardour is receiving the messages from it.
I think it’s a network problem, I have a wired network connected by Ethernet to my device receiver, the messages I’m sending from my custom device arrive on this interface, and a wifi interface as well, that is not in the same sub network.
When I launch OSC Data Monitor tool, it takes the first interface it finds, so to receive messages from ethernet it’s ok, but to receive messages from wifi, I have to unplug my ethernet cable.
So I’ve tried to deactivate my wifi network to be sure that Ardour is listening on my ethernet interface, but no messages are received.
Is there a way to force Ardour to listen to a particular network address ? (I found how to change the port in the doc, but not the IP, it listening to the name of my PC instead of an IP).


(Robin Gareus) #5

I’ve used oscsend.exe (from liblo) on windows in the past, and I’ve checked that Ardour on Windows does listen to UDP packets on both localhost (127.0.0.1) and the external interface at the same time (all active interfaces when started). I can however not test multiple interfaces.

Is there any message logged in in Menu > Window > Log (Ardour should even show incomplete invalid messages there, when you enable “Debug: log all messages”).

Did you check Windows’ firewall? IIRC that can block messages per application. And once you’ve clicked “block” it was rather hard to unblock an application again.

PS.
I don’t see an option in the library that Ardour uses to handle OSC specify a specific interface: lo_server_new only allows to specify a port. So Ardour cannot either.


(Robin Gareus) #6

64bit windows? unzip http://robin.linuxaudio.org/tmp/oscsend.exe.zip to Ardour’s bin directory (C:\Program Files\Ardour5\bin\) it depends on liblo.dll from there. Then cmd.exe, cd to ardour’s bin folder and try
oscsend.exe "osc.udp://127.0.0.1:3819" /transport_play


(Zor) #7

It works now, I don’t know why, I haven’t changed anything except maybe I’ve removed my wired network connection and I’m only in wifi now.
Sorry for wasting your time with something that has probably nothing to do with Ardour.
Thanks a lot !