Skip to content

Digital Signal Processing

TinyDSP — Signal Processing for Edge Devices

TinyDSP wraps and extends ESP-DSP for edge devices, adding SHM-specific algorithms not found in ESP-DSP.

TinyMath → Math / Matrix / DotProduct
TinyDSP → all remaining DSP modules + DWT / ICA / Resample


Architecture

  • Signal Processing


    tiny_conv · Convolution
    tiny_corr · Correlation
    tiny_resample · Resampling

    Convolution → Correlation → Resample →

  • Digital Filtering


    tiny_fir · FIR (window design)
    tiny_iir · IIR (bilinear transform)

    FIR → IIR →

  • Signal Transforms


    tiny_fft · FFT/IFFT spectrum analysis
    tiny_dwt · Discrete Wavelet Transform
    tiny_ica · ICA (C++ API)

    FFT → DWT → ICA →

  • Debug Support


    tiny_view · ASCII waveform plot
    tiny_view · Spectrum · Statistics

    Support →


Use Case Index

  • Dominant frequency

    FFTtiny_fft_find_peak_frequency

  • Denoising / Smoothing

    FIR / DWT

  • Source separation

    ICAICA::decompose (C++)

  • Delay estimation

    Cross-correlationtiny_ccorr_f32

  • Template matching

    Sliding correlationtiny_corr_f32

  • Sample rate conversion

    Resamplingtiny_resample_f32

  • Time-frequency analysis

    DWTtiny_dwt_multilevel_decompose_f32

  • Headless debugging

    Supporttiny_view_signal_f32


Quick Start

#include "tiny_dsp.h"

void app_main(void) {
    tiny_fft_init(1024);                        // one-time init

    float data[1024] = { /* sensor data */ };
    float spectrum[2048];                       // [Re0,Im0,Re1,Im1,...]

    tiny_fft_f32(data, 1024, spectrum,          // windowed FFT
                 TINY_FFT_WINDOW_HANNING);

    float freq, mag;
    tiny_fft_find_peak_frequency(               // find dominant freq
        spectrum, 1024, 100.0f, &freq, &mag);
}

ESP32 Speedup

Function DSP Backend Speedup
tiny_conv_f32 dsps_conv_f32 2–4×
tiny_fft_f32 dsps_fft2r_fc32 3–5×
tiny_fir_filter_f32 dsps_fir_f32 2–3×
tiny_corr_f32 dsps_corr_f32 2–4×

Non-ESP32 platforms fall back to pure C; API is identical.


Module Dependencies & Code Tree

tiny_math  ──►  signal/  ──►  filter/  ──►  transform/  ──►  support/
                 │                            │
                 └── FIR uses convolution      └── ICA depends on Mat class
include/    tiny_dsp.h / tiny_dsp_config.h
signal/     conv · corr · resample
filter/     fir · iir
transform/  fft · dwt · ica (C++)
support/    view