EmbedDSP
EmbedDSP is a lightweight, dependency-free C library of Digital Signal Processing algorithms, designed specifically for real-time performance on resource-constrained microcontrollers. The main goal is to provide embedded systems developers with a reliable, memory-safe, and easy-to-use toolkit for common DSP tasks.
About This Project
Many embedded projects, from audio effects pedals to drone flight controllers, require standard DSP algorithms like filters and PID controllers. However, general-purpose libraries are often too heavy, have complex dependencies, or use dynamic memory allocation (malloc), which is unsuitable for deterministic, real-time systems. I created EmbedDSP to solve this problem by providing a professional-grade, open-source library that is portable, efficient, and safe for any bare-metal or RTOS environment.
The development process focused heavily on creating a robust and modern project structure. A key challenge was designing a generic API for the filters that could support any order without dynamic memory. I solved this by implementing a "caller-allocates" pattern, where the user provides the memory buffers, and the library's functions manage them via pointers. This ensures maximum flexibility while maintaining real-time safety. A major part of the project was also establishing a full CI/CD pipeline using GitHub Actions, which automates testing on every commit and completely automates the release packaging process.
The key features of the library are its portability (written in standard C99), its modular design, and its rigorous testing environment. Each algorithm is self-contained and comes with a dedicated unit test suite, ensuring reliability and correctness.
Technologies Used
- Core Language: C (C99) chosen for maximum portability and performance on embedded hardware.
- Build System: CMake for cross-platform development and test suite compilation.
- Version Control & CI/CD: Git, GitHub, and GitHub Actions to automate testing and release packaging.
- Unit Testing: The Unity Test Framework to ensure the correctness and reliability of all algorithms.
- Filter Design & Analysis: MATLAB for designing coefficients and visualizing filter frequency responses.