finds.dev← search

// the find

introlab/odas

★ 1,031 · C · MIT · updated Dec 2024

ODAS: Open embeddeD Audition System

ODAS is a C library for real-time sound source localization, tracking, and separation on microphone arrays — the kind of thing that goes into robots and smart speakers. It's backed by published academic papers and designed to run on low-cost embedded hardware, so it's not a toy prototype. Target audience is robotics engineers and audio researchers who need something that actually runs on an RPi or XMOS board.

The signal processing pipeline is properly decomposed — STFT/iSTFT, beamforming, Kalman tracking, particle filters, and source separation each live in their own module with clean naming conventions (freq2xcorr, track2steer, etc.), which makes it navigable despite the volume of code. Ships with hardware-specific config files for a dozen real microphone arrays (ReSpeaker, Matrix Creator, miniDSP, XMOS) so you're not starting from scratch with your specific hardware. Pure C with CMake means it actually compiles on embedded targets without fighting a toolchain. The companion odas_web visualizer exists as a separate project, which is the right call — keeps the library lean.

Last meaningful activity was late 2024 and the repo has been essentially maintenance-mode for a couple of years, so don't expect active development or quick issue responses. The wiki is the primary documentation and wikis rot — if the wiki goes stale you're reading C headers to understand the config file format. No unit tests visible in the tree; for DSP code this is a real gap since subtle numerical bugs are hard to catch any other way. The async connector layer (aconnector, amessage, asink, asource prefixes) duplicates a lot of structure from the synchronous equivalents and the distinction isn't explained anywhere obvious, which makes the architecture harder to follow than it needs to be.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →