1 /*
2 * libInstPatch
3 * Copyright (C) 1999-2014 Element Green <element@elementsofsound.org>
4 *
5 * Author of this file: (C) 2012 BALATON Zoltan <balaton@eik.bme.hu>
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public License
9 * as published by the Free Software Foundation; version 2.1
10 * of the License only.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20 * 02110-1301, USA or on the web at http://www.gnu.org.
21 */
22
23 #include "IpatchSLIInst.h"
24 #include "ipatch_priv.h"
25
26 /* Category strings */
27 const char *ipatch_sli_inst_cat_strings[] = { "80s", "A-Synth", "Acid",
28 "Attack", "Bass", "Bell", "Big Beat", "Block", "Bongo", "Brass", "Chime",
29 "China", "Clap", "Clave", "Conga", "Crash", "Cuica", "Cymbal", "D-Synth",
30 "Disco", "Drum-Loop", "Effects", "Electro", "Ethnic", "Ext-In", "FB-Loop",
31 "FX-Loop", "Funk", "Gong", "Guiro", "HiHat", "HipHop", "House", "Human",
32 "Industry", "Jazz", "Kick", "Lead", "March", "Marimba", "Multi", "Natural",
33 "Oldie", "Organ", "Other", "Pad", "Perc-Loop", "Percussion", "Percussive",
34 "Piano", "Plug", "Pop", "Release", "Ride", "Rock", "Scratch", "Sequencer",
35 "Shaker", "Snare", "Splash", "String", "Synth-Bass", "TR-alike", "Techno",
36 "Texture", "Timbale", "Tom", "Tonal-Loop", "Triangle", "Voice", "Whistle",
37 "Wind", "World"
38 };
39
40 static const IpatchSLIInstCatMapEntry ipatch_sli_inst_subcat_map_default[] =
41 {
42 { 'T', IPATCH_SLI_INST_CAT_TR_ALIKE, NULL },
43 { 'B', IPATCH_SLI_INST_CAT_BIG_BEAT, NULL },
44 { 'H', IPATCH_SLI_INST_CAT_HIPHOP, NULL },
45 { 'E', IPATCH_SLI_INST_CAT_ELECTRO, NULL },
46 { 'A', IPATCH_SLI_INST_CAT_ACID, NULL },
47 { 'C', IPATCH_SLI_INST_CAT_TECHNO, NULL },
48 { 'U', IPATCH_SLI_INST_CAT_HOUSE, NULL },
49 { 'F', IPATCH_SLI_INST_CAT_FUNK, NULL },
50 { 'D', IPATCH_SLI_INST_CAT_DISCO, NULL },
51 { 'P', IPATCH_SLI_INST_CAT_POP, NULL },
52 { '8', IPATCH_SLI_INST_CAT_80S, NULL },
53 { 'N', IPATCH_SLI_INST_CAT_NATURAL, NULL },
54 { 'R', IPATCH_SLI_INST_CAT_ROCK, NULL },
55 { 'J', IPATCH_SLI_INST_CAT_JAZZ, NULL },
56 { 'O', IPATCH_SLI_INST_CAT_OLDIE, NULL },
57 { 'W', IPATCH_SLI_INST_CAT_WORLD, NULL },
58 { 'X', IPATCH_SLI_INST_CAT_EFFECTS, NULL },
59 { '@', IPATCH_SLI_INST_CAT_OTHER, NULL }
60 };
61
62 static const IpatchSLIInstCatMapEntry ipatch_sli_inst_subcat_map_cymbal[] =
63 {
64 { 'H', IPATCH_SLI_INST_CAT_CHINA, NULL },
65 { 'R', IPATCH_SLI_INST_CAT_RIDE, NULL },
66 { 'G', IPATCH_SLI_INST_CAT_GONG, NULL },
67 { 'E', IPATCH_SLI_INST_CAT_ETHNIC, NULL },
68 { 'C', IPATCH_SLI_INST_CAT_CRASH, NULL },
69 { 'S', IPATCH_SLI_INST_CAT_SPLASH, NULL },
70 { 'M', IPATCH_SLI_INST_CAT_MARCH, NULL },
71 { 'X', IPATCH_SLI_INST_CAT_EFFECTS, NULL },
72 { '@', IPATCH_SLI_INST_CAT_OTHER, NULL }
73 };
74
75 static const IpatchSLIInstCatMapEntry ipatch_sli_inst_subcat_map_percussion[] =
76 {
77 { 'L', IPATCH_SLI_INST_CAT_BELL, NULL },
78 { 'K', IPATCH_SLI_INST_CAT_BLOCK, NULL },
79 { 'B', IPATCH_SLI_INST_CAT_BONGO, NULL },
80 { 'J', IPATCH_SLI_INST_CAT_CHIME, NULL },
81 { 'C', IPATCH_SLI_INST_CAT_CLAP, NULL },
82 { 'V', IPATCH_SLI_INST_CAT_CLAVE, NULL },
83 { 'O', IPATCH_SLI_INST_CAT_CONGA, NULL },
84 { 'I', IPATCH_SLI_INST_CAT_CUICA, NULL },
85 { 'X', IPATCH_SLI_INST_CAT_EFFECTS, NULL },
86 { 'E', IPATCH_SLI_INST_CAT_ETHNIC, NULL },
87 { 'G', IPATCH_SLI_INST_CAT_GUIRO, NULL },
88 { 'H', IPATCH_SLI_INST_CAT_HUMAN, NULL },
89 { 'Y', IPATCH_SLI_INST_CAT_INDUSTRY, NULL },
90 { 'M', IPATCH_SLI_INST_CAT_MARIMBA, NULL },
91 { 'R', IPATCH_SLI_INST_CAT_SCRATCH, NULL },
92 { 'S', IPATCH_SLI_INST_CAT_SHAKER, NULL },
93 { 'T', IPATCH_SLI_INST_CAT_TIMBALE, NULL },
94 { 'N', IPATCH_SLI_INST_CAT_TRIANGLE, NULL },
95 { 'W', IPATCH_SLI_INST_CAT_WHISTLE, NULL },
96 { '@', IPATCH_SLI_INST_CAT_OTHER, NULL }
97 };
98
99 static const IpatchSLIInstCatMapEntry ipatch_sli_inst_subcat_map_asynth[] =
100 {
101 { 'S', IPATCH_SLI_INST_CAT_SYNTH_BASS, NULL },
102 { 'B', IPATCH_SLI_INST_CAT_BASS, NULL },
103 { 'Q', IPATCH_SLI_INST_CAT_SEQUENCER, NULL },
104 { 'U', IPATCH_SLI_INST_CAT_PLUG, NULL },
105 { 'A', IPATCH_SLI_INST_CAT_ATTACK, NULL },
106 { 'R', IPATCH_SLI_INST_CAT_RELEASE, NULL },
107 { 'L', IPATCH_SLI_INST_CAT_LEAD, NULL },
108 { 'P', IPATCH_SLI_INST_CAT_PAD, NULL },
109 { 'G', IPATCH_SLI_INST_CAT_STRING, NULL },
110 { 'F', IPATCH_SLI_INST_CAT_BRASS, NULL },
111 { 'V', IPATCH_SLI_INST_CAT_VOICE, NULL },
112 { 'O', IPATCH_SLI_INST_CAT_ORGAN, NULL },
113 { 'W', IPATCH_SLI_INST_CAT_WIND, NULL },
114 { 'C', IPATCH_SLI_INST_CAT_PERCUSSIVE, NULL },
115 { 'E', IPATCH_SLI_INST_CAT_ETHNIC, NULL },
116 { 'T', IPATCH_SLI_INST_CAT_TEXTURE, NULL },
117 { 'X', IPATCH_SLI_INST_CAT_EFFECTS, NULL },
118 { 'M', IPATCH_SLI_INST_CAT_MULTI, NULL },
119 { 'N', IPATCH_SLI_INST_CAT_FB_LOOP, NULL },
120 { 'I', IPATCH_SLI_INST_CAT_EXT_IN, NULL },
121 { '@', IPATCH_SLI_INST_CAT_OTHER, NULL }
122 };
123
124 static const IpatchSLIInstCatMapEntry ipatch_sli_inst_subcat_map_dsynth[] =
125 {
126 { 'S', IPATCH_SLI_INST_CAT_SYNTH_BASS, NULL },
127 { 'B', IPATCH_SLI_INST_CAT_BASS, NULL },
128 { 'Q', IPATCH_SLI_INST_CAT_SEQUENCER, NULL },
129 { 'U', IPATCH_SLI_INST_CAT_PLUG, NULL },
130 { 'A', IPATCH_SLI_INST_CAT_ATTACK, NULL },
131 { 'R', IPATCH_SLI_INST_CAT_RELEASE, NULL },
132 { 'L', IPATCH_SLI_INST_CAT_LEAD, NULL },
133 { 'P', IPATCH_SLI_INST_CAT_PAD, NULL },
134 { 'G', IPATCH_SLI_INST_CAT_STRING, NULL },
135 { 'F', IPATCH_SLI_INST_CAT_BRASS, NULL },
136 { 'V', IPATCH_SLI_INST_CAT_VOICE, NULL },
137 { 'O', IPATCH_SLI_INST_CAT_ORGAN, NULL },
138 { 'W', IPATCH_SLI_INST_CAT_WIND, NULL },
139 { 'I', IPATCH_SLI_INST_CAT_PIANO, NULL },
140 { 'C', IPATCH_SLI_INST_CAT_PERCUSSIVE, NULL },
141 { 'E', IPATCH_SLI_INST_CAT_ETHNIC, NULL },
142 { 'T', IPATCH_SLI_INST_CAT_TEXTURE, NULL },
143 { 'X', IPATCH_SLI_INST_CAT_EFFECTS, NULL },
144 { '@', IPATCH_SLI_INST_CAT_OTHER, NULL }
145 };
146
147 const IpatchSLIInstCatMapEntry ipatch_sli_inst_cat_map[] =
148 {
149 { 'K', IPATCH_SLI_INST_CAT_KICK, ipatch_sli_inst_subcat_map_default },
150 { 'S', IPATCH_SLI_INST_CAT_SNARE, ipatch_sli_inst_subcat_map_default },
151 { 'H', IPATCH_SLI_INST_CAT_HIHAT, ipatch_sli_inst_subcat_map_default },
152 { 'O', IPATCH_SLI_INST_CAT_TOM, ipatch_sli_inst_subcat_map_default },
153 { 'Y', IPATCH_SLI_INST_CAT_CYMBAL, ipatch_sli_inst_subcat_map_cymbal },
154 { 'P', IPATCH_SLI_INST_CAT_PERCUSSION, ipatch_sli_inst_subcat_map_percussion },
155 { 'd', IPATCH_SLI_INST_CAT_DRUM_LOOP, ipatch_sli_inst_subcat_map_default },
156 { 'p', IPATCH_SLI_INST_CAT_PERC_LOOP, ipatch_sli_inst_subcat_map_default },
157 { 't', IPATCH_SLI_INST_CAT_TONAL_LOOP, ipatch_sli_inst_subcat_map_default },
158 { 'x', IPATCH_SLI_INST_CAT_FX_LOOP, NULL },
159 { 'A', IPATCH_SLI_INST_CAT_A_SYNTH, ipatch_sli_inst_subcat_map_asynth },
160 { 'D', IPATCH_SLI_INST_CAT_D_SYNTH, ipatch_sli_inst_subcat_map_dsynth },
161 { '@', IPATCH_SLI_INST_CAT_OTHER, NULL }
162 };
163
164 /**
165 * Getter fonction to access ipatch_sli_inst_cat_map[] table
166 * @return pointer on ipatch_sli_inst_cat_map[] table
167 */
ipatch_sli_inst_get_cat_map(void)168 const IpatchSLIInstCatMapEntry * ipatch_sli_inst_get_cat_map(void)
169 {
170 return ipatch_sli_inst_cat_map;
171 }
172
173 /**
174 * Getter fonction to access ipatch_sli_inst_cat_map[] table
175 * @return pointer on ipatch_sli_inst_cat_strings[] table
176 */
ipatch_sli_inst_get_cat_strings(void)177 const char **ipatch_sli_inst_get_cat_strings(void)
178 {
179 return ipatch_sli_inst_cat_strings;
180 }
181