Sorry for confusion. You're right about bargraph parameters - I have fixed this in patch sources, but haven't updated docs with corrected code yet. Was planning to do it before publishing, but ended up uploading docs as is.
As for LFO itself, I think you should lower its frequency. I've used this in my updated version:
lfo_freq = hslider("LFO frequency[OWL:B]", 0.3, 0.01, 1.0, 0.01);
You can't just use CV inputs/outputs for audio rate data. It doesn't process data for every sample, but once per audio block (every 64 samples). So you're effectively using sampling rate of 750Hz in case of CV (48000 / 64). This is still good enough for slow LFOs/envelopes/gates, but if you want to hear harmonics higher than 375 Hz you need to use audio outputs for that.
With shorter block size you'll be able to process CV with higher sampling rate. Martin mentioned that he'll be adding audio block size changing to firmware eventually (or I may even give it a try myself).
Also, it's probably a good idea to use smoothing for data that is received from CV inputs using something like this (you may want to experiment with smoothing value):
lfo_freq = hslider("LFO frequency[OWL:B]", 0.3, 0.01, 1.0, 0.01) : si.smooth(0.99);
Regarding stereo signals - I prefer to write it like this:
process = wave <: _, _;
In this case your version is equivalent and perfectly valid, but this way code can be more explicit about signal flow. Also, I suspect that writing it the way you did may cause double calculation in one particular case - if it would be using a foreign function which doesn't takes parameters (i.e. if we used a function written in C that generates random number).