Commit Graph

118 Commits

Author SHA1 Message Date
shawn 3d00299051 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
2026-06-20 16:03:16 -04:00
shawn 1854d03c58 feat: add WebsSocket API for mixer engine control
New files:
- MixerApi.hpp/cpp: Model-level API bridging WebSocket messages to
  MixerEngine control (channel volume/pan/mute/solo/hpf, bus control,
  routing, state queries)
- 15 new WebSocket message handlers in PiPedalSocket.cpp for full
  mixer control surface

Integration:
- MixerEngine member added to PiPedalModel with Get/Set accessors
- SetMixerEngine propagates to AudioHost rt processing pipeline
- Socket handler auto-wires MixerEngine to MixerApi on connect

Messages implemented:
  mixerSetChannelVolume, mixerSetChannelPan, mixerSetChannelMute,
  mixerSetChannelSolo, mixerSetChannelLabel, mixerSetChannelHpf,
  mixerGetState, mixerAddChannel, mixerRemoveChannel,
  mixerSetBusVolume, mixerSetBusMute, mixerAddBus, mixerRemoveBus,
  mixerRouteChannelToBus
2026-06-20 14:15:37 -04:00
shawn df5a317ceb feat: add MixerEngine core — ChannelStrip, MixerBus, and MixerEngine for band-in-a-box digital mixer
MixerEngine architecture:
- MixerChannelStrip: per-input FX chain (Lv2Pedalboard reuse),
  volume, pan, mute, solo, HPF, aux sends, VU metering
- MixerBus: accumulation bus with volume, mute, VU. Supports
  master, subgroup, aux, and FX-return bus types
- MixerEngine: orchestrator managing channel→bus routing graph,
  bus→bus routing, solo override, and the full real-time audio
  processing cycle

All new code compiles cleanly with the existing C++20 build and
follows the existing PiPedal codebase conventions (namespaces,
error handling, buffer patterns). CPU-efficient real-time thread
processing with atomic control surface interaction.
2026-06-20 13:57:15 -04:00
Robin E.R. Davies e5fd55d505 Build fixes, promot Arch Linux build to alpha status. 2026-06-17 12:24:06 -04:00
Robin E.R. Davies d6ee400394 Must not install .so's from build dependencies. We should be using .a files instead. 2026-06-17 12:12:46 -04:00
Robin E. R. Davies 859500a8ac Fix Catch2 build break on Debian 12 2026-06-17 10:35:57 -04:00
FoolHen 5eebe29326 Fix test build failures on Arch with Catch2 v3 and GCC 16
- Add missing <unistd.h> include in AlsaDriverTest.cpp for sleep().
- Link Catch2::Catch2WithMain alongside Catch2::Catch2 for pipedaltest
  and jsonTest test targets. Catch2 v3 requires this for CATCH_CONFIG_MAIN
  to provide the main() entry point.
