たった10秒で作曲!?ChatGPTとSonic Piを使った新時代の作曲法とは

この記事では、AI技術であるChatGPTと音楽制作ツールSonic Piを使い、音楽の知識がない人でも簡単にオリジナルの曲を作る方法を紹介します。

曲を作り上げる過程を一緒に楽しみながら、新たな音楽創作の一面を体験してみませんか?

目次

Sonic Piとは

Sonic Piとは、プログラミングを通じて音楽を作ることができる無料ツールです。Rubyというプログラム言語を用いて音楽を作ることが可能です。

使い方

まずは公式サイトから無料ダウンロード。(対応OS:Windows/Mac/Raspberry Pi)

Sonic Pi公式サイト https://sonic-pi.net/

ダウンロードしたファイルを開けるとこのような画面が出てきます。

  1. 実行
  2. 停止
  3. コード入力
  4. 結果

 

後はコードを入力するだけです。

Sonic Piを使うアーティスト

Sonic Piを使って音楽を作るアーティストのパフォーマンスもYouTubeで見ることができます。興味がある方はこちらをご覧ください。

作曲をしてみる

実際に、Sonic PiとChatGPTを組み合わせてロック調の曲を作ってみます。

BPM(テンポ)は160でSonic Pi内で設定しました。

◆ロック①簡単ver

まずはChatGPTにこのように指示してみます。

Sonic Piを使ってロックの曲を制作したいです。 コードを作成してください。

ChatGPTが書いてくれたrubyコードをSonic Piにコピペして音を鳴らしてみます。

↓完成した音源

ドラム・ベース・ギターのみのシンプルなループが作成されました。
これだけでもう曲の土台が完成しましたね、、、すごい、、、
拍子は珍しい6/8拍子で作成されているのが少し面白いですね。(基本は4/4または8/8)
さらに洗練された楽曲を作成することも可能らしいので、
「さらに洗練された楽曲を作成してください。」
とだけ指示して、どこまで曲が良くなるのか試してみました。

↓ChatGPTが書いたrubyコード

# ドラムパターンの定義 define :drums do 3.times do sample :drum_heavy_kick sleep 1 sample :drum_snare_hard sleep 1 end sample :drum_heavy_kick sleep 0.5 sample :drum_heavy_kick sleep 0.5 sample :drum_snare_hard sleep 1 end # ベースラインの定義 define :bass_line do play_pattern_timed [:e2, :e2, :r, :g2, :r, :a2, :a2, :a2, :r, :a2, :g2, :r], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], amp: 0.5 end # ギターリフの定義 define :guitar_riff do use_synth :pluck play_pattern_timed [:e3, :r, :r, :g3, :r, :a3, :a3, :a3, :r, :a3, :g3, :e3], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], amp: 0.8 end # メインセクション in_thread do loop do drums end end in_thread do sleep 1 loop do bass_line end end in_thread do sleep 2 loop do guitar_riff end end

◆ロック②洗練されたver

さらに洗練された楽曲を作成してください。
 
曲の長さを増やすことで、拍子が8/8になり、
ギターにエフェクトがかかったことで音が少し太くなりました。
しかし全体的に見てそこまでクオリティが上がったようには思えません。
# ドラムパターンの定義 define :drums do |n| n.times do sample :drum_heavy_kick sleep 1 sample :drum_snare_hard sleep 1 end sample :drum_heavy_kick sleep 0.5 sample :drum_heavy_kick sleep 0.5 sample :drum_snare_hard sleep 1 end # ベースラインの定義 define :bass_line do use_synth :fm play_pattern_timed [:e2, :e2, :r, :g2, :r, :a2, :a2, :a2, :r, :a2, :g2, :r, :e2, :e2, :e2, :e2], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], amp: 0.5, attack: 0.1, release: 0.1 end # ギターリフの定義 define :guitar_riff do use_synth :pluck play_pattern_timed [:e3, :r, :r, :g3, :r, :a3, :a3, :a3, :r, :a3, :g3, :e3, :e3, :g3, :a3, :g3], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], amp: 0.8 end # メインセクション in_thread do loop do drums 4 end end in_thread do sleep 2 loop do bass_line end end in_thread do sleep 4 loop do with_fx :distortion, mix: 0.7 do guitar_riff end end end

◆ロック③ さらに洗練されたver

