Magenta is a research project exploring the role of machine learning in the process of creating art and music. Primarily this involves developing new deep learning and reinforcement learning algorithms for generating songs, images, drawings, and other materials. But it's also an exploration in building smart tools and interfaces that allow artists and musicians to extend (not replace!) their processes using these models. Magenta was started by some researchers and engineers from the Google Brain team, but many others have contributed significantly to the project. We use TensorFlow and release our models and tools in open source on this GitHub. If you’d like to learn more about Magenta, check out our blog, where we post technical details. You can also join our discussion group.
This is the home for our Python TensorFlow library. To use our models in the browser with TensorFlow.js, head to the Magenta.js repository.
Magenta maintains a pip package for easy installation. We recommend using Anaconda to install it, but it can work in any standard Python environment. We support both Python 2 (>= 2.7) and Python 3 (>= 3.5). These instructions will assume you are using Anaconda.
Note that if you want to enable GPU support, you should follow the GPU Installation instructions below.
If you are running Mac OS X or Ubuntu, you can try using our automated installation script. Just paste the following command into your terminal.
curl https://raw.githubusercontent.com/tensorflow/magenta/master/magenta/tools/magenta-install.sh > /tmp/magenta-install.sh
bash /tmp/magenta-install.sh
After the script completes, open a new terminal window so the environment variable changes take effect.
The Magenta libraries are now available for use within Python programs and Jupyter notebooks, and the Magenta scripts are installed in your path!
Note that you will need to run source activate magenta
to use Magenta every
time you open a new terminal window.
If the automated script fails for any reason, or you'd prefer to install by hand, do the following steps.
Install the Magenta pip package:
pip install magenta
NOTE: In order to install the rtmidi
package that we depend on, you may need to install headers for some sound libraries. On Linux, this command should install the necessary packages:
sudo apt-get install build-essential libasound2-dev libjack-dev
The Magenta libraries are now available for use within Python programs and Jupyter notebooks, and the Magenta scripts are installed in your path!
If you have a GPU installed and you want Magenta to use it, you will need to follow the Manual Install instructions, but with a few modifications.
First, make sure your system meets the requirements to run tensorflow with GPU support.
Next, follow the Manual Install instructions, but install the
magenta-gpu
package instead of the magenta
package:
pip install magenta-gpu
The only difference between the two packages is that magenta-gpu
depends on
tensorflow-gpu
instead of tensorflow
.
Magenta should now have access to your GPU.
Another way to try out Magenta is to use our Docker container. First, install Docker. Next, run this command:
docker run -it -p 6006:6006 -v /tmp/magenta:/magenta-data tensorflow/magenta
This will start a shell in a directory with all Magenta components compiled, installed, and ready to run. It will also map port 6006 of the host machine to the container so you can view TensorBoard servers that run within the container.
This also maps the directory /tmp/magenta
on the host machine to
/magenta-data
within the Docker session. Windows users can change
/tmp/magenta
to a path such as C:/magenta
, and Mac and Linux users
can use a path relative to their home folder such as ~/magenta
.
WARNING: only data saved in /magenta-data
will persist across Docker
sessions.
The Docker image also includes several pre-trained models in
/magenta/models
. For example, to generate some MIDI files using the
Lookback Melody RNN, run this command:
melody_rnn_generate \
--config=lookback_rnn \
--bundle_file=/magenta-models/lookback_rnn.mag \
--output_dir=/magenta-data/lookback_rnn/generated \
--num_outputs=10 \
--num_steps=128 \
--primer_melody="[60]"
NOTE: Verify that the --output_dir
path matches the path you
mapped as your shared folder when running the docker run
command. This
example command presupposes that you are using /magenta-data
as your
shared folder from the example docker run
command above.
One downside to the Docker container is that it is isolated from the host. If you want to listen to a generated MIDI file, you'll need to copy it to the host machine. Similarly, because our MIDI instrument interface requires access to the host MIDI port, it will not work within the Docker container. You'll need to use the full Development Environment.
You may find at some point after installation that we have released a new version of Magenta and your Docker image is out of date. To update the image to the latest version, run:
docker pull tensorflow/magenta
NOTE: Our Docker image is also available at gcr.io/tensorflow/magenta
.
You can now train our various models and use them to generate music, audio, and images. You can find instructions for each of the models by exploring the models directory.
To get started, create your own melodies with TensorFlow using one of the various configurations of our Melody RNN model; a recurrent neural network for predicting melodies.
After you've trained one of the models above, you can use our MIDI interface to play with it interactively.
We also have created several demos that provide a UI for this interface, making it easier to use (e.g., the browser-based AI Jam).
If you want to develop on Magenta, you'll need to set up the full Development Environment.
First, clone this repository:
git clone https://github.com/tensorflow/magenta.git
Next, install the dependencies by changing to the base directory and executing the setup command:
python setup.py develop
You can now edit the files and run scripts by calling Python as usual. For example, this is how you would run the melody_rnn_generate
script from the base directory:
python magenta/models/melody_rnn/melody_rnn_generate --config=...
You can also install the (potentially modified) package with:
python setup.py install
Before creating a pull request, please also test your changes with:
python setup.py test
To build a new version for pip, bump the version and then run:
python setup.py test
python setup.py bdist_wheel --universal
python setup.py bdist_wheel --universal --gpu
twine upload dist/magenta-N.N.N-py2.py3-none-any.whl
twine upload dist/magenta_gpu-N.N.N-py2.py3-none-any.whl