mixxxdj / mixxx

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

Open Native Hardware preferences from Mixxx #7944

Open mixxxbot opened 2 years ago

mixxxbot commented 2 years ago

Reported by: daschuer Date: 2015-04-06T09:24:43Z Status: In Progress Importance: Wishlist Launchpad Issue: lp1440675


For, new users it is a an insurmountable hurdle, to setup the faders and routing option offered by their sound card. This is due to the OS, that normally hides this advanced stuff from the regular user.

On Linux, the user needs to open the terminal program alsamixer, by typing. On Windows, he has to click though several menus in the windows control panal. In case of ASIO there are sometimes manufacturer provided panels. As far as I know Mac OS does not offer a native mixer panel and relies on the solution offered by the hardware manufacturer.

A solution based on PortMixer Bug #⁠1440443, will help only a bit, because it will still hides some advanced Hardware options like boost amps.

A first step towards a complete solution is a "Open Hardware Mixer" button in our sound preference, that opens the alsamixer on Linux only.

mixxxbot commented 2 years ago

Commented by: ywwg Date: 2015-04-07T22:15:15Z


I don't think Mixxx should be in the business of opening third-party programs. It's a maintenance nightmare for the multiverse of linux distros and may not even be possible on sandboxed Mac OSX. Opening alsamixer in a terminal window on linux will not be a good user experience.

Where are you seeing significant demand for accessing the hardware preferences? You say it's an "insurmountable hurdle" but that's not really justified. Also, some sound cards require more special care -- the audio4dj requires a custom .asoundrc, and the Serato boxes require a card-specific preference pane on OSX. So it won't even solve the problem of sound setup being difficult anyway.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2015-04-07T22:45:28Z


Here is the Pull request: https://github.com/mixxxdj/mixxx/pull/547

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2015-04-07T23:25:15Z


It's a maintenance nightmare for the multiverse of linux distros

Not really, I have not found a single distro that does not provide alsamixer.

and may not even be possible on sandboxed Mac OSX.

Yes thats true, but not a reason to let Linux user suffer.

Opening alsamixer in a terminal window on linux will not be a good user experience.

Yes, thats true, but opening it for them is a much better user experience than letting them alone. It is unlikely that a distro will provide access to the hardware slider in a polished way, they rely on pules audio these days.

Where are you seeing significant demand for accessing the hardware preferences?

We got 29 Hits and and not at least I suffer myself issues with all of my sound devices that required me to start alsamixer each time I setup Mixxx. http://www.mixxx.org/forums/search.php?keywords=alsamixer.

There are all sort of mute controls, boost sliders and loop back switches that are not properly setup by default. I can give some details if you like.

and the Serato boxes require a card-specific preference pane on OSX

It would be great if we find a generic way to open such panes, but for now, it is not a reason to reject the Linux solution because of that.

Apart from the setup use case, there is an other strong issue, that requires a hardware slider pane: This solution here is a good step towards: https://bugs.launchpad.net/mixxx/+bug/1440443

I want to get rid of carry may hardware mixer around. The only reason I need it now is the Master fader. If your reduce the loudness for dinner music using the Master gain, you introduce quantization noise, like a bitcrusher. If you use the Hardware faders from Alsamixer for that you do not have such noise.

I have started to work towards a solution now because I recently had a discussion about the bad sound quality of Mixxx + Linux compared to Virtual DJ and Windows. The Mixxx sound was really bad in this case, but only because it was not properly setup. There was a boost overdrive in the controller and the Master Gain near zero. The user was not aware that there is something like alsamixer to fix it he was looking in th pulse preferences only and failed.

A button in our harware preferences will encourage our users to have at least a look to the hardware sliders.

In a second step, we may offer the alsamixer sliders in our own GUI, along with mapping options. I had a closer Look at PortMixer, but it seams to be too generic to be useful. It is probably worth to extend it for our needs but that is a different project.

mixxxbot commented 2 years ago

Commented by: ywwg Date: 2015-04-08T01:56:28Z


It is not the responsibility of Mixxx to make up for a poor user experience in the OS. The real bug is lack of good graphical sound setup utilities in the distribution. Just having a button that opens alsamixer doesn't really solve the problem if people don't know they have to click it. And if they know they have to use it, they can just run the program. The stumbling block is not an issue with users having difficulty running the program.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2015-04-08T06:48:34Z


The idea of firing up alsamixer was born after I have played with PortMixer. I cam to the conclusion that a pane to access the hardware controls will be almost an exact copy of alsamixer using Qt.

There seams to be no strong reason to do the work of copy alsamixer into Mixxx if the Linux community in pleased with the user experience of alsamixer. The extra knob in the sound preferences does not hurt, It actually helps. And it end ups exactly where experienced users will end up as well.

Mixxx is in the responds to configure the hardware. It sets the route towards the hardware bypassing the OS facilities. For me there is no difference between setting the audio buffer size the sample rate, and the hardware control offered by the sound hardware. Many other Applications like Audacity and VLC player are able to access these hardware controls.

So we actually have a problem. Do you have an alternative solution for this?

Just having a button that opens alsamixer doesn't really solve the problem.

Yes it is not entirely solved. A complete solution will allow to map the Hardware slider by control objects. But it is a good band aid until we can access the controls directly. For now it just make it more obvious that is is required to use alsamixer and not the pulse stuff provided by the distros to access the soundcard hardware. Thats the stumbling block.

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2015-04-17T14:36:46Z


