Importance of independent per-voice polyphonic signal processing

In one of the threads last week, the importance of independent per-voice signal processing was discussed and Andrew suggested an AB would be a good way of making evident the benefits (or not as the case may be).

To that end, I’ve recorded a short video that explains and makes evident the benefit of per-voice signal processing via the Arturia polysynth emulation SEM V. I believe SEM V to be a good example as it has a very low processor overhead in comparison to the best in class polysynth emulation (Repro-5).

Please excuse the occasional choppiness of the voice recording. My studio gets hot so I utilize a number of fans; sum-effect, there’s a constant background hum (which I no longer notice), and I employed a gate effect to remove the background noise. It’s mostly transparent apart from the occasional glitch.

Also of note. I’ve recorded at 1440p but the video can still be viewed effectively at lower resolutions.

Don’t have time to watch, but what are the % results of your A/B test for certain Hz spreads?

On a side note this might interest you

You asked for an AB comparison and I’ve provided one. If four minutes is too much out of your busy schedule, maybe a screengrab will explain things more succinctly.

The part to focus on is the 8-Voice Programmer at the top of the interface. It allows the artist to provide individual voice modulations for each note of a held chord voicing. In the example that I show in the video, the per voice modulations are active on VCF freq, VCF mode (the SEM has a State Variable Filter where you can sweep from low to high pass via a notch response), VCO2 fine-tuning and the Pan position of each individual chord voice. The important thing to understand is that each time a chord is triggered, the voice allocation is rotated (both in-order, and randomly). e.g. If the first note of the chord voicing was originally voiced by ‘slot 2’, it’s voiced via ‘slot 4’ the next time the chord is triggered and ‘slot 1’ on the next again.

As to your question with regard to specific Hz spreads, there’s no one answer. It very much depends on how the artist decides to set up the individual voice slots in the 8 Voice Programmer.

The available parameters within the voice programmer are more than you can see in the screengrab so in the interests of accuracy I’ll list all the available parameters (it’s a small list as it’s only the parameters that were considered apt for individual per voice settings).

VCO1+2 course, VCO1 course, VCO1 fine, VCO1 pulse width, VCO2 course, VCO2 fine, VCO pulse width, VCF freq, VCF reso, VCF mode, VCO1 mix, VCO2 mix, SubOsc/Noise Mix, Env1 attack, Env1 decay, Env1 sustain, Env2 attack, Env2 decay, Env2, sustain, LFO1 freq, LFO1 amount, LFO amount, VCA level and finally VCA pan.

It’s important that the 8 Voice Programmer isn’t confused with a typical modulation matrix. The core difference is that the modulations are individual to each note of the available polyphony. It also goes far further than any tuning tracking to each of the filter voices that occurs under the hood.

As mentioned in the video, it’s this approach to per-voice polyphonic signal processing that separated the best of the Oberheim and Prophet polysynths from their competition back in the day. It’s also the feature that makes the SEM V, Repro-5 and the Sonic Projects OP-X Pro II stand out in the VA field. Interestingly, the SEM V and OP-X Pro II are very light on CPU resources as their less accurate emulations than the Repro-5 but they still manage to stand out in a congested field of VA plugin options. It’s also worth mentioning that Arturia’s new synth ‘Pigments’ has taken adapted this approach and turned the dial to 11 (in a very good way).

I’m not suggesting that VCV copies the 8 Voice Programmer directly but it would be great if a similar capability were made available. I have no idea of the engineering required within VCV but I would expect that a consideration for such a feature would need to be built into the VCV core; even if were something that was only provided by third-party developers in the fullness of time

Thanks for your suggestion @devcr. To save time I recorded the video live and noise gating was the best approach available. If I were cleaning up in post I would probably have turned to the iZotope suite (habit, as it’s something I’ve used for years, there may be better approaches out there). You can’t use the iZotope RX tools live as they introduce too much latency.