home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib21a.dsk
/
AUGUST.1984
/
SOUND.DEMO.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
7KB
|
133 lines
10 REM ***************************
20 REM * SOUND.DEMO *
30 REM * BY JAMES R. GESCHWENDER *
40 REM * COPYRIGHT (C) 1984 *
50 REM * BY MICROSPARC, INC. *
60 REM * LINCOLN, MA. 01773 *
70 REM ***************************
80 DIM Y(4):D$ = CHR$(4):STADD = 25600:Z = 12.5
90 PRINT D$;"BLOAD SOUND.READER"
100 FOR N = 0 TO 4: READ Y(N): NEXT : DATA 65,77,89,107,128
110 TEXT : HOME : VTAB 10: HTAB 8: PRINT "** SOUND DEMONSTRATION **": VTAB 22: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **"
120 PRINT D$;"BLOAD SOUNDS"
130 FOR N = 0 TO 3000: NEXT : CALL 768,6,1,1,30
140 CALL 768,13,5,2,13: CALL 768,14,5,1,13: FOR N = 1 TO 450: NEXT : CALL 768,13,5,1,13
150 CALL 768,9,3,40,4: GOSUB 210
160 CALL 768,9,3,15,4: GOSUB 210: GOSUB 210
170 FOR N = 1 TO 1500: NEXT
180 CALL 768,11,2,1,30: FOR N = 1 TO 500: NEXT
190 FOR N = 1 TO 10: CALL 768,7,1,1,1:X = RND(1) *440: FOR Q = 1 TO X: NEXT Q: NEXT N
200 GOTO 220
210 CALL 768,8,2,1,8: FOR N = 1 TO 9: CALL 768,10,N,1,1: POKE -16299,0: CALL 768,10,N,1,1: POKE -16300,0: CALL 768,10,N,1,1: NEXT : RETURN
220 HOME : VTAB 5: PRINT "THE PURPOSE OF THIS PROGRAM IS TO SHOW"
230 PRINT "SOME OF THE CAPABILITIES OF THE SOUND"
240 PRINT "SYNTHESIZER. ALL THE SOUNDS YOU HAVE"
250 PRINT "JUST HEARD WERE CREATED WITH THE SOUND"
260 PRINT "SYNTHESIZER, AND ARE SAVED ON THIS DISK"
270 PRINT "UNDER THE FILE NAME 'SOUNDS'. YOU WILL"
280 PRINT "BE SHOWN SOME USEFUL TECHNIQUES TO AID"
290 PRINT "YOU IN DESIGNING YOUR OWN SOUNDS. FOR"
300 PRINT "EACH SOUND PLAYED, YOU WILL BE SHOWN"
310 PRINT "WHAT THE SOUND LOOKS LIKE, AND THE"
320 PRINT "COMMAND OR COMMANDS USED TO INVOKE IT"
330 PRINT "FROM AN APPLESOFT PROGRAM.": GOSUB 1280
340 X = 1: GOSUB 1300
350 PRINT "EVEN THE SIMPLEST PATTERNS CAN GIVE"
360 PRINT "INTERESTING EFFECTS WHEN REPEATED"
370 PRINT "RAPIDLY.":P = 1:R = 10:L = 7: GOSUB 1240
380 P = 4:R = 10:L = 4: GOSUB 1250
390 P = 9:R = 10:L = 2: GOSUB 1250
400 PRINT "OF COURSE GREATER COMPLEXITY GIVES MORE"
410 PRINT "POSSIBILITIES.":X = 2: GOSUB 1300
420 P = 1:R = 10:L = 1: GOSUB 1240
430 P = 9:R = 7:L = 1: GOSUB 1250
440 X = 3: GOSUB 1300
450 P = 2:R = 15:L = 1: GOSUB 1240
460 P = 1:R = 20:L = 1: GOSUB 1250
470 X = 4: GOSUB 1300:P = 4:R = 8:L = 20: GOSUB 1240
480 X = 5: GOSUB 1300:P = 1:R = 1:L = 50: GOSUB 1240
490 X = 6: GOSUB 1300:P = 1:R = 1:L = 30: GOSUB 1240
500 PRINT "A SIMPLE PATTERN CAN ALSO SOUND LIKE A"
510 PRINT "BIRD.":X = 7: GOSUB 1300:P = 1:R = 10:L = 1: GOSUB 1240
520 PRINT "IF YOU WANT IT TO SOUND MORE NATURAL,"
530 PRINT "INTRODUCE RANDOM PAUSES LIKE THIS;": GOSUB 1280
540 PRINT "590 FOR N = 1 TO 10: CALL 768,7,"
550 HTAB 6: PRINT "1,1,1:X = RND (1) * 500: FOR"
560 HTAB 6: PRINT "Q = 1 TO X: NEXT Q: NEXT N"
570 FOR N = 1 TO 10: CALL 768,7,1,1,1:X = RND(1) *440: FOR Q = 1 TO X: NEXT Q: NEXT N
580 GOSUB 1280: PRINT "SOMETIMES MOVING THE SOUND UP OR DOWN ON";
590 PRINT "THE SCREEN CAN MAKE A SMALL BUT"
600 PRINT "IMPORTANT DIFFERANCE IN THE SOUND.": GOSUB 1280
610 PRINT "SO, FOR THE INCOMING SHELL YOU HEARD"
620 PRINT "EARLIER, I USED THIS.":X = 8: GOSUB 1300
630 P = 2:R = 1:L = 8: GOSUB 1240
640 PRINT "FOR SOME SOUNDS, IT IS LESS OBVIOUS HOW"
650 PRINT "TO LAY THEM OUT. TRIAL AND ERROR TAKES"
660 PRINT "ON A GREAT DEAL OF IMPORTANCE.": GOSUB 1280
670 PRINT "FOR INSTANCE, WOULD YOU HAVE GUESSED"
680 PRINT "THE PATTERN FOR A MACHINE GUN COULD LOOK";
690 PRINT "LIKE THIS?":X = 9: GOSUB 1300
700 P = 3:R = 40:L = 4: GOSUB 1240
710 PRINT "OTHER SOUNDS CAN BE BASICALLY SIMPLE,"
720 PRINT "BUT REQUIRE INOVATION IN THE PLAYING IN"
730 PRINT "ORDER TO MAKE THEM SOUND RIGHT.": GOSUB 1280
740 X = 10: GOSUB 1300: PRINT "TAKE THIS FOR INSTANCE."
750 PRINT "ORDINARY TECHNIQUES DON'T YIELD ANYTHING";
760 PRINT "PARTICULARLY INTERESTING.":P = 5:R = 3:L = 20: GOSUB 1240
770 P = 9:R = 30:L = 1: GOSUB 1250
780 P = 2:R = 20:L = 3: GOSUB 1250
790 PRINT "BUT WHAT IF YOU MADE A ROUTINE IN YOUR"
800 PRINT "APPLESOFT PROGRAM THAT PLAYED IT AT EACH";
810 PRINT "OF THE PITCHES, 1 TO 9, CONSECUTIVELY?": GOSUB 1280
820 PRINT "A LINE LIKE THIS WOULD ACCOMPLISH IT."
830 PRINT "890 FOR N = 3 TO 27:X = INT (N /"
840 HTAB 6: PRINT "3): CALL 768,10,X,1,1: NEXT"
850 GOSUB 1280
860 PRINT "AND WHEN EXECUTED WOULD SOUND LIKE THIS;";: GOSUB 1280
870 FOR N = 3 TO 27:X = INT(N/3): CALL 768,10,X,1,1: NEXT
880 GOSUB 1280: PRINT "OR ADD ANOTHER SOUND AND SOME FLASHES,"
890 PRINT "AND YOU GET THIS.": GOSUB 1280: GOSUB 210: GOSUB 1280
900 PRINT "SIMPLE MUSIC CAN BE REPRODUCED BY"
910 PRINT "ENTERING IT NOTE BY NOTE FROM SHEET"
920 PRINT "MUSIC. HERE IS AN EXAMPLE.":X = 11: GOSUB 1300: GOSUB 1230
930 P = 2:R = 1:L = 30: GOSUB 1240
940 PRINT "HERE IS A TUNE THAT IS HIGHER ON THE"
950 PRINT "SCALE.":X = 12: GOSUB 1300: GOSUB 1230
960 P = 1:R = 1:L = 85: GOSUB 1240
970 PRINT "NOTE THAT FOR THE SAKE OF CLARITY,"
980 PRINT "SHARPS AND FLATS ARE NOT INCLUDED IN"
990 PRINT "MODE TWO.": GOSUB 1280
1000 PRINT "THIS IS BECAUSE THESE WOULD NOT BE"
1010 PRINT "EASILY DISTINGUISHABLE ON THE MUSICAL"
1020 PRINT "STAFF PROVIDED.": GOSUB 1280
1030 PRINT "HOWEVER, YOU MAY WISH TO ATTEMPT TO ADD"
1040 PRINT "SHARPS OR FLATS IN MODE ONE, BUT YOU"
1050 PRINT "MUST DO IT BY EAR.": GOSUB 1280
1060 PRINT "IF YOU HAVE A LONG OR REPETITIOUS TUNE,"
1070 PRINT "YOU MAY WANT TO PUT IT ON TWO OR MORE"
1080 PRINT "SCREENS, LIKE THIS;":X = 13: GOSUB 1300: GOSUB 1230
1090 P = 5:R = 1:L = 13: GOSUB 1240
1100 PRINT "NOTE THAT THE AVERAGE LENGTH OF A NOTE"
1110 PRINT "LINE IS A MATTER OF CHOICE, HERE, LONGER";
1120 PRINT "NOTE LINES ARE USED.": GOSUB 1280
1130 PRINT "HERE IS THE REST OF THE 'MARINE HYMN',"
1140 PRINT "AND WHAT IT SOUNDS LIKE PLAYED ALONE.":X = 14: GOSUB 1300: GOSUB 1230
1150 P = 5:R = 1:L = 13: GOSUB 1240: PRINT "NOTE THAT LEDGER LINES ARE PROVIDED WHEN";
1160 PRINT "YOU ENTER NOTES HIGH ON THE SCALE."
1170 HCOLOR= 1: HPLOT 10,48 TO 269,48: HPLOT 10,54 TO 269,54: GOSUB 1280
1180 PRINT "USING THESE TECHNIQUES, AND ANY OF YOUR"
1190 PRINT "OWN, A GREAT VARIETY OF SOUNDS CAN BE"
1200 PRINT "CREATED."
1210 CALL 768,13,5,2,13: CALL 768,14,5,1,13: FOR N = 1 TO 450: NEXT : CALL 768,13,5,1,13
1220 : GOSUB 1280: TEXT : HOME : END
1230 HCOLOR= 1: FOR N = 0 TO 4: HPLOT 10,Y(N) TO 269,Y(N): NEXT : HCOLOR= 3: RETURN
1240 GOSUB 1280: GOTO 1260
1250 HOME : VTAB 21
1260 HTAB 10: PRINT "CALL 768,"X","P","R","L: CALL 768,X,P,R,L: GOSUB 1280: RETURN
1270 END
1280 VTAB 24: HTAB 9: PRINT "<<RETURN TO CONTINUE>> ";: GET A$: IF ASC(A$) < >13 THEN 1280
1290 HOME : VTAB 21: RETURN
1300 HGR : HCOLOR= 3: HPLOT 0,0 TO 279,0 TO 279,159 TO 0,159 TO 0,0
1310 SNUM = X:TNUM = PEEK(STADD +SNUM *256 -256)
1320 FOR N = 1 TO TNUM:CX = Z +N:Q = PEEK(STADD +SNUM *256 -256 +N):CY = Z +Q/2: IF Q >0 THEN HPLOT CX,CY
1330 NEXT : RETURN