Audio processing utility with MLIR optimization support.
# Setup and build
make setup
make build
# Run tests
make test
# Install utility
make install
# Use the utility
audio-util --input audio.wav --filter hpf --freq 100 --output audio-clean.wav-
-march=nativeequivalent - Explicitly enable AVX-512/FMA - Polyhedral optimizations - Better loop tiling for cache
- Vectorization hints - Force SIMD on the loop
- Inlining - Inline the biquad equation directly into the loop body
- Fast-math flags - Relaxed FP semantics for speed
- WAV File I/O: Read/write 8/16/24/32-bit PCM audio files
- High-Pass Filter: Butterworth 2nd-order filter for removing low frequencies
- Command-Line Tool:
audio-utilfor batch processing - Comprehensive Tests: 100% test pass rate with 12 test cases
make help # Show available targets
make setup # Initial project setup
make build # Build all libraries and executables
make test # Run all tests
make install # Install audio-util to /usr/local/bin
make uninstall # Remove audio-util
make clean # Remove build artifacts
- CMake 3.10+
- C99-compatible compiler
- Math library (libm)
audio-filter-mlir/
├── include/ # Public headers
│ ├── audio_io.h
│ ├── biquad.h
│ └── hpf.h
├── src/ # Implementation
│ ├── audio_io.c
│ ├── biquad.c
│ ├── hpf.c
│ └── audio_util.c
├── tests/ # Test suites
│ ├── test_audio_io.c
│ ├── test_biquad.c
│ └── test_hpf.c
└── docs/ # Documentation
audio-util --input recording.wav --filter hpf --freq 80 --output clean.wavaudio-util --input audio.wav --filter hpf --freq 5 --output audio-clean.wavfor file in *.wav; do
audio-util --input "$file" --filter hpf --freq 100 \
--output "processed/${file%.wav}_clean.wav"
done- CMake: Primary build system
- Makefile: Convenience wrapper
- clangd: LSP support via compile_commands.json
- Total Lines: 2,443 (implementation + tests)
- Libraries: 3 static libraries
- Executables: 1 utility + 3 test suites
- Test Coverage: 12 test cases, 100% pass rate
# All tests via CTest
make test
# Individual test suites
./build/test_audio_io
./build/test_biquad
./build/test_hpf- Language: C99
- Build: CMake, Make
- Testing: CTest, custom test harness
- Audio Format: WAV (RIFF/WAVE) with PCM
- DSP: Butterworth filters via biquad implementation
- Future: MLIR optimization framework
See LICENSE file.
This is a personal learning project focused on MLIR optimization. The current implementation serves as a baseline for MLIR performance comparisons.
- MLIR Documentation: https://mlir.llvm.org/
- WAV Format Spec: http://soundfile.sapp.org/doc/WaveFormat/
- Butterworth Filter Theory: Digital Signal Processing texts