ChatGPTと一緒に楽曲作りをしてみた録。
大流行りのChat GPTですが、例に漏れず僕も遊んでいます。
ChatGPTさんは曲自体は生成できないですが、
テキストなら生成できるわけです。
なので歌詞っぽいものは考えてくれます。
それに合わせてMIDIファイルをテキスト形式とかで出してくれればいいじゃないかということで、以下のように頼んでみました。
すると以下のような歌詞らしきものを出してくれました。
謎におにぎりをテーマにしてねと、ざっくりとしたお題だけは与えてみています(笑)。
おにぎりソングになってるような気もするし、そうでもない気もする?
いい曲なのかは形にしてみないとわからんもんだから、一旦これで進めてみる。
また、バイナリ形式でMIDIファイルを出してくれいって頼んだのですが、
うまく教えてくれませんでした。
そこで思いついたのが、スクリプトを生成できるわけだから、
PythonでMIDIを生成するスクリプト作ってもらう形でお願いしてみた。
で、教えてくれたPythonファイルがこちら。
import mido
# 新しいMIDIファイルを作成
mid = mido.MidiFile()
track = mido.MidiTrack()
mid.tracks.append(track)
# MIDIメッセージを生成する関数を定義
def add_midi_message(msg_type, channel, note, velocity, time):
msg = mido.Message(msg_type, channel=channel, note=note, velocity=velocity, time=time)
track.append(msg)
# BPMを設定
bpm = 120
ticks_per_beat = mid.ticks_per_beat
time_per_beat = 60 / bpm
time_per_tick = time_per_beat / ticks_per_beat
# MIDIメッセージを生成
def add_notes(notes, duration):
for note in notes:
add_midi_message('note_on', 0, note, 127, 0)
ticks = int(duration / time_per_tick)
for i in range(len(notes)):
add_midi_message('note_off', 0, notes[i], 0, ticks if i == len(notes) - 1 else 0)
# メロディーラインの生成
add_notes([60, 62, 64, 65, 67, 69, 71, 72], 2*time_per_beat)
add_notes([72, 71, 69, 67, 65, 64, 62, 60], 2*time_per_beat)
add_notes([60, 62, 64, 65, 67, 69, 71, 72], 2*time_per_beat)
add_notes([72, 71, 69, 67, 65, 64, 62, 60], 2*time_per_beat)
# コーラスの生成
for i in range(2):
add_notes([60, 64, 67], 4*time_per_beat)
add_notes([67, 64, 60], 4*time_per_beat)
add_notes([60, 65, 69], 4*time_per_beat)
add_notes([69, 65, 60], 4*time_per_beat)
# MIDIファイルを保存
mid.save('onigiri.mid')
なるほど。
これを実行してみればいいのか。
ということで、ターミナルを立ち上げて、
実行してみた。
っと、ほんとに生成された。
できた
こいつをAbleton Liveに入れてみる。
MIDIの中身はこんな感じ。
すっごい短いノードがあるが、和音が生成されているのがみれる。
エレクトリックピアノでシンプル聞いてみる。
ん〜。非常に独創的だな。
が、せっかくなので、歌も載せてみようってことで、音声を生成。
SynthVなども考えたけれど、今回はMacのデフォルトで使用できるSayコマンドで読んでもらった。
せっかくだからってことで、先ほどのMIDIトラックは使いつつ音色を選んで、ドラムもつけてみた。
で、できたのがこれ。
なんか楽しくなってちょっとエディットしちゃったけど、いいのか悪いのかはよくわからないという結果になりました。
煮詰まった時なんかにChatGPTに相談してみるてのは、意外とありかもしれない。
それではまた。
この記事が気に入ったらサポートをしてみませんか?