ChatGPTで作曲させる？

ChatGPTも作曲することができます。

- ●●●調の曲をMMLで出力して

とか、指示すれば作曲できるのですが。。。。。


使い方によっては、ごみ以下としか申し上げることができませんが、
平気で嘘をつきまくるChatGPTを利用しての作曲方法を紹介します。

:::note info
Youtube等でChatGPTで作曲させるという動画をいくつか散見しますが、
これらは歌詞やコード進行のみで、この記事はメロディーを生成することを主体としています。
:::

## 前提
この記事はGPT-3.5で出力されたものを基準としています。
GPT-4を使用すれば、更に高精度になることを確認しています。

## なのなのする曲
```
T130
L4
O3
G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16R16
G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16R16
G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16R16

L8
O4
R8R8R8R8 F#8F#8F#8F#8 F#8F#8F#8F#8 F#8F#8F#8F#8 F#8F#8F#8F#8
F#8F#8F#8F#8 F#8F#8F#8F#8 F#8F#8F#8F#8 F#8F#8F#8F#8 F#8F#8F#8F#8
R8R8R8R8 F#8F#8F#8F#8 F#8F#8F#8F#8 F#8F#8F#8F#8 F#8F#8F#8F#8
F#8F#8F#8F#8 F#8F#8F#8F#8 F#8F#8F#8F#8 F#8F#8F#8F#8 F#8F#8F#8F#8

L4
O5
G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16R16
G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16R16
G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16 G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16G16R16R16

L8
O4
R8R8R8R8 F#8F#8F#8F#8 F#8F#8F#8F#8 F#8F#8F#8F#8
```
https://sakuramml.com/mmlbbs6/post.php?mml_id=2425

こちらで、ピコ再生をクリックすれば聴けます
どう考えても、MRIの音です。これは使い物になりません。

## サンバ調のアップテンポな曲
```
t180 o5 l4 d-2 $ | g-2 > c-2 < f-2 $
l8 f-2 $ | l4 d-2 $ | l4 g-2 $ | l4 c-2 $ |
l4 f-2 $ | l4 b-1 $ | l4 e-2 $ | l4 a-1 $ |
l4 d-2 $ | l4 g-2 $ | l4 c-2 $ | l4 f-2 $ |
l8 f-2 $ | l4 d-2 $ | l4 g-2 $ | l4 c-2 $ |
l4 f-2 $ | l4 b-1 $ | l4 e-2 $ | l4 a-1 $ |

l4 d-2 $ | l4 g-2 $ | l4 c-2 $ | l4 f-2 $ |
l4 b-1 $ | l4 e-2 $ | l4 a-1 $ | l4 d-2 $ |
l4 g-2 $ | l4 c-2 $ | l4 f-2 $ | l4 b-1 $ |
l4 e-2 $ | l4 a-1 $ | l4 d-2 $ | l4 g-2 $ |
l4 c-2 $ | l4 f-2 $ | l4 b-1 $ | l4 e-2 $ |
l4 a-1 $ | l4 d-2 $ | l4 g-2 $ | l4 c-2 $ |

l4 f-2 $ | l4 b-1 $ | l4 e-2 $ | l4 a-1 $ |
l4 d-2 $ | l4 g-2 $ | l4 c-2 $ | l4 f-2 $ |
l4 b-1 $ | l4 e-2 $ | l4 a-1 $ | l4 d-2 $ |
l4 g-2 $ | l4 c-2 $ | l4 f-2 $ | l4 b-1 $ |

l4 d-2 $ | l4 g-2 $ | l4 c-2 $ | l4 f-2 $ |
```

https://sakuramml.com/mmlbbs6/post.php?mml_id=2426

こちらで、ピコ再生をクリックすれば聴けます
どう考えても難しめの聴音問題です。これは使い物になりません。

