OMK Logo
OMK Title

Patch-a-Week

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.

renoise/preferences/osc

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.

renoise/midi_bridge/inst/1
renoise/midi_bridge/inst/2

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.

renoise/midi_bridge/inst/2

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 \(x_0\) at an ON event is stored in the group registry as it needs to be retrieved for pitch-bend calculation.

$$\begin{eqnarray} note(x_0) &=& floor(35.5 - \frac{n \% 18}{6} + \frac{n \cdot x_0}{3}) \\ bend_{14}(x) &=& (x - x_0) \cdot \texttt{0x2000} + \texttt{0x1fff} \\ cntrl_{14}(z) &=& \texttt{0x3fff} \cdot z \end{eqnarray}$$

/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

WANTED:
Beta Testers

After a high interest at Maker Faire Rome, we are now running a beta-testing campaign to collect more comprehensive feedback of first-hand experiences of our final Chimaera prototype design from interested individuals. Get in contact with us. Now.

Please support free/libre software and hardware designs.

or

donate bitcoins

or

request bank credentials via encrypted mail for SEPA transfers.

Last update - 09 February 2016

GitHub Google+ SoundCloud Vimeo

Copyright © 2014-2017, Hanspeter Portner, Open Music Kontrollers, cc-by-sa 4.0. Uses libre javascript.