music-inpainting-ts

A collection of web interfaces for AI-assisted interactive music creation

https://github.com/sonycslparis/music-inpainting-ts

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

ai electron interactive music typescript
Last synced: 6 months ago · JSON representation ·

Repository

A collection of web interfaces for AI-assisted interactive music creation

Basic Info
Statistics
  • Stars: 132
  • Watchers: 9
  • Forks: 17
  • Open Issues: 12
  • Releases: 3
Topics
ai electron interactive music typescript
Created over 7 years ago · Last pushed about 3 years ago
Metadata Files
Readme License Citation

README.md

Pianoto-logo

DOI

Interactive Music Inpainting for the Web

| PIANOTO | NOTONO | NONOTO | | :-----: | :----: | :----: | | A screenshot of the PIANOTO interface | A screenshot of the NOTONO interface | A screenshot of the NONOTO interface | |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 -p parameter takes a pair of ports of the form CONTAINER_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

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
enhancement (9) ux (5) bug (4) nonoto (4) pianoto (3) ui (3)
Pull Request Labels
dependencies (40)

Dependencies

.github/workflows/codeql-analysis.yml actions
  • actions/checkout v3 composite
  • github/codeql-action/analyze v2 composite
  • github/codeql-action/autobuild v2 composite
  • github/codeql-action/init v2 composite
.github/workflows/node-deploy-to-github-pages.yml actions
  • 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
package-lock.json npm
  • 688 dependencies
package.json npm
  • @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