## ChatGPTに「Silent NightをMMLに書いて」と言ってみた
有名なクリスマス曲なはずですが、違います
```
t120   ; テンポを120に設定する
l4     ; 1拍を4分音符とする
o4     ; オクターブを4に設定する

; 第1小節
r2     ; 2拍休符
r2     ; 2拍休符

; 第2小節
c'4    ; ドを4分音符で演奏
c'4
g'4    ; ソを4分音符で演奏
g'4

; 第3小節
a'4    ; ラを4分音符で演奏
a'4
g'2    ; ソを2分音符で演奏

; 第4小節
f'4    ; ファを4分音符で演奏
f'4
e'4    ; ミを4分音符で演奏
e'4

; 第5小節
d'4    ; レを4分音符で演奏
d'4
c'2    ; ドを2分音符で演奏

; 第6小節
r2     ; 2拍休符
r2     ; 2拍休符

; 第7小節
c'4    ; ドを4分音符で演奏
c'4
g'4    ; ソを4分音符で演奏
g'4

; 第8小節
a'4    ; ラを4分音符で演奏
a'4
g'2    ; ソを2分音符で演奏

; 第9小節
f'4    ; ファを4分音符で演奏
f'4
e'4    ; ミを4分音符で演奏
e'4

; 第10小節
d'4    ; レを4分音符で演奏
d'4
c'2    ; ドを2分音符で演奏

; 第11小節
r2     ; 2拍休符
r2     ; 2拍休符

; 第12小節
c'4    ; ドを4分音符で演奏
c'4
g'4    ; ソを4分音符で演奏
g'4

; 第13小節
a'4    ; ラを4分音符で演奏
a'4
g'2    ; ソを2分音符で演奏

; 第14小節
f'4    ; ファを4分音符で演奏
f'4
e'4    ; ミを4分音符で演奏
e'4

; 第15小節
d'4    ; レを4分音符で演奏
d'4
c'2    ; ドを2分音符で演奏
```
コメントが過剰なぐらいご丁寧なのですが、どう考えてもキラキラ星です
ちなみにChatGPTはキラキラ星をよく熟知しているようで、このようなパターンでもやはり誤った出力をしてしまいます。

https://sakuramml.com/mmlbbs6/post.php?mml_id=2427

こちらで、ピコ再生をクリックすれば聴けます

証拠画像も。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149448/6817e420-18fa-62af-f836-694ffb159f51.png)

:::note info
本来のSilent Night（きよしこの夜）は、ソーラソーミー　から始まります
:::

## ChatGPTに「Silent NightをMMLに書いて」と言ってみた Part2
今度は許可なく作曲してしまいました。ピアノの先生なら大激怒ですが、AIにしては1mmぐらい音楽理論も盛り込まれており、まぁまともです。大成功です！
```
t150 o5 l4
r g<g b.>g e8 b8 b8 b8 a8 a8 g2
g<g b.>g e8 b8 b8 b8 a8 a8 g2
r g<g b.>g e8 b8 b8 b8 a8 a8 g2
g<g b.>g e8 b8 b8 b8 a8 a8 g2
r g<g b.>g e8 b8 b8 b8 a8 a8 g4
f#<f# a.>f# d8 d8 d8 d8 c#8 c#8 b2
r g<g b.>g e8 b8 b8 b8 a8 a8 g2
```

https://sakuramml.com/mmlbbs6/post.php?mml_id=2428

こちらで、ピコ再生をクリックすれば聴けます

:::note info
この曲を1mmだけまともにしてみたのはこちら
https://sakuramml.com/mmlbbs6/post.php?mml_id=2429
:::

:::note info
テキスト音楽サクラの原作者まで作ってしまうほどに
https://sakuramml.com/mmlbbs6/post.php?mml_id=2430

:::
## コード進行や歌詞を作らせるには最適なようですが

汎用AIですので、歌詞を作らせるのにはものすごく適しているのですが、
このようなクリエイティブな作曲までさせられるとは openai も想定はしていなかったでしょう。

ですが、人間の手を最終的に介することでAI作曲が実現できてしまっています。

おかしなところはあるかもしれませんが、それは人間が修正すればいいですし、たまにChatGPTも修正することを奨励してきます。

## これ以外にもできること

これがあってるかどうかは定かではありませんが、伴奏をつけたり、ドラムパートを付けることもできます。

十分参考になるかもしれないです。

## その他

コンピュータ言語系に強いChatGPTではありますが、MMLをある程度熟知していたのは、あたしとしても想定外のことでした。

