You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
8.4KB

  1. #include "SKINImsg.h"
  2. namespace stk {
  3. #define __SK_MaxMsgTypes_ 80
  4. struct SkiniSpec { char messageString[32];
  5. long type;
  6. long data2;
  7. long data3;
  8. };
  9. /* SEE COMMENT BLOCK AT BOTTOM FOR FIELDS AND USES */
  10. /* MessageString , type, data2, data3 */
  11. struct SkiniSpec skini_msgs[__SK_MaxMsgTypes_] =
  12. {
  13. {"NoteOff" , __SK_NoteOff_, SK_DBL, SK_DBL},
  14. {"NoteOn" , __SK_NoteOn_, SK_DBL, SK_DBL},
  15. {"PolyPressure" , __SK_PolyPressure_, SK_DBL, SK_DBL},
  16. {"ControlChange" , __SK_ControlChange_, SK_INT, SK_DBL},
  17. {"ProgramChange" , __SK_ProgramChange_, SK_DBL, NOPE},
  18. {"AfterTouch" , __SK_AfterTouch_, SK_DBL, NOPE},
  19. {"ChannelPressure" ,__SK_ChannelPressure_, SK_DBL, NOPE},
  20. {"PitchWheel" , __SK_PitchWheel_, SK_DBL, NOPE},
  21. {"PitchBend" , __SK_PitchBend_, SK_DBL, NOPE},
  22. {"PitchChange" , __SK_PitchChange_, SK_DBL, NOPE},
  23. {"Clock" , __SK_Clock_, NOPE, NOPE},
  24. {"Undefined" , 249, NOPE, NOPE},
  25. {"SongStart" , __SK_SongStart_, NOPE, NOPE},
  26. {"Continue" , __SK_Continue_, NOPE, NOPE},
  27. {"SongStop" , __SK_SongStop_, NOPE, NOPE},
  28. {"Undefined" , 253, NOPE, NOPE},
  29. {"ActiveSensing" , __SK_ActiveSensing_, NOPE, NOPE},
  30. {"SystemReset" , __SK_SystemReset_, NOPE, NOPE},
  31. {"Volume" , __SK_ControlChange_, __SK_Volume_ , SK_DBL},
  32. {"ModWheel" , __SK_ControlChange_, __SK_ModWheel_ , SK_DBL},
  33. {"Modulation" , __SK_ControlChange_, __SK_Modulation_ , SK_DBL},
  34. {"Breath" , __SK_ControlChange_, __SK_Breath_ , SK_DBL},
  35. {"FootControl" , __SK_ControlChange_, __SK_FootControl_ , SK_DBL},
  36. {"Portamento" , __SK_ControlChange_, __SK_Portamento_ , SK_DBL},
  37. {"Balance" , __SK_ControlChange_, __SK_Balance_ , SK_DBL},
  38. {"Pan" , __SK_ControlChange_, __SK_Pan_ , SK_DBL},
  39. {"Sustain" , __SK_ControlChange_, __SK_Sustain_ , SK_DBL},
  40. {"Damper" , __SK_ControlChange_, __SK_Damper_ , SK_DBL},
  41. {"Expression" , __SK_ControlChange_, __SK_Expression_ , SK_DBL},
  42. {"NoiseLevel" , __SK_ControlChange_, __SK_NoiseLevel_ , SK_DBL},
  43. {"PickPosition" , __SK_ControlChange_, __SK_PickPosition_ , SK_DBL},
  44. {"StringDamping" , __SK_ControlChange_, __SK_StringDamping_ , SK_DBL},
  45. {"StringDetune" , __SK_ControlChange_, __SK_StringDetune_ , SK_DBL},
  46. {"BodySize" , __SK_ControlChange_, __SK_BodySize_ , SK_DBL},
  47. {"BowPressure" , __SK_ControlChange_, __SK_BowPressure_ , SK_DBL},
  48. {"BowPosition" , __SK_ControlChange_, __SK_BowPosition_ , SK_DBL},
  49. {"BowBeta" , __SK_ControlChange_, __SK_BowBeta_ , SK_DBL},
  50. {"ReedStiffness" , __SK_ControlChange_, __SK_ReedStiffness_ , SK_DBL},
  51. {"ReedRestPos" , __SK_ControlChange_, __SK_ReedRestPos_ , SK_DBL},
  52. {"FluteEmbouchure" , __SK_ControlChange_, __SK_FluteEmbouchure_ , SK_DBL},
  53. {"LipTension" , __SK_ControlChange_, __SK_LipTension_ , SK_DBL},
  54. {"StrikePosition" , __SK_ControlChange_, __SK_StrikePosition_ , SK_DBL},
  55. {"StickHardness" , __SK_ControlChange_, __SK_StickHardness_ , SK_DBL},
  56. {"TrillDepth" , __SK_ControlChange_, __SK_TrillDepth_ , SK_DBL},
  57. {"TrillSpeed" , __SK_ControlChange_, __SK_TrillSpeed_ , SK_DBL},
  58. {"Strumming" , __SK_ControlChange_, __SK_Strumming_ , 127 },
  59. {"NotStrumming" , __SK_ControlChange_, __SK_Strumming_ , 0 },
  60. {"PlayerSkill" , __SK_ControlChange_, __SK_PlayerSkill_ , SK_DBL},
  61. {"Chord" , __SK_Chord_ , SK_DBL, SK_STR},
  62. {"ChordOff" , __SK_ChordOff_ , SK_DBL, NOPE},
  63. {"ShakerInst" , __SK_ControlChange_, __SK_ShakerInst_ , SK_DBL},
  64. {"Maraca" , __SK_ControlChange_, __SK_ShakerInst_ , 0 },
  65. {"Sekere" , __SK_ControlChange_, __SK_ShakerInst_ , 1 },
  66. {"Cabasa" , __SK_ControlChange_, __SK_ShakerInst_ , 2 },
  67. {"Bamboo" , __SK_ControlChange_, __SK_ShakerInst_ , 3 },
  68. {"Waterdrp" , __SK_ControlChange_, __SK_ShakerInst_ , 4 },
  69. {"Tambourn" , __SK_ControlChange_, __SK_ShakerInst_ , 5 },
  70. {"Sleighbl" , __SK_ControlChange_, __SK_ShakerInst_ , 6 },
  71. {"Guiro" , __SK_ControlChange_, __SK_ShakerInst_ , 7 },
  72. {"OpenFile" , 256, SK_STR, NOPE},
  73. {"SetPath" , 257, SK_STR, NOPE},
  74. {"FilePath" , __SK_SINGER_FilePath_ , SK_STR, NOPE},
  75. {"Frequency" , __SK_SINGER_Frequency_ , SK_STR, NOPE},
  76. {"NoteName" , __SK_SINGER_NoteName_ , SK_STR, NOPE},
  77. {"VocalShape" , __SK_SINGER_Shape_ , SK_STR, NOPE},
  78. {"Glottis" , __SK_SINGER_Glot_ , SK_STR, NOPE},
  79. {"VoicedUnVoiced" , __SK_SINGER_VoicedUnVoiced_, SK_DBL, SK_STR},
  80. {"Synthesize" , __SK_SINGER_Synthesize_ , SK_STR, NOPE},
  81. {"Silence" , __SK_SINGER_Silence_ , SK_STR, NOPE},
  82. {"RndVibAmt" , __SK_SINGER_RndVibAmt_ , SK_STR, NOPE},
  83. {"VibratoAmt" , __SK_ControlChange_ ,__SK_SINGER_VibratoAmt_,SK_DBL},
  84. {"VibFreq" , __SK_ControlChange_ ,__SK_SINGER_VibFreq_ ,SK_DBL}
  85. };
  86. /** FORMAT: *************************************************************/
  87. /* */
  88. /* MessageStr$ , type, data2, data3, */
  89. /* */
  90. /* type is the message type sent back from the SKINI line parser. */
  91. /* data<n> is either */
  92. /* NOPE : field not used, specifically, there aren't going */
  93. /* to be any more fields on this line. So if there */
  94. /* is NOPE in data2, data3 won't even be checked */
  95. /* SK_INT : byte (actually scanned as 32 bit signed integer) */
  96. /* If it's a MIDI data field which is required to */
  97. /* be an integer, like a controller number, it's */
  98. /* 0-127. Otherwise, get creative with SK_INTs. */
  99. /* SK_DBL : double precision floating point. SKINI uses these */
  100. /* in the MIDI context for note numbers with micro */
  101. /* tuning, velocities, controller values, etc. */
  102. /* SK_STR : only valid in final field. This allows (nearly) */
  103. /* arbitrary message types to be supported by simply */
  104. /* scanning the string to EndOfLine and then passing */
  105. /* it to a more intelligent handler. For example, */
  106. /* MIDI SYSEX (system exclusive) messages of up to */
  107. /* 256 bytes can be read as space-delimited integers */
  108. /* into the SK_STR buffer. Longer bulk dumps, */
  109. /* soundfiles, etc. should be handled as a new */
  110. /* message type pointing to a FileName stored in the */
  111. /* SK_STR field, or as a new type of multi-line */
  112. /* message. */
  113. /* */
  114. /*************************************************************************/
  115. } // stk namespace