10 REM *** JOLLY JINGLES *** 20 REM *** by L Knight *** 30 MODE7:PRINTTAB(12,3)CHR$141;"JOLLY JINGLES"'TAB(12)CHR$141;"JOLLY JINGLES" 40 PRINTTAB(1,9)"‚In a moment I will start to compose"'"‚ and play for you a selection of"'"‚ jolly little tunes."'' 50 PRINT"‚ Once I get started I am liable to"'"‚ go on for ever - so when you have"'"‚ heard enough press SPACE."'''"‚ I will then complete the current"'"‚ tune - and shut up." 60 FORX=0TO12500:NEXT:MODE4 70 PROCinit:VDU5 80 PROCchoose_rhythm:PROCchoose_notes:CLS 90 PROCplay 100 IFINKEY200<>32GOTO80 110 X=INKEY400:MODE7:PRINTTAB(1,8)"‚I hope you enjoyed my little"'"‚ recital and had your soul"'"‚ uplifted by it."'''' 120 PRINT"† Available for parties, weddings,"'"† funerals etc."''"† Rates very reasonable."''' 130 END 140 DEFPROCinit 150 ENVELOPE1,0,0,0,0,0,0,0,126,-4,-3,-3,126,100 160 ENVELOPE2,0,0,0,0,0,0,0,126,-4,-2,-4,80,63 170 ENVELOPE3,2,-1,2,-1,1,1,1,120,-2,0,-5,120,30 180 ENVELOPE4,2,-1,2,-1,1,1,1,70,-2,0,-5,70,30 190 ENVELOPE5,1,0,0,0,0,0,0,126,-1,0,-1,126,63 200 ENVELOPE6,1,0,0,0,0,0,0,126,-1,0,-1,90,50 210 ENVELOPE7,3,0,0,0,0,0,0,126,-1,0,-2,126,100 220 ENVELOPE8,3,0,0,0,0,0,0,126,-1,0,-2,100,80 230 ENVELOPE9,1,0,0,0,0,0,0,60,-2,-1,-1,120,50 240 ENVELOPE10,1,0,0,0,0,0,0,60,-2,-1,-1,80,30 250 ENVELOPE11,1,0,0,0,0,0,0,60,0,0,-60,110,80 260 ENVELOPE12,1,0,0,0,0,0,0,40,0,0,-40,70,50 270 ENVELOPE13,1,0,0,0,0,0,0,63,20,0,-63,75,120 280 ENVELOPE14,1,0,0,0,0,0,0,63,30,0,-63,50,80 290 Z%=0:XO%=0:YO%=0 300 e%=RND(7):e2%=RND(7):c%=RND(7) 310 VDU23,240,1,1,1,1,1,1,1,1,23,241,1,1,61,127,255,255,126,60 320 DIMD%(3,12):DIMP%(3,12):DIMN%(15):DIMK%(6) 330 FORL%=1TO15:READN%(L%):NEXT 340 FORL%=1TO6:READK%(L%):NEXT 350 DATA 5,13,21,25,33,41,45,53,61,69,73,81,89,93,101,0,16,28,48,64,76 360 ENDPROC 370 DEFPROCchoose_rhythm 380 T%=2+RND(2):B%=2+RND(2) 390 FORL%=0TO1:FORN%=0TO8STEP4:J%=0:R%=B%:FORS%=0TO3:R%=R%-J%:IFR%>1 J%=RND(R%)ELSEJ%=R% 400 D%(L%,N%+S%)=J%*T%:D%(L%+2,N%+S%)=J%*T%:NEXT:NEXT:NEXT 410 FORL%=0TO3:D%(L%,12)=B%*T%:NEXT:ENDPROC 420 DEFPROCchoose_notes 430 K%=4*RND(9)-4 440 FORL%=1TO3:FORN%=0TO12:IFD%(L%,N%)<>0PROCpitch 450 P%(L%,N%)=N%(Q%)+K%:NEXT:NEXT 460 FORN%=0TO12:P%(0,N%)=P%(2,N%):NEXT 470 e%=(e%+RND(5))MOD6+1:e2%=(e2%+RND(5))MOD7+1 480 E%=2*e%:E2%=(RND(2)DIV2)*2*e2% 490 I1%=48*(RND(2)-1):I2%=I1%+48*(RND(2)-1) 500 ENDPROC 510 DEFPROCplay 515 c%=(c%+RND(4))MOD7+1 520 VDU19,1,c%,0,0,0 530 FORL%=0TO3:FORN%=0TO12:D%=D%(L%,N%):IF(N%MOD4)=0 E1%=E%-1ELSEE1%=E% 540 IFD%=0GOTO600 550 P%=P%(L%,N%):P1%=P%+I1%:P2%=P%+I2% 560 REPEATUNTILTIME>Z% 570 SOUND&101,E1%,P1%,D%*0.75:SOUND&102,E2%,P2%,D% 580 IFT%=3 Z%=TIME+D%*6.5ELSEZ%=TIME+D%*5.5 590 PROCgraphics 600 NEXT:NEXT:ENDPROC 610 DEFPROCpitch 620 IFN%=0PROCnote0:GOTO680 630 IFL%<3ANDN%=12PROCnote12:GOTO680 640 IFN%=12PROCfinalnote:GOTO680 650 IF(N%>7ANDN%<12ANDD%(L%,N%+1)=0)ORN%=11PROCpenultnote:GOTO680 660 Q%=Q%+(RND(4)*(2*RND(2)-3)):IFQ%<1 Q%=Q%+5 670 IFQ%>15 Q%=Q%-5 680 ENDPROC 690 DEFPROCnote0:Q%=2*RND(5):IFQ%>9 Q%=Q%+1 700 IFQ%=2 Q%=1 710 ENDPROC 720 DEFPROCnote12:H%=3-2*RND(2):I%=RND(3)-1:REPEATI%=I%+1:H%=-H%:Q%=Q%+H%*I%:UNTILQ%=1ORQ%=4ORQ%=6ORQ%=8ORQ%=11ORQ%=13:ENDPROC 730 DEFPROCpenultnote:Q%=Q%+RND(9)-5:H%=3-2*RND(2):I%=0:REPEATI%=I%+1:H%=-H%:Q%=Q%+H%*I%:UNTILQ%=3ORQ%=5ORQ%=10ORQ%=12:ENDPROC 740 DEFPROCfinalnote:IFQ%>4ANDQ%<11 Q%=4+7*(RND(2)-1):ENDPROC 750 IFQ%>11 Q%=11ELSEQ%=4:ENDPROC 760 DEFPROCgraphics 770 X%=N%*100:Y%=9*(P%+10-K%) 780 GCOL0,0:MOVEXO%,YO%:VDU240,8,10,241 790 GCOL0,1:MOVEX%,Y%:VDU240,8,10,241:XO%=X%:YO%=Y%:ENDPROC