Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table driven interpolation module. Supports linear and spline modes.

Discussion

This module performs table lookup using unevenly spaced X and Y values. The module supports linear and pchip interpolation. Internally the interpolation is performed using a piece wise polynomial approximation. With linear interpolation a first order polynomial is used; for pchip a 4th order polynomial is used. PChip is similar to a spline interpolation but it avoids the overshoot and undershoot that plagues splines.

...

The X values in the table have to monotonically increasing. That is, x0 < x1 < x2 < ... < xN. If this condition is not obeyed, then the module's prebuild function will generate an error.

Note that this module lacks a set() function, which means it cannot be updated at run time using a Param Set module. If you need the ability to change the interpolation points at run time, use TableInterpRuntime instead.

Type Definition

Code Block
typedef struct _ModuleTableInterp
{
    ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
    INT32 maxPoints;                              // Maximum number of values in the lookup table. The total table size is [maxPoints 2].
    INT32 numPoints;                              // Current number of interpolation values in use.
    INT32 order;                                  // Order of the interpolation. This can be either 2 (for linear) or 4 (for pchip).
    FLOAT32* XY;                                  // Lookup table. The first row is the X values and the second row is the Y values.
    FLOAT32* polyCoeffs;                          // Interpolation coefficients returned by the grid control.
} ModuleTableInterpClass;

Variables

Properties

Name

Type

Usage

isHidden

Default value

Range

Units

maxPoints

int

const

0

8

4:1:1000

numPoints

int

parameter

0

4

4:1:8

order

int

parameter

0

2

2:2:4

XY

float*

parameter

0

[2 x 8]

Unrestricted

polyCoeffs

float*

state

0

[4 x 7]

Unrestricted

Pins

Input Pins

Name: in

Description: audio input

...