midimonster icon indicating copy to clipboard operation
midimonster copied to clipboard

Help sending OSC commands

Open JonnyC0G opened this issue 11 months ago • 3 comments

hello there I'm trying to convert incoming midi-messages into OSC-signals. My OSC-Device is listening on Port 65535. I use following config:

[backend winmidi]
detect = on

[winmidi loopbe]
; 0 is the id of loopbe
read = 0

[backend osc]
detect = on

[osc lt]
dest = localhost 65535

/lighttoys/start/* = i 1 1

[map]

loopbe.ch0.note0 > lt./lighttoys/start/01

I managed to receive the midi-trigger, but then i get the error: Failed to transmit packet: An operation was attempted on something that is not a socket.

If I add bind = :: 65535 the error disappears, and the programm also captures the osc-command, but it never reaches my desired application (which is also listening on 65535, confirmed using ShowCockpit) and the programm terminates immediately.

I hope you can help me

  • why does midimonster need to listen for osc, when I'm only trying to send
  • why is the command not be transfered to another application

thanks in advance!

JonnyC0G avatar Jul 25 '23 10:07 JonnyC0G

edit: I debugged the osc-information sent via wireshark. It seems like the port configuration for the osc-destination doesn't work at all. every time i restart the program a new (random?) port is picked, ignoring the specified port in the config file. also the content of the message is only one byte long.

JonnyC0G avatar Jul 25 '23 13:07 JonnyC0G

I just had a similar problem (except it was Failed to transmit packet: Bad file descriptor) and came to the same solution. According to the source in backends/osc.c it doesn't even open a network socket if you don't specify a bind parameter, at which point it cannot function. I would consider this a bug, since if my configuration only intends to transmit OSC and not receive, I shouldn't have to listen anywhere. I suspect the call to mmbackend_socket ought to be moved into osc_start.

In my case adding the bind option was all I had to do to make it work. If midimonster is terminating as soon as you send a command, there may be something else going on. Could you please post a copy of the full log output?

TimPeterson avatar Sep 05 '23 23:09 TimPeterson

this is my output:

MIDIMonster v0.6-38-g811592c
core/be Registered backend artnet
core/be Registered backend loopback
core/pl Failed to load plugin backends\lua.dll, check that all supporting libraries are present: The specified module could not be found.

core/be Registered backend maweb
core/be Registered backend mqtt
core/be Registered backend openpixelcontrol
core/be Registered backend osc
core/be Registered backend rtpmidi
core/be Registered backend sacn
core/be Registered backend visca
core/be Registered backend wininput
core/be Registered backend winmidi
core/cfg        Reading configuration file monster.cfg
core/cfg        Created winmidi instance loopbe
core/cfg        Created osc instance lt
osc     Matched pattern /lighttoys/start/* for /lighttoys/start/01
osc     Registered 1 descriptors to core
winmidi Selected input device LoopBe Internal MIDI for ID 0
winmidi Registering 1 descriptor to core
core/rt Routing 1 sources, largest bucket has 1 entries
winmidi Incoming data on channel loopbe.ch0.note1, value 0.007874
winmidi Incoming data on channel loopbe.ch0.note2, value 0.039370

when doing this midimonster sends udp-messages at a random port (e.g. 63094) instead of the specified port. also the content of the sent message does not match my configuration. image

I helped myself using another tool, sorry.

JonnyC0G avatar Sep 06 '23 07:09 JonnyC0G