Pitch-accurate sequencing between Rack and hardware - an illustrated guide

This is an illustrated guide to sequencing hardware from Rack, and sequencing Rack from hardware, with accurate pitch, using a DC-coupled audio interface.

When using Rack together with hardware synthesizers, be they modular or other synths, there’s lots of attractive opportunities for integrating them, into a combined, hybrid system. This can be done over MIDI or over audio channels, and the following deals with the audio based option. Sending audio, triggers, gates, LFO’s, envelopes and such signals across audio channels is fairly easy to do. The issue of sending accurate and usable pitch between the two worlds however is more tricky, because pitch are such precise voltages, that even having them slightly off can make the setup unusable. This is a guide to solving that issue, and having rock-steady pitch over 6-7 octaves, making it possible to not only sequence your hardware synth from Rack, but also to sequence Rack from your hardware sequencer, if you so desire.

The objective is simple: Send pitch over an audio channel, and use it at the receiving end, to make sounds that correspond exactly to that pitch.

The problems that need to be solved are the following:

  • Audio interfaces are generally not hardware calibrated to transfer voltages perfectly. They will introduce small offsets to the voltage and that changes the pitch. Further more, those offsets can be non-linear, so that using a simple offset module is not sufficient.
  • Oscillators, especially analog ones, are often not tuned exactly, and do not track pitch perfectly across several octaves. Mostly they cannot be calibrated to do so perfectly, all the time.

The solution to these combined problems is to use a calibration module in Rack, that compensates for all of these. In Rack we have two such calibration modules:

Both work as advertised but in my tests I have most often found Voice Controller to give the most reliable and quick results. Your milage may vary.

A potential problem that the calibration will not solve is hardware oscillator tuning drift over time, because of temperature changes, which can happen. If you get this problem you will need to re-run the calibration. Also note that the calibration is per hardware oscillator, as they are all different. Technically the calibration is also per audio port, since they might have different offsets and unlinearities.

Why the need for calibration, instead of just inserting a quantizer at the receiving end? Aside from possibly not having a quantizer available, it turns out that the combined offsets, imprecisions and unlinearities of the whole chain of sequencers, audio ports and VCO’s, can be more than a quantizer can reliably compensate for.

The way the calibration module works is like this: You go through a calibration step during which the module sends out a wide range of pitch voltages and listens to the audio coming back. It calculates how much the audio is off compared to the pitch, at regular intervals, and what voltage would be needed to compensate for this. In that way it builds an internal compensation table across many octaves. When the calibration is done you use it for playing by sending pitch through its input/output ports, and in that way the pitch voltage is adjusted on the fly using its compensation table, for an accurate result.

In the following I illustrate how to do it, both for sending pitch from Rack to hardware, and for sending pitch from hardware to Rack, using both the calibration modules. Most people will use a DC-coupled audio interface for transmitting the pitch over an audio channel, but other more esoteric hardware+sofware modules exist as well, from e.g. Expert Sleepers. In my examples I use my ES-9 eurorack audio interface from Expert Sleepers, so you simple substitute ES-9 for “my interface” in the text.

Before running the calibration step, I recommend you turn off any audio playing programs on the computer, and also any other CPU using programs.

When doing the calibration I recommend using the sine output of the VCO, or second best, the triangle output, to maximize the chance for the audio frequency detection in the calibration module to work correctly. You should not have any filters or effects in the audio path during the calibration, it should be VCO straight to audio input/calibration input.

Sequencing hardware from Rack

This is the most common scenario, and what the calibration modules are made for. For this you need at least one DC-coupled output from your audio interface.

If you are going to use a quantizer in the hardware end, for other purposes, you should probably connect it before running the calibration.

I recommend you warm up the hardware for half an hour before doing the calibration, to allow the tuning to settle down. I also recommend that before the calibration you do a good-enough manual tuning of the oscillator, for example by sending its output straight through the audio interface to e.g. Hot Tuna in Rack.

If you have a VCO that doesn’t accept negative voltages on its V/Oct input, you should tune it to the lowest note you expect to use in the patch. After you have done the calibration you should not be touching the tuning/frequency knobs of your VCO any more.

Using the Voice Controller module

First calibrating:

Then using it/playing:

Using the Tunathor module

First calibrating:

Then using it/playing:

What can go wrong?

I’ve experienced a couple of times, with both calibration modules, that the calibration step would go weird. In Voice Controller the calibration curve should look like a straight line:

image

If it looks like this with a big “hump”, the calibration has gone wrong and you need to run it again:

image

I’ve had it go wrong a few times in a row, don’t ask me why, and the solution was to close Rack, turn off the hardware, wait a minute and then turn on both again, then it worked. I know, it sounds like “just reboot Windows”. Don’t ask.

