/[svn]/jsampler/trunk/src/org/jsampler/LscpTree.java
ViewVC logotype

Contents of /jsampler/trunk/src/org/jsampler/LscpTree.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1341 - (show annotations) (download)
Mon Sep 10 22:29:09 2007 UTC (16 years, 7 months ago) by iliev
File size: 13116 byte(s)
* Fantasia: Added button to the channel screen for starting an instrument
  editor (point the mouse cursor over the channel screen and click 'Edit')

1 /*
2 * JSampler - a java front-end for LinuxSampler
3 *
4 * Copyright (C) 2005-2007 Grigor Iliev <grigor@grigoriliev.com>
5 *
6 * This file is part of JSampler.
7 *
8 * JSampler is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2
10 * as published by the Free Software Foundation.
11 *
12 * JSampler 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 General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with JSampler; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20 * MA 02111-1307 USA
21 */
22
23 package org.jsampler;
24
25 /**
26 * Provides the LSCP grammar represented in a tree structure.
27 * @author Grigor Iliev
28 */
29 public class LscpTree {
30 private static LscpNode rootNode;
31
32 static {
33 LscpNode add = new LscpNode("ADD");
34 LscpNode clear = new LscpNode("CLEAR", new LscpNode("MIDI_INSTRUMENTS", true, false));
35 LscpNode copy = new LscpNode("COPY");
36 LscpNode create = new LscpNode("CREATE");
37 LscpNode destroy = new LscpNode("DESTROY");
38 LscpNode edit = new LscpNode("EDIT", new LscpNode("INSTRUMENT", true, true));
39 LscpNode find = new LscpNode("FIND");
40 LscpNode get = new LscpNode("GET");
41 LscpNode list = new LscpNode("LIST");
42 LscpNode load = new LscpNode("LOAD");
43 LscpNode map = new LscpNode("MAP", new LscpNode("MIDI_INSTRUMENT", true));
44 LscpNode move = new LscpNode("MOVE");
45 LscpNode quit = new LscpNode("QUIT", true, false);
46 LscpNode remove = new LscpNode("REMOVE");
47 LscpNode reset = new LscpNode("RESET", new LscpNode("CHANNEL"), true, false);
48 LscpNode set = new LscpNode("SET");
49 LscpNode subscribe = new LscpNode("SUBSCRIBE");
50 LscpNode unmap = new LscpNode("UNMAP", new LscpNode("MIDI_INSTRUMENT"), true);
51 LscpNode unsubscribe = new LscpNode("UNSUBSCRIBE");
52
53 LscpNode[] cmds = {
54 add, clear, copy, create, destroy, edit, find, get, list, load, map, move,
55 quit, remove, reset, set, subscribe, unmap, unsubscribe
56 };
57
58 rootNode = new LscpNode("", cmds);
59
60 // ADD command
61 LscpNode[] nodes = new LscpNode[4];
62 nodes[0] = new LscpNode("CHANNEL", true, false);
63 nodes[1] = new LscpNode("DB_INSTRUMENT_DIRECTORY");
64 LscpNode addDbInstr = new LscpNode("DB_INSTRUMENTS", true);
65 nodes[2] = addDbInstr;
66 nodes[3] = new LscpNode("MIDI_INSTRUMENT_MAP");
67 add.setChildren(nodes);
68
69 // ADD DB_INSTRUMENTS command
70 nodes = new LscpNode[4];
71 nodes[0] = new LscpNode("FLAT", true);
72 LscpNode addDbInstrnNonModal = new LscpNode("NON_MODAL", true);
73 nodes[1] = addDbInstrnNonModal;
74 nodes[2] = new LscpNode("NON_RECURSIVE", true);
75 nodes[3] = new LscpNode("RECURSIVE", true);
76 addDbInstr.setChildren(nodes);
77
78 // ADD DB_INSTRUMENTS NON_MODAL command
79 nodes = new LscpNode[3];
80 nodes[0] = new LscpNode("FLAT", true);
81 nodes[1] = new LscpNode("NON_RECURSIVE", true);
82 nodes[2] = new LscpNode("RECURSIVE", true);
83 addDbInstrnNonModal.setChildren(nodes);
84
85 // COPY command
86 nodes = new LscpNode[2];
87 nodes[0] = new LscpNode("DB_INSTRUMENT", true);
88 nodes[1] = new LscpNode("DB_INSTRUMENT_DIRECTORY", true);
89 copy.setChildren(nodes);
90
91 // CREATE command
92 nodes = new LscpNode[3];
93 nodes[0] = new LscpNode("AUDIO_OUTPUT_DEVICE");
94 nodes[1] = new LscpNode("FX_SEND");
95 nodes[2] = new LscpNode("MIDI_INPUT_DEVICE");
96 create.setChildren(nodes);
97
98 // DESTROY command
99 nodes = new LscpNode[3];
100 nodes[0] = new LscpNode("AUDIO_OUTPUT_DEVICE");
101 nodes[1] = new LscpNode("FX_SEND");
102 nodes[2] = new LscpNode("MIDI_INPUT_DEVICE");
103 destroy.setChildren(nodes);
104
105 // FIND command
106 nodes = new LscpNode[2];
107 LscpNode n = new LscpNode("NON_RECURSIVE", true);
108 nodes[0] = new LscpNode("DB_INSTRUMENT_DIRECTORIES", n, true);
109 n = new LscpNode("NON_RECURSIVE", true);
110 nodes[1] = new LscpNode("DB_INSTRUMENTS", n, true);
111 find.setChildren(nodes);
112
113 // GET command
114 nodes = new LscpNode[30];
115 nodes[0] = new LscpNode("AUDIO_OUTPUT_CHANNEL", new LscpNode("INFO"));
116 nodes[1] = new LscpNode("AUDIO_OUTPUT_CHANNEL_PARAMETER", new LscpNode("INFO"));
117 nodes[2] = new LscpNode("AUDIO_OUTPUT_DEVICE", new LscpNode("INFO"));
118 nodes[3] = new LscpNode("AUDIO_OUTPUT_DEVICES", true, false);
119 nodes[4] = new LscpNode("AUDIO_OUTPUT_DRIVER", new LscpNode("INFO"));
120 nodes[5] = new LscpNode("AUDIO_OUTPUT_DRIVER_PARAMETER", new LscpNode("INFO"));
121 nodes[6] = new LscpNode("AVAILABLE_AUDIO_OUTPUT_DRIVERS", true, false);
122 nodes[7] = new LscpNode("AVAILABLE_ENGINES", true, false);
123 nodes[8] = new LscpNode("AVAILABLE_MIDI_INPUT_DRIVERS", true, false);
124 LscpNode getChn = new LscpNode("CHANNEL");
125 nodes[9] = getChn;
126 nodes[10] = new LscpNode("CHANNELS", true, false);
127 nodes[11] = new LscpNode("DB_INSTRUMENT", new LscpNode("INFO", true));
128 nodes[12] = new LscpNode("DB_INSTRUMENT_DIRECTORIES", true);
129 nodes[13] = new LscpNode("DB_INSTRUMENT_DIRECTORY", new LscpNode("INFO", true));
130 nodes[14] = new LscpNode("DB_INSTRUMENTS", true);
131 nodes[15] = new LscpNode("ENGINE", new LscpNode("INFO"));
132 nodes[16] = new LscpNode("FX_SEND", new LscpNode("INFO"));
133 nodes[17] = new LscpNode("FX_SENDS");
134 nodes[18] = new LscpNode("MIDI_INPUT_DEVICE", new LscpNode("INFO"));
135 nodes[19] = new LscpNode("MIDI_INPUT_DEVICES", true, false);
136 nodes[20] = new LscpNode("MIDI_INPUT_DRIVER", new LscpNode("INFO"));
137 nodes[21] = new LscpNode("MIDI_INPUT_DRIVER_PARAMETER", new LscpNode("INFO"));
138 nodes[22] = new LscpNode("MIDI_INPUT_PORT", new LscpNode("INFO"));
139 nodes[23] = new LscpNode("MIDI_INPUT_PORT_PARAMETER", new LscpNode("INFO"));
140 nodes[24] = new LscpNode("MIDI_INSTRUMENT", new LscpNode("INFO"));
141 nodes[25] = new LscpNode("MIDI_INSTRUMENT_MAP", new LscpNode("INFO"));
142 nodes[26] = new LscpNode("MIDI_INSTRUMENT_MAPS", true, false);
143 nodes[27] = new LscpNode("MIDI_INSTRUMENTS", new LscpNode("ALL", true, false), true);
144 nodes[28] = new LscpNode("SERVER", new LscpNode("INFO", true, false));
145 nodes[29] = new LscpNode("VOLUME", true, false);
146 get.setChildren(nodes);
147
148 // GET CHANNEL command
149 nodes = new LscpNode[4];
150 nodes[0] = new LscpNode("BUFFER_FILL");
151 nodes[1] = new LscpNode("INFO");
152 nodes[2] = new LscpNode("STREAM_COUNT");
153 nodes[3] = new LscpNode("VOICE_COUNT");
154 getChn.setChildren(nodes);
155
156 // LIST command
157 nodes = new LscpNode[11];
158 nodes[0] = new LscpNode("AUDIO_OUTPUT_DEVICES", true, false);
159 nodes[1] = new LscpNode("AVAILABLE_AUDIO_OUTPUT_DRIVERS", true, false);
160 nodes[2] = new LscpNode("AVAILABLE_ENGINES", true, false);
161 nodes[3] = new LscpNode("AVAILABLE_MIDI_INPUT_DRIVERS", true, false);
162 nodes[4] = new LscpNode("CHANNELS", true, false);
163 nodes[5] = new LscpNode("DB_INSTRUMENT_DIRECTORIES", true);
164 nodes[6] = new LscpNode("DB_INSTRUMENTS", true);
165 nodes[7] = new LscpNode("FX_SENDS");
166 nodes[8] = new LscpNode("MIDI_INPUT_DEVICES", true, false);
167 nodes[9] = new LscpNode("MIDI_INSTRUMENT_MAPS", true, false);
168 nodes[10] = new LscpNode("MIDI_INSTRUMENTS", true, false);
169 list.setChildren(nodes);
170
171 // LOAD command
172 nodes = new LscpNode[2];
173 nodes[0] = new LscpNode("ENGINE");
174 nodes[1] = new LscpNode("INSTRUMENT", new LscpNode("NON_MODAL"), true);
175 load.setChildren(nodes);
176
177 // MOVE command
178 nodes = new LscpNode[2];
179 nodes[0] = new LscpNode("DB_INSTRUMENT", true);
180 nodes[1] = new LscpNode("DB_INSTRUMENT_DIRECTORY", true);
181 move.setChildren(nodes);
182
183 // REMOVE command
184 nodes = new LscpNode[4];
185 nodes[0] = new LscpNode("CHANNEL");
186 nodes[1] = new LscpNode("DB_INSTRUMENT", true);
187 nodes[2] = new LscpNode("DB_INSTRUMENT_DIRECTORY", new LscpNode("FORCE", true), true);
188 nodes[3] = new LscpNode("MIDI_INSTRUMENT_MAP", new LscpNode("ALL", true, false), true);
189 remove.setChildren(nodes);
190
191 // SET command
192 nodes = new LscpNode[11];
193 nodes[0] = new LscpNode("AUDIO_OUTPUT_CHANNEL_PARAMETER");
194 nodes[1] = new LscpNode("AUDIO_OUTPUT_DEVICE_PARAMETER");
195 LscpNode setChn = new LscpNode("CHANNEL");
196 nodes[2] = setChn;
197 LscpNode setDbInstr = new LscpNode("DB_INSTRUMENT");
198 nodes[3] = setDbInstr;
199 LscpNode setDbDir = new LscpNode("DB_INSTRUMENT_DIRECTORY");
200 nodes[4] = setDbDir;
201 nodes[5] = new LscpNode("ECHO");
202 LscpNode setFxSend = new LscpNode("FX_SEND");
203 nodes[6] = setFxSend;
204 nodes[7] = new LscpNode("MIDI_INPUT_DEVICE_PARAMETER");
205 nodes[8] = new LscpNode("MIDI_INPUT_PORT_PARAMETER");
206 nodes[9] = new LscpNode("MIDI_INSTRUMENT_MAP", new LscpNode("NAME"));
207 nodes[10] = new LscpNode("VOLUME");
208 set.setChildren(nodes);
209
210 // SET CHANNEL command
211 nodes = new LscpNode[12];
212 nodes[0] = new LscpNode("AUDIO_OUTPUT_CHANNEL");
213 nodes[1] = new LscpNode("AUDIO_OUTPUT_DEVICE");
214 nodes[2] = new LscpNode("AUDIO_OUTPUT_TYPE");
215 nodes[3] = new LscpNode("MIDI_INPUT");
216 nodes[4] = new LscpNode("MIDI_INPUT_CHANNEL");
217 nodes[5] = new LscpNode("MIDI_INPUT_DEVICE");
218 nodes[6] = new LscpNode("MIDI_INPUT_PORT");
219 nodes[7] = new LscpNode("MIDI_INPUT_TYPE");
220 nodes[8] = new LscpNode("MIDI_INSTRUMENT_MAP");
221 nodes[9] = new LscpNode("MUTE");
222 nodes[10] = new LscpNode("SOLO");
223 nodes[11] = new LscpNode("VOLUME");
224 setChn.setChildren(nodes);
225
226 // SET DB_INSTRUMENT
227 nodes = new LscpNode[2];
228 nodes[0] = new LscpNode("NAME");
229 nodes[1] = new LscpNode("DESCRIPTION");
230 setDbInstr.setChildren(nodes);
231
232 // SET DB_INSTRUMENT_DIRECTORY
233 nodes = new LscpNode[2];
234 nodes[0] = new LscpNode("NAME");
235 nodes[1] = new LscpNode("DESCRIPTION");
236 setDbDir.setChildren(nodes);
237
238 // SET FX_SEND command
239 nodes = new LscpNode[4];
240 nodes[0] = new LscpNode("AUDIO_OUTPUT_CHANNEL");
241 nodes[1] = new LscpNode("LEVEL");
242 nodes[2] = new LscpNode("MIDI_CONTROLLER");
243 nodes[3] = new LscpNode("NAME");
244 setFxSend.setChildren(nodes);
245
246 // SUBSCRIBE command
247 nodes = new LscpNode[23];
248 nodes[0] = new LscpNode("AUDIO_OUTPUT_DEVICE_COUNT", true, false);
249 nodes[1] = new LscpNode("AUDIO_OUTPUT_DEVICE_INFO", true, false);
250 nodes[2] = new LscpNode("BUFFER_FILL", true, false);
251 nodes[3] = new LscpNode("CHANNEL_COUNT", true, false);
252 nodes[4] = new LscpNode("CHANNEL_INFO", true, false);
253 nodes[5] = new LscpNode("FX_SEND_COUNT", true, false);
254 nodes[6] = new LscpNode("FX_SEND_INFO", true, false);
255 nodes[7] = new LscpNode("GLOBAL_INFO", true, false);
256 nodes[8] = new LscpNode("MIDI_INPUT_DEVICE_COUNT", true, false);
257 nodes[9] = new LscpNode("MIDI_INPUT_DEVICE_INFO", true, false);
258 nodes[10] = new LscpNode("MIDI_INSTRUMENT_COUNT", true, false);
259 nodes[11] = new LscpNode("MIDI_INSTRUMENT_INFO", true, false);
260 nodes[12] = new LscpNode("MIDI_INSTRUMENT_MAP_COUNT", true, false);
261 nodes[13] = new LscpNode("MIDI_INSTRUMENT_MAP_INFO", true, false);
262 nodes[14] = new LscpNode("DB_INSTRUMENT_DIRECTORY_COUNT", true, false);
263 nodes[15] = new LscpNode("DB_INSTRUMENT_DIRECTORY_INFO", true, false);
264 nodes[16] = new LscpNode("DB_INSTRUMENT_COUNT", true, false);
265 nodes[17] = new LscpNode("DB_INSTRUMENT_INFO", true, false);
266 nodes[18] = new LscpNode("DB_INSTRUMENTS_JOB_INFO", true, false);
267 nodes[19] = new LscpNode("MISCELLANEOUS", true, false);
268 nodes[20] = new LscpNode("STREAM_COUNT", true, false);
269 nodes[21] = new LscpNode("TOTAL_VOICE_COUNT", true, false);
270 nodes[22] = new LscpNode("VOICE_COUNT", true, false);
271 subscribe.setChildren(nodes);
272
273 // UNSUBSCRIBE command
274 nodes = new LscpNode[23];
275 nodes[0] = new LscpNode("AUDIO_OUTPUT_DEVICE_COUNT", true, false);
276 nodes[1] = new LscpNode("AUDIO_OUTPUT_DEVICE_INFO", true, false);
277 nodes[2] = new LscpNode("BUFFER_FILL", true, false);
278 nodes[3] = new LscpNode("CHANNEL_COUNT", true, false);
279 nodes[4] = new LscpNode("CHANNEL_INFO", true, false);
280 nodes[5] = new LscpNode("FX_SEND_COUNT", true, false);
281 nodes[6] = new LscpNode("FX_SEND_INFO", true, false);
282 nodes[7] = new LscpNode("GLOBAL_INFO", true, false);
283 nodes[8] = new LscpNode("MIDI_INPUT_DEVICE_COUNT", true, false);
284 nodes[9] = new LscpNode("MIDI_INPUT_DEVICE_INFO", true, false);
285 nodes[10] = new LscpNode("MIDI_INSTRUMENT_COUNT", true, false);
286 nodes[11] = new LscpNode("MIDI_INSTRUMENT_INFO", true, false);
287 nodes[12] = new LscpNode("MIDI_INSTRUMENT_MAP_COUNT", true, false);
288 nodes[13] = new LscpNode("MIDI_INSTRUMENT_MAP_INFO", true, false);
289 nodes[14] = new LscpNode("DB_INSTRUMENT_DIRECTORY_COUNT", true, false);
290 nodes[15] = new LscpNode("DB_INSTRUMENT_DIRECTORY_INFO", true, false);
291 nodes[16] = new LscpNode("DB_INSTRUMENT_COUNT", true, false);
292 nodes[17] = new LscpNode("DB_INSTRUMENT_INFO", true, false);
293 nodes[18] = new LscpNode("DB_INSTRUMENTS_JOB_INFO", true, false);
294 nodes[19] = new LscpNode("MISCELLANEOUS", true, false);
295 nodes[20] = new LscpNode("STREAM_COUNT", true, false);
296 nodes[21] = new LscpNode("TOTAL_VOICE_COUNT", true, false);
297 nodes[22] = new LscpNode("VOICE_COUNT", true, false);
298 unsubscribe.setChildren(nodes);
299 }
300
301 /** Forbits the instantiation of this class. */
302 private
303 LscpTree() { }
304
305 /**
306 * Gets the root node of the tree.
307 */
308 public static LscpNode
309 getRoot() { return rootNode; }
310 }

  ViewVC Help
Powered by ViewVC