music-inpainting-ts
A collection of web interfaces for AI-assisted interactive music creation
Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.2%) to scientific vocabulary
Keywords
Repository
A collection of web interfaces for AI-assisted interactive music creation
Basic Info
- Host: GitHub
- Owner: SonyCSLParis
- License: gpl-3.0
- Language: TypeScript
- Default Branch: main
- Homepage: https://SonyCSLParis.github.io/music-inpainting-ts/
- Size: 9.48 MB
Statistics
- Stars: 132
- Watchers: 9
- Forks: 17
- Open Issues: 12
- Releases: 3
Topics
Metadata Files
README.md
Interactive Music Inpainting for the Web
| PIANOTO | NOTONO | NONOTO |
| :-----: | :----: | :----: |
|
|
|
|
|Expressive piano performances creation|Time-frequency inpainting of instrument spectrograms|Inpainting of music sheet (with Ableton-Link support)|
This repository holds the source code for the web-based, AI-assisted interactive music creation apps developed by Théis Bazin at Sony CSL Paris. These apps are all based on inpainting, that is, the use of AI-models to transform images, sounds or sheets in a local fashion: just tell the model which zones of the media you'd like to transform (because you don't like it or because you'd like to see a variation of it!) and it will regenerate it for you. Thanks to the intuitive interactions offered by inpainting, these apps remove the need for cumbersome micro-level edits and work nicely on mobile as well!
:warning: BYOB (Bring Your Own Backend)
Note that the music-inpainting.ts interfaces each require connection to an AI model for inference!
Don't panic though:
- :tada: We provide compatible models as Docker images (GPU recommended).
- :alembic: The apps are model-agnostic: try to use them in conjunction with your own models!
PIANOTO
PIANOTO helps you be the piano maestro that you deserve to be!
It is an A.I.-powered interactive MIDI piano roll, for mobile and desktop. Swipe on the musical representation to regenerate zones, always staying coherent with the context.
https://user-images.githubusercontent.com/9104039/193406815-5adf940a-de74-4bb0-a151-6f3e32ea9b6a.mp4
NOTONO
NOTONO lets you use your visual brain to create instrument sounds.
Your guitar sample is lacking some depth? Paint some subs from an organ into it! Generate new sounds from scratch or drag-and-drop sounds of your choice into NOTONO to edit them.
https://user-images.githubusercontent.com/9104039/193407123-0c03942c-be44-435f-b9c1-633d1a6d5473.mp4
NONOTO
NONOTO is an interactive interface for symbolic sheet music generation and transformation by inpainting. Along with the DeepBach model by Gaëtan Hadjeres, NONOTO lets you generate 4-part chorale-like music in the style of J.S. Bach. Synchronize the app with Ableton Live via the included Ableton Link support and route the output via MIDI to get a smart, melodic and harmonic 4-channel sequencer. Get creative with the chorales by routing the different voices to custom synthesizers!
Here is a demo video of using NONOTO in sync with Ableton Live via Ableton-Link.
https://user-images.githubusercontent.com/9104039/193407027-44cf7734-8df3-454f-9ac3-ae1cc95d180c.mp4
These apps can be used either as standard web applications or as a packaged Electron app (which brings a few perks such as native drag-out or the support for Ableton-Link). They all share the same audio engine, based on the Web Audio API through Yotam Mann's Tone.js. They all support MIDI In and Out for interoperability with external software or hardware, via Jean-Philippe Côté's webmidi.js helper library over the Web MIDI API.
Usage
You can access the interfaces here!
Packaged Electron applications (Desktop)
You can download MacOS and Linux standalone applications here.
Manual installation
We recommended using the nvm installation manager for Node.js, available
here.
The music-inpainting.ts apps are currently developed with node v18.5.0 and npm v8.15.0.
We use the standard npm package manager.
The apps can be installed as follows:
shell
git clone https://github.com/SonyCSLParis/music-inpainting-ts.git
cd music-inpainting-ts
npm install
Once this is done, the music-inpainting.ts Electron app (with live-reloading enabled for hacking) can be started with:
shell
npm start
Running the models locally
We strongly recommend running these images on a machine equipped with an NVIDIA CUDA-compatible GPU.
|Application|Model|Docker image|
|-----------|----|-----|
|PIANOTO|PIAv3|public.ecr.aws/csl-music-team/piano_inpainting_app:v3|
|NOTONO|NOTONO|public.ecr.aws/csl-music-team/notono:pytorch-1.11.0-cuda11.3-cudnn8-runtime
|NONOTO|DeepBach|public.ecr.aws/csl-music-team/deepbach:latest
Sample commands (with recommended arguments and parameters)
Reminders
- The
docker run-pparameter takes a pair of ports of the formCONTAINER_PORT:LOCALHOST_PORT. - You might need to run the following commands as root depending on your installation of Docker.
The following commands start an inference server with access to the GPU with index 0 and listening on port 5005 (adapt to your own convenience).
Choose the appropriate model, run the command and leave the server running in the background. Then launch the music-inpainting.ts interface as described above, set the Inpainting API address input field to http://localhost:5005 and select the appropriate mode, that's it!
PIAv3
shell
docker run -p 5000:5005 --rm --gpus 0 public.ecr.aws/csl-music-team/piano_inpainting_app:v3 serve
⚠️ Note the (required) additional serve command!
NOTONO (the model)
shell
docker run -p 8000:5005 --rm --gpus 0 public.ecr.aws/csl-music-team/notono:pytorch-1.11.0-cuda11.3-cudnn8-runtime
DeepBach
shell
docker run -p 5000:5005 --rm --gpus 0 public.ecr.aws/csl-music-team/deepbach:latest --num_iterations_per_quarter=25 --num_iterations_per_quarter_initial_generate=10
Credits
Some icons used were made by Freepik from [www.flaticon.com].
Acknowledgements
We thank EPITECH students Martin Leblancs, Matthieu Queru and Sandro Sgro for their help on a preliminary version of PIANOTO during a development project at Sony CSL Paris.
This work was supported by the French ANRT through the CIFRE Industrial PhD grant Nr. 2019/0472.
Owner
- Name: Sony CSL Paris
- Login: SonyCSLParis
- Kind: organization
- Location: Paris
- Website: https://csl.sony.fr/
- Repositories: 19
- Profile: https://github.com/SonyCSLParis
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Bazin"
given-names: "Théis"
orcid: "https://orcid.org/0000-0002-6263-4020"
- family-names: "Hadjeres"
given-names: "Gaëtan"
orcid: "https://orcid.org/0000-0003-1462-6103"
title: "SonyCSLParis/music-inpainting.ts"
version: 1.4.6
doi: 10.5281/zenodo.7263101
date-released: 2022-10-29
url: "https://github.com/SonyCSLParis/music-inpainting-ts"
GitHub Events
Total
- Watch event: 16
- Fork event: 1
Last Year
- Watch event: 16
- Fork event: 1
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 12
- Total pull requests: 53
- Average time to close issues: over 3 years
- Average time to close pull requests: 5 months
- Total issue authors: 1
- Total pull request authors: 3
- Average comments per issue: 0.17
- Average comments per pull request: 0.68
- Merged pull requests: 16
- Bot issues: 0
- Bot pull requests: 40
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- tbazin (12)
Pull Request Authors
- dependabot[bot] (40)
- tbazin (12)
- Ghadjeres (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v3 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/autobuild v2 composite
- github/codeql-action/init v2 composite
- actions/checkout v3 composite
- actions/configure-pages v2 composite
- actions/deploy-pages v1 composite
- actions/setup-node v3 composite
- actions/upload-pages-artifact v1 composite
- 688 dependencies
- @types/deep-equal ^1.0.1 development
- @types/fs-extra ^9.0.13 development
- @types/jquery ^3.5.14 development
- @types/node ^18.0.3 development
- @typescript-eslint/eslint-plugin ^5.30.6 development
- @typescript-eslint/parser ^5.30.6 development
- cross-env ^7.0.3 development
- electron ^19.0.8 development
- electron-builder ^23.1.0 development
- eslint ^8.19.0 development
- eslint-config-prettier ^8.5.0 development
- eslint-import-resolver-typescript ^3.2.5 development
- eslint-plugin-import ^2.26.0 development
- eslint-plugin-node ^11.1.0 development
- eslint-plugin-prettier ^4.2.1 development
- http-server ^14.1.1 development
- node-gyp ^9.0.0 development
- prettier ^2.7.1 development
- sass ^1.53.0 development
- typescript ^4.7.4 development
- vite ^3.0.0 development
- @fortawesome/fontawesome-free ^6.1.1
- @tonaljs/tonal ^4.6.5
- @tonejs/midi ^2.0.28
- @tonejs/piano https://github.com/SonyCSLParis/TonePiano
- audiokeys https://github.com/SonyCSLParis/AudioKeys
- canvg ^4.0.0
- chart.js ^3.8.0
- deep-equal ^2.0.5
- events ^3.3.0
- fs-extra ^10.1.0
- idle-tracker ^0.1.2
- jquery ^3.6.0
- loglevel ^1.8.0
- nexusui https://github.com/SonyCSLParis/nexusui#types
- opensheetmusicdisplay ^1.5.0
- screenfull ^6.0.2
- shepherd.js ^10.0.0
- simplebar ^5.3.8
- socket.io ^4.5.1
- socket.io-client ^4.5.1
- tiny-typed-emitter ^2.1.0
- tone latest
- typed-undo ^2.4.0
- webmidi ^3.0.21
- wheelnav ^1.7.1
