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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1729 - (hide annotations) (download)
Tue Apr 29 22:22:40 2008 UTC (16 years ago) by iliev
File size: 13509 byte(s)
* Added support for handling lost files in the Instruments Database
  (In the Instruments Database window choose Actions/Check For Lost Files)
* Fantasia: Added option to show the Instruments Database
  on the Right-Side Pane of the Fantasia's main window
  (choose Edit/Preferences, then click the `View' tab)
* Added new menu item in the Instruments Database window: Edit/Find
* Some minor bugfixes and enhancements

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

  ViewVC Help
Powered by ViewVC