mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.43k stars 1.27k forks source link

Improve integration with Pulse #8285

Open mixxxbot opened 2 years ago

mixxxbot commented 2 years ago

Reported by: daschuer Date: 2015-11-09T08:05:06Z Status: Confirmed Importance: Wishlist Launchpad Issue: lp1514332


Two possible solutions: I think they are covering different use-cases, so we should implement both:

1) Implement a sounddevicepulse, to become a native pulse client. The pro-setup of such a system will be still tricky since it requires pavucontrol, which is not default on most distros. Mixxx has to register more than one clients to have access to more than one hardware soundcard.

Currently this is already possible with one soundcard using the "pulse" Soundcard of ALSA.

2) redirect Pulse (System Sound) to the ALSA Loopback soundcard, to allow to Mixxx the system sound in (Youtube/Soptify)

Solution 1) id the jukbox setup which makes Mixxx behave as any other desktop application. Solution 2) is the pro setup, which allows to use teh system sound in lief Mixes.

Related Bugs: Bug #⁠1333466 Bug #⁠1414456

mixxxbot commented 2 years ago

Commented by: illuusio Date: 2015-11-12T13:05:00Z


I recommend to test Portaudio-pulseaudio currently only available in patch and builds can be found: https://build.opensuse.org/package/show/home:illuusio:portaudio/portaudio

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2015-11-12T14:29:34Z


Thank you, this would be a adequate replacement for 1) if the two soundcards use case is easy to setup (just as easy as with the alsa backend)

mixxxbot commented 2 years ago

Commented by: rryan Date: 2015-12-31T18:39:22Z


I think we're better served from a maintenance perspective by leveraging Tuukka's work in portaudio itself.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2016-01-01T02:29:47Z


Tuukka's work is a very nice solution for 1.) So we do not need a sounddevicepulse.

However it is not a solution for the "Using the system sound" 2.)

Since we currently have non of these solutions, lets keep the bug open.

mixxxbot commented 2 years ago

Commented by: rryan Date: 2016-01-01T02:47:50Z


If the user wants to mix the system sound in then they should get it into a sound device PortAudio can read from on their own (e.g. using JACK, SoundFlower, etc.) and use an AUX input. I don't think we should be messing with Pulse/ALSA for the user.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2016-01-01T10:44:53Z


I was thinking about a extended pasuspender, which switches the Pulse default output to the loopback device. This way, Mixxx itself is not responsible for messing with the pulse config, it has not pulse dependency, but it can interact with this new wrapping process, so solve the other issues we currently have with pulse as well.

The result is able to achieve a much better latency than a Mixxx/System - > Pulse -> ALSA solution or a Mixxx/Jack - > Jack -> ALSA solution.

Finally  we will have System -> Pulse -> ALSA -> MIxxx -> ALSA. Mixxx does actually the final mixing ;-) 
mixxxbot commented 2 years ago

Commented by: daschuer Date: 2018-05-20T20:02:50Z


https://github.com/illuusio/portaudio-pulseaudio/pull/1

This branch is quite mature. Unfortunately merging upstream is somehow stalled. I think we should adopt this in our Ubuntu PPA That should be a great usability boost.

And a nice topic on our 2.2 feature list.

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2018-05-20T20:16:33Z


IMO we should work to get it merged upstream rather than hack in our own functionality to replace a common package on almost every users' system.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2018-05-20T22:04:09Z


Illuusio is trying that for two years, and even if it would be merged today, we should offer it our users in a ppa instead of wait an other two yeas until it lands in a new distro release.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2020-06-10T06:27:10Z


the code lives now here: https://github.com/illuusio/assembla-mirror-portaudio-pulseaudio

daschuer commented 11 months ago

The Pulse API has now been merged: https://github.com/PortAudio/portaudio/pull/336

we need to consider how we want to make it usable for all our Linux users.