Chipmunk Basic, 677 303 280 241 228 bytes
dim m(20):d$="GIKNDFGKGIKNDFGK@BDGBDFICGJNEILP":for k=0to 7
for i=0to 4:for o=1to 4:m(o+4*i)=555*2^(asc(mid$(d$,k*4+o))/12+i-8):next:next
for i=1to 17:s(m(i)):next:for i=1to 16:s(m(17-i)):next:next
sub s(x):sound x,.2,50:return
Try the debug version on TutorialsPoint!
The info about chords and octaves in the "music theory" section helped a lot.
Ungolfed:
dim m(20)
d$="GIKNDFGKGIKNDFGK@BDGBDFICGJNEILP"
for k=0to 7 :' the 8 chords
for i=0to 4 :' ascend arpeggio for 5 octaves
for o=1to 4 :' broken into 4 notes
m(o+4*i)=555*2^(asc(mid$(d$,k*4+o))/12+i-8)
:' ^ ^ ^-- get an ascii value from the middle of d$
:' | | and convert it to a frequency (Hz)
:' | +-- base frequency A=440Hz, adjusted slightly
:' +-- populate m(1) to m(20), but only use 17 notes
next
next
for i=1to 17:s(m(i)):next :' ascend
for i=1to 16:s(m(17-i)):next :' descend
next
sub s(x):sound x,.2,50:return