Version that runs in the browser, with latency that depends on the platform. In Firefox on a Mac it's solid, other platforms and browswers less so: bass-whistle-js.
|•||VST plugin, for Mac:||(VST3)|
|•||Plugin source, for Mac/Windows:||(source)|
|•||Stand-alone source, with PortAudio:||(source)|
Gate: how sensitive should the input be? The higher you set this, the more sensitive it will be. For noisy environments, set the gate as low as you can.
Attack: how sharply should sounds begin? The higer you set this, the more smoothly sounds will start.
Release: how sharply should sounds end? The higher you set this, the longer sounds will linger.
Octave: how many octaves down should it transpose?
F1: how much of the first harmonic (the fundamental) should there be?
F2: second harmonic
F3: third harmonic
F4: fourth harmonic
Slide: how quickly should pitch update when sliding between pitches? Lower values make it move more responsively.
Range Low: what's the maximum wavelength to recognize as whistling? Higher values mean recognizing lower pitches. Set this to match your whistling range, to as small a number as possible to minimize misrecognition.
Range High: what's the minimum wavelength to recognize as whistling? Opposite of Range High.
Response: how much should output volume vary based on input volume? At 0% output volume will be constant, while at 100% output volume will be fully responsive to input volume.
This is intended to be used with a low-pass filter following it, a shelf at around 400Hz. The output is not clean in the high frequencies.