Calibration - TheTechnobear/SSP GitHub Wiki
Calibration of physical inputs and outputs
also see : Understanding Voltages
With the current firmware on the SSP the external IO maps very closely to internal values. (there was a huge improvement a few releases back)
however, whenever you use codecs/opamps , you have tolerances, and get minor offset and scaling on inputs/outputs .... e.g. 0v in might lead to 0.001 digital. this is true for all hardware, even with the high quality hardware the SSP uses - this is why digital modules have 'calibration' on v/oct inputs. (see notes below)
basically, to calibrate all you need to do is to apply an offset, and potentially a scaling to the IO, fortunately, the SSP can do this , as with have scale/offset built-in (usually, I do within IN module)
the question is ... what values for scale/offset... well this is an iterative process... (I'll demo for inputs only , you can imagine similar for output)
a) apply 0v input - then add offset (might be + or -) , such that 0v = 0.0000 b) apply 4v input - scale such that you get 0.8 (=4v internal) iterate a/b... since when you do (b) it'll shift 0v.
you can try other voltages... sometimes I use -3v/0v/+3v... looking for -0.6/0/+0.6...
in practice, I find (a) is often enough for what I want... and often do even for audio, to remove the DC offset... though less than I used to as its 'close enough' these days (I think 0.001?) . Id only bother with (b) for v/oct. this process adjusts linear scaling, see below for details - but in practice its been fine for me.
first time you do the above, it'll take a while but once you've done a few times, you get pretty quick and know how much to adjust the scale, its impact on offset, and so will hone in on the right values quicker. (which you can then of course, write down ... though see notes below!)
also you are NOT after a perfect result... just 'good enough' I cannot emphasis this enough... you will waste alot of time other wise.
I can do the above quickly and its enough for my needs. also using something like the SHQ module for quantising, means you don't to be that accurate, and possibly don't need to calibrate at all. (even if using SHQ with Chromatic scale)
Important notes:
why are IO not calibrated?
calibration incurs processing cost, and also will reduce range (volts) , so you only do it where you NEED to do it.. but with the SSP, you've no idea which (e.g) inputs are being used for v/oct, and so could benefit from calibration - hence this cannot/should not be done on every SSP IO.
one thing that could be done, is to have a calibration routine.. then you could 'mark' in the IN/OUT module when you wanted them to use the calibration... but as I talked about above, its not really a bit issue these days, which is why Ive not done anything in this area.
also its a bit of a pain, to actually do calibration, as you need a good 'reference' e.g. accurate voltmeters or similar... and doing it badly, will likely make it worst than none at all ;)
non-linear scaling
the above only handles linear scaling... some (not many!) modules will take multiple data points, and so scale that way, which is not possible with a single scaling/offset factor.
we could create a module to do multiple point scaling, but this is even more painful to do the calibration routine (without appropriate testing hardware)... and again error prone, for little gain in practice except at the extremes. which is probably why many eurorack modules don't bother!.
note: no op-amp (even rail to rail) will do full +/-5v, so I ignore the ends of the scales, depending on scale factor/offset required , you'll get better/worst.
what to use for calibrating inputs?
thats the interesting one unless you have a good voltage source, you have to think 'relative' !
what I tend to use is my midi 2 cv module (e.g. Hermod) or sequencer (USTA)
BUT reality is... your eurorack sequencer/midi 2 cv modules is also not PERFECTLY calibrated... so you are calibrating to ONE module. i.e. if I calibrate to my Hermod, it might not be perfect for my USTA. - and that is OK.
if you don't think like this ... and start recalibrating all your modules to a single reference, you will chase your own tail around n' around.... Ive been there !
once you have an input source, you can use DATA (or SWAT) to look at the values internally within SSP another way is to output a sine wave, and then check its output frequency.
what to use for calibrating outputs
ideally you use an accurate 4-5 digit multimeter... but few have these. this one is tricker... one way is to calibrate your inputs... then feed your outputs into the inputs. BUT this is only as good as your input calibration.