これよりさらに洗練された楽曲を作成してください。
ドラムにリバーブエフェクト(エコーのようなもの)、ベースの音が変わりました。
ここでギターのノート(音数)が増えたことによって他の楽器とのリズムが異なり、
ループして曲が進むにつれて音がずれてカオスな状態になってきました。
# ドラムパターンの定義 define :drums do with_fx :reverb, room: 0.5 do 2.times do sample :bd_haus, amp: 2 sleep 0.5 sample :drum_snare_hard sleep 0.5 sample :bd_haus, amp: 2 sleep 0.5 end sample :drum_cymbal_hard, sustain: 0.4, release: 1, amp: 1.5 sleep 1 end end # ベースラインの定義 define :bass_line do use_synth :subpulse use_synth_defaults cutoff: 80, res: 0.5, attack: 0, release: 0.2 play_pattern_timed [:e1, :r, :e1, :r, :g1, :r, :a1, :a1, :a1, :r, :a1, :g1, :r, :e1, :e1, :e1], [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], amp: 1.5 end # ギターリフの定義 define :guitar_riff do use_synth :pluck with_fx :distortion, mix: 0.7 do play_pattern_timed [:e3, :r, :r, :g3, :r, :a3, :a3, :a3, :r, :a3, :g3, :e3, :e3, :g3, :a3, :g3, :b3, :a3, :g3, :e3, :g3, :a3, :g3, :e3, :g3, :a3, :g3, :b3, :a3, :g3], [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], amp: 0.8 end end # メインセクション in_thread do loop do drums end end in_thread do sleep 2 loop do bass_line end end in_thread do sleep 4 loop do guitar_riff end end

◆ロック④ さらにさらに洗練されたver

これよりもさらに洗練された楽曲を作成してください。

キーボードが加わり、各パートのエフェクトや音色が変わりました。
リズムがずれたままなので、楽器の音が重なりあって終始カオスな状態になっています。
# ドラムパターンの定義 define :drums do with_fx :reverb, room: 0.5 do 2.times do sample :bd_haus, amp: 2 sleep 0.5 sample :drum_snare_hard sleep 0.5 sample :bd_haus, amp: 2 sleep 0.5 end sample :drum_cymbal_hard, sustain: 0.4, release: 1, amp: 1.5 sleep 1 end end # ベースラインの定義 define :bass_line do use_synth :subpulse use_synth_defaults cutoff: 80, res: 0.5, attack: 0, release: 0.2 play_pattern_timed [:e1, :r, :e1, :r, :g1, :r, :a1, :a1, :a1, :r, :a1, :g1, :r, :e1, :e1, :e1], [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], amp: 1.5 end # リズムギターリフの定義 define :guitar_riff do use_synth :pluck with_fx :distortion, mix: 0.7 do play_pattern_timed [:e3, :r, :r, :g3, :r, :a3, :a3, :a3, :r, :a3, :g3, :e3, :e3, :g3, :a3, :g3, :b3, :a3, :g3, :e3, :g3, :a3, :g3, :e3, :g3, :a3, :g3, :b3, :a3, :g3], [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], amp: 0.8 end end # リードギターパート define :lead_guitar do use_synth :saw use_synth_defaults attack: 0.5, release: 1 with_fx :reverb, room: 1 do play_pattern_timed [:e4, :e4, :g4, :a4, :a4, :a4, :g4, :e4, :e4, :g4, :a4, :g4, :e4, :e4, :e4], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], amp: 0.6 end end # キーボードパート define :keyboard do use_synth :prophet use_synth_defaults attack: 0.5, release: 0.5 with_fx :reverb, room: 1 do play_pattern_timed [:e4, :g4, :a4, :g4, :e4, :g4, :a4, :g4, :e4, :g4, :a4, :g4, :e4, :g4, :a4], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], amp: 0.4 end end # メインセクション in_thread do loop do drums end end in_thread do sleep 2 loop do bass_line end end in_thread do sleep 4 loop do guitar_riff end end in_thread do sleep 8 loop do lead_guitar end end in_thread do sleep 16 loop do keyboard end end

◆ロック⑤ さらにさらにさらに洗練されたver

これよりもさらに洗練された楽曲を作成してください。

