%LET whole = 500 ; *whole note in milliseconds ; DATA _NULL_ ; RETAIN ns 'CnC#DnD#EnFnF#GnG#AnA#Bn' nf 'CnDbDnEbEnFnGbGnAbAnBbBn' ; INFILE cards DLM = '|' DSD; INPUT ont: $10. @@; nt = PUT (SUBSTR (ont,2), $2.); md = PUT (SCAN (ont,2), $4.); n = 12 * INPUT (ont, 1.) - 8.5 + (FIND (ns,nt) <> FIND (nf,nt)) / 2; f = 27.5 * 2 ** ((n - 1) / 12) ; CALL SOUND (f, &whole * (1 + ^^ findc (md,'.') / 2) / input (md, 3.)); CARDS; 4An 4 |4An 4 |4An 2 |4An 4 |4An 4 |4An 2|4An 4|5Cn 4 |4Fn 4. 4Gn 8 |4An 4 |4Fn 4 |4En 4 |4Eb 4 |4Bb 4|4Bb 4|4Bb 4.|4Bb 8 4Bb 4 |4An 4 |4An 4 |4An 8 |4An 8 |4An 4|4Gn 4|4Gn 4 |4An 4 4Gn 4 |4En 4 |5Cn 2 |4An 4 |4An 4 |4An 2|4An 4|4An 4 |4An 2 4An 4 |5Cn 4 |4Fn 4.|4Gn 8 |4An 4 |4Fn 4|4En 4|4Eb 4 |4Bb 4 4Bb 4 |4Bb 4.|4Bb 8 |4Bb 4 |4An 4 |4An 4|4An 8|4An 8 |5Cn 4 5Cn 4 |4Bb 4 |4Gn 4 |4Fn 1 |4Cn 4 |4An 4|4Gn 4|4Fn 4 |4Cn 4 3An 8 |3An 8 |3Cn 4 |4Cn 8 |4Cn 4 |4An 4|4Gn 4|4Fn 4 |4Dn 4 3Fn 8 |3Fn 8 |2Fn 4 |3Fn 4 |4Dn 4 |4Bb 4|4An 4|4Gn 4 |4En 4 3Gn 8 |3Gn 8 |2Gn 4 |3Gn 4 |5Cn 4 |5Cn 4|4Bb 4|4Gn 4 |4An 4 3En 4 |3Dn 4 |3Cn 4 |4Cn 4 |4An 4 |4Gn 4|4Fn 4|4Cn 4 |3An 8 3An 8 |3Cn 4 |3An 8 |4Cn 4 |4An 4 |4Gn 4|4Fn 4|4Dn 4 |3Fn 8 3Fn 8 |2Fn 4 |3Fn 4 |4Dn 4 |4Bb 4 |4An 4|4Gn 4|5Cn 4 |5Cn 4 5Cn 4 |5Cn 8 |5Cn 8 |5Dn 4 |5Cn 4 |4Bb 4|4Gn 4|4Fn 4 |4En 4 4G# 4 |5Cn 4 |4An 4 |4An 4 |4An 2 |4An 4|4An 4|4An 2 |4An 4 5Cn 4 |4Fn 4.|4Gn 8 |4An 4 |4Fn 4 |4En 4|4Eb 4|4Bb 4 |4Bb 4 4Bb 4.|4Bb 8 |4Bb 4 |4An 4 |4An 4 |4An 8|4An 8|4An 4 |4Gn 4 4Gn 4 |4An 4 |4Gn 4 |4En 4 |5Cn 2 |4An 4|4An 4|4An 2 |4An 4 4An 4 |4An 2 |4An 4 |5Cn 4 |4Fn 4.|4Gn 8|4An 4|4Fn 4 |4En 4 4Eb 4 |4Bb 4 |4Bb 4 |4Bb 4.|4Bb 8 |4Bb 4|4An 4|4An 4 |4An 8 4An 8 |5Cn 4 |5Cn 4 |4Bb 4 |4Gn 4 |4Fn 4|4Cn 4|4Fn 2 RUN;