Programs 2068 music.
Appears on
Library tape from the Sinclair Computer Users Society (SINCUS).
Gallery
Source Code
10 REM /_sound pro\\_ by #MILL RESEARCH# 12 REM goto 195, dont run 20 LET ps=1 30 LET ch=0 170 DIM a(15) 180 LET n=0 185 LET l$="________________________________" 190 DIM p(100,15) 195 OVER 1 200 CLS 210 PRINT TAB (10);"menu" 215 PRINT AT 0,0;l$ 220 PRINT : PRINT 230 PRINT "1) program mode" 240 PRINT "2) execute program" 250 PRINT "3) set volume" 260 PRINT "4) set note" 270 PRINT "5) enable channel" 280 PRINT "6) set envelope period" 290 PRINT "7) program envelope shape" 300 PRINT "8) set noise" 310 PRINT "9) PRINT register status" 320 PRINT "10) execute" 390 PRINT "12) deactivate all channels" 400 INPUT c 410 IF c>12 OR c<1 THEN GO TO 310 420 GO SUB c*500 499 GO TO 200 500 REM program 510 CLS 520 PRINT TAB 10;">Program mode<" 530 PRINT AT 0,0;l$ 540 GO SUB 4500 550 INPUT "is this sound ready to be saved?";x$ 560 IF x$="n" THEN GO TO 700 570 INPUT "enter duration";a(15) 575 PRINT ''"program step: ";ps 580 INPUT "is this the right step?";x$ 590 IF x$="n" THEN INPUT "type step#";ps 595 FOR i=1 TO 15 600 LET p(ps,i)=a(i) 610 NEXT i 620 LET ps=ps+1 690 RETURN 700 INPUT "do you wish to copy another step?";x$ 710 IF x$="n" THEN RETURN 715 INPUT "enter step to copy";n 720 FOR i=1 TO 15 730 LET a(i)=p(n,i) 740 NEXT i 750 GO TO 550 1000 REM execprog 1010 CLS : PRINT TAB (10);"program execution" 1020 PRINT AT 0,0;l$ 1030 INPUT "enter steps to start and finish at";ss 1040 INPUT fs 1045 INPUT "do you wish to print";x$ 1050 FOR i=ss TO fs 1052 CLS 1055 PRINT l$;"step ";i' 1060 FOR j=7 TO 13 1070 IF x$="y" THEN PRINT j,p(i,(j+1)) 1080 SOUND j,p(i,(j+1)) 1090 NEXT j 1100 FOR k=0 TO 6 1110 IF x$="y" THEN PRINT k,p(i,(k+1)) 1120 SOUND k,p(i,(k+1)) 1130 NEXT k 1135 PAUSE p(i,15) 1140 FOR l=0 TO 13 1150 SOUND l,0 1160 NEXT l 1170 NEXT i 1190 RETURN 1500 REM amplitude 1510 CLS 1520 PRINT "type voice to set volume for" 1530 PRINT 1540 PRINT "1) A, 2) B ,3) C" 1550 INPUT V 1560 INPUT "enter volume (0-15, 16 enables envelope)";a(v+8) 1570 INPUT "enter another?";x$ 1580 IF x$="y" THEN GO TO 1500 1590 RETURN 2000 REM note 2005 OVER 1 2010 CLS 2020 PRINT TAB 12;"Tune" 2025 PRINT AT 0,12;"____" 2030 OVER 0 2050 PRINT ''"coarse (0-15)","fine(0-255)" 2060 PRINT 2070 PRINT "channel A=1, B=2, C=3" 2080 INPUT "0)fine or 1) coarse(2 TO RETURN )";n 2085 IF n<>1 AND n<>0 THEN RETURN 2090 INPUT "type channel";v 2100 INPUT "enter tone";tn 2120 LET a(n+v*2-1)=tn 2150 GO TO 2080 2500 REM enable 2505 LET en=0 2510 CLS 2520 PRINT "type each number beside channel to enable and enter 0 to stop" 2530 PRINT 2540 PRINT "tone A=1 B=2 C=4"''"Noise A=8 B=16 C=32" 2550 FOR i=1 TO 6 2560 INPUT n: LET en=en+n 2565 IF n=0 THEN GO TO 2580 2570 NEXT i 2580 LET a(8)=63-en 2590 RETURN 3000 REM envelope period 3010 CLS 3020 PRINT TAB 10;"envelope period" 3030 PRINT AT 0,0;l$ 3040 PRINT : PRINT 3050 PRINT "coarse and fine (0-255)" 3060 INPUT "1) fine 2) coarse 3)menu";n 3070 IF n>2 THEN RETURN 3080 INPUT "period value";pr 3090 LET a(11+n)=pr 3095 GO TO 3060 3500 REM envelope shape 3505 LET ef=0 3510 CLS : PRINT TAB 10;"envelope shape" 3520 PRINT AT 0,0;l$ 3530 PRINT : PRINT 3540 PRINT "Add to enable: 1) hold"'"2) alternate 4) attack 8) continue" 3550 PRINT 'TAB 12;"wave forms" 3560 PRINT '"0 \\________","4 /________"'"8 \\_\\_\\_\\_\\_\\_","9 \\________" 3570 PRINT "10 \\/\\/\\/\\/\\/","11 \\-----"'"12 /_/_/_/_/_/","13 /-------" 3580 PRINT "14 /\\/\\/\\/\\/\\","15 /________" 3590 PRINT '"0) for menu" 3600 INPUT "enter wave form (0-15)";w 3605 FOR i=1 TO 4 3610 INPUT "enter any above effects (1-8) (0 to quit)";n 3620 IF n>8 OR n<1 THEN GO TO 3650 3630 LET ef=ef+n 3640 NEXT i 3650 LET a(14)=w+ef 3690 RETURN 4000 REM noise 4005 CLS 4010 PRINT TAB 14;"noise" 4020 PRINT AT 0,0;l$ 4030 PRINT ''"noise frequency (0-31)"''"higher value= lower frequency" 4040 INPUT "noise rate";n 4050 IF n>31 OR n<0 THEN GO TO 4040 4060 LET a(7)=n 4090 RETURN 4500 REM status 4502 CLS 4505 OVER 0 4510 PRINT TAB 9;"register status" 4515 PRINT AT 0,0;l$ 4520 PRINT ''"register function VAL " 4530 PRINT AT 4,0;l$ 4540 FOR i=0 TO 13 4550 PRINT i;TAB 24;a(i+1) 4560 NEXT i 4570 PAUSE 1000 4590 RETURN 5000 REM execute 5010 FOR i=7 TO 13 5015 REM IF a(i+1)=0 THEN NEXT i 5017 IF i=14 THEN GO TO 5040 5020 SOUND i,a(i+1) 5025 PRINT i,a(i+1) 5030 NEXT i 5040 FLASH 1 5050 REM v 5060 FOR i=0 TO 6 5075 IF i=7 THEN GO TO 5095 5080 SOUND i,a(i+1) 5082 PRINT i,a(i+1) 5085 PAUSE 100 5090 NEXT i 5095 FLASH 0 5099 RETURN 6000 REM deactivate 6002 CLS 6005 FLASH 1 6007 PRINT "dissabling channels" 6010 FOR i=0 TO 13 6020 SOUND i,0 6030 NEXT i 6040 FLASH 0 6050 INPUT "erase memory?";x$ 6060 IF x$="y" THEN DIM a(14) 6070 RETURN 9998 SAVE "Sound Pro": BEEP .4,15: GO TO 1