{"id":15377777,"url":"https://github.com/cifkao/groove2groove","last_synced_at":"2026-03-07T18:01:30.824Z","repository":{"id":37630741,"uuid":"216637312","full_name":"cifkao/groove2groove","owner":"cifkao","description":"Code for \"Groove2Groove: One-Shot Music Style Transfer with Supervision from Synthetic Data\"","archived":false,"fork":false,"pushed_at":"2024-09-16T14:12:27.000Z","size":309,"stargazers_count":164,"open_issues_count":4,"forks_count":32,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-07T10:26:34.019Z","etag":null,"topics":["deep-learning","magenta","music-style-transfer","neural-network","paper","papers-with-code","style-transfer","tensorflow"],"latest_commit_sha":null,"homepage":"https://groove2groove.telecom-paris.fr","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cifkao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-21T18:25:23.000Z","updated_at":"2025-02-22T08:44:42.000Z","dependencies_parsed_at":"2024-10-30T08:24:16.458Z","dependency_job_id":null,"html_url":"https://github.com/cifkao/groove2groove","commit_stats":{"total_commits":144,"total_committers":2,"mean_commits":72.0,"dds":0.00694444444444442,"last_synced_commit":"fe016926e62973a66f0b49d697374effe0f9e627"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cifkao/groove2groove","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cifkao%2Fgroove2groove","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cifkao%2Fgroove2groove/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cifkao%2Fgroove2groove/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cifkao%2Fgroove2groove/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cifkao","download_url":"https://codeload.github.com/cifkao/groove2groove/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cifkao%2Fgroove2groove/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30225406,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T17:00:40.062Z","status":"ssl_error","status_checked_at":"2026-03-07T17:00:39.026Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","magenta","music-style-transfer","neural-network","paper","papers-with-code","style-transfer","tensorflow"],"created_at":"2024-10-01T14:13:46.321Z","updated_at":"2026-03-07T18:01:30.790Z","avatar_url":"https://github.com/cifkao.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Groove2Groove\n\nThis is the source code for the IEEE TASLP paper:\n\u003e Ondřej Cífka, Umut Şimşekli and Gaël Richard. \"Groove2Groove: One-Shot Music Style Transfer with Supervision from Synthetic Data.\" *IEEE/ACM Transactions on Audio, Speech, and Language Processing*, 28:2638–2650, 2020. doi: [10.1109/TASLP.2020.3019642](https://doi.org/10.1109/TASLP.2020.3019642).\n\nIf you use the code in your research, please reference the paper.\n\n### Links\n\n[:microscope: Paper postprint](https://hal.archives-ouvertes.fr/hal-02923548) [[pdf](https://hal.archives-ouvertes.fr/hal-02923548/document)]  \n[:musical_keyboard: Supplementary website](https://groove2groove.telecom-paris.fr/) with examples and a live demo  \n[:musical_note: Examples on YouTube](https://www.youtube.com/playlist?list=PLPdw6Kin7U86tcz-vlMmKqQmq4yL325aH)    \n[:file_folder: MIDI file dataset](https://doi.org/10.5281/zenodo.3957999), containing almost 3000 different styles  \n[:robot: Band-in-a-Box automation scripts](https://github.com/cifkao/pybiab) for generating the dataset  \n[:brain: Model parameters](https://groove2groove.telecom-paris.fr/data/checkpoints/) (to be extracted into [`experiments`](./experiments))\n\n\n## Looking around\n\n- [`code`](./code): the main codebase (a Python package called `groove2groove`)\n- [`data`](./data): scripts needed to prepare the datasets\n- [`experiments`](./experiments): experiment configuration files\n- [`experiments/eval`](./experiments/eval): evaluation code (see the [`eval.ipynb`](./experiments/eval/eval.ipynb) notebook)\n- [`api`](./api): an API server for the web demo\n\n## Installation\n\nClone the repository, then run the following commands.\n\n1. Install the dependencies using one of the following options:\n\n   -  Create a new environment using conda:\n      ```sh\n      conda env create -f environment.yml\n      ```\n      This will also install the correct versions of Python and the CUDA and CuDNN libraries.\n   \n   -  Using pip (a virtual environment is recommended):\n      ```sh\n      pip install -r requirements.txt\n      ```\n      You will need Python 3.6 because we use a version of TensorFlow which is not available from PyPI for more recent Python versions.\n\n   The code has been tested with TensorFlow 1.12, CUDA 9.0 and CuDNN 7.6.0. Other versions of TensorFlow (1.x) may work too.\n\n2. Install the package with:\n   ```sh\n   pip install './code[gpu]'\n   ```\n## Usage\n\nThe main entry point of the package is the `groove2groove.models.roll2seq_style_transfer` module, which takes care of training and running the model. Run `python -m groove2groove.models.roll2seq_style_transfer -h` to see the available command line arguments.\n\nThe `train` command runs the training:\n```sh\npython -m groove2groove.models.roll2seq_style_transfer --logdir $LOGDIR train\n```\nReplace `$LOGDIR` with the model directory, containing the `model.yaml` configuration file (e.g. one of the directories under [`experiments`](./experiments)).\n\nTo run a trained model on a single pair of MIDI files, use the `run-midi` command, e.g.:\n```sh\npython -m groove2groove.models.roll2seq_style_transfer --logdir $LOGDIR run-midi \\\n    --sample --softmax-temperature 0.6 \\\n    content.mid style.mid output.mid\n```\n\nTo run it on a whole pre-processed dataset (e.g. the one in [`data/bodhidharma`](./data/bodhidharma)), use the `run-test` command, e.g.:\n```sh\npython -m groove2groove.models.roll2seq_style_transfer --logdir $LOGDIR run-test \\\n    --sample --softmax-temperature 0.6 --batch-size 128 \\\n    content.db style.db keypairs.tsv output.db \n```\nHere, `keypairs.tsv` lists on each line a key from `content.db` and a key from `style.db` to use as inputs. Note that `content.db` and `style.db` may be the same file.\n\n## Acknowledgment\nThis work has received funding from the European Union’s Horizon 2020 research and innovation programme under the Marie Skłodowska-Curie grant agreement No. 765068.\n\n## Copyright notice\nCopyright 2019–2020 Ondřej Cífka of Télécom Paris, Institut Polytechnique de Paris.  \nAll rights reserved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcifkao%2Fgroove2groove","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcifkao%2Fgroove2groove","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcifkao%2Fgroove2groove/lists"}