View Single Post
Old 11-14-2017, 07:21 AM   #279
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,687
Default

Enhanced and more straight forward routing of streams of control data.


Reaper handles multiple types of control data:
- internal engine API including Automation (such as controlling plugin parameters)
- Midi
- OSC

The internal API is accessible by
- the engine itself
- ReaScript
- Reaper API plugins

Midi is handled in multiple streams (buses, devices)
- Midi I/O devices
- the tracks' FX chains
- 16 dedicated routable Midi buses
- the "Reaper Control Path" (that allows for firing actions and feeding e.g. SWS LiveConfigs)
- the Midi device fed by the "Virtual Keyboard" (and AFAIK by ReaScripts)

Straight forward routing is provided (implicitly or explicitly configurable)
- engine -> API (obviously)
- API -> engine (obviously)
- Midi Devices in -> Tracks
- Tracks -> Midi Devices out
- Midi Devices -> "Reaper Control Path" (by checking the "control" box in the device config)
- "Virtual Keyboard" device -> Tracks
- Tracks -> Tracks (including using the 16 buses for more complex routing)
- some track -> track automation (certain automation features listen to the track's Midi.
- "Reaper Control Path" -> track automation (some automation features listen to Midi on the Control Path)
- engine -> OSC (Reaper's standard OSC functionality)
- OSC -> engine (Reaper's standard OSC functionality)

Doing complex script programming for control information is only possible by doing Midi filters in JSFX plugins, and hence needs to be done in tracks. But the information sources and targets might be located elsewhere.

Using certain tools and tricks, control data streams can be routed in additional ways:
- the "ReaMidiControl" plugin can be used to route automation information within a track's FX chain
- the "MidiToReaControlPath" plugin routes Midi from a Track -> "Reaper Control Path"
- The external "OSCIIbot" program routes OSC -> Midi and/or Midi -> OSC, here as well the Midi site (via a Midi Loop device) as the OSC site can be Reaper, while the other site usually is other software or a hardware device.
- BeyondPython publishes the Reaper API via OSC to make it usable for external programs (usually written in Python)

Now "Enhanced and more straight forward routing of streams of control data" would mean:
- the "Reaper Control Path" is just another Midi bus and can be fed by selecting it with the tracks output routing (obsoleting he "MidiToReaControlPath" plugin)
- dedicated Midi device to be fed by the API of ReaScripts (instead of "secretly" using the virtual keyboard device).
- The OSCIIbot functionality is integrated in Reaper, using the JSFX IDE to write Midi and OSC aware EEL scripts (providing some additional Midi devices that are dedicated for this and routable in the normal way). As they run within Reaper such scripts should be able to use the Reaper API as with ReaScript.

(The Reaper HTML-server functionality is not (yet) an issue here.)

-Michael

Last edited by mschnell; 11-14-2017 at 07:27 AM.
mschnell is offline   Reply With Quote