Skip to content

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).

Module Pack

Advanced

ClassID

classID = 1348

Type Definition

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 
 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. 

Copyright (c) 2026 DSP Concepts, Inc.