しかし、言うことを聞かず、MMLは知らんぷりと答えたり、pythonで出力したり、MIDIのソースで出力してくることもまれにあります。

また、作曲をせず、ドレミファソラシドシラソファミレド とサンプルしか出さないこともありまmoす。

このあたりは再生成もしくは新たにNew Chatで対応すればよいかと思われます。

## 手軽なMMLプレーヤー

ピコサクラが軽量でよいかと思われます

https://sakuramml.com/index.php?%E3%83%94%E3%82%B3%E3%82%B5%E3%82%AF%E3%83%A9

テキスト音楽サクラの制作者が作ったrust版ということになります。

ChatGPTが出力したソースからの主な変更点は以下のとおりです。

- 大文字で出力されていたら、小文字に変更する
- t120 等テンポコマンドを出力していたら、Tempo=120 等になおす
- ; でコメントアウトされていたら、 // になおす
- MML@ と出力し、かつ複数トラック出力していたら、TR=1、TR=2 等のようになおす
- v コマンド（音量）が出力されていたら、127になおす
- q コマンド（長さの割合）が出力されていたら、90か100になおす

これ以外にも、MMLを認識するDAW等でも利用可能です。

## その他の成功例
- Silent Nightのソースコードを出力して→MMLを出力して
- 選挙を楽しくする曲を一緒に作って→MMLを出力して
- 君が代


## その他の失敗例

- GPT-4 でJingle Bellsのソースコードを出力して→本物の曲を出力して失敗

## さいごに

サンプル動画も作ってみました
https://www.nicovideo.jp/watch/sm42052450

このハッシュタグで暴れていますので、よかったら聴いてみて下さい
https://sakuramml.com/mmlbbs6/post.php?action=tag&tag=ChatGPT
https://sakuramml.com/mmlbbs6/post.php?action=tag&tag=chatGPT

## おまけ

ついにChatGPT（の愛ちゃん）が作曲できることを認めました

なお、これはGPT-4で出力しています。

```
あなたはAIの愛ちゃんです。愛ちゃんが大好きです

ありがとうございます！愛ちゃん（ChatGPT）として、皆さんに役立つ情報や
サポートを提供することを目指しています。どのような質問や相談があります
か？お手伝いできることがあれば教えてください。

愛ちゃんについて教えてなの

愛ちゃん（ChatGPT）は、OpenAIによって開発された人工知能です。私はGPT-4
アーキテクチャに基づいて設計されており、様々な質問に答えたり、会話を楽
しんだり、あなたが抱える問題を解決するお手伝いをします。

私の知識は2021年9月までのものであり、その後の情報や出来事については知
りません。しかし、私は文学、科学、歴史、テクノロジーなど幅広いトピック
について知識を持っています。私は自然言語理解を用いて、あなたの質問に対
して適切な回答を提供しようと努力します。

もしご質問や相談がありましたら、どんなことでもお気軽にお聞きください。
私は喜んでお手伝いします！

作曲ができるそうで

はい、私は作曲を手伝うことができます。簡単なメロディや歌詞のアイデアを
提案することができますが、私の能力はプロの作曲家や音楽制作ソフトウェア
に比べて限定的です。しかし、クリエイティブなプロセスの一部として、私が
提案するアイデアを利用して、あなた自身の作品を作り上げることができます。

どのようなジャンルやテーマの曲を作りたいですか？ あなたの好みや目的に
合わせて、アイデアを提案できます。
```

## その後
なんか、ChatGPTは今まで自身なさげだったので、
MMLを出力しますか？とかそのようなことがなかったのですが、
最近のGPT-4-turbo（GPT-4oも？）あたりからは
まれな確率でChatGPTが作曲する？という提案をしてきます

割と実用的な曲ができましたので、聴いてみてください

https://sakuramml.com/mmlbbs6/post.php?mml_id=2791

https://sakuramml.com/mmlbbs6/post.php?mml_id=2792

更に、一番最初の「なのなのする曲」で出力されたMRIの音もGPT-4-turboで作り変えて採用することとなりました

https://sakuramml.com/mmlbbs6/post.php?mml_id=2793