Compositor
Editor de músicas. Crie a partitura e o MSX executa sua música, em até 3 canais de áudio.
Teste o programa no WebMSX – The Online MSX Emulator
Empresa: Disprosoft
Contribuição: Paulo Maluf
Código fonte
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 |
5 CLEAR6000,&HD100:DEFINTA-Z:ONERRORGOTO 10000 6 DIMN$(22) 7 FORN=&HD100TO&HD192:READA$:POKEN,VAL("&H"+A$):NEXT 8 DEFUSR=&HD100:A=USR(0):DEFUSR=&HD12B 10 KEYOFF:COLOR2,1,1:SCREEN0,0,0:WIDTH38 15 FORN=1TO6:READTI$(N),PI$(N):NEXT 20 OPEN"GRP:"AS#1 170 CLS:LOCATE9,4:PRINT"**** COMPOSITOR ****" 180 LOCATE7,12 190 POKE&HFCAB,255:PRINT"Quantas vozes (1 a 3)? "; 200 I$=INPUT$(1) 210 IFI$>"3"ORI$<"1"THEN200 220 PRINTI$:NV=VAL(I$) 230 LOCATE0,15:FORN=1TONV:PRINTTAB(5)"Clave da voz ";N;" (Sol/Fa')? "; 240 I$=INPUT$(1):IFI$<>"S"ANDI$<>"F"THEN240 250 IFI$="S"THENFC(N)=0:PRINT"Sol"ELSEFC(N)=1:PRINT"Fa'" 260 NEXT 270 LOCATE 5,21:PRINT"Tudo O.K. (S/N)? "; 280 I$=INPUT$(1):IFI$<>"S"ANDI$<>"N"THEN280 290 IFI$="N"THEN170ELSEPRINTI$ 410 CL$(0)="U3F1U3F1U2R3U1L2F2D2G1D2L1D1G9D3G1H1E11BD3BL2G9D7F2H1U1H2U4BF8BR5E3U4H4L4G4D4F1BU5U2E1R8F1D8G1BU6U2L1U1L6G1BD12L3F1R1U2L1G1D2F2R2E2U28" 430 CL$(1)="D1F5U1H4R1F2D4G1U3F2G3D1E3G1D1G9L1G1L1BU3BR6E5BE4D1R1U1BU4U1L1D1BL3L2BL8R1D5L2U4R3D3L4E2D1L2U3E3D1E1R1" 500 DIMPA$(NV,50),PL$(NV,50),SB$(7),S$(7),IN$(3),OV(3) 503 FORN=1TONV:OV(N)=FC(N):NEXT 505 FORN=1TO3:IN$(N)="V8":NEXT 510 N$(1)="L3G1D1F1R3E1U1" 520 N$(2)=N$(1)+"3" 530 N$(3)="L3G1R5D1L5F1R3E1U13" 540 N$(4)=N$(3)+"F4" 550 FORN=5TO7 560 N$(N)=N$(N-1)+"BU2BL4F4" 570 NEXT 575 N$(19)="H1F1R1E1U1H1L1R1E1U1H1L1G1BG9BL4U2R29D2" 580 N$(20)="BU3BH4L2D10R12U10L6H4D10F4U9" 583 N$(21)="U1E1U1BD4BL2D1BL6R4L2U5L2R4BF5BR1U4E1R2F1D4U2L3" 585 N$(22)="C13U3D6BR3U6F3E3D6BL16U6R4BG3L1R3" 590 N$(11)="L1D1R1U1" 600 N$(12)="L3U1R3U1L5R7" 610 N$(13)="R2L7R5U1L3U1R3" 615 N$(14)="E2R1H3U5L1H1F3U1D2L2D2F3L2G1D2F2R1F1H3U2" 620 N$(15)="E6G9U1E8L5U1R1" 630 FORN=16TO18 640 N$(N)=N$(N-1)+"BD3BR1L4U1R1":NEXT 645 N$(8)="U3D7U2L2R7L2D2U7D2R2L7" 646 N$(9)="U6D9R1E2U1H1L2" 648 N$(10)="U4D6R3D3U6L3" 650 COLOR15,5:SCREEN2,2:VDP(1)=162:RESTORE9000 655 FORM=1TO3:B$="" 660 FORN=0TO31:READA$ 670 B$=B$+CHR$(VAL("&H"+A$)):NEXT 680 SPRITE$(M)=B$:NEXT 800 LINE(80,32)-(175,159),1,B 810 LINE(81,33)-(174,158),15,BF 820 FORN=1TO7:PSET(95,N*16+24),1:DRAWN$(N):NEXT 830 FORN=12TO19:PSET(125,(N-11)*16+24),1:DRAWN$(N):NEXT 840 FORN=8TO11:PSET(155,(N-7)*16+24),1:DRAWN$(N):NEXT 850 FORN=20TO22:PSET(155,(N-15)*16+24),1:DRAWN$(N):NEXT 860 A=USR(0) 1000 VO=1:CO=1:NO=1 1010 GOSUB2000 1100 YE=1:XE=1:XS=1:YS=32 1140 A=USR(0) 1150 PUTSPRITE1,(XE*30+63,YE*16+24),6,1 1160 I=STICK(0) 1170 IFI=1ANDYE>1THENYE=YE-1 1172 IFXE=2ANDYE=8THEN1185 1175 IFI=3ANDXE<3THENXE=XE+1 1180 IFI=7ANDXE>1THENXE=XE-1 1185 IFI=5ANDYE<7-(XE=2)THENYE=YE+1 1190 FORN=0TO100:NEXT 1220 IFINKEY$<>CHR$(13)THEN1150 1223 IFXE=3THENIFYE<5THENNO=YE+7ELSENO=YE+15 1225 IFXE<3THENNO=YE+11*(XE-1) 1235 IFNO=22THEN4000 1240 A=USR(0):LINE(200,168)-(233,191),1,BF:PSET(216,183),15:DRAWN$(NO) 1245 IFNO=20THEN3000 1246 IFNO=21THEN2500 1250 XM=INT(LEN(PA$(VO,CO))/2)+1 1255 IFNO=11ANDPA$(VO,CO)=""THEN1140 1260 IFNO=19ANDXM<4THEN1140 1270 IFNO=19ANDXS<4THENXS=4 1285 IFNO=11THENIFXS=1THENXS=2 1290 IFNO>11THENYS=33 1300 PUTSPRITE1,(XS*12+13,YS*3),6,2-(YS-INT(YS/2)*2) 1301 FORN=0TO150:NEXT 1302 I$=INKEY$ 1305 IFI$=CHR$(13)THEN1140 1306 IFI$=" "THEN1500 1310 I=STICK(0) 1320 IFI=1ANDNO<11ANDYS>11THENYS=YS-1 1330 IFI=5ANDNO<11ANDYS<45THENYS=YS+1 1340 IFI=3ANDXS<XMANDXS<19THENXS=XS+1 1350 IFI=7ANDXS>1-(NO=19)*3THENXS=XS-1 1360 IFNO=11ANDXS>1THENYS=53-ASC(MID$(PA$(VO,CO),XS*2-3)) 1370 IFNO=11THENIFXS=1THENXS=2 1410 GOTO1300 1500 IFNO=11THENQ=ASC(MID$(PA$(VO,CO),XS*2-2)):IFQ>7ANDQ<11THENGOTO1300 1502 IFNO=19THENIFMID$(PA$(VO,CO),XS*2-6,1)<>MID$(PA$(VO,CO),XS*2-4,1) OR MID$(PA$(VO,CO),XS*2-6,1)<>MID$(PA$(VO,CO),XS*2-2,1)THENGOTO1300 1503 IFNO=19THENK=ASC(MID$(PA$(VO,CO),XS*2-2,1)):IFK>7ORK=1THENGOTO1300 1505 IFXS<>XMTHEN1600 1510 PA$(VO,CO)=PA$(VO,CO)+CHR$(53-YS)+CHR$(NO) 1515 IFNO<>19THENPSET(XS*12+14,YS*3-(NO=13)*4),1 ELSE PSET(XS*12-10,(53-ASC(MID$(PA$(VO,CO),(XS-2)*2-1,1)))*3-20),1 1520 DRAWN$(NO) 1522 IFYS>37ANDNO<>11THENFORM=38 TO YSSTEP2:LINE(XS*12+8,M*3+1)-(XS*12+17,M*3+1),1:NEXT M 1523 IFYS<27ANDNO<>11THENFORM=26 TO YSSTEP-2:LINE(XS*12+8,M*3+1)-(XS*12+17,M*3+1),1:NEXT M 1525 IFXS<19THENXS=XS+1 1530 GOTO1250 1600 MID$(PA$(VO,CO),XS*2-1,2)=CHR$(53-YS)+CHR$(NO) 1610 GOSUB2000:GOTO1300 2000 VDP(1)=162:CLS 2005 PSET(30,0),5:PRINT#1,"VOZ";VO 2006 LINE(200,168)-(233,191),1,BF:PSET(216,183),15:DRAWN$(NO) 2007 PSET(150,0),5:PRINT#1,"COMPASSO";CO 2010 FORN=85TO109STEP6 2020 LINE(0,N)-(255,N),1:NEXT:PSET(12,85),1:DRAWCL$(FC(VO)) 2030 IFLEN(PA$(VO,CO))=0THENGOTO2090 2040 FORN=1TOLEN(PA$(VO,CO))STEP2 2050 X=53-ASC(MID$(PA$(VO,CO),N,1)) 2055 IFX<0THEN2080 2060 Y=ASC(MID$(PA$(VO,CO),N+1,1)) 2065 IFX>37ANDY<>11THENFORM=38 TO X STEP2:LINE(N*6+14,M*3+1)-(N*6+23,M*3+1),1:NEXT M 2067 IFX<27ANDY<>11THENFORM=26 TO X STEP-2:LINE(N*6+14,M*3+1)-(N*6+23,M*3+1),1:NEXT M 2070 IFY<>19THENPSET(N*6+20,X*3-(Y=13)*4),1 ELSE PSET(N*6-4,(53-ASC(MID$(PA$(VO,CO),N-4,1)))*3-20),1 2075 DRAWN$(Y) 2080 NEXT 2090 VDP(1)=226:RETURN 2500 XM=INT(LEN(PA$(VO,CO))/2)+1 2505 IFXM=1THEN1140 2507 IFXS>XM-1THENXS=XS-1 2508 PSET(0,170):PRINT#1,"Tecle I p/ inserir":PRINT#1,"Tecle A p/ apagar" 2510 PUTSPRITE1,(XS*12+8,89),15,3 2515 FORN=1TO200:NEXT 2520 POKE&HFCAB,255:I$=INKEY$ 2530 IFI$=CHR$(13)THENLINE(0,170)-(144,186),5,BF:GOTO1140 2540 IFI$="I"ANDXM<20THENPA$(VO,CO)=LEFT$(PA$(VO,CO),XS*2-2)+CHR$(255)+CHR$(255)+MID$(PA$(VO,CO),XS*2-1):GOSUB2000:GOTO2500 2550 IFI$="A"THENPA$(VO,CO)=LEFT$(PA$(VO,CO),XS*2-2)+MID$(PA$(VO,CO),XS*2+1):GOSUB2000:GOTO2500 2570 I=STICK(0) 2580 IFI=3ANDXS<XM-1THENXS=XS+1 2590 IFI=7ANDXS>1THENXS=XS-1 2600 GOTO2510 3000 PUTSPRITE1,(0,0),0,1 3010 I=STICK(0) 3020 IFI=1ANDVO>1THENVO=VO-1:GOSUB2000 3030 IFI=5ANDVO<NVTHENVO=VO+1:GOSUB2000 3040 IFI=3ANDCO<50THENCO=CO+1:GOSUB2000 3050 IFI=7ANDCO>1THENCO=CO-1:GOSUB2000 3060 IFSTRIG(0)THEN3100 3070 IFINKEY$<>CHR$(13)THEN3010 3090 GOTO1100 3100 IFNV>1THENPSET(8,170):PRINT#1,"Voz ( 1 a";NV;") ? "; ELSE 3130 3110 I$=INPUT$(1):IFI$=""THEN3110 3120 I=VAL(I$):IFI<1ORI>NVTHEN3110 ELSE PRINT#1,I:VO=I 3130 PSET(8,178):PRINT#1,"Compasso (01 a 50) ? "; 3140 I$=INPUT$(1):IFI$<"0"ORI$>"5"THEN3140 ELSE PRINT#1,I$; 3150 J$=INPUT$(1):IFJ$<"0"ORJ$>"9"THEN3150 ELSE PRINT#1,J$; 3160 CO=VAL(I$+J$):GOSUB2000:GOTO3010 3500 CLS:COLOR5,1:PLAY"L16V13O5DCF":PRINT"APAGAR O QUE FOI FEITO" 3510 LOCATE ,5:PRINT"Confirma (S/N) ? "; 3520 I$=INPUT$(1):IFI$="S"THENRUN 3530 IFI$="N"THEN4000 ELSE 3520 4000 COLOR2,1:SCREEN0 4010 PRINT"Escolha sua opcao:" 4020 PRINT:PRINT" Tocar a musica" 4025 PRINT" Mudar o instrumento" 4027 PRINT" Mudar a oitava" 4030 PRINT" Gravar musica no formato BASIC" 4040 PRINT" Gravar arquivo do programa" 4050 PRINT" Ler arquivo do programa" 4055 PRINT" Exibe diretorio do disco" 4060 PRINT" Voltar ao modo de edicao" 4070 PRINT" Apagar o que foi feito" 4080 CO=2:LI=1:MA=9:GOSUB9500 4100 IFY=9THEN3500 4105 IFY=8THEN650 4110 ONYGOSUB6000,7200,7435,6500,7000,7500,7900 4120 GOTO4000 4500 ER=1 4510 IFINKEY$=""THEN4510ELSERETURN 4600 UC=0:FORVO=1TONV:FORN=1TO50 4610 IFPA$(VO,N)<>""THENNEXTN 4620 IFN>UC+1THENUC=N-1 4630 NEXTVO:RETURN 4700 PRINT"Aguarde processamento." 4705 FORN=1TOUC:FORM=1TONV 4710 FORB=1TOLEN(PA$(M,N)) 4720 MID$(PA$(M,N),B,1)=CHR$(256-ASC(MID$(PA$(M,N),B,1))):NEXTB,M,N:RETURN 5000 CLS:INPUT"Andamento (32 a 255)";A 5001 IFA<32ORA>255THEN5000 5002 CLS:PRINT"AGUARDE PROCESSAMENTO" 5005 ERASEPL$,SB$,S$ 5007 GOSUB4600 5010 DIMPL$(NV,50),SB$(NV,7),S$(NV,7):SQ$="CDEFGAB" 5012 FORN=1TONV:PL$(N,1)=IN$(N)+"T"+MID$(STR$(A),2):NEXT 5015 CO=1 5017 FORN=1TONV:IFLEN(PA$(N,CO))=0THEN5022 ELSE FORM=1TOLEN(PA$(N,CO))STEP2:Y=ASC(MID$(PA$(N,CO),M+1,1)) 5018 X=ASC(MID$(PA$(N,CO),M,1))-FC(N)*12:NO=X-INT((X-1)/7)*7 5019 IFY=8THENS$(N,NO)="+" 5020 IFY=9THENS$(N,NO)="-" 5021 IFY=8ORY=9THENNEXTM 5022 NEXTN:FORCO=1TOUC 5023 FORM=1TONV:FORN=1TO7:SB$(M,N)=S$(M,N):NEXT:NEXT 5030 FORVO=1TONV:SO!(VO)=0:IFPA$(VO,CO)=""THEN5510 5035 LL=4:OI=4:SO!(VO)=0:PL$(VO,CO)=PL$(VO,CO)+"O4L4" 5040 FORN=1TOLEN(PA$(VO,CO)) STEP 2 5045 IFLEN(PA$(VO,CO))>N+5 THEN IF ASC(MID$(PA$(VO,CO),N+7,1))=19 THEN D3=1:C3=3 5050 X=ASC(MID$(PA$(VO,CO),N,1))-FC(VO)*12-(OV(VO)-FC(VO))*7 5060 Y=ASC(MID$(PA$(VO,CO),N+1,1)) 5062 IFY=255ORY=19THEN5500 5065 NO=X-INT((X-1)/7)*7 5070 IFY>7THEN5200 5080 O=INT((X-1)/7)+2:IFO<>OITHENOI=O:PL$(VO,CO)=PL$(VO,CO)+"O"+CHR$(OI+48) 5090 L=2^(Y-1):L=L-.5*L*(D3=1):IFL<>LLTHENLL=L:PL$(VO,CO)=PL$(VO,CO)+"L"+MID$(STR$(LL),2) 5100 PL$(VO,CO)=PL$(VO,CO)+MID$(SQ$,NO,1)+SB$(VO,NO) 5110 SO!(VO)=SO!(VO)+1/L 5120 IFD3=1THENC3=C3-1:IFC3=0THEND3=0 5130 GOTO5500 5200 IFY>10THEN5300 5210 IFY=8THENIFNO=3ORNO=7THENPRINT"ERRO: Nao existe mi nem si sustenido. Compasso ";CO:GOTO4500ELSESB$(VO,NO)="+" 5220 IFY=9THENIFNO=1ORNO=4THENPRINT"ERRO: Nao existe do nem fa bemol. Compasso ";CO:GOTO4500ELSESB$(VO,NO)="-" 5230 IFY=10THENSB$(VO,NO)="" 5240 GOTO5500 5300 IFY=11THENPL$(VO,CO)=PL$(VO,CO)+".":SO!(VO)=SO!(VO)+1/(2*L):GOTO5500 5310 L=2^(Y-12) 5320 PL$(VO,CO)=PL$(VO,CO)+"R"+MID$(STR$(L),2) 5340 SO!(VO)=SO!(VO)+1/L 5500 NEXTN 5510 NEXTVO 5513 IFNV=1THEN5520 5515 FORN=2TONV:IFSO!(N-1)<>SO!(N)THENPRINT"Comprimento do compasso";CO;"nao e' o mesmo nas";NV;"vozes.":GOTO4500 5517 NEXTN 5520 NEXTCO:RETURN 6000 CLS:GOSUB5000:CLS:IFER=1THENER=0:RETURN 6010 FORN=1TOCO-1 6015 LOCATE0,0:PRINT"COMPASSO: ";N 6020 IFNV=3THENPLAYPL$(1,N),PL$(2,N),PL$(3,N) 6030 IFNV=2THENPLAYPL$(1,N),PL$(2,N) 6040 IFNV=1THENPLAYPL$(1,N) 6070 NEXT 6075 IFPLAY(0)THEN6075 6080 PRINT:PRINT"Deseja que eu toque novamente (S/N)?"; 6090 I$=INPUT$(1):IFI$<>"S"ANDI$<>"N"THEN6090 6100 IFI$="S"THENGOTO6010ELSERETURN 6500 CLS:GOSUB5000:CLS:IFER=1THENER=0:RETURN 6510 INPUT"Nome do programa ";N$ 6515 INPUT"Linha inicial ";LI:PRINT"Cassete ou Disco (C/D) ?"; 6517 I$=INPUT$(1):IFI$<>"C"ANDI$<>"D"THEN6517 6518 PRINTI$:IFI$="C"THENQG$="CAS:"ELSEQG$="A:" 6520 IFI$="D"THEN6550ELSEPRINT"PREPARE O CASSETE E TECLE RETURN" 6530 IFINKEY$<>CHR$(13)THEN6530 6550 QG$=QG$+N$:CLOSE:OPENQG$FOROUTPUTAS#1 6560 FORN=1TOUC 6565 IFNV=1THENPRINT#1,MID$(STR$(LI),2);"PLAY ";CHR$(34);PL$(1,N);CHR$(34) 6567 IFNV=2THENPRINT#1,MID$(STR$(LI),2);"PLAY ";CHR$(34);PL$(1,N);CHR$(34);CHR$(44);CHR$(34);PL$(2,N);CHR$(34) 6570 IFNV=3THENPRINT#1,MID$(STR$(LI),2);"PLAY ";CHR$(34);PL$(1,N);CHR$(34);CHR$(44);CHR$(34);PL$(2,N);CHR$(34);CHR$(44);CHR$(34);PL$(3,N);CHR$(34) 6580 LI=LI+10:NEXT 6590 CLOSE:OPEN"GRP:"AS#1:RETURN 7000 CLS:GOSUB4600:IFUC=0THENPRINT"Nao ha' nenhuma musica na memoria.":GOTO4500 7005 GOSUB4700:CLS:IFER=1THENER=0:RETURN 7010 PRINT"Cassete ou Disco (C/D) ?"; 7020 I$=INPUT$(1):IFI$<>"C"ANDI$<>"D"THEN7020 7030 PRINTI$:IFI$="C"THENQG$="CAS:"ELSEINPUT"Nome do arquivo ";N$:QG$="A:"+N$+".MUS" 7035 IFI$="D"THEN7040ELSEPRINT:PRINT"Prepare o cassete e tecle RETURN" 7037 IFINKEY$<>CHR$(13)THEN7037 7040 CLOSE:OPENQG$FOROUTPUTAS#1 7045 PRINT#1,UC:PRINT#1,NV 7047 FORN=1TONV:PRINT#1,FC(N):PRINT#1,OV(N):NEXT 7050 FORN=1TOUC:FORM=1TONV 7060 PRINT#1,PA$(M,N):NEXTM,N 7070 CLOSE:GOSUB4700:OPEN"GRP:"AS#1:RETURN 7200 CLS:COLOR9,1:PRINT" *** MUDANCA DE INSTRUMENTO ***" 7210 LOCATE0,4:PRINTCHR$(1);STRING$(38,195); 7220 FORN=1TO6:PRINTTAB(15);TI$(N):NEXT 7270 PRINTSTRING$(38,192) 7280 CO=13:LI=4:MA=6:GOSUB9500:Q=Y 7290 FORVO=1TONV 7300 LOCATE0,14+VO:PRINT"Voz";VO;"- ?" 7304 IFQ=1THEN7325 7307 LOCATE26,15:PRINTTI$(Q):LOCATE26,16:PRINT"Normal" 7310 CO=24:LI=14:MA=2:GOSUB9500 7320 IF Y=1THENIN$(VO)=PI$(Q):LOCATE8,14+VO:PRINTTI$(Q):GOTO7400 7325 K=8 7330 K$=RIGHT$("0"+MID$(STR$(K),2),2):LOCATE15,20:PRINT"Volume ? ";K$ 7335 I$=INKEY$:IFI$=""THEN7335 7337 I=ASC(I$):IFI=30THENK=K+1 7340 IFI=31THENK=K-1 7343 IFI=13THEN7350 7345 IFK=0THENK=15 7347 IFK=16THENK=1 7348 GOTO7330 7350 LOCATE15,20:PRINTSPC(18):IN$(VO)="V"+K$:LOCATE8,14+VO:PRINT"Normal Vol.";K$ 7400 NEXT 7410 LOCATE0,22:PRINTSPC(38) 7420 LOCATE13,22:PRINT"Tecle RETURN" 7430 IFINKEY$=CHR$(13)THENRETURNELSE7410 7435 CLS:PRINT"*** MUDANCA DE OITAVA ***" 7440 FORN=1TONV:LOCATE5,4:PRINT"Oitava da voz";N 7445 LOCATE20,10:PRINT"Alta":PRINTTAB(20)"Baixa" 7450 CO=18:LI=9:MA=2:Y=OV(N)+1:GOSUB9510 7460 OV(N)=Y-1:NEXT:GOTO7410 7500 CLS:PRINT"Cassete ou Disco (C/D) ?"; 7510 I$=INPUT$(1):IFI$<>"C"ANDI$<>"D"THEN7510 7520 PRINTI$:IFI$="C"THENQG$="CAS:"ELSEINPUT"Nome do arquivo ";N$:QG$="A:"+N$+".MUS" 7530 IFI$="D"THEN7550 7540 PRINT"Prepare o cassete para leitura e tecle ENTER" 7545 IFINKEY$<>CHR$(13)THEN7545 7550 ERASEPL$,PA$ 7555 CLOSE:OPENQG$FORINPUTAS#1 7560 INPUT#1,UC:INPUT#1,NV 7565 FORN=1TONV:INPUT#1,FC(N):INPUT#1,OV(N):NEXT 7570 DIMPA$(NV,50),PL$(NV,50) 7580 FORN=1TOUC:FORM=1TONV 7590 INPUT#1,PA$(M,N):NEXTM,N 7600 GOTO7070 7900 CLS:PRINT"Conteudo deste disco:":PRINT 7910 FILES 7920 PRINT:PRINT"Digite RETURN p/ voltar ao menu" 7930 IFINKEY$<>CHR$(13)THEN7930 ELSE RETURN 8000 DATA DB,A8,32,90,D1,47,CB,3F 8010 DATA CB,3F,E6,0C,CB,90,CB,98 8020 DATA B0,32,8F,D1,3A,FF,FF,2F 8030 DATA 32,92,D1,47,CB,3F,CB,3F 8040 DATA E6,0C,CB,90,CB,98,B0,32 8050 DATA 91,D1,C9,3A,8F,D1,D3,A8 8060 DATA 3A,91,D1,32,FF,FF,21,50 8070 DATA 04,11,00,40,CD,54,D1,21 8080 DATA 50,24,11,00,60,CD,54,D1 8090 DATA 3A,90,D1,D3,A8,3A,92,D1 8100 DATA 32,FF,FF,C9,AF,32,8E,D1 8110 DATA E5,D5,01,60,00,11,93,D1 8120 DATA CD,59,00,E1,D1,D5,E5,01 8130 DATA 60,00,CD,5C,00,D1,D5,21 8140 DATA 93,D1,01,60,00,ED,B0,D1 8150 DATA 21,60,00,19,EB,E1,01,00 8160 DATA 01,09,3A,8E,D1,3C,FE,10 8170 DATA C8,32,8E,D1,18,CA,00,00 8180 DATA 00,00,00 8500 DATA Normal,,Piano,S0M5000,Flauta 1,S4M1000,Flauta 2,S13M1000,Orgao,S14M350,Xilofone,S0M1500 9000 DATA FF,FF,C0,C0,C1,C0,C0,C8 9010 DATA DC,FE,F7,E3,C1,80,00,00 9020 DATA FC,F8,70,E0,C0,E0,70,38 9030 DATA 1C,0E,07,8E,DC,F8,70,20 9040 DATA FF,FF,FF,FF,FF,FF,FF,FF 9050 DATA FF,FF,F7,E3,C1,80,00,00 9060 DATA FC,F8,F0,E0,C0,E0,F0,F8 9070 DATA FC,FE,FF,FE,FC,F8,70,20 9080 DATA 01,03,07,0F,1F,3F,07,07 9090 DATA 07,07,3F,1F,0F,07,03,01 9100 DATA 00,80,C0,E0,F0,F8,C0,C0 9110 DATA C0,C0,F8,F0,E0,C0,80,00 9500 Y=1 9510 LOCATECO,Y+LI:PRINT"ù" 9520 I$=INKEY$:IFI$=""THEN9520 9525 LOCATECO,Y+LI:PRINT" " 9530 I=ASC(I$):IFI=13THENRETURN 9540 IFI<>30ANDI<>31THEN9510 9560 IFI=30THENY=Y-1ELSEY=Y+1 9570 IFY=0THENY=MA 9580 IFY=MA+1THENY=1 9590 GOTO9510 10000 PRINT:PRINT 10005 IFERL<6500THEN10020 10006 LOCATE0,CSRLIN-1:PRINT"**** ERRO **** Tecle RETURN" 10007 FORN=1TO300:NEXT 10010 LOCATE 0,CSRLIN-1:PRINTSTRING$(28,32):FORN=1TO300:NEXT:IFINKEY$<>CHR$(13)THEN10006 ELSE RESUME 6590 10020 PRINT"Erro";ERR;" na ";ERL:RESUME10030 10030 END |