BPMが120に指定されました。
2回繰り返す曲に変わり、
1回目音量小、2回目音量大でダイナミクス(音の強弱)を表現していました。
リバーブやリズムの影響によりカオスな状態が続いています。
ChatGPTに足し算ではなく引き算をして聴きやすいものに修正してほしいですね、、、
use_bpm 120 # ドラムパターンの定義 define :drums do |amp| with_fx :reverb, room: 0.5 do 4.times do sample :bd_haus, amp: amp sleep 0.5 sample :drum_snare_hard, amp: amp sleep 0.5 end sample :drum_cymbal_hard, sustain: 0.4, release: 1, amp: amp sleep 1 end end # ベースラインの定義 define :bass_line do |amp| use_synth :fm use_synth_defaults attack: 0.05, release: 0.2 play_pattern_timed [:e2, :r, :e2, :r, :g2, :r, :a2, :b2, :d3, :b2, :a2, :g2, :a2, :e2], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], amp: amp end # リズムギターリフの定義 define :guitar_riff do |amp| use_synth :pluck use_synth_defaults attack: 0.05, release: 0.2 with_fx :distortion, mix: 0.7 do play_pattern_timed [:e3, :r, :r, :g3, :r, :a3, :b3, :d4, :b3, :a3, :g3, :a3, :e3], [0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], amp: amp end end # リードギターパート define :lead_guitar do |amp| use_synth :saw use_synth_defaults attack: 0.5, release: 1 with_fx :reverb, room: 1 do play_pattern_timed [:e4, :e4, :g4, :a4, :b4, :d5, :b4, :a4, :g4, :a4, :e4], [0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5], amp: amp end end # キーボードパート define :keyboard do |amp| use_synth :prophet use_synth_defaults attack: 0.5, release: 0.5 with_fx :reverb, room: 1 do play_pattern_timed [:e4, :g4, :a4, :b4, :d5, :b4, :a4, :g4, :a4, :e4], [0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5], amp: amp end end # ソフトパート in_thread do 4.times do drums(0.5) end end in_thread do sleep 4 4.times do bass_line(0.5) end end in_thread do sleep 8 4.times do guitar_riff(0.5) end end in_thread do sleep 12 4.times do lead_guitar(0.5) end end in_thread do sleep 16 4.times do keyboard(0.5) end end # ハードパート in_thread do sleep 32 4.times do drums(1.0) end end in_thread do sleep 36 4.times do bass_line(1.0) end end in_thread do sleep 40 4.times do guitar_riff(1.0) end end in_thread do sleep 44 4.times do lead_guitar(1.0) end end in_thread do sleep 48 4.times do keyboard(1.0) end end

◆ロック⑥さらに×4洗練されたver

これよりもさらに洗練された楽曲を作成してください。
モチーフが追加されました。
変形?逆さま?や引き延ばした結果、楽器ごとのキーが変わり不協和音が生まれてしまいました。
use_bpm 120 # メインのモチーフ motif_notes = [:e3, :g3, :a3, :b3, :d4, :b3, :a3, :g3, :a3, :e3] motif_rhythm = [0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5] # ドラムパート define :drums do |amp| with_fx :reverb, room: 0.5 do 4.times do sample :bd_haus, amp: amp sleep 0.5 sample :drum_snare_hard, amp: amp sleep 0.5 end sample :drum_cymbal_hard, sustain: 0.4, release: 1, amp: amp sleep 1 end end # ベースライン define :bass_line do |amp| use_synth :fm use_synth_defaults attack: 0.05, release: 0.2 play_pattern_timed motif_notes.map {|n| n-1}, motif_rhythm, amp: amp end # リズムギターパート define :guitar_riff do |amp| use_synth :pluck use_synth_defaults attack: 0.05, release: 0.2 with_fx :distortion, mix: 0.7 do play_pattern_timed motif_notes.reverse, motif_rhythm.reverse, amp: amp end end # リードギターパート define :lead_guitar do |amp| use_synth :saw use_synth_defaults attack: 0.5, release: 1 with_fx :reverb, room: 1 do play_pattern_timed motif_notes, motif_rhythm.map {|r| r * 2}, amp: amp end end # キーボードパート define :keyboard do |amp| use_synth :prophet use_synth_defaults attack: 0.5, release: 0.5 with_fx :reverb, room: 1 do play_pattern_timed motif_notes, motif_rhythm, amp: amp end end # パートの再生 in_thread do 4.times do drums(0.5) end end in_thread do sleep 4 4.times do bass_line(0.5) end end in_thread do sleep 8 4.times do guitar_riff(0.5) end end in_thread do sleep 12 4.times do lead_guitar(0.5) end end in_thread do sleep 16 4.times do keyboard(0.5) end end # ハードパート in_thread do sleep 32 4.times do drums(1.0) end end in_thread do sleep 36 4.times do bass_line(1.0) end end in_thread do sleep 40 4.times do guitar_riff(1.0) end end in_thread do sleep 44 4.times do lead_guitar(1.0) end end in_thread do sleep 48 4.times do keyboard(1.0) end end

