So the first thing I did was get PythonOsc and some trivial send/receive scripts (see [here](/aw/dev/osc/TrivialExamplesInPython). One receives (on port 7001, which for laziness I hardwired into the script) and the other wraps the `client.send_message` so that I can load it in an interactive python session, send arbitrary OSC messages to Reaper, and see the OSC feed from reaper dumped out in a separate window. Things are defined in the `${REAPER_RESOURCE}/OSC` folder, in e.g. `Default.ReaperOSC`. I made a copy of this in `Jda.ReaperOSC` so that I can tweak it. To configure it in Reaper, go to `Preferences→...` (insert screenshots here) First thing I noticed, is that when hit ok in the OSC setup dialog, Reaper sends a _ton_ of information, much of which is essentially irrelevant. There is probably a good reason for this. If you have only one device in the FX chain on track 3, it still sends values for the non-existent 3rd device, including all its non-existent parameters. It seems it is for things like TouchOSC where it presumes there is a fixed bank of faders or knobs to talk to. Now with the default osc setup, we can send e.g. ``` n/track/3/fx/2/fxparam/17/value 0.5 ``` and provided the fxparam number is in the range specified at the top of the osc definition file, when we change the value, it will send ``` /track/3/fx/2/fxparam/17/value 0.4 ```