bitgapp / Cursr

KVM - Share Mouse & Keyboard between multiple computers. Custom borders and more!
https://cursr.app
Other
143 stars 4 forks source link

Create a virtual audio device and forward it when using KVM #73

Open ragauskl opened 1 month ago

ragauskl commented 1 month ago

As per user request on Discord:

create a virtual audio device and forward it I have my linux machine on a "tv" monitor, and I intend on using it as such, but being able to have my media over there and able to be > forwarded to my main windows pc would be real nice Especially since the media control of my headphones already goes there when I bring the mouse over

For anyone else looking for similar functionality: While this is out of scope for Cursr there is a potential for integrating Cursr with eqMac once eqMac is cross-platform as right now it's for macOS only. The integration is possible because me (owner/developer of Cursr) and Roman (owner/developer of eqMac) are working as partners/owners of Bitgapp and can work together to integrate the two without additional issues. However it will be long time before this is possible as Roman is only now looking into cross-platform support, it may be well over a year before that is implemented and only then we can start working on integration of the two.

I also consulted with him as he's more experienced in audio development and writing a virtual audio output device to forward it within Cursr, would be way too much of complicated work than it's worth right now, especially as I don't have audio knowledge and he's busy working on eqMac.

There may be already some 3rd party software that could be setup to do this by user, but we don't have time to investigate this. In case anyone figures it out, feel free to share here.

When there will be any further update on this, I'll provide it here.

Merith-TK commented 1 month ago

Adding on to give further context about the idea I was thinking of (I am the original user)

The idea would be that there could be an optional one-way routing of audio between the devices. For example The secondary device would have new audio "input" and "output" on its audio setup, that can be selected. The "host" device (keyboard/mouse) would have settings to specify which audio devices to send

Two potential uses would be to have the secondary device playing music/tv, and stream its audio to the host device, while the host's microphone, can be copied over to the secondary machine,

ragauskl commented 1 month ago

@Merith-TK As the actual implementation of this feature with collaboration with eqMac is still not guaranteed and a long way from now at best, I could add a small adjustment to Cursr:

Allow to define to 'not forward' key events like volume up, volume down and other media keys based on selection.

In future when I figure out (likely sooner future then the audio device) how to send key events without having to have mouse over/not hidden I could allow defining a priority list of devices where to forward specified multimedia keys in case audio is playing on other device and it's inconvenient having to move the mouse over to control audio there. Or allow switching where audio keys are being forwarded based on keyboard shortcut.

Let me know if any of this would be of any use for you.

ragauskl commented 1 month ago

@Merith-TK I did a quick search for existing solutions and there's (as one example, there may be more) NDI for Audio (youtube link)which is officially supported on Windows and Mac, however there seem to be some unofficial options for Linux as well but may require more work to set it up, one example mentioning of this (I didn't test it and get too much into details) https://casparcgforum.org/t/ndi-on-linux/2384 which also mentions NDI with CasparCG

anthonypants commented 1 month ago

I'd love this, but everything I've seen attempt this introduces massive amounts of latency, so if that's something you care about, I'm not sure it can be done well. The best program I've used is AirPlay from macOS to a Windows client running Airfoil Satellite, but AirPlay tries to stop most apps playing audio to allow them to buffer first (e.g. Safari, Apple Music, Overcast), and that doesn't even work in all apps (e.g. Plex).

ragauskl commented 3 weeks ago

@anthonypants that's useful to know, we may still give it a try at some point in future to see if there's anyway to resolve this but will keep this in mind