home *** CD-ROM | disk | FTP | other *** search
/ Go64! / Go64_2001-06_2001_CSW_Side_A.d64 / mozart (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  6KB  |  216 lines

  1. 1000 a=1000:goto20:rem  **mozart**
  2. 1010 rem ** eroeffnung und menue **
  3. 1020 dimt$(119),wa(12,7),wb(12,7),sv(160),sp(160),sd(160)
  4. 1030 dimw$(13)
  5. 1040 t=1:d=30:tz=0:w=0:vo=0:so=2:vt=ve:ht=ho
  6. 1050 nc=(asc("[193]")=65):rem not commodore-64
  7. 1060 restore
  8. 1070 forve=1 to5:gosub2930:gosub150:nextve
  9. 1080 w=0
  10. 1090 forve=9 to19 step2:gosub2930:printsr$;:nextve
  11. 1100 gosub120:he=ho:ve=9:gosub110:printd;
  12. 1110 ve=11:gosub110:printso;
  13. 1120 ve=22:gosub2930:gosub150
  14. 1130 forw=7 to13:readw$(w):nextw
  15. 1140 rem
  16. 1150 rem ** noten und takte lesen **
  17. 1160 rem
  18. 1170 fort=1 to119:readt$(t):nextt
  19. 1180 forz=2 to12:forwt=1 to7
  20. 1190 readwa(z,wt):readwb(z,wt)
  21. 1200 nextwt:nextz
  22. 1500 rem
  23. 1510 rem ** funktionsauswahl **
  24. 1520 rem
  25. 1530 x=7:gosub3130:if(in$<"1")or(in$>"6") then1530
  26. 1540 x=in-48:onx goto3530,3630,3730,3830,2030,950
  27. 2000 rem
  28. 2010 rem ** 24 takte mozart-walzer **
  29. 2020 rem
  30. 2030 gosub3030:x=8:gosub3230
  31. 2040 fori=1 to2
  32. 2050 forwa=1 to7
  33. 2060 gosub2530:t=wa(z,wa):gosub2710
  34. 2070 nextwa
  35. 2080 sd=d/2:sp=67:sv=12:gosub2630
  36. 2090 nexti
  37. 2100 forwb=1 to7
  38. 2110 gosub2530:t=wb(z,wb):gosub2710
  39. 2120 nextwb
  40. 2130 t$(0)="[205][193]5":t=0:gosub2710
  41. 2140 sv(tz+1)=-1:tz=0
  42. 2150 rem
  43. 2160 rem ** notenfeld vorspielen **
  44. 2170 rem
  45. 2180 x=9:gosub3230:sr$=w$(13):gosub3330
  46. 2190 fortz=1 to160
  47. 2200 sv=sv(tz):sp=sp(tz):sd=sd(tz)
  48. 2210 ifsv=12 then gosub400:goto2250
  49. 2220 gosub200
  50. 2230 if(in>0)or(sv<0) thentz=160:goto2250
  51. 2240 gosub400
  52. 2250 nexttz
  53. 2260 tz=0:ifsv=-1 then2030
  54. 2270 goto1530
  55. 2500 rem
  56. 2510 rem ** zufallszahl 2-12 **
  57. 2520 rem
  58. 2530 gosub260:z=int(rv*11)+2
  59. 2540 return
  60. 2600 rem
  61. 2610 rem ** notenfeld aufbauen **
  62. 2620 rem
  63. 2630 tz=tz+1:sd(tz)=sd:sv(tz)=sv:sp(tz)=sp+12-so*12
  64. 2640 return
  65. 2700 rem
  66. 2710 forl=1 tolen(t$(t))
  67. 2720 ha=asc(mid$(t$(t),l,1)):ifnc then2740
  68. 2730 ha=ha+32:ifha>128 thenha=ha-160
  69. 2740 sv=12:ifl=1 thensv=15
  70. 2750 ifha>91 thensd=d/16:sp=ha-32-5:gosub2630:goto2840
  71. 2760 ifmid$(t$(t),l+1,1)="*" then2810
  72. 2770 sp=ha-5:sd=d/8:gosub2630:goto2840
  73. 2780 rem
  74. 2790 rem ** triller **
  75. 2800 rem
  76. 2810 sd=d/32:sp=ha-5
  77. 2820 forh1=1 to8:sp=ha+ha-9-sp:gosub2630:nexth1
  78. 2830 l=l+1
  79. 2840 nextl
  80. 2850 return
  81. 2900 rem
  82. 2910 rem ** bildschirmsteuerung **
  83. 2920 rem
  84. 2930 readsr$:w=w+1:w$(w)=sr$
  85. 2940 ho=(ht-len(sr$))/2-3:gosub110
  86. 2950 return
  87. 3000 rem
  88. 3010 rem ** zeile loeschen **
  89. 3020 rem
  90. 3030 ve=vt-2:ho=ht-8:gosub110:sr$=w$(10):printright$(sr$,8);
  91. 3040 return
  92. 3100 rem
  93. 3110 rem ** textzeile **
  94. 3120 rem
  95. 3130 gosub3030:ve=22:gosub2940:printsr$;:sr$=w$(x)
  96. 3140 gosub2940:printsr$;:gosub210
  97. 3150 return
  98. 3200 rem
  99. 3210 rem ** zeile in inverse **
  100. 3220 rem
  101. 3230 ve=22:sr$=w$(10):gosub2940:printsr$;:sr$=w$(x)
  102. 3240 gosub2940:gosub150
  103. 3250 return
  104. 3300 rem
  105. 3310 rem ** zeile printen **
  106. 3320 rem
  107. 3330 ve=vt-2:ho=ht-8:gosub110:printsr$;
  108. 3340 return
  109. 3400 rem
  110. 3410 rem ** zahl loeschen **
  111. 3420 rem
  112. 3430 ve=x*2+7:ho=he:gosub110:printw$(10);:gosub110
  113. 3440 inputa$:gosub110:printw$(10):gosub110:print" ";a$;
  114. 3450 return
  115. 3500 rem
  116. 3510 rem ** tempo veraendern **
  117. 3520 rem
  118. 3530 gosub3430:d=int(val(a$)):if(d<6)or(d>99) then3530
  119. 3540 goto1530
  120. 3600 rem
  121. 3610 rem ** oktave veraendern **
  122. 3620 rem
  123. 3630 gosub3430:so=int(val(a$))
  124. 3640 if(so<0)or(so>5) then3630
  125. 3650 goto1530
  126. 3700 rem
  127. 3710 rem ** takteingabe **
  128. 3720 rem
  129. 3730 x=11:gosub3230:x=3
  130. 3740 gosub3430:t=int(val(a$))
  131. 3750 if(t<0)or(t>119) then3740
  132. 3760 if(t=0)or(tz>150) then3880
  133. 3770 gosub3030:sr$=t$(t):gosub3330:gosub2710:goto3740
  134. 3800 rem
  135. 3810 rem ** zufalls-melodie **
  136. 3820 rem
  137. 3830 x=12:gosub3230
  138. 3840 forzu=1 to24
  139. 3850 gosub260:t=int(rv*118)+1:gosub3030
  140. 3860 sr$=t$(t):gosub3330:gosub2710
  141. 3870 nextzu
  142. 3880 sv(tz+1)=-99:goto2190
  143. 25000 rem
  144. 25010 rem  *** menuedaten ***
  145. 25020 rem
  146. 25030 data"           ","[205] [207] [218] [193] [210] [212]","-----------"
  147. 25040 data"  [203][214] 294d  ","           ","1 ... [212]empo (6-99) :"
  148. 25050 data"2 ... [207]ktave (0-5) :","3 ... [212]akt (0-119) :"
  149. 25060 data"4 ... [210]andom-[211]ound  ","5 ... [205]ozart-[215]alzer "
  150. 25070 data"6 ... [208]rogrammende  ","-ich lerne [206]oten-"
  151. 25080 data"      [211]ie waehlen  :","-ich komponiere-"
  152. 25090 data"-ich musiziere-","                         "
  153. 25100 data"0 = vorspielen","[211]o ein [218]ufall !",">[212][193][211][212][197]<"
  154. 25110 rem
  155. 25120 rem *** noten der takte 1-119 ***
  156. 25130 rem
  157. 25140 data"[210][207][212]","[202]ghlt","[212][205][209]","[212][207]*","[200][205][209]","qmqtyt","[209][207][200]"
  158. 25150 data"ljlmol","qmljhg","[205][205][205]","[205][200][197]","[209]tq[205]","[214][211][207]"
  159. 25160 data"mhmqhm","qm[209][212]","[212]x[[207]","mqtojs","[209][205][200]","rqoqrt"
  160. 25170 data"cgjosv","[209][209][209]","rqroml","sojvso","loto[204]","qm[200][209]"
  161. 25180 data"qmol[200]","[202][207][211]","jqotsv","txto[204]","[205][200][209]","[212][200][200]"
  162. 25190 data"mlmqhm","mlmq[200]","lmoljh","[212]rqom","[202]rojl","mlmhea"
  163. 25200 data"[212]xtol","[212]to[216]","[209]mqty","[205]qm[200]","mhqmtq","onorhl"
  164. 25210 data"[209]qr[212]","[212][216][207]","ol[200][212]","[212][209][205]","[205]qm[212]","qmlhjg","ymlm[200]"
  165. 25220 data"qtytqm","oj[207][211]","[211][214][211]","[212]xtot","[211]vsos","tx[x[212]"
  166. 25230 data"rqomlo","yxytqm","[211][211][211]","tx[212][207]","[207][202][211]","ol[200][212]","[205][209][200]"
  167. 25240 data"[207]ot[216]","totxto","rq[207][212]","sv[vsv","[207]tx[207]","tstolh"
  168. 25250 data"[211][214][207]","qoqtyt","so[202][211]","mqmh[197]","[202]omlj","[209][212][217]"
  169. 25260 data"ororlo","ommllj","[210][207][204]","[207][207][207]","orvrol","ojosvs"
  170. 25270 data"qvtxsv","qmtqyt","[vsoj","[212]xt[207]","tstx[207]","tqol[200]"
  171. 25280 data"mhmqtq","[204][207][212]","vtst[207]","[209]ol[200]","[207]tolo","jqomlh"
  172. 25290 data"[211]so[214]","[211][211]*","txtx[207]","[202]jo[211]","oqroml","[212]ol[200]"
  173. 25300 data"orjolo","[207][211][214]","qyxtvs","ro[202][204]","[209][209]*","ojsovs"
  174. 25310 data"onosvs","txtolh","mhqm[212]","[204]oljh","qtomlj","[207][200][200]"
  175. 25320 data"[207][200][204]","oxto[204]","[205]mo[209]","qtotjs","lmoqro","rv[202]lo"
  176. 25330 data"qmlo[212]","vtxtot"
  177. 25340 rem
  178. 25350 rem  *** zahlentafeln ***
  179. 25360 rem
  180. 25370 data18,55,18,85,98,21,33,7,55,18,86,18,9,76,5,81,5,31
  181. 25380 data89,88,50,46,101,5,38,5,93,80,47,53,47,96,109,12
  182. 25390 data11,91,105,47,45,47,77,100,32,67,14,119,78,6,63,26
  183. 25400 data79,32,2,32,110,43,58,20,58,99,69,51,37,87,61,58
  184. 25410 data69,58,28,1,71,95,71,56,22,104,114,24,106,71,54,71
  185. 25420 data82,19,35,13,35,107,116,18,44,118,70,35,92,35,17,66
  186. 25430 data83,84,42,65,79,40,41,113,97,42,64,42,115,57,30,52
  187. 25440 data30,60,34,15,108,62,59,30,90,30,49,103,3,72,3,4
  188. 25450 data112,25,48,111,94,3,39,3,102,117,10,27,10,16,8,75
  189. 25460 data73,68,23,10,29,10,74,36
  190. 30000 rem
  191. 30010 rem ***************************
  192. 30020 rem *                         *
  193. 30030 rem * dieses programm wurde   *
  194. 30040 rem * fuer basicode - 3 auf   *
  195. 30050 rem * einem kc85/4 entwickelt.*
  196. 30060 rem * den algorithmus entnah- *
  197. 30070 rem * men wir dem kv 294d von *
  198. 30080 rem * wolfgang-amadeus mozart,*
  199. 30090 rem * der uns die verstuemme- *
  200. 30100 rem * lung seines werkes ver- *
  201. 30110 rem * zeihen moege.           *
  202. 30120 rem * in die vorliegende form *
  203. 30130 rem * brachten die noten:     *
  204. 30140 rem *                         *
  205. 32000 rem * uwe und andreas zierott *
  206. 32010 rem *      pappelallee 1      *
  207. 32020 rem *       lehnin 1804       *
  208. 32030 rem *           ddr           *
  209. 32040 rem *                         *
  210. 32050 rem *                21.09.89 *
  211. 32060 rem *                         *
  212. 32070 rem ***************************
  213. 32080 rem
  214. 32090 rem erstausstrahlung: radio ddr
  215. 32100 rem 900110
  216.