home *** CD-ROM | disk | FTP | other *** search
/ Play and Learn 2 / 19941.ZIP / 19941 / EDUCLING / SPELLBEE / BACH.BAS < prev    next >
Encoding:
BASIC Source File  |  1994-02-04  |  6.8 KB  |  130 lines

  1. 10 KEY OFF:CLS
  2. 20 SCREEN 0
  3. 30 WIDTH 40
  4. 40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
  5. 50 PRINT"░┌───────────────────────────────────┐░"
  6. 60 PRINT"░│                                   │░"
  7. 70 PRINT"░│            4028-A.BAS             │░"
  8. 80 PRINT"░│       PRELUDE 1 IN C MAJOR        │░"
  9. 90 PRINT"░│            J.S. BACH              │░"
  10. 100 PRINT"░│                                   │░"
  11. 110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF  │░"
  12. 120 PRINT"░│      ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄      │░"
  13. 130 PRINT"░│        █   █   █ █     █   █      │░"
  14. 140 PRINT"░│        █   █▄▄▄█ █     █   █      │░"
  15. 150 PRINT"░│        █   █     █     █   █      │░"
  16. 160 PRINT"░│      ▄▄█▄▄ █     █▄▄▄▄ █▄▄▄█      │░"
  17. 170 PRINT"░│                                   │░"
  18. 180 PRINT"░│      International PC Owners      │░"
  19. 190 PRINT"░│                                   │░"
  20. 200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
  21. 210 PRINT"░│                                   │░"
  22. 220 PRINT"░└───────────────────────────────────┘░"
  23. 230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
  24. 240 PRINT
  25. 250 PRINT "       PRESS ANY KEY TO CONTINUE
  26. 260 A$=INKEY$: IF A$="" THEN 260
  27. 270 WIDTH 80
  28. 280 CLS
  29. 1000 '*************************************************************************       *             BACH'S WELL-TEMPERED CLAVIER, BOOK 1, PRELUDE 1           *       *                                                                       *
  30. 1010 '*                        programmed for the IBM-PC                      *       *                             by Jason Vollmer                          *       *************************************************************************
  31. 1020 '
  32. 1030 'This prelude is well-suited for the single voice of the PC. Every note of    the original piece is played. The tempo gradually slows in the last 2 meas-     ures, as a keyboardist might play it, and ends with the PC's approximation      of a chord.
  33. 1040 '
  34. 1050 'The user is given the option to change the tempo from the standard tempo       for this piece of 112 beats per minute.
  35. 1060 '
  36. 1070 ON ERROR GOTO 1990                        'Checks for advanced BASIC
  37. 1080 '
  38. 1090 '*************************************************************************       *                              LOAD THE NOTES                           *       *************************************************************************
  39. 1100 '
  40. 1110 ' The elements of the M$ array each contain the first 8 notes of the             prelude's  corresponding measure. For these 32 measures, line 1800 plays        each series of 8 notes twice, producing 16 sixteenth notes per measure.
  41. 1120 '
  42. 1130 ' Note: The PC does not require notes to be organized into measures.
  43. 1140 '
  44. 1150 DIM M$(32)
  45. 1160  M$(1) = "O3 CEG O4 CE O3 G O4 CE"
  46. 1170  M$(2) = "O3 CDA O4 DF O3 A O4 DF"
  47. 1180  M$(3) = "O2 B O3 DG O4 DF O3 G O4 DF"
  48. 1190  M$(4) =  M$(1)
  49. 1200  M$(5) = "O3 CEA O4 EA O3 A O4 EA"
  50. 1210  M$(6) = "O3 CDF#A O4 D O3 F#A O4 D"
  51. 1220  M$(7) = "O2 B O3 DG O4 DG O3 G O4 DG"
  52. 1230  M$(8) = "O2 B O3 CEG O4 C O3 EG O4 C"
  53. 1240  M$(9) = "O2 A O3 CEG O4 C O3 EG O4 C"
  54. 1250 M$(10) = "O2 DA O3 DF# O4 C O3 DF# O4 C"
  55. 1260 M$(11) = "O2 GB O3 DGBDGB"
  56. 1270 M$(12) = "O2 GB- O3 EG O4 C# O3 EG O4 C#"
  57. 1280 M$(13) = "O2 FA O3 DA O4 D O3 DA O4 D"
  58. 1290 M$(14) = "O2 FA- O3 DFBDFB"
  59. 1300 M$(15) = "O2 EG O3 CG O4 C O3 CG O4 C"
  60. 1310 M$(16) = "O2 EFA O3 CF O2 A O3 CF"
  61. 1320 M$(17) = "O2 DFA O3 CF O2 A O3 CF"
  62. 1330 M$(18) = "O1 G O2 DGB O3 F O2 GB O3 F"
  63. 1340 M$(19) = "O2 CEG O3 CE O2 G O3 CE"
  64. 1350 M$(20) = "O2 CGB- O3 CE O2 B- O3 CE"
  65. 1360 M$(21) = "O1 F O2 FA O3 CE O2 A O3 CE"
  66. 1370 M$(22) = "O1 F# O2 CA O3 CE- O2 A O3 CE-"
  67. 1380 M$(23) = "O1 A- O2 FB O3 CD O2 B O3 CD"
  68. 1390 M$(24) = "O1 G O2 FGB O3 D O2 GB O3 D"
  69. 1400 M$(25) = "O1 G O2 EG O3 CE O2 G O3 CE"
  70. 1410 M$(26) = "O1 G O2 DG O3 CF O2 G O3 CF"
  71. 1420 M$(27) =  M$(18)
  72. 1430 M$(28) = "O1 G O2 E-A O3 CF# O2 A O3 CF#"
  73. 1440 M$(29) = "O1 G O2 EG O3 CG O2 G O3 CG"
  74. 1450 M$(30) =  M$(26)
  75. 1460 M$(31) =  M$(18)
  76. 1470 M$(32) = "O1 C O2 CGB- O3 E O2 GB- O3 E"
  77. 1480 M33$   = "O1 C O2 CFA O3 CFC O2 A O3 C O2 AFAFDFD"
  78. 1490 M34A$  = "O1 CB O3 GB O4 DFD O3 B O4 D O3 BGB"
  79. 1500 M34B$  = "O3 DFED P32"
  80. 1510 ENDING.CHORD$ = "T255 L64 O1 C O2 C O3 EG O4 C1"
  81. 1520 '
  82. 1530 '*************************************************************************       *                     ALLOW THE USER TO CHANGE TEMPO                    *       *************************************************************************
  83. 1540 '
  84. 1550 SCREEN 0:WIDTH 80:CLS:PRINT "PRELUDE 1 - J.S. BACH":PRINT
  85. 1560 PRINT "Is standard tempo for this piece of 112 ok?"
  86. 1570 INPUT "  (Enter Y or N):  ",T$
  87. 1580 IF T$="Y" OR T$="y" THEN 1630
  88. 1590     INPUT "  Tempo desired (54-255): ";TEMPO
  89. 1600     IF TEMPO >=54 AND TEMPO<=255 THEN 1670
  90. 1610         PRINT "Invalid response"
  91. 1620         INPUT "Please enter a tempo between 54 and 255: ",TEMPO:GOTO 1600
  92. 1630 TEMPO=112
  93. 1640 '
  94. 1650 ' ************************************************************************        *                        SET THE SCREEN DISPLAY                        *        ************************************************************************
  95. 1660 '
  96. 1670 CLS:KEY OFF:PRINT "Now playing..."
  97. 1680 LOCATE 2,31:PRINT "P R E L U D E    1"
  98. 1690 LOCATE 4,30:PRINT "i n    C    M a j o r"
  99. 1700 LOCATE 8,37:PRINT "f r o m"
  100. 1710 LOCATE 12,15:PRINT "T H E    W E L L - T E M P E R E D    C L A V I E R"
  101. 1720 LOCATE 14,35:PRINT "B o o k    1"
  102. 1730 LOCATE 17,39:PRINT "b y"
  103. 1740 LOCATE 20,33:PRINT "J. S.   B A C H"
  104. 1750 '
  105. 1760 '*************************************************************************       *                             PLAY THE NOTES                            *       *************************************************************************
  106. 1770 '
  107. 1780 PLAY "ML T=TEMPO; L16"
  108. 1790 FOR I=1 TO 32
  109. 1800     PLAY "XM$(I); XM$(I);"
  110. 1810 NEXT
  111. 1820 TEMPO2=TEMPO*.9
  112. 1830 PLAY "T=TEMPO2; XM33$;"
  113. 1840 TEMPO3=TEMPO*.75
  114. 1850 PLAY "T=TEMPO3; XM34A$;"
  115. 1860 TEMPO4=TEMPO*.6
  116. 1870 PLAY "T=TEMPO4; XM34B$;"
  117. 1880 PLAY "T=TEMPO; XENDING.CHORD$;"
  118. 1890 '
  119. 1900 '*************************************************************************       *                         ALLOW REPLAY AND FINISH                       *       *************************************************************************
  120. 1910 '
  121. 1920 LOCATE 1,1:PRINT SPC(14)
  122. 1930 FOR I=1 TO 1500:NEXT           'Delay loop
  123. 1940 LOCATE 21,1:INPUT "Play again (Enter Y or N): ";A$
  124. 1950 IF A$="Y" OR A$="y" THEN 1550
  125. 1960 PRINT "End of music program"
  126. 1970 END
  127. 1980 '
  128. 1990 IF ERR=73 THEN CLS:                                                          PRINT "THIS PROGRAM USES THE 'PLAY' STATEMENT WHICH REQUIRES ADVANCED BASIC.":  PRINT "LOAD 'BASICA' AND RE-RUN.":END
  129. 2000 ON ERROR GOTO 0
  130. OGRAM USES THE 'PLAY' STATEMENT WHICH REQUIRES ADVANCED BASIC.":  PRINT "LOAD 'BASICA' AN