feat: add PipeWire multi-channel audio driver (full-duplex N channel)

- PipeWireDriver.hpp/cpp: new AudioDriver implementation using pw_filter API
- Full-duplex I/O via pw_filter (capture + playback in one RT callback)
- Dynamic channel count support (tested: 1-8 channels, extensible beyond)
- Uses SPA_AUDIO_FORMAT_F32 for zero-copy-compatible float processing
- Channel position mapping: MONO, stereo, 5.1, 7.1, plus Aux for N>8
- Follows the same buffer management pattern as AlsaDriverImpl
- Channel routing: main/aux input/output mapping with mix ops
- CLI flag: --driver pipewire|alsa (default: alsa)
- AudioHost: conditional driver selection based on driverType_
- PiPedalModel: stores and passes driver type to AudioHost
- CMakeLists.txt: added PipeWireDriver source files
This commit is contained in:
2026-06-20 16:03:16 -04:00
parent 524f02ec9d
commit 3d00299051
8 changed files with 970 additions and 8 deletions
+3
View File
@@ -366,6 +366,7 @@ set (PIPEDAL_SOURCES
JackDriver.cpp JackDriver.hpp
AlsaDriver.cpp AlsaDriver.hpp
DummyAudioDriver.cpp DummyAudioDriver.hpp
PipeWireDriver.cpp PipeWireDriver.hpp
AudioDriver.hpp
AudioConfig.hpp
@@ -374,6 +375,8 @@ set (PIPEDAL_SOURCES
MixerBus.cpp MixerBus.hpp
MixerEngine.cpp MixerEngine.hpp
MixerApi.cpp MixerApi.hpp
MidiMapper.cpp MidiMapper.hpp
MidiLearnMode.cpp MidiLearnMode.hpp
${VST3_SOURCES}
)