Hi, and welcome to this GitHub repository, which is the companion repository for the article "Automashup: Automatic Music Mashups Creation," published at the GRETSI 2025 conference. The paper is accessible here: https://hal.science/hal-05191030/document.
This repository contains two sub-repositories:
- "app - backend and frontend," that contains the AutoMashup core functions, including the Mashup creation process and the GUI webpage,
- "automatic song selection experiments" that contain the experiments related to the central part of the article, i.e., how to select pairs of songs that will be blended automatically.
This repository is a regrouping of two other repositories:
which were the practical repositories used for development.
Files containing the subselection of FMA used in the paper, along with all the mashups created for the purpose, and metadata from FMA can be found here: https://zenodo.org/records/16921593
Below are two examples of Mashups obtained from the FMA music archive. As you will see, the mashups are still far from being of professional audio quality. Future work will be dedicated to enhancing the audio quality, and notably using automatic mixing tools like automix-toolkit.
Bam.Bam.-.Hi-Q.mp4
The.Oranges.Band.-.Ride.the.Nuclear.Wave.mp4
Bam.Bam.-.Hi-Q_The.Oranges.Band.-.Ride.the.Nuclear.Wave.mp4
The.Oranges.Band.-.Ride.the.Nuclear.Wave_Bam.Bam.-.Hi-Q.mp4
So, many external packages essential for this project do not follow the recent releases. Hence, installation is becoming increasingly complex.
To ensure that there won't be a problem, you should definitely fix Python to 3.10, and follow these steps (I'm sorry for the inconvenience).
### Set up a virtualenv First, set up the virtual environment. You may use the tool that you prefer, but we used conda on our side, hence we recommend it.
conda create -n venv_name python=3.10
conda activate venv_nameNow, you should install the required dependencies:
pip install -r requirements.txtThis is one of the main problems. You should install natten so that it works with allin1. But allin1 was developed using old versions of natten, hence it is suited to work with precise versions.
So, you should use one precise version of natten, the following:
pip install natten==0.17.3+torch220cu121 -f https://shi-labs.com/natten/wheels### Installing automashup
Finally, you can install the package automashup:
pip install -e /path/to/automashup/files (often, it is just ".")The last mandatory step is to install rubberband-cli on your machine, using:
sudo apt-get install rubberband-cliFinally, for mp3 support, you have to install ffmpeg
sudo apt install ffmpegAutomashup comes with a GUI that you may launch using the following steps:
cd ./automashup/src
streamlit run app.py
Some tests were made using DMC for mixing, and should be pursued shortly. To install and test DMC on your own: https://github.com/csteinmetz1/automix-toolkit (clone + set up (modify sklearn --> scikit-learn in the setup.py) and test directly on your machine, don't forget to change the paths)
We have a Docker image of the automashup app; it's only been tested on Linux : https://hub.docker.com/r/gaubiche/automashup/
This interface aims to present multiple mashup techniques.
You can add some to the application by creating a mashup function in the file /src/mashup.py and then modifying the file src/app.py
If you want to experiment with new mashup methods, you can use the /automashup-notebook/notebook.ipynb file. It shows an example of a working mashup method.