Skip to content

Music generation via Next-Token Prediction Transformer. A slightly modified implementation of https://github.com/chathasphere/pno-ai

License

Notifications You must be signed in to change notification settings

BShennette/Pno-ai

Repository files navigation

About:

A modified implementation of Pno-Ai's version of Google Magenta's Music Transformer in Python/Pytorch. This library is designed to train a neural network on Piano MIDI data to generate musical samples. MIDIs are encoded into "Event Sequences", a dense array of musical instructions (note on, note off, dynamic change, time shift) encoded as numerical tokens. A custom transformer model learns to predict instructions on training sequences, and in generate.py a trained model can randomly sample from its learned distribution. (It is recommended to 'prime' the model's internal state with a MIDI input.)

Training Data:

The initial dataset comes from several years of recordings from the International Piano-e-Competition: over 1,000 performances played by professional pianists on a Yamaha Disklavier. Obtainable here. A sufficiently large dataset (order of 50 MB) of piano MIDIs should be sufficient to train a model.

Deploying Model:

Navigate to the unzipped folder and create the environment

conda env create -f environment.yml

conda activate pno-ai

Move files into the data folder for training. Create the folder if it doesn't already exist.

Train a model with

python run.py

Find a model in the saved_models directory, copy its name

Generate new samples with

python generate.py --model <model name>

  • Additional parameters:

    --input_live : use a file primer.midi from the main directory when generating new samples

    --temps <float> : control the temperature value of the selection for token generation

    --n_trials <int> : control the number of samples produced

    --stuck_note_duration <float> : control when to end notes that do note come with a NOTE_OFF

About

Music generation via Next-Token Prediction Transformer. A slightly modified implementation of https://github.com/chathasphere/pno-ai

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages