the kibibu doof is a generator primarily designed for kick type sounds, but it can also do higher pitched stuff.
It generates a sound in 3 segments, creatively called start, sustain and end.
The start and end segments use Bezier "curves" to control both amplitude
and frequency of the generated waveform, like this:
This particular envelope is for amplitude. Amplitude is always 0 at the end.
A "sharpness" control changes the slope of the Bezier as follows:
The Sharpness parameters shift the position of the 1st Bezier control point up or down. 100% means the control point is the same value as the start, and -100% is the same as the end of the curve.
In the end segment, the parameter shifts the 2nd control point (ie the one nearest the end), not the 1st.
This is to allow the envelope to join smoothly at either end of the sustain segment.
The machine itself allows sharpness to go to +/- 200%, which lets the envelope go higher or lower than either of the two ends.
The StartFreqConst and StartFreqTrack control the start frequency. Essentially, the frequency of the note is multiplied by StartFreqTrack and added to StartFreqConst:
StartFreq = StartFreqConst + StartFreqTrack
Similarly with then end one:
EndFreq = EndFreqConst + EndFreqTrack
To set either to a fixed frequency, set the track param to 0 and adjust the const. To set them to simply the note freq, set track to 1x and const to 0.
The waveform used is a sauced-up sine wave. Specifically:
(assume freq is multiplied by 2 pi properly)
signal(t) = sin(t * f + (sin(t * f * 3) * 0.123 ) + (sin(t * f * 5) * 0.0123 )
which is just a sine FMed by two odd harmonic sines. They are harmonics cause the thing is in a wavetable, (which is why in the 9th octave there is some ugly aliasing), and non harmonics would have created saw-wave like effects
It looks like this:
To help prevent clicking, the phase of the wave is not reset and amplitude is filtered when a second doof is triggered while another is still playing. Phase is reset when the signal returns to zero at the end of the end stage.