Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 4 additions & 10 deletions native-bridge/src/audio/engine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1083,21 +1083,15 @@ impl AudioEngine {
// Get monitoring state - use atomic flag for monitoring_enabled (never fails!)
let mon_vol = f32::from_bits(monitoring_volume.load(Ordering::Relaxed));
let monitoring_enabled = is_monitoring.load(Ordering::Relaxed);
// Read arm and mute state from processing_state
// Both affect whether we should monitor: must be armed AND not muted
let (is_armed, is_muted) = if let Ok(state) = processing_state.try_read() {
(state.track_state.is_armed, state.track_state.is_muted)
let is_muted = if let Ok(state) = processing_state.try_read() {
state.track_state.is_muted
} else {
// Default: armed=true (let audio through), muted=false (let audio through)
// This prevents audio dropout if lock is briefly contested
(true, false)
false // Default to not muted - let audio through
};

// Local monitoring: apply volume, pan, and push to output
// Note: Effects were already applied above (before browser stream)
// Monitoring requires: armed AND monitoring enabled AND not muted
// This matches DAW behavior where disarming a track stops input monitoring
let should_monitor = is_armed && monitoring_enabled && !is_muted;
let should_monitor = monitoring_enabled && !is_muted;

if should_monitor {
// Apply volume and pan for local monitoring
Expand Down
4 changes: 2 additions & 2 deletions native-bridge/src/protocol/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -584,8 +584,8 @@ impl BridgeServer {
BrowserMessage::UpdateTrackState {
state: track_state, ..
} => {
info!("UpdateTrackState received: monitoring_enabled={:?}, is_muted={:?}, volume={:?}",
track_state.monitoring_enabled, track_state.is_muted, track_state.volume);
info!("UpdateTrackState received: is_armed={:?}, monitoring_enabled={:?}, is_muted={:?}, volume={:?}",
track_state.is_armed, track_state.monitoring_enabled, track_state.is_muted, track_state.volume);
let app = self.state.lock().await;
app.audio_engine.update_track_state(track_state);
None
Expand Down
Loading