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