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