Advanced Midi Routing for Renoise

There are numerous reasons to send MIDI data between Renoise and another program, merge MIDI data or even send MIDI data to a different computer.

In this tutorial I will try to cover every possible scenario.

This article focuses on PCs running Windows. However, the guidelines may also apply to other platforms.

Software you need (all freeware)

A must-have for our advanced MIDI routing applications is MIDI Yoke. MIDI Yoke is a driver that installs eight virtual MIDI ports. Those ports are not unlike MIDI cables in your set-up, the main difference being not having to untangle them, because they only exist in the digital realm. Just like in the real world, you can use the ports to send MIDI data from one device to the other, only in this case the devices are software applications.

The nature of MIDI Yoke being a driver, there is no actual program installed. In fact, it is very similar to adding a new hardware MIDI interface to your computer. The ports will show up in your audio applications with names like "MIDI-Yoke NT:1". To make the connection, select in the sending application one MIDI Yoke port as output, in the receiving application you choose the same port as input.

If you really feel the urge to mess around with MIDI Yoke's settings, you have to explore Window's Device Manager. We leave it as an exercise to the reader to find those settings.

A word of advice. If you are using MIDI Yoke on an advanced level, good ol' pen and paper to make notes of used ports is not prudent, unless you have taken a liking to MIDI feedback and seemingly random MIDI routing. Do not trash the notes afterwards, but hold on to those notes for future reference in case you are going to change the settings.

Depending on the things you want to accomplish you may also need :

  • MIDI-OX, a software by the same developer as MIDI Yoke, powerful options to analyze and change MIDI data.
  • The VSTNETMID-Suite of Tobybear. The Suite is part of the MIDIbag. You can only download the whole bag, after which you can choose to install the VSTNETMID-Suite only.
See below to figure out what software you will actually need. I also assume you already have some basic knowledge about the way MIDI works in Renoise.

Receiving MIDI data from another application

Required software: MIDI Yoke Select "MIDI-Yoke NT:1" as output in your other application and "MIDI-Yoke NT:1" as input in Renoise. The example here is "Joy2Mid" (a small tool to convert movement/buttons on a joypad to MIDIdata) inputting its data into Renoise but the principle is the same for every application.

Sending MIDI data to another application

Required software: MIDI Yoke If you want to send MIDI data to another application the basic principle is the same. Set up your instruments in Renoise to send MIDI data to a MIDI Yoke Port and choose that port as input in your application. (Note at this point that I did set "MIDI-Yoke NT:2" as output port because I have still set "MIDI-Yoke NT:1" as input and if I would choose the same port as the output I would have MIDI feedback. Take notes, guys.). Then set the same port as input in your other application (a standalone instance of Reaktor in this case) to receive the MIDI data send from Renoise. Note that if you want to send data from an already existing song you can just add the additional MIDI output settings to an existing instrument. Use channels, instrument and bank settings to sort out the different MIDI datastreams in your other application.

Sending MIDI data to another PC

Required software: MIDI Yoke, VSTNETMID-Suite

Whether you want to jam with someone who has his PC connected to his studio or if you want to send MIDI data to a VJ program, the basic strategy is the same.

First, follow the steps as described in the section Sending MIDI data to another application and set-up your MIDI Instruments. If you wish, you can also choose to send MIDI Clock Data with Renoise as Master to sync two programs together, make sure you use the same MIDI Yoke port you are using as output for your MIDI Instruments (port 2 in this case).

Now open MID2NET from Tobybear's MIDIbag. Enter the IP of the PC (PC B) you want to send the MIDI data to and a port. On PC B first make sure you have MIDI Yoke installed as well. Then open the counterpart called NET2MID, set the same port you specified on PC A and use the IP of PC A. The manual states "use 0.0.0.0 to accept data from any IP" but my tests show that this is not working too well. Now specify a MIDI Yoke port as output and use that port as input for the DAW-Solution (or VJ-Software or similar) at PC B and set it to MIDI Slave if necessary/wanted. Note that you can set the MIDI Yoke port at PC B to whatever you like, the two copies of MIDI Yoke run independent of each other on each PC.

Receiving MIDI data from another PC

Required software: MIDI Yoke, VSTNETMID-Suite By now you should have got the general Idea. Output MIDI data on one PC to a virtual MIDI-Yoke-Port, feed that port into MID2NET, receive it using NET2MID and feed it into Renoise. Again, if you wish you can set the first PC to send MIDI-Clock-Data (as Master) and set-up Renoise to act as MIDI Slave, a solution that works reportedly better than setting Renoise as Master. Two things I should mention at this point.

