Panning module

Ok so I don’t have my SSP in front of me right now so maybe I just don’t remember and it exist already but I have a feeling it doesn’t.

Description of feature (short and simple):
Panning module

How will this feature improve the workflow or experience for all SSP users (keep it short and focused):

It would be awesome to have some kind of cv panning module so we can bounce stuff around in the stereo field. Something that take a mono signal in, have stereo outout and has a cv input to move the input L or R.

I was looking at videos and that made me want to get a Make Noise X-pan but I figured we could have something similar in the SSP and it probably (idk for sure) would not be much work to do.

Personally I’ve been using my ssp mostly for mixing, compression, reverb lately. “End of chain module”, so adding a panning module that we can use before sending it to the performance mixer one would be cool. :slight_smile:

1 Like

so, in theory, panning can be done with a couple of vcas

audio → vca audio1, vca audio 2 (bare in mind VCA is quad :wink: )
pan cv → vca cv1 , vca cv2 (inverted)

the key here is to invert the cv signal on the input of the second vca. i.e. set scale = -1.0

now I say, in theory…
the thing is here, really you want to use a exponential vca rather than a linear.

I noticed there was no documentation for the QVCA in this regard, so I checked it out, and have now updated the ssp wiki QVCA page, but as you can see, unfortunately, it is a linear vca…

what does this mean… the issue is when you pan, ideally you don’t want the gain to change as you pan… i.e. panned to the centre, it should roughly be as ‘loud’ in the centre, as to the side. that cannot be done in a linear fashion, since we perceive loudness as a exponential function.

there are various ways to do this, and some of it comes down to ‘taste’
so, in practice many mixers/daws implement different ‘pan curves’ for this purpose.

are we lost?

so using a exp vca, means you can use a LINEAR pan signal
however, you can use a linear vca by using a non-linear pan signal.
what does this mean?

well rather than panning with say a triangle wave , to move from L->C->R, instead we use something like a sin/cos curve - and to control our position we use PHASE.
so essentially. linear sig → sin phase → sin signal → vca cv / pan

(essentially by using phase we are using it as a transformation function)
I should say Ive not tested this… so some experimentation is required… I’ll give it a go in a minute :wink:

however, IF you are not trying to do precision panning/placement, then we can ignore this really…
rather, you just use a sine wave for modulating pan position, rather than a triangle wave.

I should point out for the adventurous, this technique is possible for doing quad or more…

thats not to say panning modules/mixers are not useful…
as I said for precision placement, its easier with something that understands pan curves, and uses linear signals… this is why I added panning to PMIX, so its ‘easier’
similarly if we look at quad mixers, we have a similar feature, you just give them angle, and they will calculate the 4 cv’s needed for each vca.

BUT this is modular, so there is always a way, even if we dont have the ‘convenience’ modules.

BTW: a panning module would be trivial to implement using my RNBO template :wink:


ok, this is not working… there appears to be a bug in the phase input on LFO.
since, as soon as I connect something to it, its seems to ‘blow up’ LFO.
… so all we get is noise.

1 Like

I do have a doepfer quad exp vca and a wmd invert offset that I don’t often use so I’ll try to figure that out with these :thinking::+1:

Thanks Mark!

But yeah still could be a useful module if someone can do that with rnbo :slight_smile:

1 Like

I took a quick look at the LFO code, and believe I found the bug (and possible fix) and reported to Bert.

unfortunately, Ive noticed none of my ‘oscillators’ have a phase input, so we dont have an alternative.
perhaps I’ll take a quick look at adding phase input to OMOD, as this could be a prime candidate for using in this way.

I might also add a couple of useful transfer functions to SWAT.
(its funny, I thought Id already put a pan function in swat, but obviously that never quite made it from my head to real code :wink: )

anyway, as I said, this ‘phase’ issue only really is a problem if you need to do this transfer function.
if you just want to modulate across the stereo field, you should be able to do this using the SN output of LFO.

a (sub)module to switch phase with the press of a button would be most welcome

inverting phase is simply scale = -1.0 - no?
why do you need a module to do that ?.. and the latency and overhead that this will incur?

the reason we need this in things like DAWs, is we don’t have these kind of fundamental processing capabilities. and we need in modular, because, again everything has to be a module :slight_smile:

kind of an aside,
I will say, that phase can get complicated/problematic on the SSP…
as with all digital processing, the SSP works on buffers, which create signal latency. ( * )
there are many situations where extra/unexpected delays can be created when patching, which aren’t 100% predicable (not going into details here about why, as its bigger topic I don’t want to get into).
these will potentially alter the phase with relation to other signal paths.

(and of course, certain dsp process eg. delays/filters will also alter phase - though thats also true in the analog domain)

so yeah, if you are combining signals, it can be worth occasionally trying to invert the phase (so scale = -1.0 on one of the signals), if you suspect phasing issues.

I guess I could add to something like PMIX (not sure I have space in UI though), which would work for end of chain, or prior to sending to a (aux) bus - though as yet, Ive never really stumbled on a time id use it. though perhaps, Id need to try a few tracks thru it, see if sometimes it sounds better.

