Pseudo sinusoidal waveform II

Mr Stenzel, CEO of Waldorf Music GmbH, decided to disclose his excellent pseudo sinusoidal formula: 4x \cdot (1-|x|) .

Here is a plot of the function:

stenzel_pseudosine

As you can see, this really looks like a sine wave! The following error plot reveals a maximum error of 0.056:

stenzel_pseudosine_error

In terms of distortion, Mr. Stenzel is right. This function is 2.85 times better than the previous pseudo sine.

Advertisements

Pseudo sinusoidal waveform

I needed a small routine to generate a cyclic waveform resembling sin(x) to test a CODEC board. This is what I came up with:

float pseudoSin(float x)
{
  return (1.0f-x*x)*x
}

This produces the following waveform over the domain [-1,1]:

pseudosine

The derivative of the function is 1-3x^2 . The maximum and minimum occur at x = \sqrt{ \frac{1}{3} } and x = -\sqrt{ \frac{1}{3} }, respectively. The function has maximum and minimum values of \frac{2}{3} \sqrt{ \frac{1}{3} } \approx 0.38490 and -\frac{2}{3} \sqrt{ \frac{1}{3} } \approx -0.38490 .

The amplitude normalisation factor is approximately 2.5981. For completeness, here is the error of the function with respect to a real sin(x):

pseudosine_error

The error maximum is about 16.3%.