home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh5x / sh57b.d64 / noteneingabe (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  6KB  |  235 lines

  1. 100 REM *******************************
  2. 110 REM * + -    NOTENEINGABE     - + *
  3. 120 REM * ZUM PROGRAMM 'SOUND-MACHINE'*
  4. 130 REM * FUER DEN C64                *
  5. 140 REM * VON:   ARNO MUHR            *
  6. 150 REM *        UNTERSTR. 32         *
  7. 160 REM *        5176 INDEN-FRENZ     *
  8. 170 REM *******************************
  9. 180 POKE 53280,9:POKE 53281,5:PRINT"[144]"
  10. 190 PRINT"[147]BITTE CA. 13  SEKUNDEN WARTEN"
  11. 200 NA=49152:FOR I=NA TO NA+3000:POKEI,0:NEXT
  12. 210 DIM NW(5,203),T(5,203):GOSUB 320
  13. 220 INPUT"[147]ZEIT FUER 1/4 NOTE (1-120):";GT
  14. 230 GT=INT(GT):GT=GT/120*32:IF GT<=0 OR GT>32 THEN 220
  15. 240 PRINT CHR$(147)
  16. 250 PRINT CHR$(19);C/3+1"[157] . NOTE : ":N$=""
  17. 260 INPUT "NOTE  : ";N$
  18. 270 GOTO 610
  19. 280 W=1
  20. 290 FOR I=1 TO 98:IF N$=N$(I) THEN W=W(I)
  21. 300 NEXT
  22. 310 RETURN
  23. 320 REM *** NOTENWERTE EINLESEN ***
  24. 330 DIM N$(98),W(98)
  25. 340 FOR I=1 TO 98:READ N$
  26. 350 N$(I)=N$:NEXT
  27. 360 FOR I=1 TO 98:READ W
  28. 370 W(I)=W:NEXT
  29. 380 RETURN
  30. 390 REM *** NOTENDATAS ***
  31. 400 DATA C0,C#0,D0,D#0,E0,F0,F#0,G0,G#0,A0,A#0,H0
  32. 410 DATA C1,C#1,D1,D#1,E1,F1,F#1,G1,G#1,A1,A#1,H1
  33. 420 DATA C2,C#2,D2,D#2,E2,F2,F#2,G2,G#2,A2,A#2,H2
  34. 430 DATA C3,C#3,D3,D#3,E3,F3,F#3,G3,G#3,A3,A#3,H3
  35. 440 DATA C4,C#4,D4,D#4,E4,F4,F#4,G4,G#4,A4,A#4,H4
  36. 450 DATA C5,C#5,D5,D#5,E5,F5,F#5,G5,G#5,A5,A#5,H5
  37. 460 DATA C6,C#6,D6,D#6,E6,F6,F#6,G6,G#6,A6,A#6,H6
  38. 470 DATA C7,C#7,D7,D#7,E7,F7,F#7,G7,G#7,A7,A#7,H7
  39. 480 DATA PAUSE,P
  40. 490 DATA 268,284,301,318,337,358,379,401,425,451,477,506,536,568,602,637,675
  41. 500 DATA 716,758,803,851,902,955,1012,1072,1136,1204,1275,1351,1432,1517,1607
  42. 510 DATA 1703,1804,1911,2025,2145,2273,2408,2551,2703,2864,3034,3215,3406,3608
  43. 520 DATA 3823,4050,4291,4547,4817,5103,5407,5728,6069,6430,6812,7217,7647,8101
  44. 530 DATA 8583,9094,9634,10207,10814,11457,12139,12860,13625,14435,15294,16203
  45. 540 DATA 17167,18188,19269,20415,21629,22915,24278,25721,27251,28871,30588
  46. 550 DATA 32407,34334,36376,38539,40830,43258,45830,48556,51443,54502,57743
  47. 560 DATA 61176,64814,0,0
  48. 570 :
  49. 580 REM   ******************
  50. 590 REM   *+- FUNKTIONEN -+*
  51. 600 REM   ******************
  52. 610 :
  53. 620 IF N$="-" AND C=>3 THEN C=C-3:GOTO 250
  54. 630 IF N$="-"      THEN PRINT "ERSTE NOTE !  ":GOTO 250
  55. 640 IF N$="+"      THEN C=C+3:GOTO 250
  56. 650 IF N$="SAVE"   THEN 1120
  57. 660 IF N$="LOAD"   THEN 1870
  58. 670 IF N$="DEF."   THEN 1280
  59. 680 IF N$="COPY"   THEN 1650
  60. 690 IF N$="INSERT" THEN 1470
  61. 700 IF N$="QUIT"   THEN 1040
  62. 710 IF N$="ON"     THEN SYS 53004:GOTO 250
  63. 720 IF N$="OFF"    THEN SYS 53027:GOTO 250
  64. 730 IF N$="NEW"    THEN C=0:GOTO 240
  65. 740 IF N$="CLEAR"  THEN RUN
  66. 750 IF N$="SET END"THEN 1060
  67. 760 GOSUB 280
  68. 770 INPUT "ZEIT  : ";T$:T$=T$+"  "
  69. 780 PRINT "                          [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]";
  70. 790 IF W=1 THEN PRINT "NOTEN FEHLER!":IF ZZ<>1 GOTO 250
  71. 800 IF W=1 THEN RETURN
  72. 810 HB=INT(W/256):LB=W-256*HB
  73. 820 A=VAL(T$):AA=3:IF A>9 THEN AA=4
  74. 830 A$=MID$(T$,AA,2):T=0
  75. 840 A1=VAL(A$)
  76. 850 IF A1=64 THEN T=2
  77. 860 IF A1=32 THEN T=4
  78. 870 IF A1=16 THEN T=8
  79. 880 IF A1=08 THEN T=16
  80. 890 IF A1=04 THEN T=32
  81. 900 IF A1=02 THEN T=64
  82. 910 IF A1=01 THEN T=127
  83. 920 IF T=0 THEN PRINT" ZEIT FEHLER!":IF ZZ<>1 THEN GOTO 250
  84. 930 IF T=0 THEN RETURN
  85. 940 T=T/32*GT:T=T*A
  86. 950 IF T>255 THEN PRINT " ZEIT ZU LANG !":IF ZZ<>1 GOTO 250
  87. 960 IF T>255 THEN RETURN
  88. 970 IF ZZ=1 THEN RETURN
  89. 980 POKE 49152+C,LB
  90. 990 POKE 49153+C,HB
  91. 1000 POKE 49154+C,T
  92. 1010 C=C+3
  93. 1020 GOTO 250
  94. 1030 :
  95. 1040 FOR I=0 TO 9:POKE 49152+C+I,0:NEXT
  96. 1050 END
  97. 1060 REM *** SET END ***
  98. 1070 REM -ENDE DES STUECKES MAKIEREN
  99. 1080 POKE NA+C,0
  100. 1090 POKE NA+C+1,0
  101. 1100 POKE NA+C+2,0
  102. 1110 GOTO 250
  103. 1120 REM *** SAVE ***
  104. 1130 REM -ABSPEICHERN VON MUSIKSTUECKEN
  105. 1140 SYS 53TAN27
  106. 1150 I=0:PRINT "[147]ABSPEICHERN "
  107. 1160 INPUT "[147]TITEL ";A$
  108. 1170 IF LEN(A$)>16 THEN 1150
  109. 1180 IF A$="^" THEN 240
  110. 1190 OPEN 1,8,1,A$
  111. 1200 PRINT#1,CHR$(0);CHR$(192);
  112. 1210 :NP=PEEK(49152+I)
  113. 1220 :PRINT#1,CHR$(NP);
  114. 1230 :I=I+1:IF I<=C THEN 1210
  115. 1240 PRINT#1,CHR$(0);CHR$(0);CHR$(0)
  116. 1250 CLOSE 1:GOSUB 2380
  117. 1260 PRINT"";E;Z$:PRINT"TASTE DRUECKEN "
  118. 1270 POKE 198,0:WAIT 198,1:POKE198,0:GOTO 240
  119. 1280 REM *** DEF. ***
  120. 1290 REM -DEFINIEREN EINER NOTENFOLGE
  121. 1300 PRINT "[147]":NN=0
  122. 1310 IF NS>5 THEN PRINT"ES BESTEHEN SCHON 6 ":FORI=0TO999:NEXT:PRINT"[147]":GOTO250
  123. 1320 PRINT"DEFINITIONFILE NR.";NS:PRINT NN+1;"[157] . NOTE"
  124. 1330 INPUT "NOTE  : ";N$
  125. 1340 IF N$="END" THEN 1430
  126. 1350 IF N$="^" THEN 240
  127. 1360 IF N$="-" THEN NN=NN-1:GOTO 1320
  128. 1370 IF N$="+" THEN NN=NN+1:GOTO 1320
  129. 1380 GOSUB 280:ZZ=1:GOSUB 770:ZZ=0
  130. 1390 IF T=0 OR T>255 OR W=1 THEN 1320
  131. 1400 NW(NS,NN)=W:T(NS,NN)=T
  132. 1410 NN=NN+1:IF NN<201 THEN 1320
  133. 1420 PRINT "DEFINITIONFILE IS VOLL!"
  134. 1430 W=0:T=0:FOR I=1 TO 2:NN=NN+1:NW(NS,NN)=0:T(NS,NN)=0:NEXT
  135. 1440 FOR I=1 TO 999:NEXT:PRINT"[147]"
  136. 1450 NS=NS+1:GOTO 250
  137. 1460 :
  138. 1470 REM *** INSERT ***
  139. 1480 REM -EINFUEGEN EINER DEFINITION
  140. 1490 :
  141. 1500 PRINT "[147]DEFINITIONFILE EINFUEGEN"
  142. 1510 PRINT "NR. 0-5 ODER ^"
  143. 1520 POKE 198,0:WAIT 198,1:GET A$
  144. 1530 IF A$="^" THEN 1630
  145. 1540 IF A$<"0" OR A$>"5" THEN 1520
  146. 1550 NI=VAL(A$):A=0
  147. 1560 IF NI>NS THEN 1630
  148. 1570 :P2=INT(NW(NI,A)/256):P1=NW(NI,A)-256*P2:P3=T(NI,A)
  149. 1580 :POKE 49152+C,P1
  150. 1590 :POKE 49153+C,P2
  151. 1600 :POKE 49154+C,255-P3
  152. 1610 A=A+1:C=C+3:IF P3<>0 THEN 1570
  153. 1620 C=C-3
  154. 1630 PRINT "[147]":GOTO 250
  155. 1640 :
  156. 1650 REM *** COPY ***
  157. 1660 REM -KOPIEREN VON NOTENREIHEN
  158. 1670 :
  159. 1680 PRINT "[147]COPY"
  160. 1690 INPUT "ERSTE NOTE  :";A$
  161. 1700 A=VAL (A$)
  162. 1710 INPUT "LETZTE NOTE :";B
  163. 1720 A=INT(A):B=INT(B)
  164. 1730 IF A<1 OR B<1 THEN 240
  165. 1740 X=1:IF A>B THEN X=-1
  166. 1750 IF A>C/3 OR B>C/3 THEN 240
  167. 1760 IF A<B THEN A=A-X:B=B-X
  168. 1770 IF A>B THEN A=A+X:B=B+X
  169. 1780 :
  170. 1790 FOR I=A TO B STEP X
  171. 1800 :POKE 49152+C,PEEK(49152+I*3)
  172. 1810 :POKE 49153+C,PEEK(49153+I*3)
  173. 1820 :POKE 49154+C,PEEK(49154+I*3)
  174. 1830 :C=C+3
  175. 1840 NEXT
  176. 1850 GOTO 240
  177. 1860 :
  178. 1870 REM *** LOAD ***
  179. 1880 REM -LADEN VON MUSIKSTUECKEN UND $
  180. 1890 REM SYS 53027
  181. 1900 PRINT "[147]LOAD SONG ODER DIRECTORY"
  182. 1910 INPUT "TITEL :";A$
  183. 1920 IF A$="$" THEN 2150
  184. 1930 IF A$="^" THEN 240
  185. 1940 INPUT "ANHAENGEN (J/N) :";B$
  186. 1950 IF B$="^" THEN 240
  187. 1960 OPEN 1,8,0,A$:GOSUB 2380:IF E<>0 THEN 2120
  188. 1970 OPEN 1,8,0,A$
  189. 1980 GET#1,C$,C$
  190. 1990 IF B$<>"J" AND B$<>"JA" THEN C=0
  191. 2000 A=1
  192. 2010 :GET#1,C$
  193. 2020 :A2=A1:A1=A
  194. 2030 :IF C$<=CHR$(0) THEN A=0:GOTO 2050
  195. 2040 :A=ASC(C$)
  196. 2050 :POKE 49152+C,A
  197. 2060 :C=C+1
  198. 2070 :IF A=0 AND A1=A AND A2=A THEN 2090
  199. 2080 :GOTO 2010
  200. 2090 C=C-3
  201. 2100 CLOSE 1
  202. 2110 GOSUB 2380
  203. 2120 PRINT"";E;Z$:PRINT"TASTE DRUECKEN "
  204. 2130 POKE 198,0:WAIT 198,1:POKE198,0:GOTO 240
  205. 2140 :
  206. 2150 REM --- DIRECTORY ANZEIGEN ---
  207. 2160 :
  208. 2170 OPEN 1,8,0,"$":KV=0
  209. 2180 FOR I=0 TO 30:GET#1,A$:B$=B$+A$:NEXT
  210. 2190 PRINT"  ";B$
  211. 2200 GET#1,A$,B$,E$,F$,G$:FOR I=0 TO 26:GET#1,D$:C$=C$+D$:NEXT
  212. 2210 IF F$<=CHR$(0) THEN A=0:GOTO 2230
  213. 2220 A=ASC(F$)
  214. 2230 IF G$<=CHR$(0) THEN B=0:GOTO 2250
  215. 2240 B=ASC(G$)
  216. 2250 D=A+256*B
  217. 2260 IF C$="[199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199][199]" THEN C$="":GOTO 2340: REM -27 SHIFT G-
  218. 2270 PRINT D;C$:C$=""
  219. 2280 KV=KV+1:IF KV=22 THEN 2300
  220. 2290 GOTO 2200
  221. 2300 KV=0:PRINT "TASTE DRUECKEN"
  222. 2310 POKE 198,0:WAIT 198,1
  223. 2320 PRINT"[145]                    ":PRINT"[145][145][145]"
  224. 2330 GOTO 2200
  225. 2340 KV=0:PRINT "TASTE DRUECKEN"
  226. 2350 POKE 198,0:WAIT 198,1
  227. 2360 CLOSE 1:POKE 198,0:GOTO 1870
  228. 2370 :
  229. 2380 REM +++ FEHLERKANAL ABFRAGEN +++
  230. 2390 OPEN 2,8,15
  231. 2400 INPUT#2,E,Z$,T,S
  232. 2410 CLOSE 1
  233. 2420 CLOSE 2
  234. 2430 RETURN
  235.