Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
# Sonic Pi tutorial: https://sonic-pi.net/tutorial
# Gymnopédie No. 1 by Erik Satie – sheet music: https://musopen.org/music/8010-3-gymnopedies/
# Coded by Alex Glow
in_thread(name: :bass) do
bass_iter = 0
with_fx :reverb, room: 1 do
2.times do
8.times do
#with_fx :echo, mix: 0.4, phase: 0.4 do
play :G3
sleep 1
play :B4
play :D5
play :Fs5
sleep 2
play :D3
sleep 1
play :A4
play :Cs5
play :Fs5
sleep 2
end
# second go-round
play :Fs3
sleep 1
play :A4
play :Cs5
play :Fs5
sleep 2
play :B2
sleep 1
play :B4
play :D5
play :Fs5
sleep 2
play :E3
sleep 1
play :G4
play :B4
sleep 2
play :E3
sleep 1
play :B4
play :D5
play :G5
sleep 2
play :D3
sleep 1
play :F4
play :A4
play :D5
sleep 2
# part 2
play :A2
sleep 1
play :A4
play :C5
play :E5
sleep 2
play :D3
sleep 1
play :G4
play :B4
play :E5
sleep 2
play :D3
sleep 1
play :D4
play :G4
play :B4
play :E5
sleep 2
play :D3
sleep 1
play :C4
play :E4
play :A4
play :D5
sleep 2
play :D3
sleep 1
play :C4
play :Fs4
play :A4
play :D5
sleep 2
play :D3
sleep 1
play :A4
play :C5
play :F5
sleep 2
play :D3
sleep 1
play :A4
play :C5
play :E5
sleep 2
play :D3
sleep 1
play :D4
play :G4
play :B4
play :E5
sleep 2
play :D3
sleep 1
play :C4
play :E4
play :A4
play :D5
sleep 2
play :D3
sleep 1
play :C4
play :Fs4
play :A4
play :D5
sleep 2
if (bass_iter == 0)
# discordant fork 1
play :E3
sleep 1
play :B4
play :E5
play :G5
sleep 2
play :Fs3
sleep 1
play :A4
play :Cs5
play :Fs5
sleep 2
play :B2
sleep 1
play :B4
play :D5
play :Fs5
sleep 2
play :E3
sleep 1
play :Cs5
play :E5
play :A5
sleep 2
play :E3
sleep 1
play :A4
play :Cs5
play :Fs5
play :A5
sleep 2
play :E3
sleep 1
play :B3
play :A4
play :D5
sleep 1
play :E4
play :B4
play :D5
play :G5
sleep 1
play :A3, release: 3
play :G4, release: 3
play :C5, release: 3
play :E5, release: 3
play :A5, release: 3
play :C6, release: 3
sleep 3
play :D3, release: 3
play :A3, release: 3
play :D4, release: 3
play :D5, release: 3
play :Fs5, release: 3
play :A5, release: 3
play :D6, release: 3
sleep 3
bass_iter = 1
else
# discordant fork 2
play :E3
sleep 1
play :B4
play :E5
play :G5
sleep 2
play :E3
sleep 1
play :A4
play :D5
play :F5
play :A5
sleep 2
play :E3
sleep 1
play :A4
play :C5
play :F5
sleep 2
play :E3
sleep 1
play :C5
play :E5
play :A5
sleep 2
play :E3
sleep 1
play :A4
play :C5
play :F5
play :A5
sleep 2
play :E3
sleep 1
play :B3
play :A4
play :D5
sleep 1
play :E4
play :B4
play :D5
play :G5
sleep 1
play :A3, release: 3
play :G4, release: 3
play :C5, release: 3
play :E5, release: 3
play :A5, release: 3
play :C6, release: 3
sleep 3
play :D3, release: 3
play :A3, release: 3
play :D4, release: 3
play :D5, release: 3
play :F5, release: 3
play :A5, release: 3
play :D6, release: 3
sleep 3
end # bifurcation
end # 2.times
end # with_fx
end # thread
in_thread(name: :treble) do
treb_iter = 0
with_fx :reverb, room: 1 do
use_synth :blade
2.times do
sleep 13
play :Fs6
sleep 1
play :A6
sleep 1
play :G6
sleep 1
play :Fs6
sleep 1
play :Cs6
sleep 1
play :B5
sleep 1
play :Cs6
sleep 1
play :D6
sleep 1
play :A5
sleep 3
play :Fs5, release: 3
sleep 12
# second go-round
sleep 1
play :Fs6
sleep 1
play :A6
sleep 1
play :G6
sleep 1
play :Fs6
sleep 1
play :Cs6
sleep 1
play :B5
sleep 1
play :Cs6
sleep 1
play :D6
sleep 1
play :A5
sleep 3
play :Cs6
sleep 3
play :Fs6
sleep 3
play :E4, release: 3
sleep 9
# part 2
play :A5
sleep 1
play :B5
sleep 1
play :C6
sleep 1
play :E6
sleep 1
play :D6
sleep 1
play :B5
sleep 1
play :D6
sleep 1
play :C6
sleep 1
play :B5
sleep 1
play :D6
sleep 5
play :D6
sleep 1
play :E6
sleep 1
play :F6
sleep 1
play :G6
sleep 1
play :A6
sleep 1
play :C6
sleep 1
play :D6
sleep 1
play :E6
sleep 1
play :D6
sleep 1
play :B5
sleep 1
play :D6
sleep 5
play :D6
sleep 1
if (treb_iter == 0)
# discordant fork 1
play :G6
sleep 3
play :Fs6
sleep 3
play :B5
sleep 1
play :A5
sleep 1
play :B5
sleep 1
play :Cs6
sleep 1
play :D6
sleep 1
play :E6
sleep 1
play :Cs6
sleep 1
play :D6
sleep 1
play :E6
sleep 1
play :Fs5
sleep 2
play :G5
sleep 1
play :A5, release: 3
sleep 3
play :A5, release: 3
sleep 3
treb_iter = 1
else
# discordant fork 2
play :G6
sleep 3
play :F6
sleep 3
play :B5
sleep 1
play :C6
sleep 1
play :F6
sleep 1
play :E6
sleep 1
play :D6
sleep 1
play :C6
sleep 1
play :E6
sleep 1
play :D6
sleep 1
play :C6
sleep 1
play :F5
sleep 2
play :G5
sleep 1
play :A5, release: 3
sleep 3
play :A5, release: 3
sleep 3
end # bifurcation
end # 2.times
end # with_fx
end # thread
@alexglow

This comment has been minimized.

Copy link
Owner Author

@alexglow alexglow commented Sep 10, 2019

This is not the full song, nor very well coded, but a pretty beginning. :)

@alexglow

This comment has been minimized.

Copy link
Owner Author

@alexglow alexglow commented Sep 10, 2019

Full song now! Needs a bit of tweaking to sound really nice, but I like the Blade Runner synth in there for the treble!
Also, I think the whole thing is an octave higher than it should be, but... it's sweet and cute and lovely. :)

@alexglow

This comment has been minimized.

Copy link
Owner Author

@alexglow alexglow commented Sep 10, 2019

hear it on soundcloud: https://soundcloud.com/alexglow/sleepy-satie-gymnopedie-1-as-pixel-art
infuriatingly, there is one note off in the recording. see if you can find it. i probably will not re-record/upload it, because that is a pain in the ass... but i have updated the code here. <3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.