■この記事を書いた人
はやと
ギタリスト/プログラマー
自身の演奏の幅を広げるため、AIによる作曲を取り入れてみました
いま流行りのディープラーニング(機械学習)を勉強したいと思い、「音楽の分野からなら入りやすいかな」と軽い気持ちで試してみたMagenta(マゼンタ:後述)ですが、AIの作り出した音楽のクオリティの高さと可能性に惹かれてしまいました。
ただ、Magentaを使ったAI作曲の手軽さに驚きはしたものの、ミュージシャン視点で見ると(知識があっても)とても気軽には試せないものでした。
「なんとか気軽にMagentaを演奏に取り入れたいなぁ」といろいろ調べたところ、「Magenta Studio」という簡単にAIの作曲アシストが試せるアプリがあったので紹介します。
本記事に出てくる譜面はMagentaで出力されたMIDI情報を譜面化したものです。Magentaに譜面をつくる機能はありません。
おすすめのAI作曲ツールと特徴
主要AI作曲ツールも増えてきましたが、どれも同じというわけでなくそれぞれに個性やできること・できないことがあります。
簡単にまとめたので導入の参考にしてみてください。
Amper Score:BGM制作向け
- 生演奏のようなBGMが作曲できる
- 生演奏をサンプリングした最強の音源ライブラリ
- 楽器や音色を選ぶのが楽しい
- 演奏内容の細かいエディットは不可
- 曲のダウンロードは有料
サイト:ampermusic.com
AIVA:BGM制作・作曲向け
- 機械くさくない高品質な演奏
- DAWのような楽曲編集機能
- プライベートでの使用に限り無料で曲のダウンロードができる
- 生成される曲はわりと似通っていて、すぐにAIVAとわかる
サイト:aiva.ai
Flow Machines:ミュージシャン向け
- ミュージシャンがメロディ・フレーズを導入したいならこれ!
- かっこいい演奏なのでそのまま使える
- 豊富なジャンルのプリセットから作曲できる
- iPad版(Flow Machines Mobile)は無料で利用できる
- フレーズの生成はできるが、伴奏やBGMの作曲ツールとしては使えない
- iPad版では生成したフレーズのエクスポートはできない
- Macでの利用はM1チップ搭載機種のみ(Windows は不可)
サイト:flow-machines.com
Magenta Studio:ミュージシャン・作曲家・エンジニア向け
- ミュージシャンが簡単に音楽制作に導入できる(アプリをPCにインストールして利用)
- ふたつのフレーズを合成して新しいアイデアを生みだすなど、斬新な作曲ができる
- APIが公開されているのでアプリ開発やプログラミングに活用できる
- 手直ししないと使える演奏にはならないことが多い
- 情報が少ない・整理されていないので開発にはてこずりそう
サイト:Magenta Studio
AWS DeepComposer:エンジニア向け
- 機械学習・ディープラーニングを学びたいならこれ!
- ドキュメントが整備されているので使いやすい
- 利用にはAWSのアカウント作成が必要(無料利用枠で使えるが、クレカの登録が必要)
- 純粋に音楽制作のみに使いたいミュージシャンには導入までの敷居が高く不向き
サイト:aws deepcomposer
こうしてまとめてみると、それぞれに明確な個性があっておもしろいですね。
Magenta(マゼンタ)とは
Magentaは、Googleによる「人工知能によって音楽・芸術・映像などを生成する新しいプロジェクト」です。
機械学習・プログラミング・数学などの専門的な知識がなくてもAIによる作曲を実現できるのが特徴ですが、それでもプログラミングをしない方にとって、気軽に試すにはハードルが高いものでした。
「Magenta Studio」は、そのMagentaをアプリにしたもので、プログラミングの知識がなくても直感的に操作・AI作曲をすることができ、ミュージシャンに使いやすいようにカスタマイズされています。
公式:Magenta Studio
Magenta Studioのインストール
Magenta StudioはmacOS、Windowsに対応しており、「magenta.tensorflow.org/studio」からインストールできます。
Standalone Applicationsを選択し、MacかWindowsのボタンを押せばダウンロードが始まります。
ダウンロードが完了したら、インストーラーを開いてインストールをするだけ。これだけでMagenta Studioを使用する準備は完了です。
生成された曲を再生する準備
Magenta Studioで生成された曲を再生するには「midiファイル」を再生する環境が必要です。
Macであれば最初からインストールされている「GarageBand」で大丈夫でしょう。Windowsであれば「cakewalk」など、無料で使えるDAWもあるので調べてみてください。
これらの高性能DAWが無料で使えるなんて、いい時代になったものです…。
Magenta Studioの使い方
Magenta Studioでは5種類のプラグインが利用可能です。
Magenta Studioのプラグイン
- Generate
単音のシンプルなメロディやドラムフレーズを生成する - Drumify
パターンのあるドラム演奏を作成する - Continue
与えたメロディやドラムパターンを拡張し、続きを生成する - Groove
機械的な演奏に人間のようなリズムの揺れと強弱を加える - Interpolate
ふたつの演奏を組み合わせて新しいアイデアを生み出す
それぞれの特徴と使い方を見ていきます。
Generate
Generateは4小節のメロディとドラムフレーズをランダムに生成します。
Generateの使い方
- 「Drums」か「Melody」を選択
- 「Output Location」で曲の出力先を選択
- 「Variations」で生成するフレーズの数を設定
- 「Temperture」で音数と音程差を設定
- 「Generate」で曲を出力
Generateは上記の5ステップで曲を生成できます。簡単ですね。
今回は「Melody」、「Variations」を4、「Termperture」を1.0で実行してみました。
作曲が完了すると指定した場所にMIDIファイル(拡張子:mid)が生成されているはずです。
今回は以下の4つが作曲されていました。
■Sample1
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4654,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/GENERATE-0.mxl","musicXmlTitle":"GENERATE 0","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
■Sample2
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.69999999999999996,"musicXmlId":4664,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/GENERATE-1.mxl","musicXmlTitle":"GENERATE 1","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
■Sample 3
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4674,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/GENERATE-2.mxl","musicXmlTitle":"GENERATE 2","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
■Sample 4
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4677,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/GENERATE-3-1.mxl","musicXmlTitle":"GENERATE 3","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
ちなみに「Temperture」を最小値(0.0)と最大値(2.0)でも試してみました。
■Temperature 最小値(0.0)
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.80000000000000004,"musicXmlId":4683,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/GENERATE-4.mxl","musicXmlTitle":"GENERATE 4","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
極めてシンプル。初めて楽器を演奏する人の練習フレーズみたいです。
■Temperture 最大値(2.0)
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4687,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/GENERATE-5.mxl","musicXmlTitle":"GENERATE 5","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
音の選択も演奏技術的にもやや人間離れしていて、上原ひろみさんが弾きそうな感じですね。
音数が多くて音程差のある、まさに熱(Temperature)のこもった演奏です。
Drumify
Drumifyは入力されたドラムフレーズを元に、パターンのある演奏を作成します。
ドラムソロをバンド用の演奏にしてくれるイメージですね。サンプルを見た(聞いた)ほうが早いと思います。
Drumifyの使い方
- 「Input File」で元になるドラム演奏を指定。
今回はGenerateの「Drums」で生成された演奏を選択してみましょう - 「Temperture」で音数を設定
- 「Generate」で演奏を出力
■元になるドラム演奏
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4694,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/drumify0.mxl","musicXmlTitle":"drumify0","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
Drumifyの元になるドラム演奏です。今回はGenerateの「Drums」で生成された演奏を選択してみました。
バンドの伴奏というよりは、ドラムソロのような演奏です。
■Drumifyが生成した演奏(Temperature 1.0)
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"newSystemFromXML":true,"zoom":0.5,"musicXmlId":4698,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/DRUMIFY-0-GENERATE-0.mxl","musicXmlTitle":"DRUMIFY 0 - GENERATE 0","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
譜面上はバンドのバック演奏っぽくなりましたね。裏拍に置かれているスネアが面白いです。
音源を聞くと楽譜通りに叩いていないように聞こえますが、これはDrumifyが演奏に強弱をつけているからです。
ドラムのバック演奏は基本的に同じ音量で叩くものですが、これはちょっと使いづらいですね。
■Drumifyが生成した演奏(Temperature 2.0)
先ほどの演奏はTemperature 1.0で生成したものです。今回は2.0で生成してみましょう。
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4701,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/DRUMIFY-0-GENERATE-1.mxl","musicXmlTitle":"DRUMIFY 0 - GENERATE 1","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
パターンをキープしつつもドラムソロのような演奏になりました。
フュージョン系のハイテクドラマーがやる、ドラムソロからバンド演奏に戻る直前のような演奏ですね。
Continue
Continueは与えたメロディやドラムパターンを拡張して続きを生成するプラグインです。
メロディやフレーズの作成時に、続きが思い浮かばなかったりAIに任せてしまいたい方におすすめです。生成されたフレーズのクオリティ高さに驚くはずです。
Continueの使い方
- 「Drums」か「Melody」を選択
- 「Input File」で元になる演奏を指定
- 「Variations」で生成するフレーズの数を設定
- 「Length」で生成する小節数を指定
- 「Temperture」でフレーズの変化度合を指定
- 「Generate」で曲を出力
それでは演奏を生成してみましょう。元となる演奏には、先ほどGenerateで生成したSample3と4を使います。
■元になる演奏1(Generate Sample3)
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4674,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/GENERATE-2.mxl","musicXmlTitle":"GENERATE 2","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
■生成された演奏1
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4718,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/CONTINUE-0-GENERATE-2.mxl","musicXmlTitle":"CONTINUE 0 - GENERATE 2","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
■元になる演奏2(Generate Sample4)
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4677,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/GENERATE-3-1.mxl","musicXmlTitle":"GENERATE 3","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
■生成された演奏2
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4720,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/CONTINUE-11-GENERATE-3.mxl","musicXmlTitle":"CONTINUE 11 - GENERATE 3","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
いかがでしょう。不自然なところもなく、かなり良いメロディができたのではないでしょうか。
上記の演奏はTemperature「1.0」で作成しました。数値を上げると音程差や音数が増える傾向にありますが、自然なフレーズにしたいなら「1.6」までかな、という印象です。
Continueは個人的に「かなり使える」と感じています。
Groove
Grooveは機械的な演奏に人間のようなリズムの揺れと強弱を加えるプラグインです。
Grooveの使い方
- 「Input File」で元になるドラム演奏を指定。
Drumifyで生成したTemperture 1.0のものを使用します。 - 「Temperture」を設定
- 「Generate」で演奏を出力
ここでは先ほどDrumifyで生成したTemperture 1.0のものを使用します。早速生成された演奏を見てみましょう。
■Grooveが生成した演奏
{"drawTitle":false,"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4711,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/GROOVE-0-DRUMIFY-0-GENERATE-00.mxl","musicXmlTitle":"GROOVE 0 - DRUMIFY 0 - GENERATE 00","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
フレーズや音の強弱の不自然さが改善されて、かなり聞きやすくなりましたね。確かに人間の演奏に近く感じます。
この演奏に限ってはGrooveがいい方向に働いたように感じますが、演奏内容まで変化してしまっているのはメリット・デメリットがありそうです。
ちなみにTemperatureの効果はちょっと分かりづらいです。リズムパターンが若干変化したり、ハイハット以外のシンバルを鳴らしたり、という感じでした。
Interpolate
最後に紹介する「Interpolate」は、ふたつの演奏を組み合わせて新しいアイデアを生み出すプラグインです。
こちらも言葉で説明するよりも、生成された音楽を見て(聞いて)みましょう。
Interpolateの使い方
- 「Drums」か「Melody」を選択
- 「Input Files」で組み合わせたい演奏をふたつ指定
- 「Steps」で生成するフレーズの数を設定
- 「Temperture」でフレーズの変化度合を指定
- 「Generate」で曲を出力
今回は「Melody」、「Input Files」はGenerateで生成したお馴染みのSample3と4を使います。「Steps」は5、Tempertureは「1.2」にしました。
■生成されたメロディ
{"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4729,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/INTERPOLATE-0-GENERATE-2.mxl","musicXmlTitle":"INTERPOLATE 0 - GENERATE 2","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawTitle":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
{"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4732,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/INTERPOLATE-1-GENERATE-2.mxl","musicXmlTitle":"INTERPOLATE 1 - GENERATE 2","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawTitle":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
{"drawSubtitle":false,"drawMetronomeMarks":false,"drawPartNames":false,"zoom":0.5,"musicXmlId":4736,"musicXmlUrl":"https://hayatofolio.com/wp-content/uploads/2021/11/INTERPOLATE-2-GENERATE-2.mxl","musicXmlTitle":"INTERPOLATE 2 - GENERATE 2","alignRests":0,"autoBeam":false,"autoBeamOptions":{"beam_middle_rests_only":false,"beam_rests":false,"maintain_stem_directions":false},"autoResize":true,"backend":"svg","coloringEnabled":true,"colorStemsLikeNoteheads":false,"defaultFontStyle":0,"disableCursor":true,"followCursor":false,"drawCredits":true,"drawTitle":true,"drawComposer":true,"drawLyricist":true,"drawPartAbbreviations":true,"drawMeasureNumbers":true,"drawMeasureNumbersOnlyAtSystemStart":false,"drawTimeSignatures":true,"measureNumberInterval":2,"useXMLMeasureNumbers":true,"drawFingerings":true,"fingeringInsideStafflines":false,"drawLyrics":true,"drawSlurs":true,"fillEmptyMeasuresWithWholeRest":0,"setWantedStemDirectionByXml":true,"tupletsRatioed":false,"tupletsBracketed":false,"tripletsBracketed":false,"renderSingleHorizontalStaffline":false,"newSystemFromXML":false,"newPageFromXML":false,"percussionOneLineCutoff":4,"percussionForceVoicesOneLineCutoff":3,"spacingFactorSoftmax":5,"stretchLastSystemLine":false,"autoGenerateMutipleRestMeasuresFromRestMeasures":true,"width":100,"aspectRatio":0}
生成されたファイルは5つあるのですが、長くなるので載せるのは3つにしておきます。
Melody1はGenerateのSample3とほぼ同じですね。Melody2、3と進むにつれて、GenerateのSample4の影響が強くなっています。
こうしてふたつのメロディのブレンド具合を調節するから「Steps(段階)」なんですね。「gradation(段階的な変化)」でもいい気がします。
Magenta Studioでできないこと
このようにMagenta Studioは音楽制作において高い可能性を感じさせるアプリですが、下記の機能があれば最高だなと思いました。
Magenta Studioでできないこと
- コード進行を与えてメロディを作成する
- フレーズAとフレーズBを繋ぐフレーズの作成
ジャズなどのアドリブを考える際に上記の機能があるとめちゃくちゃ便利なんですよね。
これらは本家Magentaならできるので(こちらはプログラミングが必要です)、研究してみようかなと思っており、成果があれば記事にしたいと思っています。
さいごに:Magentaの学習におすすめの教材
ここまで読んで頂きありがとうございます。AI作曲の現在を垣間見ることができたのではないでしょうか。
軽い気持ちで譜面や音源を載せたらかなり「重い」記事になってしまいました。冷静に考えるとここまでやる必要はなかったような気もしています。
さいごに、MagentaでプログラミングやAI作曲について学んでみたいと感じた方には、以下をおすすめします。
【Magenta+Colab】AIによる作曲を学ぼう!
【Magenta+Colab】AIによる作曲を学ぼう!
-ディープラーニングで自動生成する音楽データ-
Udemyで動画を見る
Udemyの動画講座「AIによる作曲を学ぼう!」です。
講師の我妻幸長さんは、UdemyでAI関連の講座のトップセールスを誇っており、多くの書籍も出版されています。
講座は非常に丁寧な語り口で進みますし、きちんと情報のアップデートを行っていることにも好感が持てます。(情報が古くてプログラムが動かないといったことがない)
プログラミング未経験でも簡単にMagentaを使った作曲を体験することができるので、「これからPython、AI作曲、ディープラーニングを学んでみたい」という方の導入としておすすめです。
「Google Colaboratory」というクラウド上の実行環境でプログラムを動かすので、めんどうな環境構築をする必要なくすぐに学習を始められるのも嬉しいです。
https://hayatofolio.com/experience-wordpress/
Magentaで開発 AI作曲
リンク
書籍なら「Magentaで開発 AI作曲」一択です。
こちらはクラウドではなくPCに開発環境を構築する必要があるのでプログラムを実行するまでに多少の手間はかかりますが、「AIによる作曲を学ぼう!」にはなかった「コード進行に沿ったアドリブメロディの作曲(Improv RNN)」などの項目もあり、より深くPythonを使った開発手法やMagentaの使い方を学ぶことができます。
はやと
ぜひMagentaでもAI作曲にチャレンジしてみてください