Signal Processing Platform

Real DSP.
Real Hardware.
Real Results.

RadioSonic is a portable, low-cost platform for hands-on digital signal processing education — operating in the acoustic domain, no RF license required.

View courses
RadioSonic PCB SPS-RL-01-01
ESP32-S3
Dual-core Xtensa LX7
TLV320AIC3204
I²S streaming ADC/DAC
2–6mics
Beamforming & angle of arrival
100Hz–10kHz
Audio bandwidth
Wi-Fi
2.4 GHz + USB 2.0
8MB+8MB
Flash + PSRAM
65×56mm
Raspberry Pi HAT form

A complete platform for learning real DSP

No prior programming experience required. Students focus on signal-processing concepts using integrated firmware and structured lesson plans.

🎙️
2–6 microphones
Onboard mics at 35 mm spacing, expandable to 6 via codec port, for beamforming and angle-of-arrival demos.
🔊
I²S streaming ADC/DAC
TLV320AIC3204 codec with stereo line in, line out, and headphone out. Real-time DMA ping-pong buffering.
🧩
Drop-in lesson firmware
DMA framework included. Lessons slot in as self-contained C include files — no low-level driver work.
🔬
Jupyter Notebook labs
Post-processing in Python. Notebooks expose code for curious students; no programming expertise required to run them.
📡
"RF in slow motion"
Patent-pending method for wavelength-consistent SDR-style experiments using audio-frequency propagation.
💾
8 MB flash + 8 MB PSRAM
Ample memory for audio recording, long filter pipelines, and buffering experiments. Wi-Fi enables PC streaming.

Audio in. DSP running.
Audio out.

The firmware provides real-time DMA sample streaming between ADC and DAC. Each lesson is a drop-in processing block — students work at the algorithm level, not the driver level.

FIR & IIR digital filters — windowed, least-squares, biquad, Direct Form I & Transformed DFI I
Spectral analysis — FFT, convolution, correlation, transfer functions, spectrograms
Modulation — BPSK, QPSK, QAM, OFDM at acoustic frequencies
Beamforming & array processing — angle of arrival with 2–6 mic configurations
SigPro Labs

RadioSonic Store

Ships direct from SigPro Labs · info@sigprolabs.com · 7 Pierce Ave, Beverly MA 01915

RadioSonic board
// board · PN: SPS-RL-01-01
RadioSonic Signal Processing Platform
ESP32-S3 (8MB flash, 8MB PSRAM), TLV320AIC3204 I²S ADC/DAC, dual mics, Wi-Fi, USB-C, Li-Po connector, Raspberry Pi HAT. 65×56 mm.
🎓
POPULAR
// bundle
RadioSonic Starter Bundle
Board + Guided Digital Filters Course + Audio Cable Kit + Li-Po Battery + Snap-on Case. Everything to start day one.
📦
ACC
// accessory
Snap-on Protective Case
Lightweight 3D-printed snap-on enclosure with cutouts for all connectors. Ideal for lab and field use.
🔌
ACC
// accessory
Audio Cable Kit
Two 3.5 mm TRS cables (1 m), 3.5 mm to RCA adapters, and USB-C cable. Covers all course lab exercises.
🔋
ACC
// accessory
Li-Po Battery Pack (2000 mAh)
JST-PH compatible 3.7V lithium pack. Charges via USB-C through the onboard charger. Run untethered.
🎙️
ACC
// accessory
Microphone Expansion Board
Two additional mics at 35 mm spacing via the codec expansion port. Enables 4-element beamforming labs.
📖
GUIDED
// course · quarterly cohort
Digital Filters — Guided
Live quarterly cohort with instructor Q&A sessions via Zoom and a cohort discussion forum. 5 classes + labs.
$50 off early signup
🎬
SELF-PACED
// course · self-paced
Digital Filters — Self-Paced
Full video course, demo code, Jupyter Notebooks, and lab guides. Permanent access to all materials.
$50 off early signup
🎬

Fourier & Z transform review

Section 2 of 5 Video · 18 min ~45 min total with lab Jupyter Notebook included
Mark as complete — Moodle will track your progress automatically once you finish the video.
Section 2.1 — Fourier & Z transform review · 18 min · hosted on Vimeo / S3

Before we can describe what a digital filter does, we need two transforms. The Fourier transform decomposes a signal into frequency components. The Z transform generalizes this to discrete-time systems — it maps filter coefficients directly to frequency-domain behavior, connecting the numbers you write in C to the response you hear on the RadioSonic board.

This lesson focuses on building intuition, not re-deriving the mathematics. By the end you should be able to look at a pole-zero plot and make a reasonable prediction about a filter's frequency response before running a single line of code.

Demo code — FFT of a two-tone test signal

Python
import numpy as np
import matplotlib.pyplot as plt

Fs = 44100        # RadioSonic sample rate (Hz)
N  = 4096         # FFT length
t  = np.arange(N) / Fs

x = np.sin(2*np.pi*500*t) + 0.5*np.sin(2*np.pi*2000*t)
X   = np.fft.rfft(x, N)
f   = np.fft.rfftfreq(N, 1/Fs)
mag = 20*np.log10(np.abs(X)/N + 1e-12)

plt.plot(f, mag)
plt.xlabel("Frequency (Hz)"); plt.ylabel("Magnitude (dBFS)")
plt.show()

The Z transform and what poles & zeros mean

For a discrete-time filter, the Z transform produces a rational function H(z). Numerator roots are zeros — frequencies the filter nulls. Denominator roots are poles — frequencies it resonates at. For a stable IIR filter, all poles must lie strictly inside the unit circle. This is the geometric picture you will use in Section 4 when we implement biquad sections on the board.

🔬

Lab 2 — Convolution & correlation on the RadioSonic platform

Use the Jupyter Notebook to compute convolution and correlation on signals captured live from your board. Observe impulse and frequency response from real measured audio — not simulated signals.