2026-06-10 17:09:25 +02:00
Robin E.R. Davies 89f2c2798e Move options to start of CMakeFile. Rename to PIPEDAL_DISABLE_COPYRIGHT_BUILD to minimize potential package comflicts. 2026-06-08 18:42:23 -04:00
FoolHen 03b8f52fa9 Fix architecture detection for non-Debian distros
Replace dpkg --print-architecture (Debian-specific) with a portable
cmake-based approach using CMAKE_SYSTEM_PROCESSOR mapped to Debian
architecture names (x86_64→amd64, aarch64→arm64, armv7l→armhf, i686→i386).
2026-06-08 13:14:34 +02:00
Robin E.R. Davies 0ff96636ed Subscription Mutex Deadlock 2026-05-23 18:48:49 -04:00
Robin E. R. Davies 6574304227 NAM Performance profiling (sync) 2026-05-16 06:26:53 -04:00
Robin E. R. Davies fdee3fa231 v2.0.100 Release 2026-04-20 00:16:25 -04:00
Robin E.R. Davies 432bc6c475 Tone3000 Download Throttling 2026-04-07 14:50:50 -04:00
Robin E.R. Davies 564ed914cc Manifest.json, Channel Router Sync. Alsa device enumeration. 2026-02-13 16:06:10 -05:00
Robin E.R. Davies da8a61b5d3 Merge branch 'dev_routing' of https://github.com/rerdavies/pipedal into dev_tone3000 2026-02-10 20:18:09 -05:00
Robin E.R. Davies 22b63a32db Complete except for throttling bug. 2026-02-10 19:59:05 -05:00
Robin E.R. Davies aec88fa9f1 Checkpoint 2026-02-05 11:51:43 -05:00
Robin E.R. Davies e5beb97466 Sync. 2026-02-04 15:05:37 -05:00
Robin E.R. Davies 6c441ecfee WIP Sync 2026-01-27 23:45:13 -05:00
Robin E. R. Davies 59263ee715 Sync 2026-01-27 10:10:36 -05:00
Robin Davies f7d9802780 25.04 compatibility 2025-08-18 07:10:28 -04:00
Robin E. R. Davies 088bbe868a Sdbus-C++ upgrade. 2025-08-16 16:29:31 -04:00
Jiri Popek e22493b4ae add -ffast-math to speed up the execution
+ src/CMakeLists whitespace cleanup
2025-07-23 15:07:26 +02:00
Robin E. R. Davies 7f8b272504 Crash guard: prevent loading of preset if it has caused crashes. 2025-07-21 12:09:27 -04:00
Robin E. R. Davies e7cdd38056 Checkpoint 2025-07-07 02:30:30 -04:00
Robin E. R. Davies 3bf1a667c0 Pipewire aux in tests. 2025-06-30 02:33:40 -04:00
Robin E. R. Davies 862d5b6315 ALSA Sequencer Interim checkin. 2025-06-28 18:41:44 -04:00
Robin E. R. Davies acb668853b Alsa Sequencer Tests 2025-06-27 14:24:58 -04:00
Robin E. R. Davies e893e95325 Sync w/ build system 2025-06-16 02:21:54 -04:00
Robin E. R. Davies c4e0b0ff46 Audio file metadata and thumbnails 2025-05-31 21:06:34 -04:00
Robin E. R. Davies 8a5ab7a8cf Suspend sqlite3 deps. 2025-05-26 23:50:50 -04:00
Robin E. R. Davies 8b480d2e58 Toob File Player checkpoint. 2025-05-26 23:49:03 -04:00
Robin E. R. Davies 21e4b2864c Aux input test code. 2025-05-12 11:22:03 -04:00
Robin E. R. Davies eb7a7f3a48 Stereo Record 2025-02-27 14:17:24 -05:00
Robin E. R. Davies 7d9e9f4a54 FTXUI CMake policies 2025-02-15 18:11:15 -05:00
Robin E. R. Davies 09f73e26d6 Improvements to file uploads. UI improvements for future looper and audio capture plugins. 2025-02-15 12:29:53 -05:00
Robin E. R. Davies 4a4bd12d38 Restart audio after ALSA stall. 2024-11-29 23:44:00 -05:00
Robin E. R. Davies efe8775713 pipedal_kconfig (GRUB bootloader) 2024-11-29 10:45:46 -05:00
Robin E. R. Davies 245a47fe81 Ubuntu 24.40 CMake FetchContent policy change. 2024-11-29 08:49:11 -05:00
Robin E. R. Davies eabe9b0f1c pipedal_kconfig (Ubuntu Pi/Uboot) 2024-11-29 08:38:11 -05:00
Robin E. R. Davies 20604ac448 ICU Version for Ubuntu arm64. 2024-11-27 02:35:12 -05:00
Robin E. R. Davies 80ce9097f2 Dynamically load icu (Ubuntu) 2024-11-27 00:22:59 -05:00
Robin E. R. Davies ed25018dd0 Cosmetic improvement to icu linkage 2024-11-25 22:01:59 -05:00
Robin E. R. Davies 44a0d8bc6a Ubuntu temperature and cpu frequency 2024-11-23 14:34:58 -05:00
Robin E. R. Davies e79589e009 Misc. Ubuntu fixes. 2024-11-23 12:49:43 -05:00
Robin E. R. Davies 2167a7e766 Ubunut CFLAGS not sufficient 2024-11-23 12:26:40 -05:00
Robin E. R. Davies 33dc523ae3 Add --fix-permission and --list-wifi-country-codes options to PiPedalConfig. 2024-11-21 01:40:26 -05:00
Robin E. R. Davies c01f0351f0 Thred priorities on no-PREEMPT_RT (Ubunutu) 2024-11-14 16:15:32 -05:00
Robin Davies 64062fbbd7 Ubuntu doens't have a CPU governor. 2024-11-11 19:31:43 -05:00
Robin Davies 3cf7fba95f ALSA - prefer stereo configuraton if available. 2024-10-29 05:01:10 -04:00