Skip to content

File syn_signal.c

FileList > dsp > syn_signal.c

Go to the source code of this file

Signal statistics implementation.

  • #include "../util/syn_assert.h"
  • #include "../util/syn_qmath.h"
  • #include "syn_signal.h"
  • #include <limits.h>
  • #include <string.h>

Public Functions

Type Name
int32_t syn_signal_at (const SYN_Signal * sig, size_t index)
Get sample at index (0 = oldest, count-1 = newest).
void syn_signal_clear (SYN_Signal * sig)
Clear all samples.
int32_t syn_signal_crest_factor_q16 (SYN_Signal * sig)
Signal Crest Factor in Q16.16: Peak / RMS.
int32_t syn_signal_delta (const SYN_Signal * sig)
Rate of change: latest - previous.
void syn_signal_init (SYN_Signal * sig, int32_t * buf, size_t capacity)
Initialize with a caller-provided sample buffer.
int32_t syn_signal_latest (const SYN_Signal * sig)
Get the most recent sample.
int32_t syn_signal_max (SYN_Signal * sig)
Maximum value in the window.
int32_t syn_signal_min (SYN_Signal * sig)
Minimum value in the window.
int32_t syn_signal_power_q16 (const SYN_Signal * sig)
Mean signal power in Q16.16: Σ(x²) / N.
void syn_signal_push (SYN_Signal * sig, int32_t sample)
Push a new sample.
int32_t syn_signal_rms_q16 (const SYN_Signal * sig)
Root-Mean-Square in Q16.16: sqrt(Σ(x²) / N).
int32_t syn_signal_std_dev_q16 (const SYN_Signal * sig)
Standard deviation in Q16.16: sqrt(variance).
int32_t syn_signal_variance_q16 (const SYN_Signal * sig)
Variance in Q16.16 format.

Public Static Functions

Type Name
void recompute_minmax (SYN_Signal * sig)
Recompute cached min/max values over the signal window.

Macros

Type Name
define INT32_MAX 2147483647
INT32_MAX fallback for pre-C99 compilers.
define INT32_MIN (-2147483647 - 1)
INT32_MIN fallback for pre-C99 compilers.

Public Functions Documentation

function syn_signal_at

Get sample at index (0 = oldest, count-1 = newest).

int32_t syn_signal_at (
    const SYN_Signal * sig,
    size_t index
) 

Parameters:

  • sig Signal instance.
  • index Sample index.

Returns:

Sample value.


function syn_signal_clear

Clear all samples.

void syn_signal_clear (
    SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

function syn_signal_crest_factor_q16

Signal Crest Factor in Q16.16: Peak / RMS.

int32_t syn_signal_crest_factor_q16 (
    SYN_Signal * sig
) 

Measures signal peakiness (e.g. 1.414 for sine wave). Returns 0 if RMS is 0 or window is empty.

Parameters:

  • sig Signal instance.

Returns:

Crest Factor in Q16.16 format.


function syn_signal_delta

Rate of change: latest - previous.

int32_t syn_signal_delta (
    const SYN_Signal * sig
) 

Returns 0 if fewer than 2 samples.

Parameters:

  • sig Signal instance.

Returns:

Delta between last two samples.


function syn_signal_init

Initialize with a caller-provided sample buffer.

void syn_signal_init (
    SYN_Signal * sig,
    int32_t * buf,
    size_t capacity
) 

Parameters:

  • sig Signal instance.
  • buf Sample buffer (caller-owned).
  • capacity Buffer capacity (number of samples).

function syn_signal_latest

Get the most recent sample.

int32_t syn_signal_latest (
    const SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Returns:

Latest sample, or 0 if empty.


function syn_signal_max

Maximum value in the window.

int32_t syn_signal_max (
    SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Returns:

Max, or 0 if empty.


function syn_signal_min

Minimum value in the window.

int32_t syn_signal_min (
    SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Returns:

Min, or 0 if empty.


function syn_signal_power_q16

Mean signal power in Q16.16: Σ(x²) / N.

int32_t syn_signal_power_q16 (
    const SYN_Signal * sig
) 

Returns 0 if the window is empty.

Parameters:

  • sig Signal instance.

Returns:

Mean power in Q16.16 format.


function syn_signal_push

Push a new sample.

void syn_signal_push (
    SYN_Signal * sig,
    int32_t sample
) 

If the window is full, the oldest sample is evicted.

Parameters:

  • sig Signal instance.
  • sample New sample value.

function syn_signal_rms_q16

Root-Mean-Square in Q16.16: sqrt(Σ(x²) / N).

int32_t syn_signal_rms_q16 (
    const SYN_Signal * sig
) 

Returns 0 if the window is empty.

Parameters:

  • sig Signal instance.

Returns:

RMS value in Q16.16.


function syn_signal_std_dev_q16

Standard deviation in Q16.16: sqrt(variance).

int32_t syn_signal_std_dev_q16 (
    const SYN_Signal * sig
) 

Returns 0 if fewer than 2 samples.

Parameters:

  • sig Signal instance.

Returns:

Standard deviation in Q16.16.


function syn_signal_variance_q16

Variance in Q16.16 format.

int32_t syn_signal_variance_q16 (
    const SYN_Signal * sig
) 

Population variance: Σ(x - mean)² / N, returned as Q16.16. Returns 0 if fewer than 2 samples.

Parameters:

  • sig Signal instance.

Returns:

Variance in Q16.16.


Public Static Functions Documentation

function recompute_minmax

Recompute cached min/max values over the signal window.

static void recompute_minmax (
    SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Macro Definition Documentation

define INT32_MAX

INT32_MAX fallback for pre-C99 compilers.

#define INT32_MAX `2147483647`


define INT32_MIN

INT32_MIN fallback for pre-C99 compilers.

#define INT32_MIN `(-2147483647 - 1)`



The documentation for this class was generated from the following file src/syntropic/dsp/syn_signal.c