33
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

TensorFlow製アート・音楽生成プロジェクト「magenta」で曲を作ってみる。

はじめに

magentaはGoogleBrainチームの作っているアート・音楽の生成プロジェクトです。
この記事では、magentaのGitHubレポジトリに書いてある内容をもとに曲を作ってみます。
なお、環境はMacです。

Docker を起動する

magentaはDockerイメージが上がってます。
下記のコマンドをterminalで叩くと、Dockerコンテナを起動することができます。

docker run -it -p 6006:6006 -v /tmp/magenta:/magenta-data tensorflow/magenta

Dockerを起動すると、Macの/tmp/magenta とDockerコンテナ内の/magenta-dataが同期され、ファイルのやり取りができるようになります。
なお、Dockerコンテナ内の/magenta-data配下のデータのみしか保存されないようです。

ちなみにDocker のインストールがまだの方は下記から。
Install Docker Engine

作曲してみる

上記のDockerコンテナにはすでに学習済みのモデルが入っています。

下記のコマンドをDocker上で叩くと、曲が生成されます。

bazel run //magenta/models/lookback_rnn:lookback_rnn_generate -- \
--bundle_file=/magenta-models/lookback_rnn.mag \
--output_dir=/magenta-data/lookback_rnn/generated \
--num_outputs=10 \
--num_steps=128 \
--primer_melody="[60]"

なお、現在(2016/10/1時点)magentaのモデルとしては3つ準備されています。
LookBack RNN、Attention RNN
Basic RNN

上記のコマンドではこのうち、LookBack RNNの学習済みモデルを用いて曲を作っています。
他のモデルのものも準備されているので、例えば下記のコマンドを叩けば、attentionRNNでの学習済みモデルを用いて作曲が可能です。

bazel run //magenta/models/attention_rnn:attention_rnn_generate -- \
--bundle_file=/magenta-models/attention_rnn.mag \
--output_dir=/magenta-data/attention_rnn/generated \
--num_outputs=10 \
--num_steps=128 \
--primer_melody="[60]"

聞いてみる

上記のコマンドでは数秒の曲が10パターン作成されます。

曲はDockerの/magenta-data配下に作成され、Macの/tmp/magenta配下に同期されます。
曲を適当な場所に移動して再生してみてください。

なお、MIDIファイルの再生にはアプリが必要ですが、私は下記を利用しています。
Aria MAESTOSA

曲を再生する分には十分ですが、他におすすめがあったら教えていただけますとありがたいです。

今後

ここでは学習済みモデルを使い短い楽曲を作る、ということをやってみました。
引き続き、自分の選んだ楽曲での学習から、作曲までやってみたいと思います。

ありがとうございました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
33
Help us understand the problem. What are the problem?