Skip to content

ZeroCrossingDetector

Overview

Detects when a signal crosses zero and changes sign

Discussion

Multichannel zero-crossing detector, running at the sampling rate. The module outputs a 1.0 whenever a zero crossing is detected and 0.0 otherwise. The detectorType parameter controls the behavior of the detector.

If detectorType = 0, then all zero crossing are detected.

If detectorType > 0, then only positive transitions (negative->positive) are detected.

If detectorType < 0, then only negative transitions (positive->negative) are detected.

Module Pack

Standard

ClassID

classID = 42

Type Definition

typedef struct _ModuleZeroCrossingDetector
{
ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
INT32 detectorType;                           // Determines which zero crossings are detected: 0=all, >0 negative->positive, <0 positive->negative.
INT32* lastSign;                              // Holds the sign of the last input value. This is an array so that multiple channels can be supported.
} ModuleZeroCrossingDetectorClass;

Variables

Properties

Name Type Usage isHidden Default Value Range Units
detectorType int parameter 0 0 -1:1
lastSign int* state 1 [1 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: zero_cross_detector_module.m 
 M=zero_cross_detector_module(NAME) 
 Creates a zero crossing detector module for use in the Audio Weaver 
 environment. The module has a single multichannel input pin and a single 
 output pin of the same size as the input pin. The module outputs a 1.0 
 whenever a zero crossing is detected and 0.0 otherwise. 

 Arguments: 
    NAME - name of the module. 

Copyright (c) 2026 DSP Concepts, Inc.