Sequencing Rack from hardware

This is the more unusual scenario, and the Rack calibration modules are not specifically made for this. We make it mostly work anyway with a bit of clever patching. For this you need at least one DC-coupled output and at least one DC-coupled input, from your audio interface. You also need to make sure that any DC-blocking on the input port of the audio interface is turned off for that port.

Using the Voice Controller module

First calibrating:

Then using it/playing:

Using the Tunathor module

First calibrating:

Then using it/playing:

As can be seen, during the calibration step we calibrate for the offsets of both the input and the output channels of the audio interface, but during playback we only incur the offset from the input channel. In other words, it’s a bit of a hack. Since the offset of the output channel is now missing from the equation it means that this method is not always guaranteed to work. It will work as long as the difference in offset between the output and input channel is less than 50 cents (half af semitone), so this depends on your specific audio interface.

If you’re getting wrong notes, try the following: Insert the Bogaudio:Stack module after the output of the calibration module and deactivate its QNTZ switch. Then take the output of Stack directly into Hot Tuna. Now use the fine tune knob of Stack until you get as close as possible to the pitch that you are expecting from the hardware:

In that way you should be able to mostly offset away the effect of the missing output channel, and unless the output channel is very non-linear in its offset, this should have a high degree of succeeding. When you’re done, re-introduce the quantizer between Stack and the VCO:

But of course the guaranteed solution for sequencing Rack from hardware is to use a hardware calibration module …

Using a hardware calibration module

Basically this is the reversed scenario, compared to sequencing hardware from Rack. During calibration a hardware calibration module sends out a series of pitch CV’s, through the audio interface to the VCO in Rack, and analyzes the audio frequencies coming back from the VCO, through the audio interface. Several hardware modules exist (see comments below). I happen to have the Ornament & Crime module, which has a References “app” that contains a VCO calibration mode, and so the following description uses that.

First tuning 0V to C4:

The Umix module is only there because Stack does not pass more than 5V through (possible bug).

Then calibrating:

image

image

Then using it/playing:

The quantizer in Rack is not strictly needed here, only if you want to be a bit anal about getting the last couple of cents bang-on. Note the need to select another “app” in Ornament & Crime (e.g. Quantermain), before actually playing through it. This is because the References app can’t actually be used for playing, only calibrating. A bit funny but there it is. I have found that, when calibrated, this setup can deliver accurate pitch over 9 octaves.

I hope you found this useful. Corrections and feedback are welcome.

I’ve found during my testing that it’s actually possible to achieve rock-steady pitch both ways, paving the way for much joy. If you think that this is a lot of text and must be really complicated, it’s actually not. I have just found existing descriptions much too sketchy, glossing over lots of things and missing out on the understanding of what’s going on, and so opted to do a detailed description for your benefit, to make sure you get it right and working properly.

DISCLAIMER: I take no reponsibility what so ever, for any damage that may incur from your fiddling around with your hardware. It’s your own responsibility to know what you’re doing, using the right cables, ports, configurations etc.

23 Likes

Hey Lars - this is an excellent guide - well done!

One thing… in your ‘Sequencing Rack from hardware’ section - that is a clever trick with the loopback on the ES-9. I’m not sure (theoretically) it should work accurately though (please correct me if I’ve missed something). Reason being… as you know, there is no constant in the correction required between each ES input/output - and in your calibration, you are going through two different ES jacks, but then only using one when playing. It seems to me the calibration would be taking the variances of the 2 jacks into account - but then when playing back there is only the variance of one, which would make the calibration a little off I would have thought.

1 Like

Thanks very much Steve!

Yes, you are completely right. Let me see if I can get this phrased right:

It’s true that there is no guarantee that it will always work, on all hardware, because of having to use this loopback trick in the hardware->Rack direction during calibration.

But it’s a statistical gamble that I think will work most of the time. If the two ports don’t happen to be offset strongly in the same direction. And because you can use the quantizer. And because, as a last resort, you can introduce a fixed offset in Rack as well.

I don’t know. It works for me every time on the ES-9. It would be an interesting survey, and I don’t know how crazy different audio interfaces are. But my gut feeling says that it will work for most people, most of the time. So yes, you’re right, theoretically it won’t work half the time, but I think statistically it can work most of the time.

But yeah, outside of getting a hardware version of the Voice Control (or Tunathor) module, there won’t be guarantees that it will always work for sequencing Rack from hardware.

What does your inner statistical analyst, and knower of crazy audio interfaces say?

1 Like

My inner statistical analyst says 77.36% of statistics are made up anyway so probably best just to try it and see if it works for you :slight_smile:

1 Like