I agree with Daniel that this would be helpful. While it is unlikely that alsamixer is not installed on GNU/Linux, it is also unlikely that a GUI for the ALSA mixer is installed and available in the desktop environment's application menu. If users look around for that, they'll probably just find pavucontrol or DE-specific programs for controlling PulseAudio and get confused. In Crossfade 0.90, I put icons for both pavucontrol and xfce4-mixer on the desktop. I think this is helpful albeit confusing and put a sentence about it in the manual, but it would be great if I could remove the xfce4-mixer icon, especially since that application is discontinued with Xfce 4.12, and have Mixxx launch alsamixer.

The button should open the controls for the sound card set as the master output (or whatever sound card JACK is using) by default. This can be done with the -c command line option for alsamixer. Otherwise, alsamixer will probably show controls for the onboard sound card and users may get confused looking for how to switch to their DJ sound card (although ALSA mixer makes it clear how to do this if one takes a few seconds to try looking around).

If Audacity and VLC, which are also cross-platform, provide similar controls, it could be helpful to see what they do on Windows and OS X.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2015-04-18T07:32:25Z


If Audacity and VLC, which are also cross-platform, provide similar controls, it could be helpful to see what they do on Windows and OS X.

Audacity uses PortMixer a wrapper around the native OS specific soundcard access implementation. I could be helpful, but it works somehow weak for Mixxx, since it tries to predict which control is for which stream. It may hides details of the sound card hardware that might be required to touch to solve a certain problem.

VLc interfaced via as set of plug-In directly to the native API.

A high end solution for Mixxx coud be to extend PortMixer to our needs. This will finally end up in a view that looks similar to Alsamixer :-/

mixxxbot commented 2 years ago

Commented by: kain88-de Date: 2015-04-18T21:57:10Z


I would agree with owen here. This isn't something we should put into mixxx code. I would assume people who see it as a hurdle to open alsamixer will also have problems using it. I think stuff like this is a way better fit for the manual where we can also link to appropriate help sites.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2015-04-19T00:06:45Z


The manual it too far away to fix this instant issue. From my experience the novice user did not know that there are hardware mixer on the sound card, so he probably has no idea what to look for in the manual.

If we follow Be's suggestion and open alsamixer with the master soundcard selected and in "all" view, the button offers some extra value.

@Max, do you alternative idea to improve this situation?

How about a short hint in the hardware preferences: "Be sure the sound card mixer are set up. This can be checked using "alsamixer" from the command line."

Or

"Read in the sound card manual how to setup the sound card mixer"

mixxxbot commented 2 years ago

Commented by: kain88-de Date: 2015-04-19T11:01:10Z


We have a section in the manual talking about the hardware setup. This sounds like an excellent place to put these hints. We have graphs there with hardware routing and everything. If one wants to properly setup mixxx he will look into that section of the manual (if he doesn't I can't do much to help him).

http://mixxx.org/manual/latest/chapters/setup.html

Besides if a novice user just opens alsamixer there is a good chance he has no idea what it is and how to use it. That doesn't help it just will make him more confused. It will not be clear to him why mixxx even opens alsamixer instead of some pulseaudio settings.

On 04/19/2015 02:06 AM, Daniel Schürmann wrote:

The manual it too far away to fix this instant issue. From my experience the novice user did not know that there are hardware mixer on the sound card, so he probably has no idea what to look for in the manual.

If we follow Be's suggestion and open alsamixer with the master soundcard selected and in "all" view, the button offers some extra value.

@Max, do you alternative idea to improve this situation?

How about a short hint in the hardware preferences: "Be sure the sound card mixer are set up. This can be checked using "alsamixer" from the command line."

Or

"Read in the sound card manual how to setup the sound card mixer"

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2015-04-19T22:54:46Z


The purpose and value of opening alsamixer could be explained both as a tooltip for this button and in the manual. The manual could go into more detail, such as explaining how it is different from pavucontrol.

The UI should be as self-explanatory as possible so users have to refer to the manual as little as possible. Most people do not read manuals for anything and many those who do, such as myself, would prefer to not have to refer to the manual. Although it would be inappropriate to bend over backwards for users who would never bother to read the manual, I think simple changes to the GUI such as this button could make the manual less necessary to read. IMO, only things that are too complicated to explain with a well designed GUI should go in the manual.

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2015-04-19T22:56:13Z


Also, I don't think adjusting sliders in alsamixer is too complicated for most people to figure out without a manual.

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2015-05-25T21:14:43Z


"It is not the responsibility of Mixxx to make up for a poor user experience in the OS. The real bug is lack of good graphical sound setup utilities in the distribution. Just having a button that opens alsamixer doesn't really solve the problem if people don't know they have to click it. And if they know they have to use it, they can just run the program. The stumbling block is not an issue with users having difficulty running the program."

It is the responsibility of Mixxx to educate users how to get the best sound out of Mixxx and make it easy and intuitive to do so. Just having a button to open alsamixer doesn't solve the problem, but redesigning the GUI and editing the manual to lead them towards adjusting their hardware controls would help more. See bug 1458677. For GNU/Linux users, where there is a (nearly) ubiquitous way for Mixxx to show the hardware controls (opening alsamixer), this button would make it even easier for users to do so.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2015-09-15T06:57:28Z


Here is a related form thread: http://www.mixxx.org/forums/viewtopic.php?f=3&t=7488

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2016-01-04T09:42:30Z


And an other one: http://www.mixxx.org/forums/viewtopic.php?f=3&t=7488

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2016-07-22T09:30:39Z


And on other one: http://www.mixxx.org/forums/viewtopic.php?f=3&t=8452

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2017-01-25T09:11:32Z


And on other one: http://www.mixxx.org/forums/viewtopic.php?f=1&t=8847

I really like to give this button a go. This has no impact to the rest of the Mixxx code base and if it turns out that is is more confusing than helpful, we can remove it with no pain.