I’m really happy that most modern monitors support DDC so that we can programmatically change settings rather than go through clunky OSDs.
The problem
At my desk I have my Mac Studio and my latest gaming PC and they both share a triple monitor setup. When I want to switch the monitors between the two, I either need to:
- Turn on auto-switching mode
- Manually change the input x 3
Auto-switching kinda worked, but has quirks I can’t live with. One is when I’m playing a game on the PC and the Mac wakes up for whatever reason, the PC receives a signal that hardware has been connected or disconnected and the screen freezes. It seems like a firmware bug to me – if an input is being actively used the others should be ignored.
The manual route is pretty bad as well. The M32U‘s input switchers are on the back of the monitor, which is pretty much the worst spot possible. Only the far right monitor is slightly more convenient to access.
How DDC solves it
By using m1ddc on the Mac we can easily script a way to switch between the two machines. 🎉 This means I can create a keyboard shortcut to toggle the inputs, a physical button, or even run it from an external computer. Hooray!
Edit: Now with web appi-ness!
I threw together a quick Flask app that can be accessed from any device on my network to switch inputs. Neato!
Note: Once I connect the left monitor the same way I connect the other two, the transition should be more in sync. Currently it’s a little slower due to the HDMI connection.
What about audio?
For those who use desktop speakers there’s a similar dilemma for audio: sharing one output for multiple inputs. The M32U (like many monitors) has a mini-jack that outputs audio from the currently selected video input. You then can plug your desktop speakers into that jack and you’re good to go – switching to another video source also means switching to its audio.
Considerations
If that’s your only option there’s no problem, but do know that audio quality may be subpar as the DAC chip inside the monitor most likely isn’t great. I also found that I had no volume control in macOS for this setup, but was able to work around it using MonitorControl which – you guessed it – uses DDC.
Another option would be a powered stereo mixer like the Rolls MX51S that would let each system handle its own analog output. That should give you better quality, but introduces complexity via a new box to power and extra cables. You also may have to fight noise and hums. One upside to this setup would be that you could play audio from multiple machines at the same time – maybe the Mac plays music while the PC plays a game.
The solution I landed on is my favorite: A speaker system with USB input. The same way I share my keyboard input (via the monitor’s USB hub) I share the audio output. There’s no interference or noise, and quality is superb because the speakers are made for digital input.