Sound Pro

Date: 198x
Type: Program
Platform(s): TS 2068

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

People

No people associated with this content.

Scroll to Top