この記事では、AI技術であるChatGPTと音楽制作ツールSonic Piを使い、音楽の知識がない人でも簡単にオリジナルの曲を作る方法を紹介します。
曲を作り上げる過程を一緒に楽しみながら、新たな音楽創作の一面を体験してみませんか?
Sonic Piとは
Sonic Piとは、プログラミングを通じて音楽を作ることができる無料ツールです。Rubyというプログラム言語を用いて音楽を作ることが可能です。
使い方
まずは公式サイトから無料ダウンロード。(対応OS:Windows/Mac/Raspberry Pi)
Sonic Pi公式サイト https://sonic-pi.net/
ダウンロードしたファイルを開けるとこのような画面が出てきます。
- 実行
- 停止
- コード入力
- 結果
後はコードを入力するだけです。
Sonic Piを使うアーティスト
Sonic Piを使って音楽を作るアーティストのパフォーマンスもYouTubeで見ることができます。興味がある方はこちらをご覧ください。
作曲をしてみる
実際に、Sonic PiとChatGPTを組み合わせてロック調の曲を作ってみます。
BPM(テンポ)は160でSonic Pi内で設定しました。
◆ロック①簡単ver
まずはChatGPTにこのように指示してみます。
Sonic Piを使ってロックの曲を制作したいです。 コードを作成してください。
ChatGPTが書いてくれたrubyコードをSonic Piにコピペして音を鳴らしてみます。
↓完成した音源
↓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
さらに洗練された楽曲を作成してください。
![](https://ai.gridworld.co/wp-content/uploads/2023/07/スクリーンショット-2023-07-19-095903.png)
![](https://ai.gridworld.co/wp-content/uploads/2023/07/スクリーンショット-2023-07-19-095916.png)
# ドラムパターンの定義 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
これよりさらに洗練された楽曲を作成してください。
![](https://ai.gridworld.co/wp-content/uploads/2023/07/スクリーンショット-2023-07-19-112244.png)
![](https://ai.gridworld.co/wp-content/uploads/2023/07/スクリーンショット-2023-07-19-112304.png)
# ドラムパターンの定義 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
これよりもさらに洗練された楽曲を作成してください。
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
これよりもさらに洗練された楽曲を作成してください。
![](https://ai.gridworld.co/wp-content/uploads/2023/07/スクリーンショット-2023-07-19-122909.png)
![](https://ai.gridworld.co/wp-content/uploads/2023/07/スクリーンショット-2023-07-19-122920.png)
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
これよりもさらに洗練された楽曲を作成してください。
![](https://ai.gridworld.co/wp-content/uploads/2023/07/スクリーンショット-2023-07-19-124328.png)
![](https://ai.gridworld.co/wp-content/uploads/2023/07/スクリーンショット-2023-07-19-124340.png)
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
◆終了
これよりもさらに洗練された楽曲を作成してください。
![](https://ai.gridworld.co/wp-content/uploads/2023/07/スクリーンショット-2023-07-19-154443.png)
まとめ
まだ配信や販売するレベルの楽曲は作れませんでしたが、ChatGPTに対して適切な指示を出すことができれば、より良い曲が作れるかもしれません。
ChatGPTを使っての作曲は一緒に会話をしているような感じがして楽しかったです。
音楽の知識がない人でも、ChatGPTとSonic Piの組み合わせで自分だけの曲を作ることができることがわかったので、皆さんにもぜひ一度やっていただき、音楽創作の新たな一面を広げることができればと思います。
![](https://gridworld.co/wp-content/uploads/2024/02/21-1.png)
従来の記事作成と異なり、AIを使うことで大量のデータから
最適な情報を選び出し、コスパ良く記事を生み出すことが可能です。
時間の節約、コスト削減、品質の維持。
AI記事作成代行サービスは、効率よく質の高い記事を作成いたします。
コメント