2014 - Week 36
Renoise is a great cross-platform tracker and it is one of many audio programs that supports both OSC and MIDI. In this patch-a-week post we demonstrate how easy it is to link the Chimaera to any MIDI instrument on any platform with Renoise as OSC-MIDI bridge.
Before proceeding, make sure to be familiar with:
Renoise OSC-MIDI bridge (via custom output engine)
Under menu entry Edit/Preferences/OSC, enable OSC server, choose UDP as protocol and memorize the used port number (8000 by default). We will send MIDI events from the Chimaera to OSC method target /renoise/trigger/midi.
Create two instruments. On the MIDI tab of each instrument, set the MIDI Input device to Renoise OSC Device for both. Set MIDI input channel to 1 and 2, respectively. Both instruments thus will listen for MIDI events (OSC events to target /renoise/trigger/midi) on the OSC server. Instrument 1 will forward only channel 1 MIDI events, whereas instrument 2 will forward only channel 2 MIDI events. In the lower section of both MIDI tabs you can configure the MIDI output device and output channels to your liking.
That is enough to get the Renoise OSC-MIDI bridge up and running. Now we need to configure the Chimaera to send correct OSC messages to OSC method target /renoise/trigger/midi on the Renoise OSC server.
Note that the OSC method target is not well documented. The method requires a single OSC integer argument with 3-4 MIDI bytes in reverse order. e.g. for a midi noteon event (0x90-0x20-0x7f), the OSC method target requires an OSC message:
/renoise/trigger/midi ,i 0x7f2090
We will configure the Chimaera via OSC via the Renoise scripting API. We thus use the custom output engine to serialize custom OSC postfix messages. Load the script below in the Renoise script editor, execute it and check the output terminal for errors.
We construct the integer encoded MIDI messages via the custom output engine and thus use a linear mapping of x-dimension to MIDI noteon/off and pitchbend messages. z-dimension is mapped linearly to the volume controller (14-bit). The x-dimension value at an ON event is stored in the group registry as it needs to be retrieved for pitch-bend calculation.
/engines/custom/enabled ii 12 1 /engines/custom/reset i 13 /engines/custom/append isss 14 'on' '/renoise/trigger/midi' 'i(0x7f0090 $g| 35.5 $n 18% 6/- $n 3/ $x @@ $g[*+ 8<<|)' /engines/custom/append isss 15 'off' '/renoise/trigger/midi' 'i(0x7f0080 $g| 35.5 $n 18% 6/- $n 3/ $g]*+ 8<<|)' /engines/custom/append isss 16 'set' '/renoise/trigger/midi' 'i(0xe0 $g| $x $g]- 0x2000* 0x1fff+ @@ 7>> 16<< # 0x7f& 8<<| |)' /engines/custom/append isss 17 'set' '/renoise/trigger/midi' 'i(0x27b0 $g| $z 0x3fff* 0x7f& 16<<|)' /engines/custom/append isss 18 'set' '/renoise/trigger/midi' 'i(0x07b0 $g| $z 0x3fff* 7>> 16<<|)'
Get the Renoise patch for the OSC-MIDI bridge and the accompanying Lua configuration script at our Renoise repository. e.g