Dance Dance Convolution is an automatic choreography system for Dance Dance Revolution (DDR), converting raw audio into playable dances.
This repository contains the code used to produce the dataset and results in the Dance Dance Convolution paper. You can find a live demo of our system here as well as an example video.
The Fraxtil
and In The Groove
datasets from the paper are amalgamations of three and two StepMania "packs" respectively. Instructions for downloading these packs and building the datasets can be found below.
We are in the process of reimplementing this code (under branch master_v2
), primarily to add on-the-fly feature extraction and remove the essentia dependency. However, you can get started with master
if you are eager to dance.
Please email me with any issues: cdonahue [@at@] ucsd (.dot.) edu
If you use this dataset in your research, cite via the following BibTex:
@inproceedings{donahue2017dance,
title={Dance Dance Convolution},
author={Donahue, Chris and Lipton, Zachary C and McAuley, Julian},
booktitle={Proceedings of the 34th International Conference on Machine Learning},
year={2017},
}
dataset/
: code to generate the dataset from StepMania filesinfer/
: code to run demo locallylearn/
: code to train step placement (onset) and selection (sym) modelsscripts/
: shell scripts to build the dataset (smd_*
) and train (sml_*
)The demo (unfortunately) requires tensorflow 0.12.1 and essentia. virtualenv
recommended
./ddc_server.sh
python ddc_client.py $ARTIST_NAME $SONG_TITLE $FILEPATH
data
under ~/ddc
(or change scripts/var.sh
to point to a different directory)data
, make directories raw
, json_raw
and json_filt
data/raw
, make directories fraxtil
and itg
data/raw/fraxil
, download and unzip:
data/raw/itg
, download and unzip:
scripts/
.sm
files to JSON: ./all.sh ./smd_1_extract.sh
./all.sh ./smd_2_filter.sh
./all.sh ./smd_3_dataset.sh
./smd_4_analyze.sh fraxtil
scripts/
./all.sh ./sml_onset_0_extract.sh
.pkl
files (this may take a while): ./all.sh ./sml_onset_1_chart.sh
./sml_onset_2_train.sh fraxtil
./sml_sym_2_train.sh fraxtil
./sml_sym_2_mark.sh fraxtil 5