feat: integrate MixerEngine into AudioHost real-time audio pipeline
When SetMixerEngine() is called with a MixerEngine instance, the audio processing thread routes all device input/output channels through the mixer (channel strips → buses → master) instead of the legacy Lv2Pedalboard. Falls back when no mixer engine is set. - Thread-safe via mutex + realtime raw pointer swap (same pattern as existing SetPedalboard) - Preserves existing pedalboard processing — both modes coexist - New ProcessLv2Pedalboard() path when realtimeActiveMixerEngine is non-null uses device buffers directly for multi-channel I/O
This commit is contained in:
@@ -37,6 +37,8 @@
|
||||
namespace pipedal
|
||||
{
|
||||
|
||||
class MixerEngine; // forward declaration for band-in-a-box mode
|
||||
|
||||
struct RealtimeMidiProgramRequest;
|
||||
struct RealtimeNextMidiProgramRequest;
|
||||
class PluginHost;
|
||||
@@ -239,6 +241,10 @@ namespace pipedal
|
||||
|
||||
virtual void SetPedalboard(const std::shared_ptr<Lv2Pedalboard> &pedalboard) = 0;
|
||||
|
||||
/// Set the mixer engine for band-in-a-box mode.
|
||||
/// When set, overrides the legacy pedalboard processing.
|
||||
virtual void SetMixerEngine(const std::shared_ptr<MixerEngine> &mixerEngine) = 0;
|
||||
|
||||
|
||||
|
||||
virtual void SetControlValue(uint64_t instanceId, const std::string &symbol, float value) = 0;
|
||||
|
||||
Reference in New Issue
Block a user