Magenta.jsの新しいウェブアプリLo-Fi Playerリリース

Sony Flow MachineのLo-Fi Beats “サクラチル”に感化されたのでしょうか?
MagentaもMagenta.jsを使用したLo-Fiヒップホップ生成ウェブアプリ

Lo-Fi Player
https://magenta.github.io/lofi-player/

をリリースしました。



YouTubeライブで公開中です。



ちなみにSony Flow MachineのLoFi Beats “サクラチル”YouTubeライブはこちら





当然ながらMagenta.jsのLo-Fi PlayerはFlow Machine版と違い、ウェブアプリとして色々な操作を自分で行うことができます。
ウェブ版でデモプレイをしてみましので動画をご覧ください。

なかなか心地良いローファイビートが生成されています。

動画内にありますが、2つの音楽データ(前半後半)の選択、ベースパート、ドラムパートのオン・オフ、背景画像効果音選択、などが可能です。





Lo-Fi Player技術的解説 (VAEについて)

このLo-Fi PlayerはMagenta.jsの中でもMusicVAEのInterpolation(2つの音楽データをつなぐことで新たな音楽を作る)というモデルが使用されている様です。
本来この2つの音楽データ(それぞれ1小節)を最初と最後に配置し、その間にある空間を埋める事により新たな音楽生成を行うのがMusicVAEの仕組みです。
最初と最後が1小節ずつ、としてその間が14小節分あれば合計16小節の音楽が生成されます。
図にしてみると下図の様になります。




この区間を埋める時に、関連性の低い音データまでを考慮してしまうと、ニューラルネットワークの計算も大変、かつ、いわゆる音楽的に外れる可能性も高くなってしまいます。
そこでデータの重要な部分だけを残して削減(エンコーダ)し、元に戻す(デコーダ)を行うのがVAE (Variational Auto Encoder )です。
このVAEがMusicVAEの名前の由来になっています。
VAEの使用と不使用の効果を視覚化したのが下図です。




MusicVAEは(オフィシャルに公開されているもの)最大3トラックの音楽生成が行えます。
今回のLo-Fi Playerも
・メロディー
・ベース
・ドラム

の3トラックの生成が行われています。
ちなみにドラム以外は単音です。
複数トラックの生成はニューラルネットワークの仕組み的に(データの取り扱い=数式設計の難易度)、それぞれの整合性をとるのが非常に大変なのですが、VAEによるデータの次元削減で音楽的関連性の低いデータを排除する事で、より確率高く、整合性のある音楽生成を可能にしています。


今回のLo-Fi Playerは合計4小節の音楽生成でしょうか?
とすると最初と最後の2小節は、上述した通り、元となっている音楽データで、その間の2小節がMusicVAE生成、合計4小節の音楽生成が行われる仕組みなのかもしれません。



プログラムの中身に興味がある方はGitHubにコードが公開されていますので見てみるのも良いでしょう。

Lo-Fi Player GitHubページ
https://github.com/magenta/lofi-player


ちなみに開発者のVibert Thioさんは、記憶に間違いがなければ、元は個人的にMagenta.jsを使用した音楽ゲームアプリを投稿し、それが認められて?現在Google AIのMagentaチームインターンとなった経緯がある様です。
日本からも優秀なMusicニューラルネットワーク開発者が生まれる事を願い、さらにCANPLAYの教育コンテンツ充実を図って行きます!