Skip to content

SlewRateLimiter

Overview

Slew rate limiter

Discussion

Slew rate limiter that restricts the rate of change of a signal. The module computes the derivative of a signal and limits positive values to .maxSlew and minimum values to .minSlew. This mimics slew rate limiting that occurs in analog amplifiers.

The .units variable specifies how .maxSlew and .minSlew should be interpreted.

.units = 0 means that the slew rates are per sample.

.units = 1 means that the slew rates are per millisecond.

.units = 2 means that the slew rates are per second (the default).

Internally, the function uses the hidden variables .maxSlewSample and .minSlewSample does limiting on a sample by sample basis. The module's set function converts from .maxSlew and .minSlew to .maxSlewSample and .minSlewSample based on .units.

The .reset flag forces the output value to match the input value. This temporarily stops slew rate limiting for 1 sample period. By default, .reset=1 when the module is constructed. This causes the module to start in a converged state (no slew limiting on the first sample). Otherwise, if you set .reset=0 before the module is built it causes the module output to start at 0 and apply slew limiting immediately.

Module Pack

Advanced

ClassID

classID = 1335

Type Definition

typedef struct _ModuleSlewRateLimiter
{
ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
INT32 units;                                  // Specifies the units for the minSlew and maxSlew variables (0=sample, 1=msec, 2=sec)
FLOAT32 minSlew;                              // Minimum allowed slew rate
FLOAT32 maxSlew;                              // Maximum allowed slew rate
INT32 reset;                                  // Forces the output to equal the input
FLOAT32 minSlewSample;                        // Minimum allowed slew rate per sample
FLOAT32 maxSlewSample;                        // Maximum allowed slew rate per sample
FLOAT32* state;                               // State variables.  One per channel
} ModuleSlewRateLimiterClass;

Variables

Properties

Name Type Usage isHidden Default Value Range Units
units int parameter 0 2 0:2
minSlew float parameter 0 -100 Unrestricted
maxSlew float parameter 0 100 Unrestricted
reset int parameter 0 1 Unrestricted
minSlewSample float derived 1 -0.002083 Unrestricted
maxSlewSample float derived 1 0.002083 Unrestricted
state float* state 1 [1 x 1] Unrestricted

Pins

Input Pins

Name in
Description Input signal
Data type float
Channel range Unrestricted
Block size range Unrestricted
Sample rate range Unrestricted
Complex support Real

Output Pins

Name out
Description Output signal
Data Type float

Matlab Usage

File Name: slew_rate_limiter_module.m 
 M=slew_rate_limiter_module(NAME) 
 Slew rate limiter module.  It limits the maximum change of a signal 
 (that is, its derivative).  There are separate controls for positive 
 and negative slewing.  Arguments: 
    NAME - name of the module. 

Copyright (c) 2026 DSP Concepts, Inc.