home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib30b.dsk / PITCH.CALC.bas < prev    next >
BASIC Source File  |  2023-02-26  |  2KB  |  35 lines

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