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 cythonpython script/download.pyThe scripts should be run in order below:
python script/feature_extraction.pyextracts features and saves them undercache/using disk-caching of joblib.python script/alignment.pyperforms mix-to-track subsequence DTW and saves the alignment results.python script/segmentation.pyevaluates 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.ipynbanalyzes the segmentation results.note/bpm_change.ipynbanalyzes the tempo adjustment.

