Skip to content

Codes and MIDI demos for paper: Zhao et al., AccoMontage: Accompaniment Arrangement via Phrase Selection and Style Transfer, ISMIR 2021

License

Notifications You must be signed in to change notification settings

hechang25/AccoMontage

 
 

Repository files navigation

AccoMontage

Introduction

AccoMontage is an accompaniment arrangement system. It introduces a novel hybrid pathway, in which rule-based optimization and deep learning are both leveraged to complement each other for high-quality generation. Our paper AccoMontage: Accompaniment Arrangement via Phrase Selection and Style Transfer is accepted by ISMIR 2021. This repository stores codes and demos of our work.

Data and Weights Download

Data and weights required to reproduce our work can be downloaded here. The files should be put to ./data files.

For the sake of fast accompaniment arrangement, our model does not run the deep learning inference evrey time, but loads pre-inferenced transition matrix. This pre-inferenced file currently supports transition among 4, 6, and 8-bar phrases. ./util_tools/edge_weights_inference.py can be used to compute transition matrix for other situations.

Run

To inference with AccoMontage and generate for your own music, run AccoMontage_inference.py. Line 44~57 should be configured by yourself. Concretely, your should specify:

  • Required:
    • SONG_NAME & SONG_ROOT -- directory to a MIDI lead sheet file. This MIDI file should consists of two tracks, each containing melody (monophonic) and chord (polyphonic). Now complex chords (9th, 11th, and more) is supported.
    • SEGMENTATION -- phrase annotation (string) of the MIDI file. For example, for an AABB song with 8 bars for each phrase, the annotation should be in the format 'A8A8B8B8\n'. Note that by default we only support the transition among 4-bar, 6-bar, and 8-bar phrases
    • NOTE_SHIFT -- The number of upbeats in the pickup bar (can be float). If no upbeat, specify 0.
  • Optional:
    • SPOTLIGHT -- a list of names of your prefered reference songs. See all 860 supported reference songs (Chinese POP) at ./data files/POP909 4bin quntization/four_beat_song_index.
    • PREFILTER -- a tuple (a, b) controlling rhythmic patters. a, b can be integers in [0, 4], each controlling horrizontal rhythmic density and vertical voice number. Ther higher number, the denser rhythms.

Demos

Generated demos are listed in ./demo/demo generate upload. The original query lead sheets are listed in ./demo/demo lead sheets. AccoMontage is applied as the backbones to rearrange the Alma Mater Music of East China Normal University (ECNU). Performance demos can be accessed here.

New Feature: Reference Spotlight

This new feature allows you to specify which reference song(s) (from POP909) you would like to use and apply its/their texture to the query lead sheet.

Acknowledgement

Thanks to Prof. Gus Xia, Yixiao Zhang, Liwei Lin, Junyan Jiang, Ziyu Wang, and Shuqi Dai for your generous help to this work. Thanks to all my friends at NYUSH Music X Lab for your encouragement and companion. The following repositories are referred to by this work:

Reference

If you find this code useful, please consider citing:

@inproceedings{zhao2021accomontage,
  author    = {Jingwei Zhao and Gus Xia},
  title     = {AccoMontage: Accompaniment Arrangement via Phrase Selection and Style Transfer},
  booktitle = {Proceedings of the 22nd International Society for Music Information Retrieval Conference, {ISMIR} 2021, Online, November 7-12, 2021},
  pages     = {833--840},
  year      = {2021},
  url       = {https://archives.ismir.net/ismir2021/paper/000104.pdf}
}

For inquries about our work, feel free to contact me at jz4807@nyu.edu.

Jingwei Zhao (Ph.D. Student in Data Science, NUS Graduate School)

Jan. 08, 2022

About

Codes and MIDI demos for paper: Zhao et al., AccoMontage: Accompaniment Arrangement via Phrase Selection and Style Transfer, ISMIR 2021

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%