Sync Toolbox

Sync Toolbox: A Python Package for Efficient, Robust, and Accurate Music Synchronization - Published in JOSS (2021)

https://github.com/meinardmueller/synctoolbox

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

chromagram dtw music onset python synchronization

Scientific Fields

Mathematics Computer Science - 84% confidence
Last synced: 4 months ago · JSON representation

Repository

Sync Toolbox - Python package with reference implementations for efficient, robust, and accurate music synchronization based on dynamic time warping (DTW)

Basic Info
Statistics
  • Stars: 128
  • Watchers: 7
  • Forks: 14
  • Open Issues: 1
  • Releases: 6
Topics
chromagram dtw music onset python synchronization
Created over 4 years ago · Last pushed 10 months ago
Metadata Files
Readme

README.md

Python Package using Conda Python package

Sync Toolbox

This repository contains a Python package called Sync Toolbox, which provides open-source reference implementations for full-fledged music synchronization pipelines and yields state-of-the-art alignment results for a wide range of Western music.

Using suitable feature representations and cost measures, the toolbox's core technology is based on dynamic time warping (DTW), which brings the feature sequences into temporal correspondence. To account for efficiency, robustness and, accuracy, our toolbox integrates and combines techniques such as multiscale DTW (MsDTW), memory-restricted MsDTW (MrMsDTW), and high-resolution music synchronization.

If you use the Sync Toolbox in your research, please consider the following references.

References

Meinard Müller, Yigitcan Özer, Michael Krause, Thomas Prätzlich, and Jonathan Driedger. Sync Toolbox: A Python Package for Efficient, Robust, and Accurate Music Synchronization. Journal of Open Source Software (JOSS), 6(64), 2021.

Meinard Müller, Henning Mattes, and Frank Kurth. An Efficient Multiscale Approach to Audio Synchronization. In Proceedings of the International Society for Music Information Retrieval Conference (ISMIR): 192–197, 2006.

Sebastian Ewert, Meinard Müller, and Peter Grosche. High Resolution Audio Synchronization Using Chroma Onset Features. In Proceedings of IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP): 1869–1872, 2009.

Thomas Prätzlich, Jonathan Driedger, and Meinard Müller Memory-Restricted Multiscale Dynamic Time Warping. In Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP): 569–573, 2016.

Installing

If you just want to try our example notebooks, you can run them using Binder directly in your browser: Binder

To install the Sync Toolbox locally, you can use the Python package manager pip:

pip install synctoolbox

We recommend to do this inside a conda or virtual environment (requiring at least Python 3.7). As an alternative, you may also create the environment synctoolbox as provided by the file environment.yml (which includes the synctoolbox package as well as the jupyter package to run the demo files):

conda env create -f environment.yml

Note: On some systems, you may see errors related with soundfile when calling some functions or executing our example notebooks. soundfile is a dependency of librosa, which is used by the Sync Toolbox. In case of errors, you may have to install libsndfile using your package manager, e.g., sudo apt install libsndfile1. Alternatively, you may create a conda environment, install librosa using conda and then install the Sync Toolbox with the pip command from above. See here for further information if you are experiencing these issues.

If you want to run the example notebooks locally, you must first install the Sync Toolbox to resolve all dependencies. Then, you can clone this repository using

git clone https://github.com/meinardmueller/synctoolbox.git install Jupyter using

pip install jupyter

and then start the notebook server via

jupyter notebook

Finally, HTML exports of the example notebooks are provided under "Releases".

Usage

Fully worked examples for using the sync toolbox are provided in the accompanying Jupyter notebooks. In sync_audio_audio_simple.ipynb, we show how to use the toolbox to synchronize two recordings of the same piece of music using standard chroma features. We also compare runtimes for standard DTW and MrMsDTW. In sync_audio_audio_full.ipynb, we expand this example and demonstrate how to build a full synchronization pipeline that yields state-of-the-art results. Finally, sync_audio_score_full.ipynb shows a similar pipeline for synchronizing a music recording with the corresponding score.

There is also an API documentation for the Sync Toolbox:

https://meinardmueller.github.io/synctoolbox

Contributing

We are happy for suggestions and contributions. We would be grateful for either directly contacting us via email (meinard.mueller@audiolabs-erlangen.de) or for creating an issue in our Github repository. Please do not submit a pull request without prior consultation with us.

Tests

We provide automated tests for each feature and different variants of MrMsDTW. These ensure that the outputs match the ground truth matrices provided in the tests/data folder.

To execute the test script, you will need to install extra requirements for testing:

pip install 'synctoolbox[tests]' pytest tests

Licence

