Happy Birthday in Sonic Pi

This is a very simplistic rendition of the Happy Birthday song, played with Sonic Pi. Thanks to Musescore for the sheet music

I wrote it in code from the sheet music. play 60 is like playing middle-c on a piano.
To play notes procedurally, it was necessary to mix sustain & sleep like so:

play 60, sustain: 1    
sleep 1    
play 61 ...    

Of note was the need to set the beats-per-minute with use_bpm 90. As the sheet music is in 3/4 time, I THINK this is correct. I think that's how it works, but I'm very novice at music & even more novice at sonic pi (though much more experienced coding in general).

Happy Birthday Code

I have not gone through it again to ensure I got the notes correct

# Welcome to Sonic Pi v2.10    
#60 = Middle C    
#67    
use_bpm 90    
use_synth piano    
# 1 measure = 3 beats (3/4 time).     
# if 120-bpm, then 3 beats per measure means 40 measures per minute    
#    this yields 60sec/40measures = 1.33 (or 3/2) seconds per measure    
# But I want one measure to = 1 second    
# So, I switched to 90 bpm    
    
# first measure    
sleep 2    
play 64, sustain: 0.5    
sleep 0.5    
play 64, sustain: 0.5    
sleep 0.5    
play 65, sustain: 1    
play 57, sustain: 2    
play 55, sustain: 2    
play 53, sustain: 2    
sleep 1    
play 64, sustain: 1    
sleep 1    
    
# 2nd measure    
play 67, sustain: 1    
sleep 1    
play 66, sustain: 2    
play 57, sustain: 2    
play 56, sustain: 2    
play 54, sustain: 2    
sleep 2    
    
# 3rd measure    
play 64, sustain: 0.5    
sleep 0.5    
play 64, sustain: 0.5    
sleep 0.5    
play 65, sustain: 1    
play 57, sustain: 2    
play 56, sustain: 2    
play 52, sustain: 2    
sleep 1    
play 64, sustain: 1    
sleep 1    
    
# 4th measure    
play 68, sustain: 1    
sleep 1    
play 67, sustain: 2    
play 57, sustain: 2    
play 56, sustain: 2    
play 54, sustain: 2    
sleep 2    
    
# 5th measure    
play 64, sustain: 0.5    
sleep 0.5    
play 64, sustain: 0.5    
sleep 0.5    
play 71, sustain: 1    
play 60, sustain: 2    
play 58.5, sustain: 2    
play 55, sustain: 2    
sleep 1    
play 69, sustain: 1    
sleep 1    
    
#6th Measure    
play 67, sustain: 1    
sleep 1    
play 66, sustain: 1    
play 60, sustain: 2    
play 58, sustain: 2    
play 56, sustain: 2    
sleep 1    
play 65, sustain: 1    
sleep 1    
    
# 6th Measure    
play 70, sustain: 0.5    
sleep 0.5    
play 70, sustain: 0.5    
sleep 0.5    
play 69, sustain: 1    
play 60, sustain: 2    
play 57, sustain: 2    
play 55, sustain: 2    
sleep 1    
play 67, sustain: 1    
sleep 1    
    
# 7th measure, final    
play 68, sustain: 1    
play 57, sustain: 1    
play 56, sustain: 1    
play 54, sustain: 1    
sleep 1    
play 64, sustain: 2    
    
play 57, sustain: 2    
play 55, sustain: 2    
play 53, sustain: 2    
sleep 2