Skip to main content
Skip table of contents

TwoPieceInterpV2

Overview

Two piece interpolation module

Discussion

This module performs interpolation using two line segments with a knee between the two pieces. The parameter threshold specifies the point of intersection of the two lines. The kneeDepth specifies the curvature of the smooth region connecting the two line segments. If kneeDepth is zero, then there is no knee, simply two lines connected to each other at the threshold point. If kneeDepth is nonzero, then the curved region will begin at threshold-kneeDepth and ends at threshold+kneeDepth. The slopeL and slopeH are the slopes of the left hand side line and right hand side line respectively.

Optionally, the slopes of the lines can be specified by their ratio where ratio is defined as 1/slope To use ratios set the constructor argument USERATIOS to 1 and then set the .ratioL and .ratioR fields of the module. When ratios are used the set function converts from ratio to slope. When USERATIOS = 0 then the .ratioL and .ratioR parameters of the module are ignored. In all cases, the processing function uses the slope parameters for calculations. The ratio is useful when using this module within a dynamics processor.

When ratios are used and a ratio equals 0 then the corresponding slope is set to 1e6 (prevent divide by zero).

Type Definition

CODE
typedef struct _ModuleTwoPieceInterpV2
{
    ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
    FLOAT32 threshold;                            // The point at which two line segments meet
    INT32 useRatios;                              // Specifies whether the line segments are specified using their slopes (=0) or ratios (=1)
    FLOAT32 slopeL;                               // The slope of the line segment on the left hand side
    FLOAT32 slopeH;                               // The slope of the line segment on the right hand side
    FLOAT32 ratioL;                               // 1/slope of the line segment on the left hand side
    FLOAT32 ratioH;                               // 1/slope of the line segment on the right hand side
    FLOAT32 kneeDepth;                            // Specifies the curvature of the smooth region connecting the two line segments
    FLOAT32* polyCoeffs;                          // Interpolation coefficients returned by the grid control.
} ModuleTwoPieceInterpV2Class;

Variables

Properties

Name

Type

Usage

isHidden

Default value

Range

Units

threshold

float

parameter

0

-20

-100:0.1:100

useRatios

int

parameter

0

0

0:1

slopeL

float

parameter

0

1

-100:100

slopeH

float

parameter

0

1

-100:100

ratioL

float

parameter

0

1

-100:100

ratioH

float

parameter

0

1

-100:100

kneeDepth

float

parameter

0

2

0:100

polyCoeffs

float*

derived

1

[4 x 1]

Unrestricted

Pins

Input Pins

Name: in

Description: audio input

Data type: float

Channel range: Unrestricted

Block size range: Unrestricted

Sample rate range: Unrestricted

Complex support: Real

Output Pins

Name: out

Description: audio output

Data type: float

MATLAB Usage

File Name: two_piece_interp_v2_module.m

CODE
 M=two_piece_interp_v2_module(NAME, USERATIOS)
 This Audio Weaver module performs interpolation using two line segments
 with a knee between the two pieces.  This version builds upon the
 two_piece_interp_module.m and allows lines to be specified either as 
 slopes or ratios (1/slope).  Arguments:
    NAME - name of the module.
    USERATIOS - Optional boolean allows you to specify the ratio of 
              each line segment rather than the slope. The ratio is 
              defined as 1/slope. Default = 0, which means the slope of
              the line segments is specified directly.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.