( * ) amusingly this is a reason you do not want a module to invert phase… because by adding the module into the signal path, there is a chance this will alter the phase relationship.
the only way to avoid this is to pass BOTH signals thru the module, so that the module introduces the same phase changes (and then you can invert one) BUT now you have doubled the processing load.
(and this only works with 2 signals, what if you have 4? or 8?)

ok, Ive submitted a small fix for this, subject to review - this’ll mean its available in next synthor release.
(and, no, I’ve no idea when this might be)

as part of fixing, I started playing with phase modulation (PM), and its a really fun area…

basically, PM allows you not only to do FM like sounds, but also wave-shaping by treating the oscillator as a transfer function (which was what I suggested in the previous post)

its got my head buzzing having a phase input on other ‘oscillator types’, in particular a sampler with phase input could be quite interesting.
(in basic theory ‘start’ on a sampler is the same as phase , but in practice, often they are quite the same thing :wink: )

tech note: audio buffers are floating point (32bit) this does mean a phase input has ‘limited’ accuracy, so at high frequencies, you’ll get a kind of bit crush effect, as the ‘resolution steps’ are a bit too granular.
but still its very useful, and just more something to ‘bare in mind’.

anyway back to panning :laughing:

1 Like

i don’t think so

i mainly use it when layering drum sounds, if the phase don’t match we need to invert it
it is a staple button on every mixing console :slight_smile:

actually that article, shows the indeed it is inverted !

before phase inversion
Screenshot 2023-02-08 at 13.02.39
Screenshot 2023-02-08 at 13.02.50
after phase inversion

look at the peaks/troughs, and you can see the inversion.
yes, its not 100% the same, but thats because slightly different recording of the snare
(if you look closely you can see the waveforms are merely similar, not the same, even the pitch is very slightly different)

the thing here is, theres only 2 theoretical ways to do this.

a) invert the signal,
this is not really intended to fix the underlying (timing) issue, rather to fix the ‘effect’ , which is phase cancellation.
the advantage, and why we use it is its cheap n’ simple.

b) delay compensation
if your signal chain is delay compensated, you wont have phase issues…
so a possible fix. is to indeed do phase compensation by using a delay line.
BUT thats not a simple button, you have to give it a time, aka delay compensation.

hence why (a) is chosen, at a mix level.

note: I should say, if you wont the 100% best result, then delay compensation is the correct way to handle phase cancellation… but with lots of tracks, all requiring different compensation we know how difficult this is to do in practice AND it can only be done pre-mix down.

as for the article, well I dont know if phase reverse is used in the industry,
but regardless, is frankly, technically, complete jibberish. its not ‘reversing’ anything , its inverting.
and the examples, which are a great idea, are quite misleading as I showed above.
(although 10 points, for showing a waveform other than a sine wave)

btw: you don’t have to believe me, these thing are easy to test for yourself :wink:

here I just grabbed a random clip in ableton live, phase inverted R channel and recorded to a new clip,
and this is what I got.

this clearly shows the inversion, and note how the tail is still exactly synchronised, showing that the waveform phase has not really changed at all.

as, I say very easy to test yourself… don’t believe people that try to make it sound more complicated, just to prove they are great mix engineers :laughing:

Human’s perceive loudness is a headache for me. I’m trying to make crossfader function at Looper module. But I can not have a nice volume curve for now because it is hard to define what the curve would be good since it is a human feeling…

for panning or level?

for panning for pmix , I use a 3db pan curve, which basically is just 1/2 a cos/sin curve.

for level, iirc, you use something like log10, basically its a linear ->db

if you’re using rnbo, then max has something to covert linear to db
(you’ll often see this in the examples, when they use sliders to control gain)

might have some appropriate for panning too, and bound to be some max examples knocking around.


For level.
And thanks, I’ll check liner to db.

My crossfade curve that was made with log does not make a smooth transition from loop A to loop B.

Maybe I need to try measuring the volume change with some equipment that has a crossfader that I feel smooth.

these are really, really smooth - i have it in my rack :slight_smile:

1 Like

I think generally, you’ll want to use a curve for cross fading based on the linear signal, then convert to exp for the levels side.

Im sure there are articles on this, certainly thats how I learnt about the different panning curves.

which also raises an important point, there are different curves, different approaches… that work better/worst for different material, and partly its down to taste.
(and often pro tools will allow for you to switch curves)

however, also like the inversion I showed above, we can also learn from tools we already have.
e.g. lets look at a crossfade in Ableton live.

this actually shows what I said at the top of this post.
there is a definite S curve to the fade , essentially a sine curve.

this view in Ableton shows us amplitude as a linear scale, we expect half to mean half gain.
but of course, Ableton will use a exponential scale when modifying the audio.

so we are back to…
the fade is done in a linear scale, using an S curve , then ALL linear scales are made exponential when applied to audio.

this also highlights another important point…
it doest really matter if you work in a linear or exponential scale… you can always move between the two.

put another way…
in when processing audio in eurorack we can get the same/similar results using
a) linear env → exp vca
b) exp env → linear vca

of course, the advantage of having switches on envs and vca, is they can be used for both non-audio (cv) and also audio.
(there are also, of course, other cases where using exp, or other curves, are useful for modulation)

but yeah, I will have a look at perhaps some modules for SSP in this area, as mostly we have linear tools currently.

1 Like

Would be really cool to have a phaser / flanger module.

1 Like