Old 11-05-2017, 04:41 AM   #1
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,862
Default Midi <-> OSC

Hi experts,

I have done a rather complex set of JSFX plugins to control the sound "patches" loaded in Reaper for live playing by a motor-fader enabled controller board ("XTouch Compact"). Hence the JSFX system does bidirectional communication with the controller via Midi. Now I'd like to add communication with a mixer device ("XR 18") coupled via OSC (over WiFi) to display and modify the mixer settings on the controller board.

Right now, I plan to do a Python program, as same needs to be able to find the mixer via OSC and register for being sent any values modified by other instances also attached to same. A Friend of mine already did and successfully uses such a Python program, communicating with the XR18 via OSC and with some hardware device via Midi.

I wonder if it might be viable to use OSCIIbot with some EEL programming instead (as I am rather experienced with EEL but not with Python yet).

Did anybody already successfully use OSCIIbot and can provide some comments ?

-Michael
mschnell is offline   Reply With Quote
Old 11-10-2017, 03:20 PM   #2
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 12,427
Default

I've used OSCII-bot for osc / midi stuff, what'cha need?
Justin is offline   Reply With Quote
Old 11-10-2017, 05:48 PM   #3
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,862
Default

Thanks for answering, Justin !

There is a discussion I initiated in the OSCIIbot subforum.

For getting started I'd like do display part of the current mixer state.

So I need to "attach" to a mixer (XR18) via OSC via WIFI.

For this I of course need to provide the IP-Address and the port. I understand this is done in the EEL code. OK for now, but in the end I would like to read it from a config file. (I know that OSCIIbit can read files, and I suppose I'll be able to make use of the content.)

After that we need to send "subscribe"/"register" messages to the mixer in regular time intervals to have it send us any values of a set of parameters on the spot and/or at any time they are changed by other instances.

I understand this is an OSC standard method and supposedly also done when OSCIIbots connects to Reaper via OSC (wich AFAI understand is the way OSCIIbot is mostly used).

Unfortunately I failed to find any examples of such OSCIIbot ELL program code.

Thanks again,
-Michael

Last edited by mschnell; 11-11-2017 at 02:08 AM.
mschnell is offline   Reply With Quote
Old 11-11-2017, 04:19 PM   #4
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,862
Default

Justin,

I was able to set up an OSCIIbot script correctly (details see thread in the OSCIIbot forum).


Code:
@input XT_M_IN MIDI "loopMIDI Port"	//in quotation marks-name of midi port used in Windows
@input XR18in OSC "*:10024" 
@output XR18out OSC "192.168.1.1:10024"
I see:
Code:
C:\Users\mschnell\AppData\Roaming\oscii-bot\test1.txt
	Listening on '*:10024'
	2 inputs, 1 outputs

Total: 1 scripts, 2 inputs, 1 outputs


Using Wiresshark I found that the XR18 responds correctly to (e.g.) a "status" command.

But a printf() in the @oscmsg section in the script does not output any text.

what am I doing wrong ?

-Michael
mschnell is offline   Reply With Quote
Old 11-12-2017, 12:28 AM   #5
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,862
Default

As I see in WireShark, in fact (IMHO rather decently), the OSC device answers to an OSCIIbot message by an UDP/OSC block directed to the port number given as a sender in the received block.

If in OSCIIbot the OSC input and output devices are independent (as it seems from EEL code), how can the @output as a sender port address provide the port number the @input is initiated to listen on ?

Seemingly the sender port number is defined (by Windows?) as some random number when @output is called. Using Wireshark, I can see an new number with any start of OSCIIbot.

I checked that it's not possible to use an @input device do send to:

@input XR18out OSC "192.168.1.1:10024" //trying to define the target address here
results in
"Error listening for '192.168.1.1:10024'"
and
oscsend(): output device 0.000000 invalid



OTOH

@output XR18out OSC "192.168.1.1:10024"
@input XR18out OSC "*:10024"

results in

Warning: device name 'XR18out' already in use, skipping @input line

-Michael

Last edited by mschnell; 11-12-2017 at 01:50 AM.
mschnell is offline   Reply With Quote
Old 11-12-2017, 07:18 AM   #6
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 12,427
Default

Ah yeah, I don't think we ever added bidirectional OSC support for this scenario, let me see if I can do that now.
Justin is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 08:05 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.