My understanding - and @synthi can correct me if I’m wrong - is it transposes a CV so it’s inside the range.
it does this:
var note = fmod(CV); // the note of the scale is the
// fractional part of the CV,
// since it's 1V/Octave. The octave
// # is the integral part of the CV
if (CV < lower_bound)
outCV = lower_bound + note; // transpose to bottom octave of range
else if(CV > upper_bound)
outCV = (upper_bound - 1) + note; // transpose to top octave of range
outCV = CV; // note is in range.
Fence has different ways to express how it ‘fences’ and I’ve not bothered reading the manual so I don’t know if it will do octave folding the same way, or just clamp notes inside the range. I suppose I could do that but it kind of takes me out of my flow when I’m patching to look at manuals.
My impression of Fence is that it’s hard to control the range. But again that’s probably me not reading the manual.
EDIT: I read the manual and still don’t get it 100% Suffice it to say, the way Fence works isn’t intuitive for me. Nothing wrong with it, it just baffles me.
It’s not that tough - the default mode transposes by octaves any incoming voltage outside a given one-octave range, so that the transposed value is inside the range. You can set this range to be something other than one octave, shift it up and down, and so forth.
There’s also a non-quantized mode that you can use for other kinds of voltage - how the transposition for this works I haven’t learned yet.
The advantage of using a modulo math function for this is that you can set the limited range to any size, and transpose values up and down by increments equal to the size of that range, which need not be 1 volt / 1 octave
This is good to know. It’s looks like it could be more controllable than my usual method which is passing pitch CV to Normaliser to impose a min/max window that stretches the cv to fit a range prior to quantising.
The downside is trying to work out how these complex modules work. A lot of the time I ignore them in favour of lashing blocks of simple function modules together.
What Normaliser misses is something indicating the limits in terms of notes. I found a module that can interpret the min/max values as notes
My favourite thing with having CV to set the min and max is that they then can be modulated or sequenced giving more ‘life’.