スキップしてメイン コンテンツに移動

AI作曲のためにMagentaを準備をする

AIで曲を作りたいと昔から思っていたのですが、プログラマーではないので私には無理かなぁとあきらめていました。

けど、こんな本があったので挑戦してみます。


Magentaをインストールしてみた

この本をしっかりできるくらいにはなりたいですね。

「Magenta」というライブラリでAI作曲ができるようです。

さっそく、Magentaをインストールしました。

しかし、かなり苦労したので忘備録的に残します。

以下の手順でMagenta環境を作ります。

  1. 仮想環境
  2. TensorFlowインストール(TensorFlow 2.7.0)
  3. Magentaインストール(Magenta 2.0.1)

1.仮想環境

まずは、仮想環境です。

「仮想環境」ってPythonでは普通のことらしいですね。

仮想環境という文字は見たことがあったのですがプロだけが使うものだと思ってました。。

Python Japanの仮想環境のページ↓

まず、Magentaを置きたいフォルダで以下のコマンドを実行します。

python -m venv (フォルダ名)

今回のフォルダ名は「magenta-env」としました。

なので、以下のコマンドを実行します。

python -m venv magenta-env

仮想環境ができるのでアクティベートします。

「アクティベート」は仮想環境を動かすことだと思います。

以下のコマンドとなります。

magenta-env\Scripts\activate

アクティベートするとコマンドプロンプトの行頭に (magenta-env) と付きます。

これで仮想環境ができたことになります。

ちなみに、アクティベートを終わる時は「deactivate」です。

2.TensorFlow

仮想環境を起動した状態でTensorFlowをインストールします。

以下のコマンドを実行します。

pip install tensorflow

おそらく問題なくインストールできるはずです。

TensorFlowのサイトはこちら。



3.Magenta

次は、Magentaのインストールです。

インストールは以下のコマンドです。

pip install magenta

エラーが出たら、以下のコマンドに変えてみてください。

私はエラーが出ました。

pip install --no-deps magenta==2.0.1

生成されたデータを入れるフォルダを作成する

次に、Magentaで生成されたが保存されるフォルダーを作ります。

ここでは「magenta-data」としました。

「magenta-env」と同じ階層に作ります。

ここに生成されたMidiデータが入ります。

basic_rnn.mag

次に以下URLから「basic_rnn.mag」というファイルをダウンロードします。

Magentaを実行する

次に、Magentaのコマンドを実行します。

以下のコマンドを入力します。

ディレクトリーはMagentaフォルダを置いた場所にします。

melody_rnn_generate --config=basic_rnn --bundle_file=C:\(ディレクトリー)\basic_rnn.mag --output_dir=C:\(ディレクトリー)\magenta-data --num_outputs=10 --num_steps=128 --primer_melody="[60]"

実行したところ、私の場合は「ModuleNotFoundError: No module named 'tensorflow_probability'」というエラーがでました。

これはモジュールがないということだと思うのでインストールします。

「ModuleNotFoundError: No module named 'tensorflow_probability'」の場合は以下のコマンドになります。

pip install tensorflow_probability

インストールしたら、再びMagentaのコマンドを実行します。

やっぱりモジュールエラーが出るのでpipでインストールします。

再び「tensor2tensor」がないとエラーがでたのでインストールします。

pip install tensor2tensor

しかし、インストールできなかったので、pipのアップグレードをしました。

コマンドは以下です。

python -m pip install --upgrade pip

引き続きエラーが出続けるので、すべてインストールします。

  • tensorflow_probability
  • tensor2tensor
  • pretty-midi
  • bokeh
  • IPython
  • pandas
  • librosa

「librosa」をインストールした後、「melody_rnn_generate」のコマンドを実行すると無事に生成できました。

「magenta-data」を見るとMidiデータが10個ありました。

それらをMuseScoreで開いて再生します。

無事に再生できました。

ピアノの音で再生するとすごく変な感じ(下手な演奏)がしますが、DAWで音を変えてみるとかっこよくなったりします。

