Here’s a project I did a while ago, but never documented here… At Brown Dog Gadgets we do a lot of video streaming for workshops, and our setup includes one person on camera and another person as the producer who runs the software, monitors the chat window, and does the camera switching and advances the slides.
We started talking about an easy way for the person on camera to let the producer know when to advance to the next slide without having to say “Next slide, please” 20 times each session. Our video software can easily control the slides by using the left and right arrow keys, so we thought about just making a small USB controller the presenter could use to send those key commands, but that only works if the video streaming software has focus as the frontmost application, and since we’re running multiple pieces of presenting software as well as a browser we can’t rely on key commands to work.
So what I came up with is a simple controller that sends MIDI signals to a custom application that plays a sound which the producer can hear through their headphones, and know that it’s time to change the slide. (The application also has a small window that displays “Waiting…”, “Forward”, or “Back” depending on the state of the controls.)
The great thing about MIDI is that it doesn’t rely on a specific application being frontmost… Yes, we could have used serial communications, but we’d need to then select the correct serial port, which changes depending on which USB port you use, hubs, computer, etc.
This is a niche solution to a niche problem, but that seems to be what I’m good at, so I’m just gonna go with it.