home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / msdos / midi / k1patche / k1patche.sha / mpu401.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-03-16  |  5.1 KB  |  213 lines

  1. /*********************************************************************/
  2. /* Copyright 1989 by H. Edward Hall                                  */
  3. /*                                                                   */
  4. /* Permission is hereby granted to copy and to give away this        */
  5. /* software as long as this notice is preserved in its entirety.     */
  6. /* You may modify the software or use it for any purpose just as     */
  7. /* long as you preserve this notice and do not sell the software.    */
  8. /* No warranty of any kind is made for this software.  The holder    */
  9. /* of this copyright reserves the right to enhance and/or sell       */
  10. /* this software with no obligation to provide updates or further    */
  11. /* free copies; if this should happen you may still use this version */
  12. /* of the software under the terms you received it with.             */
  13. /*********************************************************************/
  14. /*
  15.  * Roland MPU-401 header file; see MPU-401 Tech Manual
  16.  */
  17.  
  18. /*
  19.  * MPU marks
  20.  */
  21.  
  22. #define NOOP            0xf8
  23. #define MEASURE_END     0xf9
  24. #define DATA_END        0xfc
  25.  
  26. /*
  27.  * MPU Track data request messages
  28.  */
  29.  
  30. #define REQ_TRACK1          0xf0
  31. #define REQ_TRACK2          0xf1
  32. #define REQ_TRACK3          0xf2
  33. #define REQ_TRACK4          0xf3
  34. #define REQ_TRACK5          0xf4
  35. #define REQ_TRACK6          0xf5
  36. #define REQ_TRACK7          0xf6
  37. #define REQ_TRACK8          0xf7
  38. #define REQ_CONDUCT         0xf9
  39.  
  40. /*
  41.  * Misc. MPU messages
  42.  */
  43.  
  44. #define TIME_OVERFLOW   0xf8
  45. #define ALL_END         0xfc
  46. #define CLOCK_TO_HOST   0xfd
  47. #define ACK             0xfe
  48. #define SYS_MESSAGE     0xff
  49.  
  50. /*
  51.  * MPU commands elements
  52.  */
  53.  
  54. #define M_STOP  0x01
  55. #define M_START 0x02
  56. #define M_CONT  0x03
  57. #define P_STOP  0x04
  58. #define P_START 0x08
  59. #define R_STOP  0x10
  60. #define R_START 0x20
  61.  
  62. /*
  63.  * common MPU command combinations
  64.  */
  65. #define STOP_PLAY       (M_STOP|P_STOP)
  66. #define START_PLAY      (M_START|P_START)
  67. #define STOP_REC        (M_STOP|R_STOP)
  68. #define START_REC       (M_START|R_START)
  69. #define STOP_OVERDUB    (M_STOP|P_STOP|R_STOP)
  70. #define START_OVERDUB   (M_START|P_START|R_START)
  71.  
  72. /*
  73.  * Other Misc MPU mode commands
  74.  */
  75. #define ALL_NOTES_OFF   0x30
  76. #define NO_REAL_TIME    0x32
  77. #define CHAN_THRU_OFF   0x33
  78. #define WITH_TIME_BYTE  0x34
  79. #define MODE_MESS_THRU  0x35
  80. #define EXCLUSIVE_THRU  0x36
  81. #define COMMMON_THRU    0x38
  82. #define REAL_TIME_THRU  0x39
  83. #define UART            0x3f
  84.  
  85. /*
  86.  * Set up channel ref table
  87.  */
  88. #define CHSET_A(x)      (0x40|(x))
  89. #define CHSET_B(x)      (0x50|(x))
  90. #define CHSET_C(x)      (0x60|(x))
  91. #define CHSET_D(x)      (0x70|(x))
  92.  
  93. #define INTERNAL_CLOCK  0x80
  94. #define FSK_CLOCK       0x81
  95. #define MIDI_CLOCK      0x82
  96. #define METRO_ON        0x83
  97. #define METRO_OFF       0x84
  98. #define METRO_ON_W_AC   0x85
  99. #define BEND_OFF        0x86
  100. #define BEND_ON         0x87
  101. #define THRU_OFF        0x88
  102. #define THRU_ON         0x89
  103. #define DAT_IN_STP_OFF  0x8a
  104. #define DAT_IN_STP_ON   0x8b
  105. #define MEASURE_OFF     0x8c
  106. #define MEASURE_ON      0x8d
  107. #define CONDUCTOR_OFF   0x8e
  108. #define CONDUCTOR_ON    0x8f
  109. #define REAL_TIME_OFF   0x90
  110. #define REAL_TIME_ON    0x91
  111. #define FSK_INTERNAL    0x92
  112. #define FSK_MIDI        0x93
  113. #define CLOCK_OFF       0x94
  114. #define CLOCK_ON        0x95
  115. #define EXCLUSIVE_OFF   0x96
  116. #define EXCLUSIVE_ON    0x97
  117.  
  118. /*
  119.  * turn reference tables on/off
  120.  */
  121. #define CHAN_A_OFF      0x98
  122. #define CHAN_A_ON       0x99
  123. #define CHAN_B_OFF      0x9a
  124. #define CHAN_B_ON       0x9b
  125. #define CHAN_C_OFF      0x9c
  126. #define CHAN_C_ON       0x9d
  127. #define CHAN_D_OFF      0x9e
  128. #define CHAN_D_ON       0x9f
  129.  
  130. /*
  131.  * MPU counter requests
  132.  */
  133. #define REQ_PLAY_CNT1   0xa0
  134. #define REQ_PLAY_CNT2   0xa1
  135. #define REQ_PLAY_CNT3   0xa2
  136. #define REQ_PLAY_CNT4   0xa3
  137. #define REQ_PLAY_CNT5   0xa4
  138. #define REQ_PLAY_CNT6   0xa5
  139. #define REQ_PLAY_CNT7   0xa6
  140. #define REQ_PLAY_CNT8   0xa7
  141. #define REQ_RECORD_CNT  0xab
  142.  
  143. /*
  144.  * Misc MPU requests
  145.  */
  146. #define REQ_VER         0xac
  147. #define REQ_REV         0xad
  148. #define REQ_TEMPO       0xaf
  149.  
  150. /*
  151.  * MPU Resets/clears
  152.  */
  153. #define RES_RTEMPO      0xb1
  154. #define CLR_PLAY_CNTS   0xb8
  155. #define CLR_PLAY_MAP    0xb9
  156. #define CLR_RECORD_CNT  0xba
  157.  
  158. /*
  159.  * MPU timebases
  160.  */
  161. #define TBASE48         0xc2
  162. #define TBASE72         0xc3
  163. #define TBASE96         0xc4
  164. #define TBASE120        0xc5
  165. #define TBASE144        0xc6
  166. #define TBASE168        0xc7
  167. #define TBASE192        0xc8
  168.  
  169. #define WANT_DATA1      0xd0
  170. #define WANT_DATA2      0xd1
  171. #define WANT_DATA3      0xd2
  172. #define WANT_DATA4      0xd3
  173. #define WANT_DATA5      0xd4
  174. #define WANT_DATA6      0xd5
  175. #define WANT_DATA7      0xd6
  176. #define WANT_DATA8      0xd7
  177.  
  178. #define WANT_SYSMESS    0xdf
  179.  
  180. /*
  181.  * set MPU conditions and values
  182.  * (followed by data byte)
  183.  */
  184.  
  185. #define SET_TEMPO       0xe0
  186. #define SET_RTEMPO      0xe1
  187. #define SET_GRADUATION  0xe2
  188. #define MIDCLK_PER_MET  0xe4
  189. #define METRO_MEAS      0xe6
  190. #define INT_HOST_CLK    0xe7
  191. #define ACTIVE_TRACK    0xec
  192. #define SEND_PCOUNT     0xed
  193. #define CHAN_1_8_ON     0xee
  194. #define CHAN_9_11_ON    0xef
  195.  
  196. /*
  197.  * MPU master reset
  198.  */
  199. #define RESET           0xff
  200.  
  201. /*
  202.  * Hardware details
  203.  */
  204. #define DATA_PORT       0x330
  205. #define STATUS_PORT     0x331
  206. #define INTERRUPT       0x02
  207.  
  208. /*
  209.  * Status register bits
  210.  */
  211. #define DRR 0x40
  212. #define RDY 0x80
  213.