AI作曲と言っても、最終的には自分の音楽的な感性が問われてしまうような気がします。

機械には「あ、なんかいい感じ」的なことは、まだわからないですよね。


このブログの人気の投稿

TouchDesigerでmp4を書き出す(映像+音)

TouchDesignerの醍醐味は音と図形を連動できることだと思ってます。 私がTouchDesignerに惹かれたのは、この部分です。 ということで、音と図形の連動をやってみました。 こんな動画をつくりました。 ▼ 動画作成手順 まず、TouchDesignerで動画を作成します。 以下の手順で作成します。 ▼ ムービー ・[Circle TOP]で円をつくる ・[Transform CHOP]をつなげる ▼ サウンド ・[Audio File In]で音を取り込む(デフォルトの音を選んでます) ・[Audio Filter CHOP]の[Filter]で[Band Pass]を選択 ・[Math CHOP]の[Combine Channels]の[Maxinum]を選択 ・[Math CHOP]の[Range]の[To Range]を 0 ~ 100 にする ・[Null CHOP]をつなげる ▼ サウンドをスケールに反映する ・サウンドの[Null CHOP]をムービーの[Transform TOP]の Scale へつなげる ▼ 大きさを調整する ・背景用に[Constant CHOP]をつくる ・[Over TOP]をつくる ・[Over TOP]に[Transform TOP]と[Constant CHOP]をつなげる ・[Over TOP]の[Fixed Layer]を[Constant CHOP]に合わせる(この場合は Input2) 完成です。 ▼ mp4書き出し手順 これを書き出します。 ・[File]メニューから[Export Movie]を選択 ・サウンドの[Null CHOP]を[CHOP Audio]へドラッグ・アンド・ドロップ ・ムービーの[Null TOP]を[TOP Video]へドラッグ・アンド・ドロップ ・[Codec]の[MPEG4]を選択 ・[Filename]で保存先を選択 ・Render Movieの[Start]をクリック こんな感じです↓ これでMpeg4のファイルができていると思います。

BlenderデータをTouchDesignerに取り込みたい

Blenderで作ったものをTouchDesignerで扱いたいと思いました。 しかし、いろいろ調べたのですが、方法が見つからなくて苦労しました。 基本的すぎて誰も記事や動画にしないのかもしれません。。 参考にした動画 TDSW Youtube Academyを参考にしました。 無事に完了して、以下の画像のようになりました。 手順 Blenderで作ったものをTouchDesignerで扱うための方法は以下の手順です。 1.Blenderで作ったものを「obj」形式でエクスポート 2.objファイルをTouchDesignerにドラッグ・アンド・ドロップする 3.配置したSOPの右側を右クリックしてGeometoryCOMPを置く 4.CameraCOMPを置く 5.LightCOMPを置く 6.renderTOPを置く。自動的にGeometoryCOMP、CamaraCOMP、LightCOMPとつながる。 これでBlenderで作ったものをTouchDesignerで扱えるようになります。 ちなみに 3Dを扱うときの画面分割方法は、 ・左にいつもの作業画面 ・右上にGeometory Viewer ・右下にTop Viewer を置くといいようです。 右下は、Top Viewerを選択した後、OutTOPのDisplayをオンにすると表示されます。

TouchDesignerで画像と文字を書き出したい

TouchDesignerを勉強しています。 基本的なことはざっくりとやってみました。 今回は画像と文字を書き出したいと思います。 動画を書き出す TouchDesignerは動画がメインだと思うのですが、単純に画像を書き出すことってどうするんだろう?と思ったので、やってみました。 [Movie File in]で画像を読み込む [Level]で少し調整 画像と背景の[Constant]を[Over]で合わせる [Text]で文字を入れる [Over]でテキストと画像を合わせる [Null]で右クリックしてsave imageする Nullで画像を保存するとtiff形式になりました。 他にも書き出し方がありそうですがわからなかったので、今回はGIMPでpngにしました。 TouchDesignerって便利ですね。 動画も画像も音声もなんでもかんでもTouchDesignerでまとめることができそうです。