Syncing Renoise to another application (no matter if as Master or Slave) always means needing to get both applications in sync, so the one does not play ahead of the other. The best way to do this is to load a loop and play it in both Renoise (use an fx-free channel to avoid plugin-delay issues) and whatever other application you use and play around with the offset-setting until both play simultaneously. Having experience as a DJ helps a lot this point.

To help you with that, I created two loops with equal tempo (120bpm) [zip, 440 kB], one playing a low click, one playing a high click. Load one in each application (sync/pitch them to your tempo) and use them to determine the correct offset..

MID2NET and NET2MID work over WLAN (indeed, no cables) as well as over the Internet, although I don't know what this would be good for at the moment.

The VSTNETMID-Suite sometimes refuses to work correctly, if at all. Try messing around with different ports, different IPs, different Yoke-Ports. Sometimes one PC doesn't like receiving data but sending and vice-versa. There are rock-solid commercial solutions (eg. ipMIDI) if you can afford them.

Merging MIDI data

Required software: MIDI Yoke, MIDI-OX, VSTNETMID-Suite

Renoise offers two MIDI Input ports, probably enough for most. However, there may be a time when you need more of them. It is not unthinkable to own a MIDI keyboard, a MIDI controller such as a fader box, a joypad that doubles as an XY-pad and maybe another stream of MIDI data from your buddy on another PC.

To allow Renoise to use more than two MIDI Input devices, we will use MIDI-OX, a tool used to analyze and remap MIDI data. We will only need a fraction of the functionality this tool offers, but feel free to explore its capabilities. It might come in handy when you work a lot with MIDI.

Install MIDI-OX and launch it. Go to "Options/MIDI Devices" and select all input ports you want to use. In my case, MIDI Yoke port 1 for the joypad, port 2 for the data passed on from another application/PC, as well as "In USB Keystation", my M-Audio Keyboard. Also add a free MIDI Yoke port to send the MIDI data to, which we will set as MIDI Input in Renoise (MIDI Yoke port 3 in this case). Make sure not to use any of the inputs you just assigned to MIDI-OX as Renoise MIDI Input for a second time.

Press OK to close the Settings-Window and go to "View/Port Routings". Normally all connections should already have been done, if not just connect the In-Ports to the one Out-Port by dragging from one to the other. (Leave the MIDI-OX event port connected, you will need it if you choose to dig deeper into MIDIOX).

An important note. If possible, give each Renoise In Device its own MIDI channel in order to avoid overlapping controller numbers. Most controllers offer an option to set the MIDI channel the data is sent to.

If you use an external sequencer that is supposed to send data on multiple channels (eg. Groovebox, MPC or similar), it might be the best to reserve the second MIDI input in Renoise for this controller instead of remapping it in MIDI-OX.

An even more advanced example

The main reason for writing this whole thing is a question by Niall about using Renoise to control VJ software, as well as utilizing controllers to control Renoise and the VJ-Software. Unfortunately he has a Mac, and I don't know anything about Mac software similar those mentioned in this article.

However, given that you have read the text above it should be easy to understand and follow these steps:

  1. First merge all external Controller data (eg. keyboards, fader boxes, joypads) using MIDI-OX to a MIDI Yoke port A (using letters here because you might have to merge "real" in-ports as well as "virtual" ones (Joy2Mid again). Get that paper and pen, really).
  2. Use Port A as MIDI Input in Renoise.
  3. Setup your Instruments in Renoise to send MIDI data to another MIDI Yoke port B.
  4. Make sure to distribute all the data using MIDI channels (in Renoise and your external gear).
  5. Open a new free output port C in MIDI-OX.
  6. Now connect your inputs to C (just as you did for A, providing you want to use all controllers for the VJ software too) and also connect B to C.
  7. With MID2NET, send the MIDI data to the PC running the VJ software.
  8. First, receive the MIDI data with NET2MID on the VJ PC. Next, send the received MIDI data through a MIDI Yoke port on that same PC to the MIDI input port of the VJ software to get a steady, rich stream of data.

A final note. If you want to transmit Renoise's automation through MIDI, the only way I know is to setup a MIDI-CC Device linked to an instrument and copy the automation you want to send.

I hope this article is useful for some people, if you have questions, corrections or suggestions please comment. Looza
Category: 

4 comments

A specific alternative to MIDI Yoke on the Mac: <a href="http://www.renoise.com/board/index.php?showtopic=12590&amp;st=0&amp;p=94856&amp;#entry94856" rel="nofollow">MIDI Inter-Application Communication on Mac</a>
thanks a lot for this, very helpful :)
does this mean i can route reaktor to renoise and use reaktor within renoise?
@fronk As long as the .Ens accepts MIDI... Yes!