home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / SOUND.H < prev    next >
C/C++ Source or Header  |  1997-07-05  |  4KB  |  189 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. /*
  4. **  SOUND.H
  5. **
  6. **  Original Copyright 1988-1991 by Bob Stout as part of
  7. **  the MicroFirm Function Library (MFL)
  8. **
  9. **  The user is granted a free limited license to use this source file
  10. **  to create royalty-free programs, subject to the terms of the
  11. **  license restrictions specified in the LICENSE.MFL file.
  12. */
  13.  
  14. #ifndef SOUND__H
  15. #define SOUND__H
  16.  
  17. #if defined(__ZTC__)
  18.  #include <int.h>
  19.  #undef int_on
  20.  #undef int_off
  21. #elif defined(__TURBOC__)
  22.  #define int_on         enable
  23.  #define int_off        disable
  24.  #ifndef inp
  25.   #define inp           inportb
  26.  #endif
  27.  #ifndef outp
  28.   #define outp          outportb
  29.  #endif
  30. #else /* assume MSC/QC */
  31.  #include <conio.h>
  32.  #define int_on         _enable
  33.  #define int_off        _disable
  34.  #define getvect        _dos_getvect
  35.  #define setvect        _dos_setvect
  36. #endif
  37.  
  38. /* defines for mktone() update parameter: */
  39.  
  40. #define ON 0          /* turn the speaker on */
  41. #define UPDATE 1      /* sound is on, just change freq */
  42. #define TOGGLE 2      /* for delay use, turn on, then off */
  43.  
  44. /* port equates */
  45.  
  46. #define SCNTRL 0x61   /* sound control port */
  47. #define SOUNDON 0x03  /* bit mask to enable speaker */
  48. #define SOUNDOFF 0xfc /* bit mask to disable speaker */
  49. #define C8253 0x43    /* port address to control 8253 */
  50. #define SETIMER 0xb6  /* tell 8253 to expect freq data next */
  51. #define F8253 0x42    /* frequency address on 8253 */
  52.  
  53. /* frequency equates (musical scale) */
  54. /* digit in label is octave number, S indicates Sharp (#) */
  55.  
  56. #define C0      36489
  57. #define CS0     34445
  58. #define D0      32512
  59. #define DS0     30673
  60. #define E0      28961
  61. #define F0      27329
  62. #define FS0     25804
  63. #define G0      24351
  64. #define GS0     22981
  65. #define A0      21694
  66. #define AS0     20473
  67. #define B0      19326
  68.  
  69. #define C1      18244
  70. #define CS1     17218
  71. #define D1      16251
  72. #define DS1     15340
  73. #define E1      14480
  74. #define F1      13668
  75. #define FS1     12899
  76. #define G1      12175
  77. #define GS1     11493
  78. #define A1      10847
  79. #define AS1     10238
  80. #define B1      9663
  81.  
  82. #define C2      9121
  83. #define CS2     8609
  84. #define D2      8126
  85. #define DS2     7670
  86. #define E2      7239
  87. #define F2      6833
  88. #define FS2     6450
  89. #define G2      6088
  90. #define GS2     5746
  91. #define A2      5424
  92. #define AS2     5119
  93. #define B2      4832
  94.  
  95. #define C3      4561
  96. #define CS3     4305
  97. #define D3      4063
  98. #define DS3     3835
  99. #define E3      3620
  100. #define F3      3417
  101. #define FS3     3225
  102. #define G3      3044
  103. #define GS3     2873
  104. #define A3      2712
  105. #define AS3     2560
  106. #define B3      2416
  107.  
  108. #define C4      2280
  109. #define CS4     2152
  110. #define D4      2032
  111. #define DS4     1917
  112. #define E4      1810
  113. #define F4      1708
  114. #define FS4     1612
  115. #define G4      1522
  116. #define GS4     1437
  117. #define A4      1356
  118. #define AS4     1280
  119. #define B4      1210
  120.  
  121. #define C5      1140
  122. #define CS5     1076
  123. #define D5      1016
  124. #define DS5     959
  125. #define E5      905
  126. #define F5      854
  127. #define FS5     806
  128. #define G5      761
  129. #define GS5     718
  130. #define A5      678
  131. #define AS5     640
  132. #define B5      604
  133.  
  134. #define C6      570
  135. #define CS6     538
  136. #define D6      508
  137. #define DS6     479
  138. #define E6      449
  139. #define F6      427
  140. #define FS6     403
  141. #define G6      380
  142. #define GS6     359
  143. #define A6      339
  144. #define AS6     320
  145. #define B6      302
  146.  
  147. #define C7      285
  148. #define CS7     269
  149. #define D7      254
  150. #define DS7     240
  151. #define E7      226
  152. #define F7      214
  153. #define FS7     202
  154. #define G7      190
  155. #define GS7     180
  156. #define A7      169
  157. #define AS7     160
  158. #define B7      151
  159.  
  160. #define C8      143
  161.  
  162. #define REST    0
  163.  
  164. typedef struct
  165. {
  166.         unsigned int      freq;
  167.         unsigned int      duration;
  168. } NOTE;
  169.  
  170. #if defined(__cplusplus) && __cplusplus
  171.  extern "C" {
  172. #endif
  173.  
  174. void  mktone(int, int, unsigned),
  175.       dosound(int),
  176.       soundon(void),
  177.       soundoff(void),
  178.       playb_close(void);
  179.  
  180. int   playb_note(unsigned, unsigned);
  181.  
  182. NOTE *playb_open(unsigned);
  183.  
  184. #if defined(__cplusplus) && __cplusplus
  185.  }
  186. #endif
  187.  
  188. #endif /* SOUND__H */
  189.