はじめに さて、2022 年 16 月も半ばですね。
早々に 2022 年を手放して 2023 年に突入してしまった人々を横目で見ながら 2022 年を死守しています。 2022 年は終わらないわ。私が守るもの。
つい先日の 12 月に、大分、福岡、宮崎の拠点(+ 遠隔居住メンバー)を Zoom でつないでクリエイターズナイト + (2022 年をあきらめるメンバー向け)忘年会を開催しました。 くわしくはこちらの記事をどうぞ。
発起人の永井(現 VP of あとで調べる)から「なにかやってくれ」という雑な依頼を受け、その瞬間にアイデアが浮かびました。 音楽 + AI ネタをやりたい。その場で AI に作曲してもらって即興ライブをやれば盛り上がるのでは。
ソフトウェアエンジニアと作曲 コロナ禍の引きこもり期間に、楽器がすごく売れたようですね。 私も電子ピアノの入門機を買って触っていました。でも練習するのはめんどうくさい。じゃあ、打ち込みすればいいじゃない。 ということで、気がついたら DTM に入門していました。音楽理論とツールの使い方を知るとそれっぽい曲ができるのでソフトウェアエンジニアに向いている趣味だという気がします。
今はまだ、こんな感じでガチガチにグリッドにはまってる曲しか作れません。Bootstrap を使って web. ページをコーディングしているイメージ。
しかも、4 小節のループを作るのが精一杯。 ここから先はもう、AI (歌手じゃなくて人工知能のほう)に手伝ってもらうしかない。
後述しますが、DTM 界隈でも AI (歌手じゃなくて人工知能のほう)旋風が巻き起こっています。 音楽理論というものあるので、ルールに従って生成できるということは AI (歌手じゃなくて人工知能のほう)が活躍できるということですよね。たぶん。
AI 作曲ライブの仕込み 瞬間的に発表内容のアイデアが湧いたのと同時に実現方法もすぐに思い浮かびました。
機械学習を使って音楽やドローイングを生成できる「Magenta」という Google の実験的プロジェクトがあります。 以前から Magenta の存在を知っていたので、これを使おう。
なお、Magenta はコマンドラインツールだったり DAW(音楽制作するソフトたち)のプラグインとしても提供されているので、プログラムを書かないミュージシャンやアーティストでも利用することができます。
プログラムを書いて利用する方法としては、Python と JavaScript のふたつの選択肢があります。
最初は Google Colab で Python 版を試していたのですが、作曲ライブっぽくするためにはローカル環境で動かしたい。 ところが、Apple Silicon だと TensorFlow と Magenta のバージョンの組み合わせがうまくいかない。それなら、JavaScript でいいか。2022 年は死守するけれど、環境構築は潔くあきらめるスタイル。
JavaScript を使ってそのままブラウザで動かしても面白くない。ブラウザで 1 ページ開いて「どやっ!」ってやっても盛り上がる気がしない。 じゃあ、Node.js にしよう。
そして、もうひとつの武器「Sonic Pi」を投入。
ライブコーディングというパフォーマンスがあります。リアルタイムにプログラムを書いて音楽を演奏したり映像を操作したりするものです。 GitHub のイベントのオープニングアクトなどで観たことがあるかもしれません。
Sonic Pi は前に触ったことがあり、OSC が使えることを知っていました。 OSC というのは、電子楽器やコンピューターなどの間で音楽演奏データをネットワーク経由でリアルタイムに共有するためのプロトコルです。
これをつかうと、こんなことができるはず。
Node.js で Magenta を動かしてリアルタイムに作曲 Node.js 上でそのまま演奏(音は出ない) 演奏データを OSC で Sonic Pi に送信 Sonic Pi で音を鳴らす Node.js ではなくブラウザ上で実行して OSC on WebSocket で演奏データを送信することもできるので、それはお好みで。 (なお、Processing も OSC を使えるので同時にビジュアルエフェクトを操作するといったパフォーマンスもできます)
やることは決まったので、あとは週末にちまちまと実装。
ライブ当日 さあ、クリエータズナイトの当日。
まずは、ChatGPT に「Sonic Pi でかっこいいドラムを演奏するプログラムを書いてください」とお願いします。ChatGPT が書いてくれたプログラムを Sonic Pi のエディタに貼って演奏開始。 (コード進行やメロディも同じように書いてもらうパフォーマンスもありかも)
そのドラムの上に、Magenta が生成した「ファミマ入店音の続きのメロディ」を乗せます。
ここで、言い訳なのですが…
Magenta.js が内部で利用しているプレイヤーには Tone.js という Web Audio 用のフレームワークが利用されています。
これの初期化プロセスをハックすることができず、カスタマイズして音を鳴らす代わりに OSC で演奏データを送信するということができませんでした。 しかたがないので自作でタイミングを測って演奏データを送信するコードを書いたところ、これがあまりうまくいっていない。 Magenta はちゃんと作曲してくれていると思うのですが、私が書いた演奏用のコードがいまいちMagenta は悪くないはず。
そんなわけで、大分、福岡、宮崎の各拠点に微妙なメロディが流れるという事態に。
「俺たちは何を聴かされているんだ!」
まあ、気にせず Sonic Pi でリアルタイムにコードを書き換えて、微妙なメロディの音色を変えたりして、微妙なライブパフォーマンスを披露しました。
後日、リベンジとして Colab 上で Python 版を利用した動画をアップしました。 「続きのメロディを作曲」の他に「メロディとメロディの間をつなぐメロディを作曲」というデモも入れています。 それっぽいと言えばそれっぽい気がしますね。
Magenta を使うと、今回のような単音のメロディ作曲のほかに、ドラムやバンド演奏の作曲、コード進行に沿ったメロディやバッハ風合唱曲の作曲、複雑な和音や高度なピアノ演奏の作曲なども可能です。 ぜひ、試してみてください。
2022 年の DTM と AI 前述の通り、DTM 界隈では AI 旋風が吹き荒れています。 余談ですが、「108」「1900」を続けて早口で言うと「竜巻旋風脚」に聞こえるって知ってました? ひゃくはちせんきゅーひゃく!
いくつか参考記事を貼っておきますね。 (これ以外にも日々あれやこれやリリースされています)
ソニーがやっている音楽制作プラットフォームです。ブラウザで操作できるし、安いし、音楽制作を始めやすいサービスになっています。現在は AI を使った機能が搭載されていますが、ブロックチェーンなど先進テクノロジーを取り入れるというコンセプトのようです。
動画制作していると動画と BGM の尺が合わなかったり、雰囲気に合う曲が見つからなかったりします。そんな時に、使える AI が曲を生成してくれるサービス。曲の長さを指定できるので動画制作に便利。
AI と音楽 先日開催された AI ミュージックバトル!『弁財天』という AI 作曲バトルイベント。 リモート試聴していましたが、いろんなアプローチがあることに感心と関心。「ドメイン知識は必要か?」という観点は、かつてコンピュータ将棋界に衝撃を与えた「Bonanza」の開発者が将棋についての知識がほとんどなかったことを思い起こさせます。
新たな音楽ジャンルが生まれるかも?というのは高まりますね。
最後に、AI が生成する音楽を無限に聴いていたい人向けにこちらをどうぞ。
今回利用した Magenta を使って Lo-Fi な曲をエンドレスに流してくれます。ソースコードも公開されています。
Stability AI が関わっている Harmonai というプロジェクトで diffusion model を使って生成した音楽をエンドレスにライブ配信しています。
OpenAI が公開している AI が生成したデモ音楽です。ビートルズ風など、実際のミュージシャン風の曲のデモもあります。
音楽 × AI は面白いジャンルなので追いかけてはいたいけれど、自分でモデルを作るとなると学習用に大量の MIDI データ(演奏データ)を用意するのが難しいというのがつらいところですね。(オーディオデータから MIDI を生成する AI も出てきているので、そのうち解決するのかも) まずは、利用者として楽しんでいこうと思います。
記事を書いてるうちに、GPT-4 を組み込んでプロンプトで音楽を生成できるサービスが出てました。 (早く著作権問題を解決しないとあれこれ大変そうですね…)
NO AI, NO MUSIC.
イジゲングループ株式会社では一緒に働く仲間を募集しています