00:00
はい、お疲れ様です、なおくんです。ということで、今回のテーマはこちらです、とどん。
ChatGPT的作曲法、よいしょー。
はい、ということで、作曲をですね、ChatGPT的に考えてみるっていう、
そういった話をね、ちょっとしてみたいと思います。
なんとなくパッと思いついたことなので、まだですね、ちょっと説明が分かりづらい部分もあるかもしれないんですけれども、
一応ちょっと思いつきをね、言語化しておこうかなというふうに思っておりますので、興味がある方は聞いていってください。
作曲ってなんか難しいものっていうふうに思われがちだし、どうやって作曲するのっていうのが、
なかなかね、説明しづらい部分があると思うんですけれども、
これはね、ChatGPT的に考えるとそんなにね、難しくないんじゃないかなっていうふうに思ったので、話していこうと思いました。
で、きっかけとしてはですね、YouTubeのチャンネルでゆるコンピューター科学ラジオっていうのがありまして、
そこでChatGPTみたいな感じで、そういったものを自分で紙と鉛筆とサイコロを使って作ってみようみたいな、そういう回があったんですよ。
これがめちゃくちゃ面白かったんですよね。
ChatGPTみたいなものを大規模言語モデルっていうふうに言うんですけれども、
これがどういうふうな仕組みで動いているのかっていうのは、結構知っている人、聞いたことある人も多いと思うんですけれども、
簡単に言うと、スマホの予測変換機能みたいなものなんですよね。
こう来たらこう来るっていう、そういうデータをたくさん機械に覚えさせて、
それを繋げていってそれっぽい文章を作るっていう、そういうなんか、簡単に言うとそういう仕組みなんですね。
だから、私はっていうふうにまず何か打ち込んだら、私は、で大体その人によりますけれども、
いつもギターの話をしている人だったら大体予測変換に、私はギターがってきますよね。
来ますよねっていうか、来る可能性が高いんですよ。
私はギターがとか、私はピアノがとか、その人が音楽が好きだったら、音楽が好きだったら、そういう楽器系の単語が来る可能性が高い。
で、例えば私はギターがっていうふうになったら、私はギターが弾ける、弾けないみたいなものが続きそうですよ。
続きそうですよね。私はギターが弾ける、弾けないみたいな。
そういう感じで、どんどんどんどん繋げていって、確率と繋げていくっていうのを繰り返していって、一つの文章を作っていく。
例えば、私はギターが弾ける、弾けない。
これを過去のデータから、大体私はギターがだったら、弾けるっていう確率が今まで8割くらいの可能性で出てきたので、
次は弾けるって出てくる可能性が8割だな。
で、弾けないっていうふうに言う場合も、過去のデータから20%くらいあるので、弾けないになる確率が20%だなっていって、そこに確率の違いが出てくるわけですね。
03:03
だから、弾けるなのか弾けないなのかが50-50でなくて、過去のデータからそこに確率の差が生じてくるわけですね。
そうすることによって、それらしいものができてくるみたいな感じの考え方ですね。
これを作曲にも応用していくと、自動作曲的なものができるんじゃないかなというふうに思ったので、
僕なりに考えたチャットGPT的作曲法みたいなものを簡単に説明していこうかなと思います。
長い曲はまだ作れないと思いますので、まずはモチーフ、1小節くらいのモチーフを作ってみようかなと思います。
モチーフというのは、曲のちょっとした部品ですね。
例えば、蝶々という曲だったら、蝶々くらいの3つの音だけのフレーズみたいなものですね。
そういうものをちょっと作ってみようかなと思います。
手順としてはですね、サムネイルに細かい図が書いてあるんですけれども、見づらいと思いますが、
僕のメモ用に書いたものなので、そんなにちゃんと見なくて大丈夫です。
手順としては3つありまして、1つ目が1音目を決める、2つ目が2音目を決める、3つ目が3音目を決めるという感じの順番でやっていきたいと思います。
リズムに関してはですね、タンタンターンっていう感じのリズムに、それぞれの音にドレミファソラシドの何の音をはめるかということをちょっと考えていこうかなということでやっていきます。
まずはですね、ステップ1、手順1、1音目を決めるということですね。
最初の音を何にするかということなんですが、これはどうやって考えていくか。
ちょっとGPT的に考えると、ドレミファソラシドの何かの音が当てはまるというのは分かりますよね。ドレミファソラシド。
じゃあこれが全部7分の1の確率なのか、ドレミファソラシというのが7つの音があるので、全部7分の1の確率で当てはめていけばいいのかというと、多分そうではないと思うんですね。
過去の曲のデータとか、いろんな曲を演奏してきた経験等から言うと、おそらくですね、ドミソのどれかで始まる確率が高いんですよね。
仮に80%、8割の確率でドミソのどれかから始まる。
で、それ以外、レファラのどれかで始まる確率は20%ぐらいというふうに、これ適当ですよ。
実際のデータに基づいた数字ではないですが、僕の肌感ですね。
そうすると、そこでサイコロを振ることができますよね。
じゃあまず最初の音を決めます。何の音にしましょうか。
10面体のサイコロを振って、1から8が出たらドミソから始める。
06:05
で、それ以外の9、10が出たら、9、0かな、まあいいや、その10面体のサイコロ、1から10までのサイコロだとして、
で、9、10が出たらレファラから始まるみたいに、そういう感じでサイコロをポンと振って、
じゃあドミソのどれから始まるっていうサイコロの目が出ました。
そしたら今度はドミソの中から何の音が当てはまるのかっていうのをまた決めます。
で、これも多分3分の1、3分の1、3分の1っていう感じじゃなくて、
過去の極データを分析していくと、
若干ドから始まる確率が高いよねとか、
ドから始まる確率が50%、ミから始まる確率が35%、ソから始まる確率が15%みたいな感じで、
そこにもまたちょっとデータを調べてみると、確率の割合が違ったりする可能性がありますよね。
これも調べてみて、大量にデータをディープラーニング、大量学習すればまたそういうそれっぽい曲ができるかもしれないですよね。
これも適当にサイコロを振って、そしたらドミソの何の音から始めるかっていうのが決まりますよね。
そしたらサイコロを振った結果、ドっていう音になりました。
仮にね、1音目がドから始まるっていう風になりました。
はい、じゃあ次手順2。
じゃあそれに基づいて、それを踏まえてですね、2音目を決めるっていうことですね。
じゃあ2音目をもう同じようにサイコロを適当に振って、ドミファソラシドに中から決めるのかっていうと、そうではないんですね。
2音目っていうのは、1音目の流れを引き継いで、それに対して2音目はどういう音になるのかっていう風に一般的には考えます。
どういうことかっていうと、1音目がドだから、これに対してドレっていう風に上っていくのか、それともドシっていう風に下がっていくのか、この2択ありますね。
要はメロディーが上に行くのか下に行くのか。
で、あとはそのそれ以外の3つ目の選択としては、全く同じ高さの音を引き継ぐのか、ドドっていう風になるのか。
だからこの方向性をまず決めるわけですね。
上なのか下なのか、それとも同じ高さなのかっていう方向性を決めます。
で、この方向性っていうのも過去のデータを分析していくと、全部が同じ割合ではないと思うんですね。
始まりの2音目のメロディーっていうのは、データを分析していくと、上に上がる可能性が6割、下に下がる可能性が3割、同じ音が続く可能性が1割みたいな。
これも適当ですけど、そういう風に過去の曲データをワーッと読み込むと、そういう確率の変動というか違いが出るかもしれないので、これも同じようにこの確率に基づいてサイコロを振ると。
サイコロを振ると、例えば2音目は上るメロディーになりましたという風に決まります。
09:00
今度はですね、それが決まったら今度は進み方ですね。
じゃあその上るなら上るでどのぐらい上るのか、これもいろいろありますよね。
例えばドからレに進むのか、ドからミに進むのか、ドからソに進むのか、それ以外にもドからラに行くのか、オクターブのドからドに行くのかっていうのもまたありますよね。
この進み方っていうのも、これも過去の曲データをたくさん読み込むと、全部が同じ確率ではないんですね。
だいたいですね、隣の音、1個隣の音に進むっていうのが、曲のメロディーではほとんどですね、これを順次進行って言ったりするんですけども作曲の理論で。
すぐ隣の音に進むことを順次進行って言います。
音が飛ぶこと、2段飛び3段飛びみたいな感じで、例えばドからミに行くとかドからファに行くとかドからソに行くみたいなことを、ざっくり言うと跳躍進行、跳躍、飛ぶってことですね。
っていう風になるんですけども、これほとんどが順次進行なんですよね。
でも跳躍する場合もあるので、これもサイコロで振ると、例えば順次進行で進む確率が90%、跳躍進行で進む確率が10%みたいな。
これもサイコロで振りますね。で、決まります。それで決まった結果、ドからレに進むことが決まりました。
で、次。ステップ3。3音目を決める。
はい、じゃあこれ3音目。3音目はどうやって決めていくかっていうと、これは基本的にまず2音目と同じような考え方ですね。
だから2音目がこう来たから、それに対して上がるのか下がるのか、それとも同じ音が続くのか。
そして、跳躍するのか、すぐ隣の音に進むのかっていう方向と進み方を、さっきと同じようにサイコロで決めていきます。
で、ただ3音目はですね、さらに1音目、2音目の流れも組んだ上でどう進むかっていうことも考慮する必要が出てくるような気がしますね。
つまり今までの流れを考えていく。
ド、レって来たら、ド、レ、ミに行きそうじゃないですか。
ド、レ、ミになりそうですよね。
多分これも過去のデータを分析していくと、ド、レが続いたら大体ミに行くよねみたいな。
これも予測変換みたいな感じで、私はギターが弾けないよりも弾けるに行く可能性が高いよみたいな感じで、
ド、レと来たらミに行く確率が分からないけど80%とか。
ド、レ、ドっていう風にまた戻る確率が20%。
ド、レ、レっていう風にド、レ、レになる確率が何%みたいな感じで、これもサイコロで。
これもその2音目とは違うのは、この1音目からの流れも踏まえた上での3音目っていう、
そういうまたちょっと複雑な変数みたいなのが出てくるみたいな感じで、
そういう感じでちょっとGPTで的に作曲をすると面白いんじゃないかなという風に、
ちょっと何となく思いついたのでお話ししてみました。
はい、ということで最後まで聞いてくれてありがとうございます。