home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / m / m003_1 / sdk_dos.ddi / BASIC / MIDI / MIDIIN.BAS next >
Encoding:
BASIC Source File  |  1991-11-13  |  2.3 KB  |  99 lines

  1. ' $INCLUDE: 'SBC.BI'
  2. ' $INCLUDE: 'SBCSYS.BI'
  3. ' $INCLUDE: 'SBMIDI.BI'
  4.  
  5.  
  6. REM $DYNAMIC
  7. CLEAR
  8.  
  9. CLS
  10.  
  11. PRINT "SBK Basic MIDI In Interface Example"
  12.  
  13. DIM midicode&, timestamp&, midibyte%
  14. DIM userkey%, key$
  15.  
  16.  
  17. IF (SBGETENV% = 0) THEN
  18.  
  19.     ' Check for Sound Blaster Card DSP
  20.     IF ((SBCHKCRD% AND 4) = 4) THEN
  21.  
  22.         ' Scan for interrupt
  23.         IF SBTSTINT% THEN
  24.  
  25.             ' start MIDI input
  26.             CALL MIDISTIN
  27.  
  28.             ' Read MIDI Input from buffer
  29.             DO
  30.                 ' Check for ESC key
  31.                 c$ = INKEY$
  32.  
  33.                 IF (c$ <> "") THEN
  34.  
  35.                     userkey = ASC(c$)
  36.  
  37.                     IF userkey = 27 THEN
  38.                         EXIT DO
  39.                     ENDIF
  40.  
  41.                 ENDIF
  42.  
  43.                 ' Get MIDI code from buffer
  44.                 midicode& = MIDIGETI&
  45.  
  46.                 IF (midicode& <> 0) THEN
  47.  
  48.                     ' MIDI byte
  49.                     midibyte% = midicode& MOD 256
  50.  
  51.                     ' MIDI time stamp
  52.                     timestamp& = CLNG((midicode& - CLNG(midibyte%)) / 256)
  53.  
  54.                     ' print data
  55.                     PRINT "MIDI Byte : ";HEX$(midibyte%);TAB(16);" hex     ";
  56.                     PRINT USING "Time Stamp : ######## msec"; timestamp&
  57.               
  58.                 ENDIF
  59.  
  60.             LOOP
  61.  
  62.             ' Stop MIDI input
  63.             CALL MIDISPIN
  64.  
  65.             ' Read the remaining codes in the buffer
  66.             DO
  67.  
  68.                 ' Get MIDI code from buffer
  69.                 midicode& = MIDIGETI&
  70.  
  71.                 IF (midicode& <> 0) THEN
  72.  
  73.                     ' MIDI byte
  74.                     midibyte% = midicode& MOD 256
  75.  
  76.                     ' MIDI time stamp
  77.                     timestamp& = CLNG((midicode& - CLNG(midibyte%)) / 256)
  78.  
  79.                     ' print data
  80.                     PRINT "MIDI Byte : ";HEX$(midibyte%);TAB(16);" hex     ";
  81.                     PRINT USING "Time Stamp : ######## msec"; timestamp&
  82.               
  83.                 ENDIF
  84.  
  85.             LOOP UNTIL (midicode& = 0)
  86.  
  87.         ELSE
  88.             PRINT "Error on interrupt"
  89.         ENDIF
  90.     ELSE
  91.         PRINT "Sound Blaster Card not found or wrong I/O setting"
  92.     ENDIF
  93. ELSE
  94.     PRINT "BLASTER environment variable not set or incomplete or invalid"
  95. END IF
  96.  
  97. END
  98.  
  99.