I just tried to ask chat gpt to create a song for sonic pi as a professional programmer and musician and got after changing my questions this result.
It is a running code and it is not too bad. Whats your opinion about this?
Welcome to Sonic Pi
use_bpm 120
Drums
live_loop :drums do
sample :drum_heavy_kick
sleep 0.5
sample :drum_snare_hard
sleep 0.5
sample :drum_heavy_Kick
sleep 0.5
sample :drum_snare_hard
sleep 0.5
end
Bass
live_loop :bass do
use_synth :tb303
play :c2, release: 0.1, cutoff: rrand(70, 130)
sleep 0.5
play :g1, release: 0.1, cutoff: rrand(70, 130)
sleep 0.5
end
Chords
live_loop :chords do
use_synth :piano
play_chord [:c4, :e4, :g4], release: 2
sleep 2
play_chord [:e4, :g4, :b4], release: 2
sleep 2
end
Lead melody
live_loop :melody do
use_synth :blade
play :c5, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :e5, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :g5, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :b5, release: 2, cutoff: rrand(70, 130)
sleep 0.5
end
Structure
in_thread do
4.times do
sync :drums
cue :bass
cue :chords
cue :melody
sleep 8
end
sync :drums
stop
end
Effects
live_loop :reverb do
use_synth :piano
play :c4, release: 2, cutoff: rrand(70, 130), reverb: 0.8
sleep 2
end
Drop
define :drop do
with_fx :reverb, room: 0.8 do
with_fx :distortion, distort: 0.8 do
sample :drum_heavy_kick
sleep 0.5
sample :drum_snare_hard
sleep 0.5
end
end
end
Refrain
define :refrain do
with_fx :reverb, room: 0.8 do
use_synth :piano
play_chord [:c4, :e4, :g4], release: 2
sleep 2
play_chord [:e4, :g4, :b4], release: 2
sleep 2
end
end
additional instruments
live_loop :strings do
use_synth :chipbass
play :e4, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :g4, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :b4, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :d5, release: 2, cutoff: rrand(70, 130)
sleep 0.5
end
live_loop :guitar do
use_synth :pluck
play :e3, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :g3, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :b3, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :d4, release: 2, cutoff: rrand(70, 130)
sleep 0.5
end
live_loop :vocals do
use_synth :saw
play :c3, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :e3, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :g3, release: 2, cutoff: rrand(70, 130)
sleep 0.5
play :b3, release: 2, cutoff: rrand(70, 130)
sleep 0.5
end
Drops and refrains
in_thread do
sync :drums
drop
sleep 8
refrain
sleep 8
drop
sleep 8
refrain
sleep 8
stop
end