FPGA-Based Band Vocoder
Real-time band vocoder implemented on FPGA with OSC control, built as part of the SyFaLa project at Inria.
Overview
This project recreates the iconic sound of analog vocoders using FPGA technology. By processing carrier and modulator signals through a bank of bandpass filters, the vocoder blends harmonic content in real-time — producing the classic “talking synthesizer” effect with hardware-level latency.
Built on the SyFaLa toolchain from Inria’s Emeraude team, the vocoder runs on a Zybo Z20 board combining FPGA fabric for DSP with an ARM processor for control.
Key Features
- Real-time FPGA audio processing with sub-millisecond latency
- Logarithmic filter bank with MIDI-note-defined center frequencies for each bandpass filter
- OSC (Open Sound Control) integration for real-time parameter control over the network
- Modular architecture — carrier/modulator routing, filter count, and envelope parameters are all configurable
Architecture
The vocoder splits the audio pipeline between FPGA and ARM:
-
vocoder-osc.cpp— Main DSP code running on the FPGA fabric: filter bank, envelope followers, modulation -
vocoder-osc-arm.cpp— ARM processor code handling OSC communication and control logic -
generate_coefs.py— Python script generating the filter bank coefficients -
coefs.h— Pre-computed coefficients header
Build
Requires the SyFaLa toolchain and a Linux environment for OSC networking:
syfala vocoder/vocoder-osc.cpp \
--arm-target vocoder/vocoder-osc-arm.cpp \
--linux -b Z20 --ssm-volume DEFAULT
Team
This was a group project at IMT Atlantique, built by four students passionate about music and embedded systems:
- Yann Miguet — C++ development
- Ulysse Lefeuvre
- Lenz Filipski — Embedded systems
- Eliott Quéré — Signal processing