This repository contains the code for "A Computational Analysis of Real-World DJ Mixes using Mix-To-Track Subsequence Alignment" Proceedings of the 21st International Society for Music Information Retrieval Conference (ISMIR), 2020. Taejun Kim, Minsuk Choi, Evan Sacks, Yi-Hsuan Yang, and Juhan Nam
This repository contains the code for:
- Mix-to-track subsequence alignment
- Mix segmentation
- Subsequence DTW visualization
- BPM change analysis
We are going to use the awesome mix below by Palms Trax since it is the author's recent favorite mix.
data/meta/tracklist.csv
contains the tracklist of the mix which is manually collected by the author from YouTube comments.
The figure below is the visualization of the subsequence mix-to-track alignment for Palms Trax's mix.
NOTE: This repo is written and tested on Python
3.8.5
.
You can install required Python packages using the code below:
pip install -r requirements.txt
pip install madmom==0.16.1 # madmom should be installed after installing cython
python script/download.py
The scripts should be run in order below:
python script/feature_extraction.py
extracts features and saves them undercache/
using disk-caching of joblib.python script/alignment.py
performs mix-to-track subsequence DTW and saves the alignment results.python script/segmentation.py
evaluates mix segmentation performances and saves the segmentation results.python script/dtw_visualization.py
(optional) saves DTW visualizations for all mixes underdata/dtwviz/
, but the repo already contains the visualizations.
NOTE: The scripts above should be run before since the analysis notes require the results of the scripts.
note/mix_segmentation.ipynb
analyzes the segmentation results.note/bpm_change.ipynb
analyzes the tempo adjustment.