Skip to content

SignalCore

SignalCore is a cross-platform digital signal processing toolkit for Arduino. It gives a sketch the building blocks for working with signals: an FFT for frequency analysis, software signal generation (direct digital synthesis, or DDS), window functions, edge triggering, per-bin peak-hold, and exponential moving average. Every part is header-only and lives under a single signalcore namespace.

On a Teensy 4.x the FFT runs on CMSIS-DSP, ARM's hardware-accelerated math library, with no setup on your part. On every other Arduino-compatible board it uses a portable C++ implementation instead. Both produce the same spectrum so a sketch should move between boards without any change to its signal-processing code.

SignalCore does the computation and does not depend on any particular display. It pairs naturally with the VoidLoop ViewPoint™ serial plotter, for instance by feeding an FFT magnitude buffer into a Frames-mode plot, but it works in any sketch that needs to analyze or generate a signal.

What you can do with it

What you want to do What to reach for
Perform an FFT, find peaks The FFT transform with peakBin() and peakFrequency()
Measure signal quality (SINAD, ENOB) FFT metrics read off the magnitude spectrum
Generate a test tone, sweep, or modulate a signal in software The DDS signal generator
Reduce spectral leakage before a transform Window functions
Stabilize a repeating waveform The Trigger module
Transform, filter, or smooth a dataset PeakHold, MovingAverage (exponential)

Each of these is explained in Concepts and put to use in the Recipes.

Where to go next

  • Getting Started: install the library and run your first sketch.
  • Concepts: how the library is organized, how a spectrum is laid out, and the ideas behind windowing, triggering, and signal generation.
  • Recipes: task-focused walkthroughs for the most common jobs.
  • Configuration & Platforms: build-time defines, supported boards, and memory footprint.
  • API Reference: every public type and method, grouped by module.
  • Example Sketches: the bundled examples and what each one is good for.

Tip

Include <SignalCore.h> to pull in every module at once, then add using namespace signalcore;. That is the conventional sketch prelude. When program memory is tight on a small board, include only the headers you need, such as <signalcore/FFT.h>.


Created by VoidLoop · Founded by Gregory Kovacs · Written by Zachariah Magee