10 REM Resets the random-number generator 20 RANDOMIZE TIMER 30 DIM NOTE$(11) 40 SCREEN 1: COLOR 9, 15 50 GOSUB 1660: LOCATE 15, 1: PRINT "WELCOME TO MUSIC 1.0!" 60 PRINT : PRINT "THIS PROGRAM WILL TEACH YOU" 70 PRINT : PRINT "THE NOTES OF THE TREBLE CLEF." 80 START = TIMER: WHILE TIMER < (START + 10): WEND 90 REM Draws and plays a scale of music 100 CLS 110 GOSUB 1660 120 LOCATE 20, 1 130 PRINT "First, we'll play a scale for you." 140 START = TIMER: WHILE TIMER < (START + 5): WEND 150 LOCATE 12, 4 160 PRINT "C" 170 REM Draws and plays middle C 180 GOSUB 1900 190 PLAY "L2O3C" 200 START = TIMER: WHILE TIMER < (START + 1): WEND 210 LOCATE 12, 8 220 PRINT "D" 230 REM Draws and plays D 240 GOSUB 1910 250 PLAY "L2O3D" 260 START = TIMER: WHILE TIMER < (START + 1): WEND 270 LOCATE 12, 12 280 PRINT "E" 290 REM Draws and plays E 300 GOSUB 1920 310 PLAY "L2O3E" 320 START = TIMER: WHILE TIMER < (START + 1): WEND 330 LOCATE 12, 16 340 PRINT "F" 350 REM Draws and plays F 360 GOSUB 1930 370 PLAY "L2O3F" 380 START = TIMER: WHILE TIMER < (START + 1): WEND 390 LOCATE 12, 20 400 PRINT "G" 410 REM Draws and plays G 420 GOSUB 1940 430 PLAY "L2O3G" 440 START = TIMER: WHILE TIMER < (START + 1): WEND 450 LOCATE 12, 24 460 PRINT "A" 470 REM Draws and plays A 480 GOSUB 1950 490 PLAY "L2O3A" 500 START = TIMER: WHILE TIMER < (START + 1): WEND 510 LOCATE 12, 28 520 PRINT "B" 530 REM Draws and plays B 540 GOSUB 1960 550 PLAY "L2O3B" 560 START = TIMER: WHILE TIMER < (START + 1): WEND 570 LOCATE 12, 32 580 PRINT "C" 590 REM Draws and plays C 600 GOSUB 1970 610 PLAY "L2O4C" 620 START = TIMER: WHILE TIMER < (START + 5): WEND 630 REM Draws and plays line notes 640 CLS 650 GOSUB 1660 660 LOCATE 20, 1 670 PRINT "Next, we'll play the line notes" 680 PRINT : PRINT "of the treble clef." 690 START = TIMER: WHILE TIMER < (START + 5): WEND 700 PLAY "L2O3E" 710 REM E 720 CIRCLE (30, 45), 8, 7: PAINT (30, 50), 7: PAINT (30, 40), 7 730 LOCATE 12, 2 740 PRINT "EVERY": PRINT TAB(4); "E" 750 START = TIMER: WHILE TIMER < (START + 2): WEND 760 PLAY "L2O3G" 770 REM G 780 CIRCLE (80, 35), 8, 7: PAINT (80, 40), 7: PAINT (80, 30), 7 790 LOCATE 12, 9 800 PRINT "GOOD": LOCATE 13, 11: PRINT "G" 810 START = TIMER: WHILE TIMER < (START + 2): WEND 820 PLAY "L2O3B" 830 REM B 840 CIRCLE (130, 25), 8, 7: PAINT (130, 30), 7: PAINT (130, 20), 7 850 LOCATE 12, 16 860 PRINT "BOY": LOCATE 13, 17: PRINT "B" 870 START = TIMER: WHILE TIMER < (START + 2): WEND 880 PLAY "L2O4D" 890 REM D 900 CIRCLE (180, 15), 8, 7: PAINT (180, 20), 7: PAINT (180, 10), 7 910 LOCATE 12, 22 920 PRINT "DOES": LOCATE 13, 24: PRINT "D" 930 START = TIMER: WHILE TIMER < (START + 2): WEND 940 PLAY "L2O4F" 950 REM F 960 CIRCLE (230, 6), 7, 7: PAINT (230, 11), 7: PAINT (230, 1) 970 LOCATE 12, 29 980 PRINT "FINE": LOCATE 13, 31: PRINT "F" 990 START = TIMER: WHILE TIMER < (START + 2): WEND 1000 REM Draws and plays space notes 1010 CLS 1020 GOSUB 1660 1030 LOCATE 20, 1 1040 PRINT "Finally, we'll play the space notes" 1050 PRINT : PRINT "of the treble clef." 1060 START = TIMER: WHILE TIMER < (START + 5): WEND 1070 PLAY "L2O3F" 1080 REM F 1090 CIRCLE (30, 40), 7, 7: PAINT (30, 40), 7 1100 LOCATE 12, 4 1110 PRINT "F" 1120 START = TIMER: WHILE TIMER < (START + 2): WEND 1130 PLAY "L2O3A" 1140 REM A 1150 CIRCLE (80, 30), 7, 7: PAINT (80, 30), 7 1160 LOCATE 12, 11 1170 PRINT "A" 1180 START = TIMER: WHILE TIMER < (START + 2): WEND 1190 PLAY "L2O4C" 1200 REM C 1210 CIRCLE (130, 20), 7, 7: PAINT (130, 20), 7 1220 LOCATE 12, 17 1230 PRINT "C" 1240 START = TIMER: WHILE TIMER < (START + 2): WEND 1250 PLAY "L2O4E" 1260 REM E 1270 CIRCLE (180, 10), 7, 7: PAINT (180, 10), 7 1280 LOCATE 12, 24 1290 PRINT "E" 1300 START = TIMER: WHILE TIMER < (START + 5): WEND 1310 REM Quizzes user on 10 randomly selected notes 1320 CLS 1330 GOSUB 1660 1340 LOCATE 15, 1 1350 PRINT "VERY GOOD!": PRINT : PRINT "NOW, IT'S QUIZ TIME!!!" 1360 PRINT : PRINT "Please type your answer in CAPS." 1370 PRINT : PRINT "Press the ENTER key after each answer." 1380 START = TIMER: WHILE TIMER < (START + 5): WEND: CLS 1390 REM Reads the note names 1400 FOR I = 1 TO 11 1410 READ NOTE$(I) 1420 NEXT I 1430 FOR I = 1 TO 10 1440 REM Generates a random-number which corresponds to each note 1450 Q = INT(RND * 11) + 1 1460 REM Checks to see if the note has already been asked 1470 IF NOTE$(Q) = "X" THEN 1450 1480 CLS 1490 GOSUB 1660 1500 REM Directs program to the subroutine which draws the corresponding note 1510 ON Q GOSUB 1900, 1910, 1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990, 2000 1520 LOCATE 20, 1 1530 INPUT "WHAT IS THE NOTE"; A$ 1540 IF A$ = NOTE$(Q) THEN PRINT "CORRECT.": C = C + 1 ELSE PRINT "SORRY, THE CORRECT ANSWER IS "; NOTE$(Q); "." 1550 START = TIMER: WHILE TIMER < (START + 3): WEND 1560 REM Marks each note after it has been asked 1570 NOTE$(Q) = "X" 1580 NEXT I 1590 CLS 1600 REM Calculates and prints the user's score 1610 GOSUB 1660: LOCATE 15, 1: PRINT "Your score is "; C / 10 * 100; "%." 1620 PRINT : PRINT "Thank you for using MUSIC 1.0!" 1630 PRINT : PRINT "Have a nice day!" 1640 END 1650 REM Subroutine for drawing the treble clef 1660 LINE (5, 0)-(5, 55) 1670 LINE (5, 0)-(10, 5) 1680 LINE (10, 5)-(0, 15) 1690 LINE (0, 15)-(0, 39) 1700 LINE (0, 39)-(5, 44) 1710 LINE (5, 43)-(12, 43) 1720 LINE (12, 44)-(20, 37) 1730 LINE (20, 37)-(20, 31) 1740 LINE (20, 31)-(14, 25) 1750 LINE (14, 25)-(7, 25) 1760 LINE (7, 25)-(2, 30) 1770 LINE (2, 30)-(2, 34) 1780 LINE (2, 34)-(6, 38) 1790 LINE (6, 38)-(10, 38) 1800 LINE (10, 38)-(14, 34) 1810 REM Subroutine for drawing the music staff 1820 LINE (2, 54)-(1, 53) 1830 LINE (1, 5)-(310, 5) 1840 LINE (1, 15)-(310, 15) 1850 LINE (1, 25)-(310, 25) 1860 LINE (1, 35)-(310, 35) 1870 LINE (1, 45)-(310, 45) 1880 RETURN 1890 REM Subroutines for drawing and painting each note 1900 LINE (20, 60)-(40, 60), 7: CIRCLE (30, 60), 8, 7: PAINT (30, 59), 7: PAINT (30, 61), 7: RETURN 1910 CIRCLE (60, 52), 8, 7: PAINT (60, 52), 7: RETURN 1920 CIRCLE (90, 45), 8, 7: PAINT (90, 44), 7: PAINT (90, 46), 7: RETURN 1930 CIRCLE (120, 40), 8, 7: PAINT (120, 34), 7: PAINT (120, 46), 7: PAINT (120, 40), 7: RETURN 1940 CIRCLE (150, 35), 8, 7: PAINT (150, 35), 7: PAINT (150, 39), 7: PAINT (150, 31), 7: RETURN 1950 CIRCLE (180, 30), 7, 7: PAINT (180, 30), 7: RETURN 1960 CIRCLE (210, 25), 8, 7: PAINT (210, 24), 7: PAINT (210, 26), 7: RETURN 1970 CIRCLE (240, 20), 7, 7: PAINT (240, 20), 7: RETURN 1980 CIRCLE (270, 15), 8, 7: PAINT (270, 20), 7: PAINT (270, 10), 7: RETURN 1990 CIRCLE (300, 10), 7, 7: PAINT (300, 10), 7: RETURN 2000 CIRCLE (230, 6), 7, 7: PAINT (230, 11), 7: PAINT (230, 1): RETURN 2010 REM Data statement of note names 2020 DATA C,D,E,F,G,A,B,C,D,E,F