Skip to content

GSOC 2025 Ideas

Daniel Schürmann edited this page Mar 2, 2025 · 11 revisions

Student Project Ideas for Google Summer of Code 2025

This page lists the suggested tasks to build a 90 hour (small sized) a 175 hour (medium sized) or 350 hour (large) project for Google Summer of Code 2025. The ideas are already assigned to example projects, but you are encouraged to use them for building your own project adding your own ideas and make it suit perfectly to you, your skills and your time line.

If you are interested in applying to GSoC, read GSoC Advice before applying or getting involved. Only beginner contributors that are active members of the Mixxx community are accepted. If this is not the case yet, just say hello at https://mixxx.zulipchat.com and discuss your Ideas and discus cases with us.

Adding an AI infrastructure with cross-platform hardware acceleration

Typical AI applications in the DJ environment (STEM separation, music analysis) require very high computing power. However, as the commercial DJ software DJay Pro demonstrates, it is possible to perform these on modern laptop hardware in real time with high audio quality. This is made possible by the use of the dedicated Neural Processing Unit (NPU) or powerful Graphical Processing Units (GPU). As cross-platform software, Mixxx must be able to do this on:

  • macOS (ARM M1/2 with Neural Engine NPU)
  • macOS (x64 with GPU only)
  • Linux with various NPU and GPU solutions from different manufacturers
  • Windows with various NPU and GPU solutions from different manufacturers

Today, there is only one AI framework that supports full hardware acceleration across all these platforms, which is ONNX Runtime (onnxruntime.ai). This project is about the integration of ONNX Runtime with ExecutionProviders for CPU (all operating systems), as well as at least one NPU or GPU acceleration solution into Mixxx. This project explicitly includes contributions to third-party projects, in particular to the package managers VCPKG and the Linux distribution Debian/Ubuntu, which Mixxx uses to integrate dependencies. A further aspect to handle is, that these libraries, as well as, the AI models itself are significiantly larger than the current dependencies that come with Mixxx. This requires the development of suitable solutions for the continuous code integration (CI) and for the distribution to the end users.

  • Expected Outcome: ONNX Runtime with ExecutionProviders for CPU (all operating systems), as well as at least one NPU or GPU acceleration solution builds within the Mixxx environment. All changes on third-party code is contributed upstream to the particuar projects.
  • Skills: Knowledge of CMake, C++. Basic experience with contributing packages to package managers/Linux distributions.
  • Possible Mentor: Jörg
  • Difficulty: Medium
  • Size: 350 h

Converting Demucs v4 (Hybrid Transformer) AI model to ONNX format

With Demucs v4 https://github.com/adefossez/demucs, there is a high quality stem separation model available as OpenSource. But, this is a PyTorch model that cannot be used in a C++ project with support for any kind of acceleration hardware. To allow this, the model needs to be converted to the ONNX format to run in ONNX Runtime. This conversion is not trivial, as the DSP functions required for most audio applications are not equivalent in PyTorch and ONNX. In particular, the short-time Fourier transformations STFT/ISTFT must be remodeled in ONNX to enable the automatic ONNX export of PyTorch. It must be demonstrated that the exported ONNX model produces equivalent results as the original PyTorch model. Therefore a minimal C/C++ command line program supporting MP3 files and embedding ONNX Runtime and the exported model should be created.

  • Expected Outcome: The model runs in ONNX Runtime and generates similar results as the original
  • Skills: Basic knowledge of C/C++. Sound experience with the creation of AI models - preferably in ONNX.
  • Possible Mentor: Jörg
  • Difficulty: Difficult
  • Size: 175 h

AI music analyzer to detect Beats, Downbeats, Phrases

While Mixxx has a solid analyzer for beat/tempo detection, it is traditionally DSP-based, while the state of the art has moved to a hybrid approach of AI models that include some DSP routines for data pre-processing. Commercial DJ software with such AI music analyzers (DJay Pro, DJ Studio) demonstrates virtually always perfect beat recognition in DJ Medien's tests, even on challenging tracks with a variety of tempo changes. There are OpenSource music analyzer models available, nanmely https://github.com/JoergAtGithub/all-in-one (https://huggingface.co/spaces/taejunkim/all-in-one / https://taejun.kim/music-dissector/0427_justthewayyouare). While a science project with impressive results, this is a PyTorch model that cannot be used in a C++ project with support for any kind of acceleration hardware (it's based on the Demucs HT model above), also here an ONNX model is needed. This project is about building an infrastructure that allows Mixxx developers to optimize the analyzer, check the correctness of the results and generate production-ready ONNX models for the Mixxx DJ software in an automated workflow. In particular, the process when a user reports a track with incorrectly detected beats/downbeats/phrase-length/phrase-type and we need to optimize the model needs to be implemented. The main focus of this process is to ensure that the optimization for one track does not lead to worse recognition for other tracks.

  • Skills: Knowledge of C/C++. Sound experience with the creation of AI models - preferably in ONNX.
  • Possible Mentor: Daniel Schürmann
  • Difficulty: Difficult
  • Size: 175 h