◆ロック⑦さらに×5洗練されたver

これよりもさらに洗練された楽曲を作成してください。
パート(イントロ、バース、プレコーラス、コーラス、ブリッジ、アウトロ)が追加されましたが、パートごとの長さが短すぎるため区切りがわかりませんでした。
use_bpm 120 # メインのモチーフ motif_notes = [:e3, :g3, :a3, :b3, :d4, :b3, :a3, :g3, :a3, :e3] motif_rhythm = [0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5] # ブリッジのモチーフ bridge_notes = [:e3, :d3, :c3, :b2, :a2, :b2, :c3, :d3, :e3] bridge_rhythm = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1] # パートの定義 define :drums do |amp| with_fx :reverb, room: 0.5 do 4.times do sample :bd_haus, amp: amp sleep 0.5 sample :drum_snare_hard, amp: amp sleep 0.5 end sample :drum_cymbal_hard, sustain: 0.4, release: 1, amp: amp sleep 1 end end define :bass_line do |amp, notes, rhythm| use_synth :fm use_synth_defaults attack: 0.05, release: 0.2 play_pattern_timed notes.map {|n| n-1}, rhythm, amp: amp end define :guitar_riff do |amp, notes, rhythm| use_synth :pluck use_synth_defaults attack: 0.05, release: 0.2 with_fx :distortion, mix: 0.7 do play_pattern_timed notes.reverse, rhythm.reverse, amp: amp end end define :lead_guitar do |amp, notes, rhythm| use_synth :saw use_synth_defaults attack: 0.5, release: 1 with_fx :reverb, room: 1 do play_pattern_timed notes, rhythm.map {|r| r * 2}, amp: amp end end define :keyboard do |amp, notes, rhythm| use_synth :prophet use_synth_defaults attack: 0.5, release: 0.5 with_fx :reverb, room: 1 do play_pattern_timed notes, rhythm, amp: amp end end # イントロ in_thread do 4.times do drums(0.5) end end # バース in_thread do sleep 4 4.times do bass_line(0.5, motif_notes, motif_rhythm) end end # プレコーラス in_thread do sleep 8 4.times do guitar_riff(0.5, motif_notes, motif_rhythm) end end # コーラス in_thread do sleep 12 4.times do lead_guitar(0.5, motif_notes, motif_rhythm) end end # ブリッジ in_thread do sleep 16 2.times do keyboard(0.5, bridge_notes, bridge_rhythm) end end # バース in_thread do sleep 20 4.times do bass_line(1.0, motif_notes, motif_rhythm) end end # プレコーラス in_thread do sleep 24 4.times do guitar_riff(1.0, motif_notes, motif_rhythm) end end # コーラス in_thread do sleep 28 4.times do lead_guitar(1.0, motif_notes, motif_rhythm) end end # アウトロ in_thread do sleep 32 4.times do drums(1.0) end end

◆終了

これよりもさらに洗練された楽曲を作成してください。
コードが作成されず、文章のみのアドバイスになってしまったのでここで終了です。
ChatGPTの作曲レベルは現段階でここまでのようですね。

まとめ

まだ配信や販売するレベルの楽曲は作れませんでしたが、ChatGPTに対して適切な指示を出すことができれば、より良い曲が作れるかもしれません。

ChatGPTを使っての作曲は一緒に会話をしているような感じがして楽しかったです。

音楽の知識がない人でも、ChatGPTとSonic Piの組み合わせで自分だけの曲を作ることができることがわかったので、皆さんにもぜひ一度やっていただき、音楽創作の新たな一面を広げることができればと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
Random Image

コメント

コメントする

目次