home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / misc_programming / sfa1.bas < prev    next >
BASIC Source File  |  1994-05-13  |  2KB  |  74 lines

  1. DEFINT A-Z
  2.  
  3.     CONST BPORT = &H220  'Base Port address
  4.     CONST XPORT = &H226  'Reset port address
  5.     CONST WPORT = &H22C  'Write port address
  6.     CONST RPORT = &H22A  'Read port address
  7.     CONST APORT = &H22E  'Data Available port address
  8.  
  9.     DIM chgarray(79) 'change
  10.     lch0 = 0
  11.     tz0 = 0
  12.  
  13.     DEF SEG = &HA000
  14.     SCREEN 13
  15.     
  16.     DO
  17.         OUT WPORT, &H20           'Tell SoundBlaster you wanna read a byte.
  18.         gotit = INP(RPORT)
  19.         gg = (gotit - 128)
  20.  
  21.         IF ABS(gg) > 4 THEN
  22.             chng = ABS(gotit - last)
  23.             IF chng > 39 THEN chng = 39
  24.             IF chng = 0 THEN
  25.                 tz0 = tz0 + 1
  26.                 lch0 = 1
  27.             ELSE
  28.                 IF lch0 = 1 THEN
  29.                     xx = 41 - tz0
  30.                     IF xx < 0 THEN xx = 0
  31.                     chgarray(xx) = chgarray(xx) + 1
  32.                     tz0 = 0
  33.                     lch0 = 0
  34.                 ELSE
  35.                     chgarray(chng + 40) = chgarray(chng + 40) + 1
  36.                 END IF
  37.             END IF
  38.         END IF
  39.         
  40.         at = at + 1
  41.  
  42.         last = gotit
  43.         
  44.         IF at = 750 THEN
  45.             at = 0
  46.             FOR r = 0 TO 79
  47.                 xx = chgarray(r)
  48.                 chgarray(r) = 0
  49.                 IF xx > 94 THEN xx = 94
  50.  
  51.                     IF xx < 94 THEN
  52.                         FOR rr = xx + 1 TO 94
  53.                             POKE (((94 - rr) * 320) + r) * 2 + 1, &H0
  54.                         NEXT
  55.                     END IF
  56.  
  57.                     FOR rr = 0 TO xx
  58.                         POKE (((94 - rr) * 320) + r) * 2 + 1, &HF
  59.                     NEXT
  60.  
  61.             NEXT
  62.         END IF
  63.     LOOP UNTIL INP(&H60) = 1    'esc pressed
  64.  
  65.     SCREEN 0
  66.  
  67.     PRINT "Realtime Frequency Analysis"
  68.     PRINT
  69.     PRINT " -based on angles from sample point to sample point"
  70.     PRINT " -ie: high frequency / high volume --> high angle"
  71.     PRINT "      low frequency / low volume ----> low angle"
  72.     END
  73.  
  74.