Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   FAQ   Tutorial


SKINItbl.h
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 
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

The Synthesis ToolKit in C++ (STK)
©1995--2019 Perry R. Cook and Gary P. Scavone. All Rights Reserved.