6 #define __SK_MaxMsgTypes_ 80 
    8 struct SkiniSpec { 
char messageString[32];
 
   17 struct SkiniSpec skini_msgs[__SK_MaxMsgTypes_] = 
 
   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},
 
   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},
 
   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},
 
   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},
 
   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},
 
   67  {
"TrillDepth"       ,  __SK_ControlChange_, __SK_TrillDepth_        ,  SK_DBL}, 
 
   68  {
"TrillSpeed"       ,  __SK_ControlChange_, __SK_TrillSpeed_        ,  SK_DBL},
 
   70  {
"Strumming"        ,  __SK_ControlChange_, __SK_Strumming_         ,  127   }, 
 
   71  {
"NotStrumming"     ,  __SK_ControlChange_, __SK_Strumming_         ,  0     },
 
   73  {
"PlayerSkill"      ,  __SK_ControlChange_, __SK_PlayerSkill_       ,  SK_DBL}, 
 
   75  {
"Chord"            ,  __SK_Chord_        ,                   SK_DBL,  SK_STR}, 
 
   76  {
"ChordOff"         ,  __SK_ChordOff_     ,                   SK_DBL,    NOPE}, 
 
   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    }, 
 
   88  {
"OpenFile"         ,                  256,                   SK_STR,    NOPE},
 
   89  {
"SetPath"          ,                  257,                   SK_STR,    NOPE},
 
   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}