diff --git a/src/monitor/monitor-client.c b/src/monitor/monitor-client.c
index fb9b8bc..85729e7 100644
--- a/src/monitor/monitor-client.c
+++ b/src/monitor/monitor-client.c
@@ -40,6 +40,10 @@
 ************************************************************************************************************************
 */
 
+#if defined(_MOD_DEVICE_DUO) || defined(_MOD_DEVICE_DUOX) || defined(_MOD_DEVICE_DWARF)
+#define MOD_MONITOR_STEREO_HANDLING
+#endif
+
 #if defined(_MOD_DEVICE_DUOX) || defined(_MOD_DEVICE_DWARF)
 #define MOD_IO_PROCESSING_ENABLED
 #endif
@@ -63,22 +67,22 @@ typedef struct MONITOR_CLIENT_T {
     jack_client_t *client;
     jack_port_t **in_ports;
     jack_port_t **out_ports;
-    uint32_t numports;
     uint64_t connected;
-    bool mono_copy;
-#ifdef _MOD_DEVICE_DUOX
+    uint32_t numports;
+    float volume, smooth_volume;
+   #ifdef MOD_IO_PROCESSING_ENABLED
+    sf_compressor_state_st compressor;
+   #endif
+   #ifdef _MOD_DEVICE_DUOX
+    sf_compressor_state_st compressor2;
     bool extra_active;
-#endif
+   #endif
+   #ifdef MOD_MONITOR_STEREO_HANDLING
+    bool mono_copy;
+   #endif
     bool apply_compressor;
     bool apply_volume, apply_smoothing;
     bool muted;
-#ifdef MOD_IO_PROCESSING_ENABLED
-    sf_compressor_state_st compressor;
-#ifdef _MOD_DEVICE_DUOX
-    sf_compressor_state_st compressor2;
-#endif
-#endif
-    float volume, smooth_volume;
 } monitor_client_t;
 
 /*
@@ -127,7 +131,7 @@ static inline float db2lin(const float db)
     return powf(10.0f, 0.05f * db);
 }
 
-#if defined(_MOD_DEVICE_DUO) || defined(_MOD_DEVICE_DUOX) || defined(_MOD_DEVICE_DWARF)
+#ifdef MOD_MONITOR_STEREO_HANDLING
 static void ProcessMonitorLoopStereo(monitor_client_t *const mon, jack_nframes_t nframes, uint32_t offset)
 {
     const float *const bufIn1  = jack_port_get_buffer(mon->in_ports[offset], nframes);
@@ -272,7 +276,7 @@ static int ProcessMonitor(jack_nframes_t nframes, void *arg)
         mon->apply_smoothing = true;
     }
 
-  #if defined(_MOD_DEVICE_DUO) || defined(_MOD_DEVICE_DUOX) || defined(_MOD_DEVICE_DWARF)
+  #ifdef MOD_MONITOR_STEREO_HANDLING
     smooth_volume = ProcessMonitorLoopStereo(mon, nframes, 0);
 
    #ifdef _MOD_DEVICE_DUOX
@@ -367,31 +371,33 @@ int jack_initialize(jack_client_t* client, const char* load_init)
 
     mon->client = client;
     mon->connected = 0;
-    mon->mono_copy = (load_init && !strcmp(load_init, "1")) || access("/data/jack-mono-copy", F_OK) != -1;
-#ifdef _MOD_DEVICE_DUOX
-    mon->extra_active = access("/data/separate-spdif-outs", F_OK) != -1;
-#endif
 
-    mon->apply_volume = false;
-    mon->muted = false;
-    mon->volume = 1.0f;
-
-#ifdef MOD_IO_PROCESSING_ENABLED
+   #ifdef MOD_IO_PROCESSING_ENABLED
     mon->apply_compressor = false;
-
     compressor_init(&mon->compressor, jack_get_sample_rate(client));
-#ifdef _MOD_DEVICE_DUOX
+   #endif
+
+   #ifdef _MOD_DEVICE_DUOX
+    mon->extra_active = access("/data/separate-spdif-outs", F_OK) != -1;
+
     if (mon->extra_active)
         compressor_init(&mon->compressor2, jack_get_sample_rate(client));
-#endif
-#endif
+   #endif
+
+   #ifdef MOD_MONITOR_STEREO_HANDLING
+    mon->mono_copy = (load_init && !strcmp(load_init, "1")) || access("/data/jack-mono-copy", F_OK) != -1;
+   #endif
+
+    mon->apply_volume = false;
+    mon->muted = false;
+    mon->volume = 1.0f;
 
     /* Register jack ports */
-#if defined(_MOD_DEVICE_DUO) || defined(_MOD_DEVICE_DWARF)
+   #if defined(_MOD_DEVICE_DUO) || defined(_MOD_DEVICE_DWARF)
     const uint32_t numports = 2;
-#elif defined(_MOD_DEVICE_DUOX)
+   #elif defined(_MOD_DEVICE_DUOX)
     const uint32_t numports = mon->extra_active ? 4 : 2;
-#else
+   #else
     uint32_t numports = 0;
 
     const char** const sysports = jack_get_ports(client, "system:playback_", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput);
@@ -408,7 +414,7 @@ int jack_initialize(jack_client_t* client, const char* load_init)
         free(mon);
         return 1;
     }
-#endif
+   #endif
 
     mon->numports = numports;
     mon->in_ports = malloc(sizeof(jack_port_t*) * numports);
