Compucolor.org – Virtual Media

Listing of file='SOUNDR.BAS;04' on disk='vmedia/taylor_8-sector.ccvf'

10 PLOT 12,15,6,2,3,10,15
15 PRINT "AY-3-8910 SOUND GENERATION SELECTOR PROGRAM"
20 PRINT :PRINT :PRINT TAB( 15)"MAKE THE SOUNDS YOU'VE ALWAYS DREAMED OF."
25 PLOT 27,4:PRINT "RUN RUNLNK":PLOT 27,27
30 CLEAR 200
35 DEF FN L(X)= X- (INT (X/ 256)* 256)
40 DEF FN R(X)= INT (X/ 256)
50 DIM VC(6,3)
60 DATA "TUNE VALUE (0 TO 12 BITS WORTH)? ","SLIDE START VALUE (0 TO 255)? ","SLIDE STOP VALUE ?"
61 DATA "SLIDE INCREMENT? ","NOISE VALUE? (0 TO 31, 0= NONE)? ","VOLUME (TOTAL SHOULD BE < 16)? "
65 FOR X= 0TO 5:READ PR$(X):NEXT
100 PLOT 12
200 REM

GET USER PARAMETERS


210 PRINT "WE NOW ASK FOR YOUR SOUND PARAMETER VALUES. IF YOU WANT A VALUE"
215 PRINT "TO BE UNCHANGED, PRESS THE TAB KEY FOLLOWED BY RETURN."
220 PRINT :PRINT
225 INPUT "WHICH VOICE (1,2, OR 3)? ";A
226 IF A< 1OR A> 3THEN 225
230 Y= INT (A):VC(0,Y)= 1
240 PRINT "VOICE"Y:PRINT
250 P= 1:GOSUB 600
260 PRINT "YOUR TONE CAN START AND STOP ANYWHERE OVER A 255 STEP INTERVAL"
262 P= 2:GOSUB 600
264 P= 3:GOSUB 600
270 INPUT "DO YOU WANT A SLIDING TONE? ";YN$
280 IF YN$= "N"THEN VC(4,Y)= 0:GOTO 290
282 IF YN$< > "Y"THEN 270
284 P= 4:GOSUB 600
290 PRINT "YOU CAN HAVE ONE NOISE VALUE, TOO, ON ANY VOICE."
292 P= 5:GOSUB 600
300 P= 6:GOSUB 600
310 PRINT :INPUT "ANOTHER VOICE? ";YN$
320 IF YN$= "Y"THEN GOTO 225
322 IF YN$< > "N"THEN 310
330 INPUT "TIME INTERVAL (0 TO 255)? ";TI
340 GOSUB 2000
400 M1= 12* 16* 256+ 36
410 M2= M1+ 13:M3= M2+ 13
420 FOR X= 1TO 3
425 IF VC(0,X)< > 1THEN 525
430 IM= (X- 1)* 13
435 POKE M1+ IM,FN L(VC(1,X))
436 POKE M1+ 1+ IM,FN R(VC(1,X))
440 POKE M1+ 2+ IM,VC(2,X)
445 POKE M1+ 3+ IM,VC(3,X)
450 POKE M1+ 4+ IM,FN L(VC(4,X))
452 POKE M1+ 5+ IM,FN R(VC(4,X))
455 POKE M1+ 9+ IM,VC(5,X)
460 POKE M1+ 10+ IM,VC(6,X)
470 MM= 255:TM= INT (2^ (X- 1))
475 IF VC(5,X)< > 0THEN TM= TM+ TM* 8
476 PRINT "MIX MASK ="TM
480 POKE M1+ 12+ IM,TM
500 GOTO 550
525 REM  NOT THIS TIME FOR THIS VOICE
526 POKE M1+ 12+ IM,0
527 POKE M1+ 10+ IM,0
550 NEXT
555 GOSUB 1000
560 Z= CALL (TI* 265)
599 END
600 REM

PRINT, SOLICIT VALUES


605 PRINT PR$(P- 1)" ";
610 PRINT "CURRENT VALUE ="VC(P,Y);" NEW ";
620 INPUT "";NV$:NV= VAL (NV$)
630 IF NV$= CHR$ (9)THEN RETURN
640 VC(P,Y)= NV:RETURN
1000 FOR X= 1TO 3
1010 PRINT M1+ 13* (X- 1),
1020 FOR Y= 0TO 12
1030 PRINT PEEK (M1+ 13* (X- 1)+ Y);
1040 NEXT :NEXT
1050 RETURN
2000 REM  PRINT PARAMS
2010 PLOT 12
2015 PRINT "VOICE 1";TAB( 12)"VOICE 2";TAB( 24)"VOICE 3"
2017 FOR A= 0TO 6
2020 FOR B= 1TO 3
2022 PRINT A;
2025 FOR B= 1TO 3
2030 PRINT VC(A,B);TAB( B* 12);
2040 NEXT :PRINT
2050 NEXT :RETURN