feat: built-in volume management

- Volume slider on every node (green bar, draggable)
- Mute toggle button (M/m) on every node
- Backend: read volume/mute from PipeWire node props
- Backend: POST /api/volume {node_id, volume} to set volume
- Backend: POST /api/mute {node_id, mute} to toggle mute
- Graph JSON includes volume and mute fields per node
- Slider supports drag-to-adjust with mouse
This commit is contained in:
joren
2026-03-29 23:21:39 +02:00
parent 8c6a1f44c1
commit 65db5daa7c
7 changed files with 206 additions and 5 deletions

View File

@@ -44,6 +44,10 @@ public:
bool connectPorts(uint32_t output_port_id, uint32_t input_port_id);
bool disconnectPorts(uint32_t output_port_id, uint32_t input_port_id);
// Volume control
bool setNodeVolume(uint32_t node_id, float volume);
bool setNodeMute(uint32_t node_id, bool mute);
// PipeWire internal data (exposed for C callbacks)
struct PwData {
pw_thread_loop *loop;