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