How kassemazanki/mpx-stl works
MPX STL is ESP32-S3 firmware that turns an internet radio stream into stereo FM composite audio with RDS, while exposing live controls through a browser portal. The main runtime path decodes the stream, processes audio, synthesizes MPX/RDS, and outputs it over I2S to a DAC. Separate branches handle WiFi setup, persisted configuration, browser diagnostics, and optional OLED status. The README documents capabilities beyond the sampled excerpts; those are represented where the tree supports a module, without asserting unverified internal wiring.
Main entry points: mpx_encoder.h Audio Chain · web_portal.h Web Portal · mpx_esp32.ino Firmware Tasks · audio_manager.h Stream Decoder
Components 20
Audio Runtime
- Firmware Tasks
mpx_esp32.ino - Stream Decoder
audio_manager.h - MPX Synthesizer
mpx_encoder.h - RDS Encoder
rds_encoder.h - I2S DAC Output
mpx_encoder.h
Audio Processing
- Audio Chain
mpx_encoder.h - Audio Filters
audio_filters.h - 10-Band EQ
audio_eq10.h - AGC
audio_agc.h - Lookahead Limiter
audio_limiter.h - Audio Clipper
audio_clipper.h - Pre-emphasis
preemphasis.h - Stereo Booster
audio_stereo_booster.h
Web Control
- Web Portal
web_portal.h - Settings Store
settings_store.h
Connectivity
- WiFi Manager
wifi_manager.h
Local Status
- OLED Display
oled_display.h
Other components
- Radio Stream
- FM Exciter
- Operator
Connections 26
- Radio Stream → Stream Decoder: streams audio
- Firmware Tasks → Stream Decoder: runs decode
- Stream Decoder → Audio Chain: pushes samples
- Audio Chain → Audio Filters: filters audio
- Audio Chain → 10-Band EQ: equalizes
- Audio Chain → AGC: levels audio
- Audio Chain → Lookahead Limiter: limits peaks
- Audio Chain → Audio Clipper: clips peaks
- Audio Chain → Pre-emphasis: emphasizes audio
- Audio Chain → Stereo Booster: widens stereo
- Firmware Tasks → MPX Synthesizer: runs synthesis
- MPX Synthesizer → RDS Encoder: reads RDS data
- MPX Synthesizer → I2S DAC Output: writes I2S
- I2S DAC Output → FM Exciter: outputs composite
- Operator → Web Portal: controls
- Web Portal → Stream Decoder: sets stream
- Web Portal → Audio Chain: sets processing
- Web Portal → RDS Encoder: sets RDS
- Web Portal → Settings Store: loads and saves
- Firmware Tasks → Settings Store: restores settings
- Web Portal → WiFi Manager: configures network
- Firmware Tasks → WiFi Manager: manages connection
- Firmware Tasks → OLED Display: updates status
- OLED Display → WiFi Manager: reads status
- OLED Display → Stream Decoder: reads stream status
- OLED Display → MPX Synthesizer: reads MPX level