:grin: I think you’re right. Would be interesting to hear from people where it works or doesn’t work, in that direction, and hear what their audio interface is.

Thanks Lars! Great resource you have here!

1 Like

Thanks so much for this guide.

1 Like

Thank you Lars for the guide. Most of these things I learned the “hard way” as I had no well written guide like this :slight_smile:

Something that might be interesting for some people: There are a few calibration modules on the hardware side as well, I know these two:

  • Klavis CalTrans
  • Expert Sleepers FH-2 (it has the Voice Controller built in)
1 Like

Thanks so much Lars. I’ve only gone over to the dark side fairly recently and I have not done any sequencing from Rack yet just because I knew I had to confront the calibration issue, which I have been pushing down the list of things to learn about thus far. This is so incredibly helpful (and timely!). Cheers.

Edit: Has anybody got an idiot’s guide to latency compensation in hybrid setups ?

1 Like

Thanks Ben!

Yeah, these are very interesting, especially if they have the ability to send out pitch and analyze incoming audio frequencies and build up compensation tables. I also came to think, that I have my Ornament & Crime module in eurorack, with it’s References app that has an “closed-loop calibration” mode. I should probably investigate whether this actually works for the purpose. If it does I’ll post an addendum to the guide, that would be very exiting.

But keep 'em coming people, if you know of other hardware calibration modules, might as well build up a little knowledge base here.

Thanks Nik, you’re welcome! Looking forward to seing your rack on ModularGrid :stuck_out_tongue_winking_eye:

I reacall Omri doing a video touching on it. I think the idiots guide in brief is:

  • In Rack, send a pulse out to the ES-9/interface, and also seperately to the scope through a signal delay module.
  • In euro, take the pulse from the ES-9/interface and send it back through the interface, into Rack and to the scope.
  • Adjust the signal delay in Rack, until the pulses line up exactly in the scope. Now you can send signals/sounds in Rack through the delay module and they will be in sync with the signals from the euro.

Let me know if I should do a little illustrated guide for that also :slight_smile:

2 Likes

Many thanks. That seems simple enough and I will give it a try.

There is a lot of pedagogical work to be done here. All your research is always very serious and meticulous. Merci Lars :slightly_smiling_face:

1 Like

I updated the end of the guide, to document how you can compensate for the missing output port in the calibration, when sequencing Rack from hardware. I do believe this will have a very high degree of success, but is obviously a little more work. Am working on getting my Ornament & Crime to work for hardware calibration. It definately should but having a smidge of trouble, could be a firmware bug of course.

1 Like

Maybe a list of suitable hardware interfaces would be interesting to add to this topic. I’ve been looking at some but find it hard to find the right one. Of course the expert sleepers stuff is great for this, but it’s quite expensive. For now, I am using my new CV-OCD as Rack-to-CV converter, but I expected a flexible unit that could output CV’s, and that’s not really what it does. So if anyone could add some suggestions for an affordable DC-coupled (audio) interface, I hope that would add to this great guide.

Expert Sleepers doesn’t really have much competition in this regard (surprisingly) and there aren’t really any particularly affordable DC coupled interfaces that offer the full range of CVs like ES does - the cheaper option is what you have - CV.OCD.

Cheapest way I reckon is to pick up an audio interface like the Audient ID22 which has ADAT in/out and you can usually pick up reasonably cheap on Ebay, and then add an ES-3 which you can again pick up for a reasonable price, particularly if you go for the previous version that doesn’t have the jack LEDs.

2 Likes

List 1:

List 2:

https://www.sweetwater.com/sweetcare/articles/which-audio-interfaces-are-dc-coupled/

I particularly fancy the looks of the very affordable “Native Instruments Komplete Audio 6 MK2” with its 4 DC-coupled outputs:

https://www.sweetwater.com/store/detail/KompAudio6mk2--native-instruments-komplete-audio-6-mk2-usb-audio-interface

If you have a Disting in your Eurorack, or a second hand ES-1, you can use a module in Rack to send CV to hardware over a normal AC-coupled audio interface:

But I actually think it would be better to start a seperate, canonical topic about this, since it comes up very regularly :slight_smile:

I thought I would find a thread about this, but couldn’t find it (maybe I didn’t search enough). Anyway the Komplete seems like an interesting option. Thanks for that.

1 Like

IIRC the voltage range on the Komplete Audio 6 is limited. +/- 2v rings a bell.

1 Like

There is also an DIY route described by Os (= Andrew Ostler of Expert Sleepers) which works with any audio interface, like the algorithm on the Disting or the ES-1. I did a test build on a breadboard some time ago and it works quite well after calibration, with a range -10V to +10V.
AC Encoder active circuit prototype - MUFF WIGGLER

2 Likes