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