The code for this toolbox is published under an MIT licence. This does not apply to the data files. Schubert songs are taken from the Schubert Winterreise Dataset. The Chopin prelude example files are taken from the FMP notebooks.

Acknowledgements

The synctoolbox package builds on results, material, and insights that have been obtained in close collaboration with different people. We would like to express our gratitude to former and current students, collaborators, and colleagues who have influenced and supported us in creating this package, including Vlora Arifi-Müller, Michael Clausen, Sebastian Ewert, Christian Fremerey, and Frank Kurth. The main authors of Sync Toolbox are associated with the International Audio Laboratories Erlangen, which are a joint institution of the Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU) and Fraunhofer Institute for Integrated Circuits IIS. We also thank the German Research Foundation (DFG) for various research grants that allowed us for conducting fundamental research in music processing (in particular, MU 2686/7-2, DFG-MU 2686/14-1).

Owner

  • Name: Meinard Mueller
  • Login: meinardmueller
  • Kind: user
  • Location: Erlangen, Germany
  • Company: International Audio Laboratories Erlangen

JOSS Publication

Sync Toolbox: A Python Package for Efficient, Robust, and Accurate Music Synchronization
Published
August 27, 2021
Volume 6, Issue 64, Page 3434
Authors
Meinard Müller ORCID
International Audio Laboratories Erlangen
Yigitcan Özer ORCID
International Audio Laboratories Erlangen
Michael Krause ORCID
International Audio Laboratories Erlangen
Thomas Prätzlich
International Audio Laboratories Erlangen
Jonathan Driedger
International Audio Laboratories Erlangen
Editor
Fabian-Robert Stöter ORCID
Tags
Music information retrieval Music synchronization

GitHub Events

Total
  • Issues event: 3
  • Watch event: 16
  • Issue comment event: 1
  • Push event: 6
  • Pull request event: 2
  • Fork event: 4
  • Create event: 1
Last Year
  • Issues event: 3
  • Watch event: 16
  • Issue comment event: 1
  • Push event: 6
  • Pull request event: 2
  • Fork event: 4
  • Create event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 127
  • Total Committers: 3
  • Avg Commits per committer: 42.333
  • Development Distribution Score (DDS): 0.197
Past Year
  • Commits: 7
  • Committers: 1
  • Avg Commits per committer: 7.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Yigitcan Oezer y****r@a****e 102
Michael Krause m****e@a****e 20
Meinard Mueller 4****r 5
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 16
  • Total pull requests: 18
  • Average time to close issues: 3 months
  • Average time to close pull requests: about 8 hours
  • Total issue authors: 11
  • Total pull request authors: 5
  • Average comments per issue: 3.25
  • Average comments per pull request: 0.28
  • Merged pull requests: 15
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 2
  • Pull requests: 1
  • Average time to close issues: 3 months
  • Average time to close pull requests: 3 minutes
  • Issue authors: 2
  • Pull request authors: 1
  • Average comments per issue: 0.5
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • faroit (4)
  • magdalenafuentes (3)
  • suncerock (1)
  • platers (1)
  • xavriley (1)
  • johentsch (1)
  • ahnonay (1)
  • yiitozer (1)
  • mcosti (1)
  • ytinyui (1)
  • xistva02 (1)
Pull Request Authors
  • yiitozer (14)
  • danielskatz (2)
  • arfon (1)
  • ahnonay (1)
  • mcosti (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 175 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 2
  • Total versions: 10
  • Total maintainers: 2
pypi.org: synctoolbox

Python Package for Efficient, Robust, and Accurate Music Synchronization (Sync Toolbox)

  • Versions: 10
  • Dependent Packages: 0
  • Dependent Repositories: 2
  • Downloads: 175 Last month
Rankings
Stargazers count: 7.6%
Dependent packages count: 10.0%
Forks count: 10.5%
Dependent repos count: 11.6%
Average: 12.1%
Downloads: 20.8%
Maintainers (2)
Last synced: 4 months ago

Dependencies

.github/workflows/test_conda.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/test_pip.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
environment.yml pypi
  • synctoolbox ==1.2.
pyproject.toml pypi
  • libfmp >= 1.2.0, < 2.0.0
  • librosa >= 0.8.0, < 1.0.0
  • matplotlib >= 3.1.0, < 4.0.0
  • music21 >= 5.7.0, < 6.0.0
  • numba >= 0.58.1, < 0.60.0
  • numpy >= 1.17.0, < 2.0.0
  • pandas >= 1.0.0, < 2.0.0
  • pretty_midi >= 0.2.0, < 1.0.0
  • scipy >= 1.7.0, < 2.0.0
  • soundfile >= 0.9.0, < 1.0.0