10 '*** MML Play & Edit program ***
50 CLEAR 9000,&HE7FF: DEFINT A-Z
60 CONSOLE 0,25,1,1: PRINT CHR$(12)
70 CONSOLE ,,0,0: COLOR 0: WIDTH 80,20
100 '-- Declear Val.
110 DIM MM$(9,10),V(9),NA$(9) :'MML data
120 DIM W%(15) :'Wave Parameter
130 DIM M$(15) :'Scal Data
140 DIM T%(13) :'Delay Time Data
150 DIM SD% :'Sound Data
160 DIM OC% :'Current Octave
170 DIM DN% :'Default Note Value
180 DIM TM% :'Time Count Data
190 DIM TT% :'Tempo
195 DIM NT$(14) :'Note Data
199 '--- User Func.
200 DEF USR0 = &HE800 :'Sound Init
210 DEF USR1 = &HE80C :'Sound Clear
220 DEF USR2 = &HE81A :'Sound Off
230 DEF USR3 = &HE820 :'Ch0 Play
240 DEF USR4 = &HE824 :'Ch1 Play
250 DEF USR5 = &HE828 :'Ch2 Play
260 DEF USR6 = &HE831 :'Sound On
270 DEF USR7 = &HE837 :'Copy Char to PCG
300 '--- Init Param.
310 IF PEEK(&HE800)=62 THEN 340 :'Check "3E"
315 PRINT "Initalizing. wait!"
320 GOSUB 9010 :'Mashin Lang. Set
330 D=USR7(1) :'Copy Char to PCG
335 LOCATE 0,0: PRINT SPC(30);
340 GOSUB 9510 :'MML Data Init.
350 GOSUB 9710 :'Delay Time Data Init.
360 D=USR0(SD%) :'Init. PCG Sound
365 OC%=4:DN%=4:TM%=T%(8):TT%=120
370 ML= 2: Y=ML-1: GOSUB 980 :'MML Line
380 CL=15: Y=CL-1: GOSUB 980 :'Cmd Line
390 GOSUB 4910 :'Init. Edit Data
395 G=0: SV=0: M=0: P=1 :'Common Var.s
400 '=== Main Loop ===
410 Y=ML: GOSUB 950
420 GOSUB 910: GOSUB 920: GOSUB 510
425 SV=V(G): IF SV>0 THEN M=1 ELSE M=0
430 MG$="CR:play,E]dit,L]oad,S]ave,N]ew,[0-9] ?": GOSUB 960
440 K$=INPUT$(1): IF K$="!" THEN 490
450 IF K$=CHR$(13) THEN GOSUB 610: GOTO 410
460 S=INSTR("0123456789",K$): IF S>0 THEN G=S-1:GOTO 420
470 S=INSTR("ELSN",K$): IF S=0 THEN 440
480 ON S GOSUB 5010,7010,8010,650
485 GOTO 410
490 MG$="End":GOSUB 970: IF K$="y" THEN END ELSE 430
500 '--- Dsp. Music List
510 GOSUB 3120: LOCATE 0,ML
520 FOR I=1 TO 9
530 IF G=I THEN COLOR 4 ELSE COLOR 0
540 PRINT HEX$(I);":";NA$(I);SPC(20-LEN(NA$(I)));
550 AM=I MOD 3: IF AM=0 THEN PRINT ELSE PRINT TAB(AM*26);
560 NEXT: COLOR 0
570 RETURN
600 '--- Play Music
610 SV=V(G): IF SV=0 THEN M=0: RETURN
620 M=1: GOSUB 710: RETURN
640 '--- Delete MML (New)
650 MG$="Delete": GOSUB 970: IF NOT(K$="y") THEN RETURN
660 FOR I=0 TO 9: MM$(G,I)="": NEXT
670 SV=0: V(G)=0: NA$(G)="": M=0
680 GOSUB 910: GOSUB 920
690 RETURN
700 '=== Play MML ===
705 '--- Main Play Loop
710 OC%=4: DN%=4: TM%=T%(8): TT%=120: ST=0: P=1
715 GOSUB 3150
720 GOSUB 910: GOSUB 920
730 RM=0: RP=0
740 BF$=MM$(G,M): BN=LEN(BF$)
745 GOSUB 910: Y=ML+(M-1)*3: GOSUB 940: GOSUB 3220: COLOR 4
750 IF INKEY$<>"" THEN 870
760 ER=0: ST=0: GOSUB 1020 :'Decode MML
770 IF ST=0 THEN D=USR2(1) :'Sound Off
780 IF ER<0 THEN 830
790 D=USR3(SD%) :'Sound On
800 T=TM%/TT% :'Time Delay
810 FOR I=0 TO T:Z=Z: NEXT
820 GOTO 750
830 IF M<SV THEN M=M+1: P=1: GOTO 740
840 '-- Play End
850 D=USR2(1): COLOR 0: RETURN :'Sound Off
860 '-- Pause
870 D=USR2(1): GOSUB 3240: COLOR 0: MG$="Cont": GOSUB 970
880 IF K$="y" THEN COLOR 4: GOSUB 3250: GOTO 760
890 IF K$="n" THEN RETURN ELSE 870
900 '--- DSP Sub.s
910 LOCATE 0,0:COLOR 0:PRINT USING"M/V[#/#]";M,SV;:PRINT SPC(30);: RETURN
920 LOCATE 40,0:COLOR 0:PRINT HEX$(G);":";NA$(G);SPC(20-LEN(NA$(G)));:RETURN
930 LOCATE 0,0:COLOR 0:PRINT USING"M/V[#/#] P[###],";M,SV,P;
935 PRINT USING"T[###],O[#],L[##] ";TT%,OC%,DN%;:PRINT CHR$(OV+37);:RETURN
940 LOCATE 0,Y:COLOR 0: PRINT BF$;SPC(240-LEN(BF$));: RETURN
950 LOCATE 0,Y:COLOR 0: PRINT SPC(240); : RETURN
960 Y=CL: GOSUB 950: LOCATE 0,Y:PRINT MG$;: RETURN
970 GOSUB 960:PRINT" Sure (y OR n) ?";:K$=INPUT$(1):RETURN
980 LOCATE 0,Y:FOR I=0 TO 79:PRINT "-";:NEXT: RETURN
1000 '--- Decode MML (BF$,frpm P)
1010 P=P+1
1020 IF BN<P THEN ER=-1: RETURN
1030 C$=MID$(BF$,P,1):PRINT C$;
1040 S=INSTR("RCDEFGAB<>OLT^[]/",C$)
1050 IF S=0 THEN 1010
1060 IF C$="^" THEN ST=1: GOTO 1010
1070 IF S>8 THEN 1280
1080 SS=(S-1)*2: SD%=W%(SS): IF SD%=0 THEN 1010
1090 P=P+1: IF BN<P THEN L=DN%: GOTO 1190
1100 C$=MID$(BF$,P,1)
1110 S=INSTR("#+-",C$):IF S=0 THEN 1145 ELSE PRINT C$;
1120 IF S=3 THEN SS=SS-1 ELSE SS=SS+1
1130 SD%=W%(SS): IF SD%=0 THEN 1010 ELSE P=P+1
1135 '--- Sound length
1140 IF BN<P THEN L=DN%: GOTO 1190
1145 IF C$="." THEN L=DN%+1: P=P+1: print c$;: GOTO 1190
1150 GOSUB 1510: IF S2=0 THEN L=DN%:GOTO 1190
1160 IF BN<P THEN 1190
1170 C$=MID$(BF$,P,1):IF C$="." THEN L=L+1:P=P+1:PRINT C$;
1180 '--- Set T-Count Data
1190 TM%=T%(L): ER=0
1200 '-- Count Data Set
1210 IF SS=0 THEN SD=1 : RETURN
1220 IF OC=3 THEN SD=SD*2: RETURN
1230 IF OC=5 THEN SD=SD/2: RETURN
1240 IF OC=6 THEN SD=SD/4: RETURN
1250 RETURN
1270 '--- Special cmd
1280 ON S-8 GOSUB 1310,1330,1360,1410,1610,,1710,1730,1810
1290 GOTO 1020
1300 '--- cmd "<",">" Sub.
1310 IF OC%>3 THEN OC%=OC%-1
1320 P=P+1:RETURN
1330 IF OC%<6 THEN OC%=OC%+1
1340 P=P+1: RETURN
1350 '-- cmd "O" Sub.
1360 P=P+1: IF BN<P THEN RETURN
1370 C$=MID$(BF$,P,1): N=VAL(C$)
1375 print c$;
1380 IF N>2 AND N<7 THEN OC%=N: P=P+1
1390 RETURN
1400 '--- cmd "L" Sub.
1410 P=P+1: IF BN<P THEN RETURN
1430 GOSUB 1510: DN%=L: RETURN
|
1500 '--- Get Note Sub.
1510 C$=MID$(BF$,P,1)
1520 S2=INSTR("31248",C$) :IF S2=0 THEN RETURN
1525 print c$;
1530 IF S2>2 THEN L=VAL(C$): GOTO 1590
1540 P=P+1: IF BN<P THEN L=0:RETURN
1550 C$=MID$(BF$,P,1)
1570 IF S2=1 THEN L=10:print c$;: GOTO 1590
1580 IF S2=2 AND C$="6" THEN L=6: print c$;: ELSE L=0: RETURN
1590 P=P+1: RETURN
1600 '--- cmd "T" Sub.
1610 NN=0
1620 P=P+1: IF BN<P THEN RETURN
1630 C$=MID$(BF$,P,1)
1640 S3=INSTR("1234567890",C$)
1650 IF S3>0 THEN PRINT C$;: NN=VAL(C$)+NN*10: GOTO 1620
1660 TT%=NN
1670 RETURN
1700 '--- Set Repeat "["
1710 P=P+1:RM=M: RP=P: RETURN
1720 '--- Jump Repeat "]"
1730 IF RP=0 THEN P=P+1: RE=0: RETURN
1740 RE=P+1:' PRINT"]";
1750 M=RM: P=RP: RP=0
1760 BF$=MM$(G,M):BN=LEN(BF$):GOSUB 910:Y=ML+(M-1)*3:GOSUB 940
1770 LOCATE 0,Y: COLOR 4: IF P=1 THEN RETURN
1780 PRINT LEFT$(BF$,P-1); :RETURN
1800 '--- Break Loop "/"
1810 IF RE=0 THEN P=P+1: RETURN
1820 COLOR 0: PRINT MID$(BF$,P+1,RE-P-1);
1830 P=RE: RE=0: COLOR 4
1840 RETURN
3000 '=== Edit MML ===
3100 '--- MML Data Dsp. Sub.
3110 FOR Y=2 TO 11 STEP 3:LOCATE 0,Y:PRINT SPC(240)::NEXT:RETURN
3120 FOR Y=5 TO 11 STEP 3:LOCATE 0,Y:PRINT SPC(240)::NEXT:RETURN
3150 LOCATE 0,ML :'Dsp. 4-MML
3160 FOR I=0 TO 3
3170 IF I<SV THEN BF$=MM$(G,I+1):Y=ML+I*3: GOSUB 940
3180 NEXT: RETURN
3190 Y=ML+(M-1)*3: GOTO 940 :'Dsp.MML Sub.
3200 '--- Cursol Position
3220 X=(P-1)MOD 80: Y=(P-1)/80 :'Cal.Cur.Pos.
3230 LOCATE X,ML+(M-1)*3+Y: RETURN :'Set Cur.Pos.
3240 CX=POS(X): CY=CSRLIN: CP=P:RETURN :'Save Cur.Pos.
3250 LOCATE CX,CY: P=CP: RETURN :'ReSet Cur.Pos.
4000 '--- Cursol Action
4010 ON S GOSUB 4110,4210,4310,4410,4050,4060
4020 GOTO 5080
4050 P=INT((P-1)/80)*80+1: GOTO 3220
4060 P=P+10: IF P=<BN THEN 3220
4070 P=BN+1: IF P>240 THEN P=240
4080 GOTO 3220
4100 '-- right (&H1C)28
4110 IF P<240 AND BN>P THEN P=P+1: GOTO 3220
4120 IF M=SV THEN RETURN ELSE 4430 :'Next M
4200 '-- left (&H1D)29
4210 IF P>1 THEN P=P-1: GOTO 3220
4220 IF M<2 THEN RETURN ELSE 4330 :'Prev. M
4300 '-- up (&H1E)30
4310 IF P>80 THEN P=P-80:GOTO 3220
4320 IF M=1 THEN RETURN
4330 MM$(G,M)=BF$: M=M-1 :'Move M-1
4340 BF$=MM$(G,M): BN=LEN(BF$)
4350 P=BN: GOSUB 3220
4390 RETURN
4400 '--- down (&H1F)31
4410 IF P<160 AND BN>P+80 THEN P=P+80: GOTO 3220
4420 IF M=SV THEN RETURN
4430 MM$(G,M)=BF$: M=M+1 :'Move M+1
4440 BF$=MM$(G,M): BN=LEN(BF$)
4450 P=1 : GOSUB 3220
4480 RETURN
4500 '--- Insert Char.
4510 IF BN+LEN(S$)>240 THEN RETURN
4520 IF P=BN THEN BF$=BF$+S$: GOTO 4580
4530 IF P<2 THEN BF$=S$+BF$: GOTO 4580
4540 BF$=LEFT$(BF$,P-1)+S$+MID$(BF$,P)
4580 P=P+LEN(S$): RETURN
4600 '--- Overwrite Char.
4610 IF BN+LEN(S$)>241 THEN RETURN
4620 IF P=BN THEN BF$=LEFT$(BF$,P-1)+S$:GOTO 4680
4630 IF P<2 THEN BF$=S$+MID$(BF$,2): GOTO 4680
4640 BF$=LEFT$(BF$,P-1)+S$+MID$(BF$,P+1)
4680 P=P+LEN(S$)-1: RETURN
4700 '--- Delete Char.
4710 IF BN=0 THEN RETURN
4720 IF OV THEN GOSUB 4810 ELSE 4760
4730 BN=LEN(BF$): RETURN
4750 '--- MD:=Ins
4760 IF P=1 THEN RETURN
4770 IF P=2 THEN BF$=MID$(BF$,2): P=P-1: RETURN
4780 BF$=LEFT$(BF$,P-2)+MID$(BF$,P):P=P-1:RETURN
4800 '--- MD:=Ovr
4810 IF P>1 THEN GOSUB 4840:P=P-1:RETURN
4820 IF BN=1 THEN BF$="" ELSE BF$=MID$(BF$,2)
4830 RETURN
4840 IF P=BN THEN BF$=LEFT$(BF$,P-1): RETURN
4850 BF$=LEFT$(BF$,P-1)+MID$(BF$,P+1): RETURN
4900 '--- Edit MML Init
4910 K1$="sedrfgyhujik "
4920 K2$=CHR$(13)+")("
4930 K3$="NVMQW$"
4940 K4$="Z%&"
4950 K5$=CHR$(28)+CHR$(29)+CHR$(30)+CHR$(31)
4960 K6$=K5$+CHR$(12)+"p"
4970 RESTORE 4990
4980 FOR I=1 TO 13: READ NT$(I):NEXT:RETURN
4990 DATA "C","C#","D","D#","E","F","F#","G","G#","A","A#","B","R"
5000 '---Edit MML Main Loop
5010 IF G=0 THEN RETURN ELSE OV=0
5020 SV=V(G):IF SV=0 THEN SV=1:M=1
5040 GOSUB 3110:P=1 :'MML Clear
5050 GOSUB 3150 :'Dsp. 4-MML
5060 BF$=MM$(G,M): BN=LEN(BF$)
5070 MG$="[s-k][C-B]:Note,[VMNQW$Z%&)(]: ?":GOSUB 960
5080 GOSUB 930: GOSUB 920 :'Loop Ent.
5090 GOSUB 3220: BN=LEN(BF$) :'Set Cur.
5100 '---
5110 COLOR 0: S$=INPUT$(1)
5120 IF S$="X" THEN 5310
5130 IF S$=CHR$(8) THEN GOSUB 4710: GOTO 5220 :'Delete
5140 S=INSTR(K1$,S$): IF S>0 THEN S$=NT$(S):GOTO 5210 :'Note
5150 S=INSTR(K2$,S$): IF S>0 THEN 5510 :'Play
5160 S=INSTR(K3$,S$): IF S>0 THEN 6010 :'Cmd
5170 S=INSTR(K4$,S$): IF S>0 THEN 5710 :'Mode
5180 S=INSTR(K6$,S$): IF S>0 THEN 4010 :'Cursol
5190 IF S$>="a" AND S$=<"z" THEN 5110
5200 '-- Set MML
5210 IF OV THEN GOSUB 4610 ELSE GOSUB 4510
5220 MM$(G,M)=BF$: BN=LEN(BF$)
5230 GOSUB 3190
5250 GOTO 5080
5300 '--- MML Check
5310 IF SV=0 THEN RETURN ELSE ER=0
5320 FOR I=1 TO SV
5330 S=INSTR("RCDEFGAB<>OLT^[]/",LEFT$(BF$,1))
5340 IF S=0 THEN ER=9: GOTO 5370
5350 NEXT
5360 RETURN
5370 MG$="Not MML Comand! at "+HEX$(I)+" ! END": GOSUB 970
5380 IF K$="y" THEN RETURN ELSE 5070
5500 '--- Test Play
5510 IF SV=0 THEN 5110
5520 ON S GOSUB 720,710,5550
5530 GOTO 5050
5540 '
5550 IF M=0 THEN RETURN
5560 M=1: GOTO 710
|
5700 '-- Mode "Z%&"
5710 ON S GOSUB 5730,5740,5750
5720 GOTO 5070
5730 OV = OV XOR 1: RETURN
5740 OV = 0: RETURN
5750 OV = 1: RETURN
6000 '-- Cmd Action "NVMQW$"
6010 ON S GOSUB 6110,6210,6320,6410,8010,7110,
6020 V(G)=SV
6030 GOTO 5020
6100 '-- N cmd
6110 MG$="Add(Ins) New MML":GOSUB 970: IF NOT(K$="y") THEN RETURN
6120 IF SV>3 THEN RETURN
6130 IF M=SV THEN 6150
6140 FOR I=SV TO M+1 STEP -1: MM$(G,I+1)=MM$(G,I): NEXT
6150 M=M+1: MM$(G,M)="": SV=SV+1: RETURN
6200 '--- V cmd
6210 MG$="Sepalate MML":GOSUB 970: IF NOT(K$="y") THEN RETURN
6220 IF SV>3 THEN RETURN
6230 FOR I=SV TO M+1 STEP -1: MM$(G,I+1)=MM$(G,I): NEXT
6240 MM$(G,M+1)=MID$(MM$(G,M),P)
6250 MM$(G,M)=LEFT$(MM$(G,M),P-1)
6280 SV=SV+1: RETURN
6300 '--- M CMD
6310 MG$="Merge MML":GOSUB 970: IF NOT(K$="y") THEN RETURN
6320 IF M=SV THEN RETURN
6330 IF BN+LEN(MM$(G,M+1))>240 THEN RETURN
6340 MM$(G,M)=MM$(G,M)+MM$(G,M+1)
6350 IF M+1=SV THEN 6390
6360 FOR I=M+1 TO SV-1: MM$(G,I)=MM$(G,I+1): NEXT
6390 SV=SV-1: RETURN
6400 '--- Q cmd
6410 MG$="Erase MML":GOSUB 970: IF NOT(K$="y") THEN RETURN
6420 MM$(G,M)=""
6430 IF M=SV THEN M=M-1: GOTO 6490
6440 FOR I=M TO SV-1: MM$(G,I)=MM$(G,I+1): NEXT
6490 SV=SV-1: RETURN
7000 '--- Load MML
7010 IF G=0 THEN RETURN
7020 LOCATE 0,ML: GOSUB 10050
7030 MG$="0:Load File, [1-9]:Demo Load ?": GOSUB 960
7040 K$=INPUT$(1): IF k$="0" THEN 7110
7050 S=INSTR("123456789",K$): IF S=0 THEN RETURN
7060 MG$="Load Demo"+hex$(S):GOSUB 970
7070 IF NOT(K$="y") THEN RETURN
7080 GOSUB 10010: RETURN
7100 '--- Load file
7110 MG$="Load File":GOSUB 970
7120 IF NOT(K$="y") THEN RETURN
7130 PRINT "-- Loading --";
7140 INPUT#-1,SV,N$: V(G)=SV: NA$(G)=N$
7150 FOR I=1 TO SV: INPUT#-1,MM$(G,I):NEXT
7160 RETURN
8000 '--- Save MML
8010 IF G=0 OR SV=0 THEN RETURN
8020 MG$="Save File as ["+NA$(G)+"] (y OR n OR c:Chang Name) ":GOSUB 960
8030 K$=Input$(1)
8040 IF K$="y" THEN 8110
8050 IF K$="c" THEN 8150
8060 RETURN
8110 PRINT "-- Saving --";
8120 PRINT#-1,V(G),NA$(G)
8130 FOR I=1 TO V(G): PRINT#-1,MM$(G,I):NEXT
8140 RETURN
8150 LOCATE 0,CL+1: PRINT NA$(G);
8160 LOCATE 0,CL+1: LINE INPUT NA$(G)
8170 IF LEN(NA$(G))>20 THEN NA$(G)=LEFT$(NA$(G),20)
8180 GOTO 8020
9000 '=== Mashin & Sound Data Init. ===
9010 RESTORE 9030: A=&HE800
9020 FOR I=0 TO 80: READ B: POKE A+I,B: NEXT: RETURN
9030 '--- Sound Init. *S_INI: $E800H
9040 DATA &H3E,&H36 :'E800 LD A,00110110B ;Mode3
9050 DATA &HD3,&H0F :'E802 OUT (0FH),A ;Ch0
9060 DATA &H3E,&H76 :'E804 LD A,01110110B
9070 DATA &HD3,&H0F :'E806 OUT (0FH),A ;Ch1
9080 DATA &H3E,&HB6 :'E808 LD A,10110110B
9090 DATA &HD3,&H0F :'E80A OUT (0FH),A ;Ch2
9100 DATA &H3E,&H01 :'E80C LD A,01H
9110 DATA &HD3,&H0C :'E80E OUT (0CH),A ;Ch0
9120 DATA &HD3,&H0C :'E810 OUT (0CH),A
9130 DATA &HD3,&H0D :'E812 OUT (0DH),A ;Ch1
9140 DATA &HD3,&H0D :'E814 OUT (0DH),A
9150 DATA &HD3,&H0E :'E816 OUT (0EH),A ;Ch2
9160 DATA &HD3,&H0E :'E818 OUT (0EH),A
9170 '--- Sound Off *S_OFF: $E808H
9180 DATA &H3E,&H00 :'E81A LD A,00000000B
9190 DATA &HD3,&H02 :'E81C OUT (02H),A
9200 DATA &HC9 :'E81E RET
9210 DATA 0 :'E81F DB 0
9220 '--- Play Sub. (OUTI) $E820
9230 DATA &H0E,&H0C :'E820 LD C,0CH ;<-Ch0
9240 DATA &H18,&H06 :'E822 JR E02A (+6)
9250 DATA &H0E,&H0D :'E824 LD C,0DH ;<-Ch1
9260 DATA &H18,&H02 :'E826 JR E02A (+2)
9270 DATA &H0E,&H0E :'E828 LD C,0EH ;%lt-Ch2
9280 DATA &HFE,&H02 :'E82A CP 02H
9290 DATA &HC0 :'E82C RET NZ
9300 DATA &HED,&HA3 :'E82D OUTI ;(HL)->(C),HL=HL+1
9310 DATA &HED,&HA3 :'E82F OUTI ;(HL)->(C),HL=HL+1
9320 '--- Sound On *S_ON: $E031
9330 DATA &H3E,&HC8 :'E831 LD A,11001000B
9340 DATA &HD3,&H02 :'E833 OUT (02H),A
9350 DATA &HC9 :'E835 RET
9360 DATA 0 :'E836 DB 0
9370 '--- Copy Char2PCG *CP_CHR $E837
9380 DATA &H21,&H00,&H00 :'E837 LD HL,0000H
9385 DATA &H01,&H00,&H04 :'E83A LD BC,0400H
9390 DATA &H7D :'E83D LD A,L
9395 DATA &HD3,&H01 :'E83E OUT (01H),A
9400 DATA &H7C :'E840 LD A,H
9405 DATA &HF6,&H30 :'E841 OR 30H
9410 DATA &HD3,&H02 :'E843 OUT (02H),A
9415 DATA &HE6,&HCF :'E845 AND 0CFH
9420 DATA &HD3,&H02 :'E847 OUT (02H),A
9425 DATA &H23 :'E849 INC HL
9430 DATA &H10,&HF1 :'E84A DJNZ 0E03CH
9435 DATA &H0D :'E84C DEC C
9440 DATA &H20,&HEE :'E84D JR NZ,0E03CH
9445 DATA &HC9 :'E84F RET
9450 DATA 0 :'E850 DB 0
9500 '--- Sound Generate Data n = 3993600/f
9510 RESTORE 9530
9520 FOR I=0 TO 15: READ W%(I),M$(I): NEXT: RETURN
9530 DATA 1 ,R :' rest
9540 DATA 0 ,B3 :'
9550 DATA 15264 ,C4 :' 261.63 Hz (3BA0H)
9560 DATA 14408 ,C#4:' 277.18 Hz (3848H)
9570 DATA 13599 ,D4 :' 293.66 Hz (351FH)
9580 DATA 12836 ,D#4:' 311.13 Hz (3224H)
9590 DATA 12115 ,E4 :' 329.63 Hz (2F53H)
9600 DATA 0 ,E#?:'
9610 DATA 11435 ,F4 :' 349.23 Hz (2CABH)
9620 DATA 10794 ,F#4:' 369.99 Hz (2A2AH)
9630 DATA 10188 ,G4 :' 392.00 Hz (27CCH)
9640 DATA 9616 ,G#4:' 415.30 Hz (2590H)
9650 DATA 9076 ,A4 :' 440.00 Hz (2374H)
9660 DATA 8567 ,A#4:' 466.16 Hz (2177H)
9670 DATA 8086 ,B4 :' 493.88 Hz (1F96H)
9680 DATA 0 ,C5 :' 523.25 Hz (1DD0H)
9700 '--- Time Delay
9710 RESTORE 9730
9720 FOR I=0 TO 11: READ T%(I): NEXT: RETURN
9730 DATA 24000,24000 :'1
9740 DATA 12000,18000 :'2
9750 DATA 6000, 9000 :'4
9760 DATA 1100, 1650 :'16
9770 DATA 3000, 4500 :'8
9780 DATA 400, 600 :'32
|