CamillaDSP is a flexible audio processing library and command line tool for Linux, macOS and Windows. It is intended to be used as a building block for audio applications, but can also be used standalone for simple tasks.
- Real-time audio processing
- Cross-platform (Linux, macOS, Windows)
- Multiple audio backends (ALSA, PulseAudio, CoreAudio, WASAPI, JACK, file)
- Flexible filter pipeline
- Volume control and mixing
- Resampling
- Multichannel support
- WebSocket control interface
- ARMv6 SIMD Optimizations - Enhanced performance for ARMv6 devices (Raspberry Pi Zero W)
This version includes significant optimizations for ARMv6 devices, particularly the Raspberry Pi Zero W:
- Fixed-point arithmetic (Q16.16): Replaces floating-point operations for better performance on ARMv6 without FPU
- ARMv6 SIMD instructions: Optimized biquad filter processing using ARMv6-specific instructions
- Soft float compatibility: Properly configured for ARMv6 devices without hardware FPU
- Performance monitoring: Built-in statistics tracking for processing performance
- Conditional compilation: ARMv6 optimizations are automatically enabled for compatible targets
- Biquad filters: Optimized using ARMv6 SIMD instructions
- Volume control: Fixed-point arithmetic for volume processing
- Memory access: Optimized memory patterns for ARMv6 architecture
- Compiler optimizations: Target-specific optimizations for ARM1176JZF-S
- ARMv6: Raspberry Pi Zero W (soft float)
- ARMv7: Raspberry Pi 3 (hard float)
- ARMv8: Raspberry Pi 4 (hard float)
- Rust (1.70 or later)
- Cargo
- Platform-specific audio libraries
# Clone the repository
git clone https://github.com/HEnquist/camilladsp.git
cd camilladsp
# Build for your platform
cargo build --release
# For ARMv6 (Raspberry Pi Zero W)
cargo build --target arm-unknown-linux-gnueabi --release
# For ARMv7 (Raspberry Pi 3)
cargo build --target armv7-unknown-linux-gnueabihf --release
# For ARMv8 (Raspberry Pi 4)
cargo build --target aarch64-unknown-linux-gnu --releaseFor ARM targets, use the provided build scripts:
# Build all ARM binaries
./scripts/build_arm_binaries.sh
# Create test package
./scripts/create_test_package.sh# Process audio file
camilladsp config.yml
# With ARMv6 optimizations (automatic on ARMv6 targets)
camilladsp config.ymlCamillaDSP uses YAML configuration files. See the example configurations in exampleconfigs/ for details.
The ARMv6 optimizations are automatically enabled when building for ARMv6 targets. No special configuration is required.
For testing on ARM hardware:
# Transfer and test on Raspberry Pi
./transfer_and_test.sh
# Manual testing
./scripts/test_hardware.shCompare performance with the latest release:
# Run performance comparison
./scripts/performance_comparison.sh- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE.txt file for details.
- Original CamillaDSP by HEnquist
- ARMv6 SIMD optimizations for enhanced performance on low-power ARM devices