Transpose whistling to bass range. Optimized for responsiveness, with 1-2ms latency.
Example:
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.
Download:
• | 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.
Blog posts: