Mixxx Core: running Mixxx with minimal overhead

Hi Folks!

TL;DR: Mixxx Core is an idea for creating a stripped down version of Mixxx with minimal overhead, focused on running controller based setups that require minimal visual features and can run on systems with limited resources such as Raspberry Pi and Beaglebone.

For a while now I have used Mixxx on my laptop for making basic mixes for my personal enjoyment. As someone who used (older versions of) VirtualDJ, Serato and Traktor, I must say Mixxx is a very strong contender in the DJ software space. It does what DJ software needs to do and it does so reliably and with much more features than I think many of us expect from open source software.

However, looking at the popular topics on this forum, it is obvious that one of the most interesting features of Mixxx is that it can run on Linux based systems and can therefor be used on Raspberry Pi and Beaglebone. Like many others, I have tried building and running Mixxx on Raspberry Pi 3 (still need to try RPi4 and Beaglebone) and this has had mixed results (pun intended). Obviously, the Raspberry Pi has very limited in resources compared to conventional systems used for DJ’ing. Still, because of it’s low price, GPIO pins and small form factor, many people (myself included) have fantasized about running Mixxx on a custom built DJ console built around Raspberry Pi.

Therefor I think it would be interesting to create a version of Mixxx that is stripped back as much as possible without compromising the core mixing experience. I’ve dubbed this idea Mixxx Core. For me personally this would mean allowing Mixxx to run with as little visual interface as possible, perhaps just running audio calculations without a desktop environment and having other scripts request playback info to display on a tiny OLED screen. However, that’s my personal interpretation of the core Mixxx experience. I am curious what others would consider a Mixxx Core experience.

So two questions for the community:

  1. What would you consider to be a core Mixxx experience and which features could be stripped from Mixxx if Mixxx Core was an actual thing?
  2. For the Developers: to what extend would a Core edition of Mixxx be a realistic option in terms of development and maintenance? Do you consider this a worthwhile thing to develop?

To boil it down: when talking about performance we refer to lowest latency possible, right?
Low-latency (or even rt-preempt) kernels help a lot with that, in conjunction with additional realtime tweaks. See wiki: Adjusting-Audio-Latency

According to what I’ve read here&there and from my experience with my previous, slower laptop, I think the performance is already increased notably by removing unnecessary visual gadgets, like Spinnies and VU meters. Or, in the samplers for example, show an abstract progress bar instead of full-featured overviews.
That said, some platform- or even screen-specific skins would be a good first step.

We may also introduce command line options like --samplers 8 or --decks 2 to reduce the number of players being created on startup. Don’t know if that would help with performance but it may reduce the startup time.

Apart from that, I’m not aware that disabling features would increase the performance. Vinyl control or recording for example only use ressources when it’s actually used (sound devices configured as inputs).

Hello there just checking in with my repo which already contains a cut down version of raspbian / raspberry pi OS (debian buster) and runs mixxx as standard: https://github.com/fayaaz/mixxx-pi-gen
Releases: https://github.com/fayaaz/mixxx-pi-gen/releases

Works perfectly fine with 2 decks on a raspberry pi 4

I’ve been trying raspberry pi3b+. DVS (digital vinyl) only worked stable enough with XWax/Pideck; I ended up replacing the raspberry with a Odroid XU4, which is way stronger for only little more cost. Maybe pi4 is fast enough.

Also what was really important was to do 2 tweaks:

  1. boot with realtime IRQ option
  2. force performance mode all the time

have Mixxx 2.3beta working nicely on a Odroid XU4 on Ubuntu 20.04 (even though I couldn’t get OpenGL working on odroid, but software render in Mixxx is fast enough)

Ive been running the version that is available with apt-get on the raspbian that comes pre-installed with a raspberry pi 4 kit from cannakit with no real performance issues at all. The main problem I had was getting a skin to fit correctly on the pi foundation 7in screen. I think a streamlined raspbian like linked above with a stripped down skin designed for small screens would be a fine setup.

Oh I am using an M-Audio Fasttrack Pro as my interface and plugging that in made a huge difference in latency and sound quality, but I think most people would be using some sort of soundcard other than the internal one as a given.

My goal was to build a self contained dj rig and all I need now just need a case. The pi 4 runs mixxx, powers a 7in touch display, a controller (an arduino powered Traktorino) and a usb interface and outputs to bluetooth running power from a usb phone powerbank battery.

Hi @kidlogic
I am glad to hear that Pi4 seems so much stronger than 3b+.

For the skin - what’s your resolution? I have a 7" 1024x600px touch-display. I find the regular skin display ok for viewing, but not useful for touching. (my touch function is currently broken in my display so it’s not my main priority right now). Did you create a skin edit? are you using DVS?

I have a traktor a6 sound card and am using 48kHz and have a 10ms latency from turntable to mixxx stable, which is ok for me. I sometimes can get 5ms, but then it usually crashes after a while.

Did your touchscreen work out of the box? (are you on any Mixxx version after 2.1.8 - because touch was broken in the library section -see Touchscreen on raspberry with mixxx > 2.1.8 for a fix ). Another problem is that Ubuntu doesn’t really give good multi-touch (2,3 fingers) support.

I’ve used djplayerpro on and ipad for a while, and this one is really made for touch - a user interface like this would be a great template. It is not just a skin, but a completely different user interface.

I am using 1x Akai LP8 to do most of the control, but I think I need to get into Java-Scripting to make it more intuitive to avoid the need of changing channels all the time. I use Mixxx mixing features very sparingly, as I do most of the controls outside of mixxx everything via DVS (either 2x turntables in relative mode or 1 x cdj in absolute mode to use the looping of the cdj) and an analog mixer with effects. I also use Mixxx to record my mixes at the same time, which works great.

In the end I would like to mount it all together as one semi-portable kit which connects to a custom furniture at home - but I am not that far yet.

Cheers,
Le

Mine touchscreen is the pi foundation 7" and its res is tiny, 600x480. I took a scaleable version of tango and edited the min resoultion so it was 580 x460 to get everything to fit correctly. The touch functionality works with everything else and even a few of the context menus in Mixxx but yeah its mostly broken due to the program itself for now. I wanna say im running version 2.2.1 but dont remember for sure without booting it up and Im not near it rn. I havent tried DVS with it yet but with how everything else handles so far Id imagine itd be workable. I built it mostly to like take out to a park or someones backyard so I hadnt even thought to try dvs tbh. Its exceeded what I thought Id get out of it for a little portable rig though, I didnt expect it all to actually run off the powerbank with everything attatched so Im stoked.

I looked at the Traktorino project you suggested and it looks extremely nice.

I decided I want to stick with turntables and vinyls (and my CDs). I very much appreciate Mixxx and its open source aspect and freedom (compared to using my ipad which had many limitations).

recompiling mixxx with the touchscreen fix is quite easy if you use the latest beta version (2.3.) using cmake (not scons which is horrible)