home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib30b.dsk
/
PITCH.CALC.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
2KB
|
35 lines
10 REM ***********************
20 REM * PITCH.CALC *
30 REM * BY SCOTT ZIMMERMAN *
40 REM * COPYRIGHT (C) 1987 *
50 REM * BY MICROSPARC, INC *
60 REM * CONCORD, MA 01742 *
70 REM ***********************
80 REM
90 DIM N$(12): GOSUB 300
100 FOR I = 1 TO 12: READ N$(I): NEXT I
110 VTAB 20: CALL -958: PRINT "SEND OUTPUT TO PRINTER? (Y/N) ";: GET A$: PRINT A$
120 IF A$ = "Y" OR A$ = "y" THEN PRINT CHR$(4);" PR# 1": GOTO 130
130 HZ = 1.02048E6: REM APPLE FREQUENCY
140 CL = 2: REM CLICK FACTOR (CLICK ONCE EVERY TWO ACCESSES OF SPEAKER)
150 CY = 22.0352: REM CYCLES PER LOOP IN AMPER.MUSIC
160 HOME : PRINT "NOTE NOTE # NOTE FREQ PITCH PARM": POKE 34,2: HOME : FOR N = 0 TO 55
170 FR = 87.3079 *(1.059463093) ^N: REM CALC NOTE FREQUENCY
180 PITCH = HZ/(CL *CY *FR)
190 PITCH = INT(PITCH +.5): REM ROUND TO NEAREST INTEGER
200 F$ = STR$( INT((FR) *100)): REM ROUND OFF TO NEAREST HUNDREDTH
210 L = LEN(F$) -2:F$ = LEFT$(F$,L) +"." + RIGHT$(F$,2)
220 GOSUB 320: HTAB 8: PRINT N;: HTAB 18: PRINT F$;: HTAB 29: PRINT PITCH
230 IF PEEK( -16384) <128 THEN 260
240 GET A$: IF A$ = CHR$(27) THEN 290
250 POKE -16368,0: GET A$:
260 NEXT N
270 PRINT CHR$(4);"PR# 0"
280 PRINT "SEE THEM AGAIN? ";: GET A$: IF A$ = "Y" THEN GOSUB 300: GOTO 110
290 TEXT : END
300 TEXT : HOME : VTAB 6: HTAB 13: INVERSE : PRINT " PITCH CALC ": NORMAL
310 VTAB 8: HTAB 10: PRINT "BY SCOTT ZIMMERMAN": HTAB 10: PRINT "COPYRIGHT (C) 1987": HTAB 10: PRINT "BY MICROSPARC, INC.": RETURN
320 IF N = 0 THEN PRINT "REST";:PITCH = 0: RETURN
330 IF INT(FR) = 261 THEN HTAB 2: PRINT "C MID";: RETURN
340 B = N +9:A = B -12 * INT((B -1)/12): HTAB 2: PRINT N$(A);: RETURN
350 DATA A,A#,B,C,C#,D,D#,E,F,F#,G,G#