home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / m / m003_1 / sdk_dos.ddi / BASIC / MUSIC / DEMOFM.BAS < prev   
Encoding:
BASIC Source File  |  1991-11-13  |  3.1 KB  |  141 lines

  1. ' $INCLUDE: 'SBC.BI'
  2. ' $INCLUDE: 'SBCSYS.BI'
  3. ' $INCLUDE: 'SBCMUSIC.BI'
  4.  
  5. DECLARE SUB  SETINSTBL (instrument%())
  6.  
  7. REM $DYNAMIC
  8. CLEAR
  9.  
  10. CLS
  11.  
  12. PRINT "SBK Basic FM Low Level Example"
  13.  
  14. DIM instrument%(1 TO 128,1 TO 8)
  15.  
  16. IF (SBGETENV% = 0) THEN
  17.  
  18.     ' Check for Sound Blaster Card FM feature
  19.     IF ((SBCHKCRD% AND 2) = 2) THEN
  20.  
  21.         ' Initialize driver
  22.         CALL SLINIT
  23.  
  24.         ' Setup the instrument table
  25.         CALL SETINSTBL(instrument%())
  26.  
  27.         ' Set the instrument table for driver
  28.         CALL SLINST(instrument%(1,1))
  29.  
  30.         CALL PLAYSCALE
  31.  
  32.         ' Reset driver before exit
  33.         CALL SLRESET
  34.  
  35.     ELSE
  36.         PRINT "FM feature not available"
  37.     ENDIF
  38. ELSE
  39.     PRINT "BLASTER environment variable not set or incomplete or invalid."
  40. ENDIF
  41.  
  42.  
  43. END
  44.  
  45.  
  46. ' ------------------------------------------------------------------------ '
  47.  
  48.  
  49. REM $STATIC
  50. SUB  SETINSTBL(instrument%())
  51.  
  52.     DIM  i AS INTEGER, j AS INTEGER, offset AS INTEGER, value AS INTEGER
  53.  
  54.     DEF SEG = VARSEG(instrument%(1,1))
  55.  
  56.     offset = VARPTR(instrument%(1,1))
  57.  
  58.     ' Set the instrument table with first 10 instrument defined in DATA
  59.  
  60.     FOR i = 1 to 10
  61.         FOR j = 1 to 16
  62.             READ value
  63.  
  64.             POKE offset,value
  65.             offset = offset + 1
  66.         NEXT
  67.     NEXT
  68.  
  69.     DEF SEG
  70.  
  71. DATA   &H21,&H11,&H4C,&H00,&HF1,&HF2,&H63,&H72
  72. DATA   &H00,&H00,&H04,&H00,&H00,&H00,&H00,&H00
  73.  
  74. DATA   &HA5,&HB1,&HD2,&H80,&H81,&HF1,&H03,&H05
  75. DATA   &H00,&H00,&H02,&H00,&H00,&H00,&H00,&H00
  76.  
  77. DATA   &H72,&H62,&H1C,&H05,&H51,&H52,&H03,&H13
  78. DATA   &H00,&H00,&H0E,&H00,&H00,&H00,&H00,&H00
  79.  
  80. DATA   &H11,&H01,&H8A,&H40,&HF1,&HF1,&H11,&HB3
  81. DATA   &H00,&H00,&H06,&H00,&H00,&H00,&H00,&H00
  82.  
  83. DATA   &H21,&H11,&H11,&H00,&HA3,&HC4,&H43,&H22
  84. DATA   &H02,&H00,&H0D,&H00,&H00,&H00,&H00,&H00
  85.  
  86. DATA   &H31,&HA1,&H1C,&H80,&H41,&H92,&H0B,&H3B
  87. DATA   &H00,&H00,&H0E,&H00,&H00,&H00,&H00,&H00
  88.  
  89. DATA   &H71,&H62,&HC5,&H05,&H6E,&H8B,&H17,&H0E
  90. DATA   &H00,&H00,&H02,&H00,&H00,&H00,&H00,&H00
  91.  
  92. DATA   &H41,&H91,&H83,&H00,&H65,&H32,&H05,&H74
  93. DATA   &H00,&H00,&H0A,&H00,&H00,&H00,&H00,&H00
  94.  
  95. DATA   &H32,&H16,&H87,&H80,&HA1,&H7D,&H10,&H33
  96. DATA   &H00,&H00,&H08,&H00,&H00,&H00,&H00,&H00
  97.  
  98. DATA   &H01,&H13,&H8D,&H00,&H51,&H52,&H53,&H7C
  99. DATA   &H01,&H00,&H0C,&H00,&H00,&H00,&H00,&H00
  100.  
  101. END SUB
  102.  
  103.  
  104. ' ------------------------------------------------------------------------ '
  105.  
  106.  
  107. SUB PLAYSCALE
  108.  
  109.     DIM  inst AS INTEGER, delay1 AS INTEGER, delay2 AS INTEGER, note AS INTEGER
  110.     DIM  notenum%(8)
  111.  
  112.     ' Setup the MIDI note number
  113.     FOR note = 1 TO 8
  114.         READ notenum%(note)
  115.     NEXT
  116.  
  117.     ' Play each instrument
  118.     FOR inst = 0 TO 9
  119.  
  120.         ' Set channel 0 instrument
  121.         CALL SLPROGRM((0),inst)
  122.  
  123.         ' Play a scale on channel 0
  124.         FOR note = 1 TO 8
  125.  
  126.             CALL SLNOTEON((0),notenum%(note),&h40)
  127.  
  128.             ' Delay
  129.             FOR delay1 = 1 TO 100
  130.                 FOR delay2 = 1 TO 4000
  131.                 NEXT
  132.             NEXT
  133.  
  134.             CALL SLNOTEOFF((0),notenum%(note),&h40)
  135.         NEXT
  136.  
  137.     NEXT
  138.  
  139. DATA   60, 62, 64, 65, 67, 69, 71, 72
  140. END SUB
  141.