AI driven STEMS seperator

Currently creation of stem files files is a manual process in preparation of a DJ set. Many DJs can't effort the time and the storage space for extracting stem files. In this project a temporary stem file shall be created on demand from the Mixxx GUI. Part of the project shall be evaluation of already published algorithms. Integration of one of them into the Mixxx analyzer and handling of the caching an the required GUI for this feature.

  • Expected Outcome: Playing and remixing of stem files
  • Skills: Good understanding of sound processing, C++
  • Possible Mentor: ?
  • Difficulty: Medium
  • Size: 175 h

Using The Harmonix Set to automatically evalute the output of our music analyzers

The Harmonix Set https://github.com/urinieto/harmonixset repository contains human annotated labels for 912 Western Pop music tracks. This is a great base to benchmark current and future music analyzers in Mixxx. This project is about the automatic execution of the Mixxx Analyzer in a local development environment using all tracks of the Harmonix Set, that are available on the developer's local hard disk and generate a report that visualizes the deviations.

  • Expected Outcome: A lightweight tool or script that can be executed out-of-the-box on Windows, macOS and Linux.
  • Skills: Experience C++ and a common scripting environment like Python
  • Music files: The Mixxx project cannot provide the music files, so the students must have a larger number of the music files listed in The Harmonix Set available themselves.
  • Possible Mentor: Jörg
  • Difficulty: Easy
  • Size: 175 h

Streamline Search-possibilities.

To give users to use their track collection optimal, they need all kinds of search possibilities. At the moment Mixxx has a lineEdit (with memory to recall previous searches) which converts the input to a sql-query. In the library and in the players users can find 'related' tracks, based on similar artist, bpm, key. We have some on-going projects (like SearchCrates and a popup FastSearch) to extend the search-engine and we started a survey to get a picture of our users concrete wishes. This project consists in:

  • streamlining all search-possibilities,
  • making combinations between the different possibilities concrete
  • creating features to help users without database background to create a complex search
  • fine tuning and optimizing searches in speed and result
  • possibility to create a keywords-table to speedup searches
  • Expected Outcome: An integrated search engine that combines all possibilities to search and store the results in a user-friendly way, according to the results of the user survey.
  • Skills: Logic in SQL, affinity with music, notions of DJ-ing, C++, lots of enthusiasm.
  • Possible Mentor: Evelynne
  • Difficulty: Medium
  • Size: 175 h (or more depending on the project proposal)

Sharp Scratching

Currently crossfader changes are stretched on audio buffer time to avoid pop sounds. This is too long for some scratching styles. During this project you need to dive into the audio engine code find the code that is responsible for crossfading and make it independent from the audio buffer size.

https://github.com/mixxxdj/mixxx/issues/8899 https://github.com/mixxxdj/mixxx/issues/11253

  • Expected Outcome: Cut type crossfader curve, suitable for scratching.
  • Skills: Good understanding of sound processing, C++
  • Possible Mentor: Daniel Schürmann
  • Difficulty: Medium
  • Size: 175 h

Auto completion for the Genre track metadata

Mixxx allows to assign a Genre to a track. This is currently a free text field that allows different spellings for the same Genre like Hiphop, Hip-Hop or Hip Hop. If you use all of these, you will not see all tracks when filtering. This project shall fix it, by auto-complete the Genre when entering, to genres that are already used for other tracks in the library. It shall be also allowed to add additional Genres to a track. This project can be extended by implementing a Tree of Genres for lookup and by auto suggesting a Genre from Discogs or MusicBrainz. https://musicbrainz.org/genres

  • Expected Outcome: A new auto completer for the Genre edit box
  • Skills: Basic SQLite, Basic C++
  • Possible Mentor: Daniel Schürmann
  • Difficulty: Easy
  • Size: 90 h

Resample options

Mixxx uses a linear resample when scratching. This is blazing fast, but the sound can be improved. Here Mixxx should provide more resample options. This project involves to review the already used resample libraries RubberBand and Soundtouch and compare them with other candidates. The one with the best Sound/CPU load trade of shall be selected. Make sure that it supports on the fly changing of the sample rate without artefacts. This project may also involve to contribute a missing feature to such library.

https://github.com/mixxxdj/mixxx/issues/9328

  • Expected Outcome: Optional replacement of the linear resampler.
  • Skills: Good understanding of sound processing, C++
  • Possible Mentor: Daniel Schürmann
  • Difficulty: Easy
  • Size: 175 h

Something Else!

As always with Summer of Code, you aren't limited to the suggestions we've made here. If you've got a great idea for a project involving Mixxx then we're looking forward to hearing about it. We recommend spending more than a few days using Mixxx and participating in the community to develop a better understanding of areas where Mixxx could use improvement. Our issue tracker is full of feature requests and other ideas scattered throughout, so if you browse through it, you may find many more ideas for GSoC projects.

IMPORTANT: You should contact us first to get feedback if you're going to submit a proposal for your own project idea! We very rarely approve ideas students propose. If you're not already experienced with DJ equipment, we recommend sticking with one of the ideas above.

Clone this wiki locally