@@ -462,35 +468,37 @@ int jack_initialize(jack_client_t* client, const char* load_init)
 
     const char* const ourclientname = jack_get_client_name(client);
 
-  #if defined(_MOD_DEVICE_DUO) || defined(_MOD_DEVICE_DUOX)
-    snprintf(ourportname, MAX_CHAR_BUF_SIZE, "%s:out_1", ourclientname);
-    jack_connect(client, ourportname, "system:playback_1");
-
-    snprintf(ourportname, MAX_CHAR_BUF_SIZE, "%s:out_2", ourclientname);
-    jack_connect(client, ourportname, "system:playback_2");
-   #ifdef _MOD_DEVICE_DUOX
-    snprintf(ourportname, MAX_CHAR_BUF_SIZE, mon->extra_active ? "%s:out_3" : "%s:out_1", ourclientname);
-    jack_connect(client, ourportname, "system:playback_3");
-
-    snprintf(ourportname, MAX_CHAR_BUF_SIZE, mon->extra_active ? "%s:out_4" : "%s:out_2", ourclientname);
-    jack_connect(client, ourportname, "system:playback_4");
-   #endif
-  #elif defined(_MOD_DEVICE_DWARF)
+   #ifdef _MOD_DEVICE_DWARF
     snprintf(ourportname, MAX_CHAR_BUF_SIZE, "%s:out_2", ourclientname);
     jack_connect(client, ourportname, "system:playback_1");
 
     snprintf(ourportname, MAX_CHAR_BUF_SIZE, "%s:out_1", ourclientname);
     jack_connect(client, ourportname, "system:playback_2");
-  #else
+   #else
     for (uint32_t i=0; i<numports; ++i)
     {
         snprintf(ourportname, MAX_CHAR_BUF_SIZE, "%s:out_%d", ourclientname, i + 1);
         snprintf(portname, MAX_CHAR_BUF_SIZE, "system:playback_%d", i + 1);
         jack_connect(client, ourportname, portname);
     }
-  #endif
+   #endif
+
+   #ifdef _MOD_DEVICE_DUOX
+    if (!mon->extra_active)
+    {
+        snprintf(ourportname, MAX_CHAR_BUF_SIZE, "%s:out_1", ourclientname);
+        jack_connect(client, ourportname, "system:playback_3");
+
+        snprintf(ourportname, MAX_CHAR_BUF_SIZE, "%s:out_2", ourclientname);
+        jack_connect(client, ourportname, "system:playback_4");
+    }
+   #endif
 
     return 0;
+
+   #ifndef MOD_MONITOR_STEREO_HANDLING
+    UNUSED_PARAM(load_init);
+   #endif
 }
 
 #ifdef STANDALONE_MONITOR_CLIENT
@@ -540,7 +548,7 @@ bool monitor_client_init(void)
 
 bool monitor_client_setup_compressor(int mode, float release)
 {
-#ifdef MOD_IO_PROCESSING_ENABLED
+   #ifdef MOD_IO_PROCESSING_ENABLED
     monitor_client_t *const mon = g_monitor_handle;
 
     if (!mon)
@@ -553,43 +561,43 @@ bool monitor_client_setup_compressor(int mode, float release)
     {
     case 1:
         compressor_set_params(&mon->compressor, -12.f, 12.f, 2.f, 0.0001f, release / 1000, -3.f);
-#ifdef _MOD_DEVICE_DUOX
+       #ifdef _MOD_DEVICE_DUOX
         if (mon->extra_active)
             compressor_set_params(&mon->compressor2, -12.f, 12.f, 2.f, 0.0001f, release / 1000, -3.f);
-#endif
+       #endif
         break;
     case 2:
         compressor_set_params(&mon->compressor, -12.f, 12.f, 3.f, 0.0001f, release / 1000, -3.f);
-#ifdef _MOD_DEVICE_DUOX
+       #ifdef _MOD_DEVICE_DUOX
         if (mon->extra_active)
             compressor_set_params(&mon->compressor2, -12.f, 12.f, 3.f, 0.0001f, release / 1000, -3.f);
-#endif
+       #endif
         break;
     case 3:
         compressor_set_params(&mon->compressor, -15.f, 15.f, 4.f, 0.0001f, release / 1000, -3.f);
-#ifdef _MOD_DEVICE_DUOX
+       #ifdef _MOD_DEVICE_DUOX
         if (mon->extra_active)
             compressor_set_params(&mon->compressor2, -15.f, 15.f, 4.f, 0.0001f, release / 1000, -3.f);
-#endif
+       #endif
         break;
     case 4:
         compressor_set_params(&mon->compressor, -25.f, 15.f, 10.f, 0.0001f, release / 1000, -6.f);
-#ifdef _MOD_DEVICE_DUOX
+       #ifdef _MOD_DEVICE_DUOX
         if (mon->extra_active)
             compressor_set_params(&mon->compressor2, -25.f, 15.f, 10.f, 0.0001f, release / 1000, -6.f);
-#endif
+       #endif
         break;
     }
 
     mon->apply_compressor = mode != 0;
     return true;
-#else
+   #else
     fprintf(stderr, "asked to setup compressor while IO processing is not enabled\n");
     return false;
 
     UNUSED_PARAM(mode);
     UNUSED_PARAM(release);
-#endif
+   #endif
 }
 
 bool monitor_client_setup_volume(float volume)