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