I've done some CV quantization in kyma recently. I'm taking a CV in to kyma, snapping it to a note frequency and sending it back out as a quantized CV. I'm using the Expert Sleepers ES-8 to do that (which has 4 DC-coupled inputs and 8 outputs).
On the way in I'm using a SoundToGlobalController to scale the CV input:
Here I'm not honoring 1 Volt per octave on the input CV. That's because I'm using this function with a home made ribbon controller and this lets me set the range of the controller. But this STGC does convert from CV to note number.
I imagine you could also convert the input to unipolar and multiply by 127 to give you the full frequency range. Something like:
[CV in] L / 2 + 0.5 * 127
Then on the output I'm using a CapytalkToSound with the following:
The CVOutScaling is very close to 1.0, I just tweak it slightly to make sure it's in tune. It's dividing by 127 that does the conversion from note number to 1 volt per octave. It's 127 because that's the full range of midi note numbers. (This works with the Expert Sleepers interfaces because they're designed to give the full modular CV range as output, +-10V. For other DC coupled sound cards you might have to adjust the scaling.)
The other thing you might want to have a look at is the Capytalk hzToSignal message. This converts a value in frequency to a value suitable for an audio channel (ie in the range [-1 1]).
Although it's called hzToSignal, if I remember right, it does work for any frequency value as long as it's a ScalarWithUnits where the units are some kind of frequency. In other words you could do something like:
3000 bpm hzToSignal
There's also the inverse message, signalToHz that converts from a pitch represented in the range [-1 1] that could be sent over the audio channel, to a Capytalk value in frequency.