メロディー・ディープラーニング(人工知能によるメロディー作成支援)
melody1 (メロディーの出だしの1小節を、皆様がここに打ち込みます。皆様が打ち込むのは基本的にはここのみです。)

   ボタンを押すと、打ち込んだメロディーの続きを
AIが生成し6つの案を以下に表示します。
    tempo timbre

melody2 (皆様が打ち込んだ1小節目を受け取り、それに基づいてAIが続きの2小節目を考えます。その両者をつなげて表示します。)

     

melody3 (皆様が打ち込んだ1小節目に基づきまして、AIが生成した別の案の2小節目をつなげて表示します。)



melody4 (別の生成の案です。1小節目は皆様が打ち込んだもので、2小節目はAIが生成したものです。)



melody5 (別の生成の案です。1小節目は皆様が打ち込んだもので、2小節目はAIが生成したものです。)



melody6 (別の生成の案です。テキストエリアに表示されたものを、皆様が編集することもできます。)



melody7 (別の生成の案です。最後の案です。)



使用法
ページ内の「melody1」と書かれている下にあるテキストエリアは、使用者の皆さまが編集することができ、この部分に、1小節分の楽譜を書きこみます。 それで、「melody1 start」のボタンを押しますと、演奏をすることができます。また、「deep learning」を押しますと、melody1に入力された楽譜に基づきまして、 ディープ・ラーニングのエンジンが、その続きの楽譜を1小節分作成しまして、「melody2」・「melody3」・「melody4」に出力します。出力されたあとに、「melody2 start」等を押しますと、演奏をすることができます。 「stop」は中断の時に押します。最後まで演奏し終わった際には「stop」を押す必要はありません。

「melody1」への書き方については、メロディー・シーケンサと同様になります。ただし括弧については使用できません。なので、3連符や32分音符は使用できません。
また、楽譜については、すべて4分の4拍子で、すべてGの長調、または、Eの短調として入力してください。
思いついたメロディーをGの長調、または、Eの短調に移調する際や、出てきた結果を別の調に移調する際には、メロディー・シーケンサの移調機能などもお使いください。

「deep learning」を押してから、結果が表示されるまでに、数秒程度かかる場合があります。

弱起に対応しました。弱起にする場合には、強拍となる音の所で改行を行うか「|」を書いてください。その場合には強拍の含まれる小節は入力が短くなります。

g___g___b___a___…1個目のgが小節の頭になります。「|」を書かない場合には、強起となります。

g___g___|b___a___…1個目のbが小節の頭になります。その場合でもa___までしか入力できません。合わせて16分音符16個の長さまでの入力となります。

g___g___
b___a___…2行に分けた書き方で、これも1個目のbが小節の頭になります。a___までしか入力できません。

人工知能が解答する小節(2小節目)には「|」は付いていませんが、1行目と同じリズムにあたる場所に「|」があり、そこに小節線があるとして解釈してください。

履歴等
公開しました(2021/09/05)。
音源を3通りから選択できるようになりました(2021/09/13)。
バージョンアップしました(2023/03/28)。弱起に対応しました。
バージョンアップしました(2023/05/03)。3通りの結果を表示するようになりました。
バージョンアップしました(2024/04/20)。従来の結果はそのままで、さらに3通りの結果を表示し、合計6通りの結果を表示するようになりました。
2023/03/28のバージョンアップについて
ほぼほぼ作り直しとなっております。
ディープラーニングの実装には、pythonとkerasを用いております。
更に具体的には、LSTMのエンコーダー・デコーダーモデルを用いております。
学習を行う際の教師データ(人工知能に教える楽譜)として、今回はバッハのコラールを用いました。バッハ、どうもありがとうございました。
music21をimportして、そこにバッハのコラールのコーパスがありますのでそれらを取り込みました。
取り込んだバッハのコラールを、楽譜を見ながら全曲聴きまして、3拍子の曲を除きました。
さらに、4拍子でもリズムが4拍+4拍の曲になっていないものも除きました。
それで、曲の開始からの、2小節分(16分音符32個の長さ)の楽譜のみを切り取って、さらにそのソプラノのパートの部分のみを用いています。
弱起の曲もリズムが合うものは採用しています。
で、すべて同じ調性に移調しました。で、私の判断では、少し調性が変なものありました。これは別の所で書きたいと思います。

今回の機械学習の内容は、NLP(natural language processing)で使われる手法とか、外国語のある種の翻訳の仕組みとかに類似しています。
前半の1小節(今回はすべて曲の出だし)と次の1小節とを分けて教えて、この前半の楽譜1小節の時は、続きの楽譜1小節はこうなるよというのを人工知能に学習させていきます。
外国語の翻訳では、ある英語とフランス語で、同じ意味の文章を分けて教えて、この英文のときは、続きではなく、フランス語はこうなるよというのを学習させていきます。
それで、未知の楽譜の1小節分(16分音符16個分の長さ)が与えられたときに、もしかして、続きはこんな感じですか?と人工知能が
良い感じの1小節分を出せるように人工知能を学習させていきます。

2023/05/03のバージョンアップについて
同じバッハの楽譜について、1トークンを追加して符号化し、新たに学習を行いました。
その結果、同じinputの楽譜について、3通りの続きを考えるようになりまして、さらにジェネレイティブな感じになっております。
重複してしまう場合もありますのでご了承ください。

2024/04/20のバージョンアップについて
今回は従来のモデルと異なり、RWKVの考え方で実装を行いました。
従来のモデルはLSTMのモデルになります。
学習に使用した楽譜は、LSTMとRWKVとで同じです。バッハのコラールとなります。
melody2~melidy4が従来のLSTMのモデルとなります。 melody5~melidy7が今回の改定によるRWKVのモデルとなります。
以下の関連ページもご利用ください。
メロディー・シーケンサ…楽譜の入力の方法が同じになっております。こちらでは、ハ長調で打ち込んで、ト長調になどに移調をすることができます。 4声のシーケンサ…こちらも楽譜の入力の方法が同じになっております。
home