External FX send/return capability

Why is there no functional means to setup an external FX send/return pathway in Renoise? I’m genuinely frustrated to no end by this omission. I’ve used multiple other DAWs – Ableton, Bitwig, Logic, Reaper – which all have a native send/return insert device with latency compensation automatically handled, but Renoise has no such device.

I’m aware of how to set up a send channel in Renoise routed to the appropriate output on my interface, and an accompanying return channel with Line Input, but there is no way to compensate for the round-trip latency without manually adding a time delay plugin (e.g. Voxengo) to every single other channel. Track delays on the source & return track can be pushed into the negative enough to start to close the latency gap, but never 100%. And even if that worked, it would not enable external FX as inserts e.g. on the master channel.

I’d genuinely pay the license fee again to have this basic feature in Renoise. I don’t have a big hardware studio, but I do have a few high-quality pieces of outboard which are important to my sound and desired workflow. Will this ever be implemented?

Can the track delay control in the mixer help here?

image

Setting negative delay values on the source or return tracks of a send/return loop lowers the perceived latency, but doesn’t eliminate it.

Okay, after a lot of trial and error I’ve found a method of synchronizing external FX return channels with the rest of the project using track delays. Posting it here for reference in case some future internet-searcher is trying to do the same:

  1. Setup your audio interface outputs going to your external FX input. In Renoise, you can either directly set the source tracks’ output channel to your FX input, or route it through a send channel which does the same – I prefer the latter as the Send device keeps things tidy in the project.
  2. Setup a Line In instrument on the desired return track and set its latency setting to MIDI Return Mode.
  3. Setup a test track e.g. a rim shot sample playing a 4/4 beat, ala the metronome. Send it through your FX loop, either by directly setting the track’s outputs to the FX channels on your interface OR by using the Send device to route it through a send channel which does the same. If you are routing through a separate send channel, you must use the “Mute Source” setting on the Send device – this method will not work for a send/return which is not 100% wet.
  4. Duplicate the source track, but do not send it to the FX.
  5. Set your FX device to Bypass, then monitor the return channel. You should hear the round trip latency between your duplicated source track and the return track.
  6. Place a delay plugin like Voxengo Sound Delay (free) on the duplicated source track. Turn up the delay time until you hear the duplicated source and return tracks come into time – this is your characteristic round trip latency time. On my machine, this is right around 30ms despite having a 3ms Renoise internal latency setting and typically a ~2-3ms I/O round trip latency on my RME interfaces (I have no idea why the effective Renoise round trip latency is so high relative to the system latency).
  7. To compensate for the delay, you must half your characteristic latency time and apply it as a negative-valued track delay on both the source and return tracks. On my setup, this means the source track and return track both need to have around -15ms Track Delay. Just setting the return track’s Track Delay to -30ms will not do the trick.
  8. If you’ve done all this correctly, and assuming my system is not simply a unicorn on which this method works, you should have your return FX track in-time with the rest of your project’s tracks.
  9. If you want to chain a series of FX sends, you have to add another Track Delay offset amount to both the first return track (which is now itself a source track) and the second return track. For example, if you wanted to do Source → Send/Return #1 → Send/Return #2, and your characteristic round trip latency was 30ms like mine, then you’d need to set [-15ms, -30ms, -30ms] Track Delays on these tracks, respectively.

Note again that this method will only work to bring the return track into time with the rest of the project – the consequence is that the dry source track will permanently be out-of-time (this is where I was banging my head against the wall for months). If you want to do something like a reverb or delay send in which the dry source track is mixed in with the effected sound, then you have to duplicate the source track as your dry signal and then manually adjust wet/dry balance in the mixer.

Hope this is helpful to someone else in the future. If anyone would like to test this method on their setups and confirm it works, please report back.

1 Like