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

Annotation of /jsampler/trunk/src/org/jsampler/task/Midi.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1144 - (hide annotations) (download)
Mon Apr 2 21:39:15 2007 UTC (17 years, 1 month ago) by iliev
File size: 21466 byte(s)
- upgrading to version 0.4a

1 iliev 1144 /*
2     * JSampler - a java front-end for LinuxSampler
3     *
4     * Copyright (C) 2005-2006 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     package org.jsampler.task;
23    
24     import java.util.Vector;
25     import java.util.logging.Level;
26    
27     import net.sf.juife.Task;
28    
29     import org.linuxsampler.lscp.BoolParameter;
30     import org.linuxsampler.lscp.MidiInputDevice;
31     import org.linuxsampler.lscp.MidiInputDriver;
32     import org.linuxsampler.lscp.MidiInstrumentEntry;
33     import org.linuxsampler.lscp.MidiInstrumentInfo;
34     import org.linuxsampler.lscp.MidiInstrumentMapInfo;
35     import org.linuxsampler.lscp.Parameter;
36    
37     import org.jsampler.CC;
38     import org.jsampler.HF;
39     import org.jsampler.MidiDeviceModel;
40     import org.jsampler.MidiInstrument;
41     import org.jsampler.MidiInstrumentMap;
42     import org.jsampler.SamplerModel;
43    
44     import static org.jsampler.JSI18n.i18n;
45    
46    
47     /**
48     * Provides the MIDI specific tasks.
49     * @author Grigor Iliev
50     */
51     public class Midi {
52     /** Forbits the instantiation of this class. */
53     private Midi() { }
54    
55    
56     /**
57     * This task retrieves all MIDI input drivers currently
58     * available for the LinuxSampler instance.
59     */
60     public static class GetDrivers extends EnhancedTask<MidiInputDriver[]> {
61     /** Creates a new instance of <code>GetDrivers</code>. */
62     public
63     GetDrivers() {
64     setTitle("Midi.GetDrivers_task");
65     setDescription(i18n.getMessage("Midi.GetDrivers.desc"));
66     }
67    
68     /** The entry point of the task. */
69     public void
70     run() {
71     try { setResult(CC.getClient().getMidiInputDrivers()); }
72     catch(Exception x) {
73     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
74     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
75     }
76     }
77     }
78    
79     /**
80     * This task creates a new MIDI input device.
81     */
82     public static class CreateDevice extends EnhancedTask<Integer> {
83     private String driver;
84     private Parameter[] parameters;
85    
86     /**
87     * Creates a new instance of <code>CreateDevice</code>.
88     * @param driver The desired MIDI input system.
89     * @param parameters An optional list of driver specific parameters.
90     */
91     public
92     CreateDevice(String driver, Parameter... parameters) {
93     setTitle("Midi.CreateDevice_task");
94     setDescription(i18n.getMessage("Midi.CreateDevice.desc"));
95    
96     this.driver = driver;
97     this.parameters = parameters;
98     }
99    
100     /** The entry point of the task. */
101     public void
102     run() {
103     try {
104     run0();
105     } catch(Exception x) {
106     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
107     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
108     }
109     }
110    
111     private void
112     run0() throws Exception {
113     Integer deviceId = CC.getClient().createMidiInputDevice(driver, parameters);
114     setResult(deviceId);
115     }
116     }
117    
118     /**
119     * This task destroys the specified MIDI input device.
120     */
121     public static class DestroyDevice extends EnhancedTask {
122     private int deviceId;
123    
124     /**
125     * Creates a new instance of <code>DestroyDevice</code>.
126     * @param deviceId The ID of the MIDI input device to be destroyed.
127     */
128     public
129     DestroyDevice(int deviceId) {
130     setTitle("Midi.DestroyDevice_task");
131     setDescription(i18n.getMessage("Midi.DestroyDevice.desc", deviceId));
132    
133     this.deviceId = deviceId;
134     }
135    
136     /** The entry point of the task. */
137     public void
138     run() {
139     try { CC.getClient().destroyMidiInputDevice(deviceId); }
140     catch(Exception x) {
141     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
142     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
143     }
144     }
145     }
146    
147     /**
148     * This task enables/disables a specific MIDI input device.
149     */
150     public static class EnableDevice extends EnhancedTask {
151     private int dev;
152     private boolean enable;
153    
154     /**
155     * Creates new instance of <code>EnableDevice</code>.
156     * @param dev The id of the device to be enabled/disabled.
157     * @param enable Specify <code>true</code> to enable the MIDI device;
158     * code>false</code> to disable it.
159     */
160     public
161     EnableDevice(int dev, boolean enable) {
162     setTitle("Midi.EnableDevice_task");
163     setDescription(i18n.getMessage("Midi.EnableDevice.desc", dev));
164    
165     this.dev = dev;
166     this.enable = enable;
167     }
168    
169     /** The entry point of the task. */
170     public void
171     run() {
172     try {
173     CC.getClient().enableMidiInputDevice(dev, enable);
174    
175     // Not needed, but eventually speeds up the change.
176     CC.getSamplerModel().getMidiDeviceModel(dev).setActive(enable);
177     } catch(Exception x) {
178     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
179     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
180     }
181     }
182     }
183    
184     /**
185     * This task alters a specific setting of a created MIDI input device.
186     */
187     public static class SetDeviceParameter extends EnhancedTask {
188     private int dev;
189     private Parameter prm;
190    
191     /**
192     * Creates new instance of <code>SetDeviceParameter</code>.
193     * @param dev The id of the device whose parameter should be set.
194     * @param prmName The parameter name.
195     * @param value The new value for the specified parameter.
196     */
197     public
198     SetDeviceParameter(int dev, String prmName, boolean value) {
199     this(dev, new BoolParameter(prmName, value));
200     }
201    
202     /**
203     * Creates new instance of <code>SetDeviceParameter</code>.
204     * @param dev The id of the device whose parameter should be set.
205     * @param prm The parameter to be set.
206     */
207     public
208     SetDeviceParameter(int dev, Parameter prm) {
209     setTitle("Midi.SetDeviceParameter_task");
210     setDescription(i18n.getMessage("Midi.SetDeviceParameter.desc"));
211    
212     this.dev = dev;
213     this.prm = prm;
214     }
215    
216     /** The entry point of the task. */
217     public void
218     run() {
219     try {
220     CC.getClient().setMidiInputDeviceParameter(dev, prm);
221    
222     CC.getSamplerModel().getMidiDeviceModel(dev);
223     } catch(Exception x) {
224     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
225     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
226     }
227     }
228     }
229    
230     /**
231     * This task changes the port number of a speicific MIDI input device.
232     */
233     public static class SetPortCount extends EnhancedTask {
234     private int deviceId;
235     private int ports;
236    
237     /**
238     * Creates new instance of <code>SetPortCount</code>.
239     * @param deviceId The id of the device whose ports number will be changed.
240     * @param ports The new number of ports.
241     */
242     public
243     SetPortCount(int deviceId, int ports) {
244     setTitle("SetMidiInputPortCount_task");
245     setDescription(i18n.getMessage("Midi.SetPortCount.desc", deviceId));
246    
247     this.deviceId = deviceId;
248     this.ports = ports;
249     }
250    
251     /** The entry point of the task. */
252     public void
253     run() {
254     try { CC.getClient().setMidiInputPortCount(deviceId, ports); }
255     catch(Exception x) {
256     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
257     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
258     }
259     }
260     }
261    
262     /**
263     * This task alters a specific setting of a MIDI input port.
264     */
265     public static class SetPortParameter extends EnhancedTask {
266     private int dev;
267     private int port;
268     private Parameter prm;
269    
270     /**
271     * Creates new instance of <code>SetPortParameter</code>.
272     * @param dev The id of the device whose port parameter should be set.
273     * @param port The number of the port.
274     * @param prm The parameter to be set.
275     */
276     public
277     SetPortParameter(int dev, int port, Parameter prm) {
278     setTitle("Midi.SetPortParameter_task");
279     setDescription(i18n.getMessage("Midi.SetPortParameter.desc"));
280    
281     this.dev = dev;
282     this.port = port;
283     this.prm = prm;
284     }
285    
286     /** The entry point of the task. */
287     public void
288     run() {
289     try { CC.getClient().setMidiInputPortParameter(dev, port, prm); }
290     catch(Exception x) {
291     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
292     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
293     }
294     }
295     }
296    
297     /**
298     * This task updates the settings of a MIDI input device.
299     */
300     public static class UpdateDeviceInfo extends EnhancedTask {
301     private int dev;
302    
303     /**
304     * Creates new instance of <code>UpdateDeviceInfo</code>.
305     * @param dev The id of the device, whose settings should be updated.
306     */
307     public
308     UpdateDeviceInfo(int dev) {
309     setTitle("Midi.UpdateDeviceInfo_task");
310     setDescription(i18n.getMessage("Midi.UpdateDeviceInfo.desc", dev));
311    
312     this.dev = dev;
313     }
314    
315     /** The entry point of the task. */
316     public void
317     run() {
318     try {
319     MidiInputDevice mid = CC.getClient().getMidiInputDeviceInfo(dev);
320     CC.getSamplerModel().getMidiDeviceModel(dev).setDeviceInfo(mid);
321     } catch(Exception x) {
322     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
323     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
324     }
325     }
326     }
327    
328     /**
329     * This task updates the MIDI device list and all MIDI devices' settings.
330     */
331     public static class UpdateDevices extends EnhancedTask {
332     /** Creates a new instance of <code>UpdateDevices</code>. */
333     public
334     UpdateDevices() {
335     setTitle("Midi.UpdateDevices_task");
336     setDescription(i18n.getMessage("Midi.UpdateDevices.desc"));
337     }
338    
339     /** The entry point of the task. */
340     public void
341     run() {
342     try {
343     SamplerModel sm = CC.getSamplerModel();
344     Integer[] deviceIDs = CC.getClient().getMidiInputDeviceIDs();
345    
346     boolean found = false;
347    
348     for(MidiDeviceModel m : sm.getMidiDeviceModels()) {
349     for(int i = 0; i < deviceIDs.length; i++) {
350     if(m.getDeviceId() == deviceIDs[i]) {
351     deviceIDs[i] = -1;
352     found = true;
353     }
354     }
355    
356     if(!found) sm.removeMidiDevice(m.getDeviceId());
357     found = false;
358     }
359    
360     MidiInputDevice dev;
361    
362     for(int id : deviceIDs) {
363     if(id >= 0) {
364     dev = CC.getClient().getMidiInputDeviceInfo(id);
365     sm.addMidiDevice(dev);
366     }
367     }
368     } catch(Exception x) {
369     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
370     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
371     }
372     }
373     }
374    
375     /**
376     * This task creates a new MIDI instrument map.
377     */
378     public static class AddInstrumentMap extends EnhancedTask<Integer> {
379     private String name;
380    
381     /**
382     * Creates a new instance of <code>AddInstrumentMap</code>.
383     *
384     * @param name The chosen name for the new MIDI instrument map.
385     */
386     public
387     AddInstrumentMap(String name) {
388     setTitle("Midi.AddMidiInstrumentMap_task");
389     setDescription(i18n.getMessage("Midi.AddMidiInstrumentMap.desc"));
390    
391     this.name = name;
392     }
393    
394     /** The entry point of the task. */
395     public void
396     run() {
397     try {
398     Integer mapId = CC.getClient().addMidiInstrumentMap(name);
399     setResult(mapId);
400     } catch(Exception x) {
401     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
402     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
403     }
404     }
405     }
406    
407     /**
408     * This task removes the specified MIDI instrument map.
409     */
410     public static class RemoveInstrumentMap extends EnhancedTask {
411     private int mapId;
412    
413     /**
414     * Creates a new instance of <code>RemoveInstrumentMap</code>.
415     *
416     * @param mapId The numerical ID of the MIDI instrument map to remove.
417     */
418     public
419     RemoveInstrumentMap(int mapId) {
420     setTitle("Midi.RemoveMidiInstrumentMap_task");
421     setDescription(i18n.getMessage("Midi.RemoveMidiInstrumentMap.desc", mapId));
422    
423     this.mapId = mapId;
424     }
425    
426     /** The entry point of the task. */
427     public void
428     run() {
429     try {
430     CC.getClient().removeMidiInstrumentMap(mapId);
431     } catch(Exception x) {
432     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
433     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
434     }
435     }
436     }
437    
438     /**
439     * This task changes the MIDI instrument map settings.
440     */
441     public static class SetInstrumentMapInfo extends EnhancedTask {
442     private int mapId;
443     private String name;
444    
445     /**
446     * Creates a new instance of <code>SetInstrumentMapInfo</code>.
447     * @param mapId The numerical ID of the MIDI instrument map.
448     * @param name The new name for the specified MIDI instrument map.
449     */
450     public
451     SetInstrumentMapInfo(int mapId, String name) {
452     setTitle("Midi.SetInstrumentMapInfo_task");
453     setDescription(i18n.getMessage("Midi.SetInstrumentMapInfo.desc"));
454    
455     this.mapId = mapId;
456     this.name = name;
457     }
458    
459     /** The entry point of the task. */
460     public void
461     run() {
462     try {
463     CC.getClient().setMidiInstrumentMapName(mapId, name);
464     } catch(Exception x) {
465     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
466     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
467     }
468     }
469     }
470    
471     /**
472     * This task updates the settings of a MIDI instrument map.
473     */
474     public static class UpdateInstrumentMapInfo extends EnhancedTask {
475     private int mapId;
476    
477     /**
478     * Creates new instance of <code>UpdateInstrumentMapInfo</code>.
479     * @param mapId The id of the MIDI instrument map, whose settings should be updated.
480     */
481     public
482     UpdateInstrumentMapInfo(int mapId) {
483     setTitle("Midi.UpdateInstrumentMapInfo_task");
484     setDescription(i18n.getMessage("Midi.UpdateInstrumentMapInfo.desc", mapId));
485    
486     this.mapId = mapId;
487     }
488    
489     /** The entry point of the task. */
490     public void
491     run() {
492     try {
493     MidiInstrumentMapInfo info =
494     CC.getClient().getMidiInstrumentMapInfo(mapId);
495    
496     CC.getSamplerModel().getMidiInstrumentMapById(mapId).setInfo(info);
497     } catch(Exception x) {
498     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
499     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
500     }
501     }
502     }
503    
504     /**
505     * This task gets the MIDI instrument map list and all MIDI instruments' settings.
506     */
507     public static class GetInstrumentMaps extends EnhancedTask<MidiInstrumentMap[]> {
508     /** Creates a new instance of <code>GetInstrumentMaps</code>. */
509     public
510     GetInstrumentMaps() {
511     setTitle("Midi.GetInstrumentMaps_task");
512     setDescription(i18n.getMessage("Midi.GetInstrumentMaps.desc"));
513     }
514    
515     /** The entry point of the task. */
516     public void
517     run() {
518     try {
519     MidiInstrumentMapInfo[] mims;
520     mims = CC.getClient().getMidiInstrumentMaps();
521     MidiInstrumentMap[] maps = new MidiInstrumentMap[mims.length];
522    
523     for(int i = 0; i < mims.length; i++) {
524     maps[i] = createMap(mims[i]);
525     }
526    
527     setResult(maps);
528     } catch(Exception x) {
529     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
530     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
531     }
532     }
533    
534     private MidiInstrumentMap
535     createMap(MidiInstrumentMapInfo m) throws Exception {
536     MidiInstrumentMap map = new MidiInstrumentMap(m);
537     MidiInstrumentInfo[] miis = CC.getClient().getMidiInstruments(m.getMapId());
538    
539     for(MidiInstrumentInfo instrInfo : miis) {
540     MidiInstrument instr = new MidiInstrument(instrInfo);
541     map.mapMidiInstrument(instrInfo.getEntry(), instr);
542     }
543    
544     return map;
545     }
546     }
547    
548     /**
549     * This task updates the MIDI instrument map list.
550     */
551     public static class UpdateInstrumentMaps extends EnhancedTask {
552     /** Creates a new instance of <code>UpdateInstrumentMaps</code>. */
553     public
554     UpdateInstrumentMaps() {
555     setTitle("Midi.UpdateInstrumentMaps_task");
556     setDescription(i18n.getMessage("Midi.UpdateInstrumentMaps.desc"));
557     }
558    
559     /** The entry point of the task. */
560     public void
561     run() {
562     try {
563     SamplerModel sm = CC.getSamplerModel();
564     Integer[] mapIDs = CC.getClient().getMidiInstrumentMapIDs();
565    
566     boolean found = false;
567    
568     for(MidiInstrumentMap m : sm.getMidiInstrumentMaps()) {
569     for(int i = 0; i < mapIDs.length; i++) {
570     if(mapIDs[i] == m.getMapId()) {
571     mapIDs[i] = -1;
572     found = true;
573     }
574     }
575    
576     if(!found) sm.removeMidiInstrumentMap(m.getMapId());
577     found = false;
578     }
579    
580     MidiInstrumentMapInfo map;
581    
582     for(int id : mapIDs) {
583     if(id >= 0) {
584     map = CC.getClient().getMidiInstrumentMapInfo(id);
585     sm.addMidiInstrumentMap(new MidiInstrumentMap(map));
586     }
587     }
588     } catch(Exception x) {
589     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
590     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
591     x.printStackTrace();
592     }
593     }
594     }
595    
596     /**
597     * This task maps a new MIDI instrument or replaces an existing one.
598     */
599     public static class MapInstrument extends EnhancedTask {
600     private int mapId;
601     private int bank;
602     private int program;
603     private MidiInstrumentInfo instrInfo;
604    
605     /**
606     * Creates new instance of <code>MapInstrument</code>.
607     * @param mapId The id of the MIDI instrument map.
608     * @param bank The index of the MIDI bank, which will contain the instrument.
609     * @param program The MIDI program number of the new instrument.
610     * @param instrInfo Provides the MIDI instrument settings.
611     */
612     public
613     MapInstrument(int mapId, int bank, int program, MidiInstrumentInfo instrInfo) {
614     setTitle("Midi.MapInstrument_task");
615     setDescription(i18n.getMessage("Midi.MapInstrument.desc"));
616    
617     this.mapId = mapId;
618     this.bank = bank;
619     this.program = program;
620     this.instrInfo = instrInfo;
621     }
622    
623     /** The entry point of the task. */
624     public void
625     run() {
626     try {
627     MidiInstrumentEntry entry = new MidiInstrumentEntry(bank, program);
628     CC.getClient().mapMidiInstrument(mapId, entry, instrInfo);
629     } catch(Exception x) {
630     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
631     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
632     }
633     }
634     }
635    
636     /**
637     * This task removes a MIDI instrument.
638     */
639     public static class UnmapInstrument extends EnhancedTask {
640     private int mapId;
641     private int bank;
642     private int program;
643    
644     /**
645     * Creates new instance of <code>UnmapInstrument</code>.
646     * @param mapId The id of the MIDI instrument
647     * map containing the instrument to be removed.
648     * @param bank The index of the MIDI bank containing the instrument to be removed.
649     * @param program The MIDI program number of the instrument to be removed.
650     */
651     public
652     UnmapInstrument(int mapId, int bank, int program) {
653     setTitle("Midi.UnmapInstrument_task");
654     setDescription(i18n.getMessage("Midi.UnmapInstrument.desc"));
655    
656     this.mapId = mapId;
657     this.bank = bank;
658     this.program = program;
659     }
660    
661     /** The entry point of the task. */
662     public void
663     run() {
664     try {
665     MidiInstrumentEntry entry = new MidiInstrumentEntry(bank, program);
666     CC.getClient().unmapMidiInstrument(mapId, entry);
667     } catch(Exception x) {
668     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
669     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
670     }
671     }
672     }
673    
674     /**
675     * This task updates the settings of a MIDI instrument.
676     */
677     public static class UpdateInstrumentInfo extends EnhancedTask {
678     private int mapId;
679     private int bank;
680     private int program;
681    
682     /**
683     * Creates new instance of <code>UpdateInstrumentInfo</code>.
684     * @param mapId The id of the MIDI instrument map containg the instrument.
685     * @param bank The index of the MIDI bank, containing the instrument.
686     * @param program The MIDI program number of the instrument.
687     */
688     public
689     UpdateInstrumentInfo(int mapId, int bank, int program) {
690     setTitle("Midi.UpdateInstrumentInfo_task");
691     setDescription(i18n.getMessage("Midi.UpdateInstrumentInfo.desc"));
692    
693     this.mapId = mapId;
694     this.bank = bank;
695     this.program = program;
696     }
697    
698     /** The entry point of the task. */
699     public void
700     run() {
701     try {
702     MidiInstrumentInfo info =
703     CC.getClient().getMidiInstrumentInfo(mapId, bank, program);
704    
705     MidiInstrumentMap map;
706     map = CC.getSamplerModel().getMidiInstrumentMapById(mapId);
707     map.getMidiInstrument(bank, program).setInfo(info);
708     } catch(Exception x) {
709     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
710     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
711     }
712     }
713     }
714    
715     /**
716     * This task updates the MIDI instrument list on a specific MIDI instrument map.
717     */
718     public static class UpdateInstruments extends EnhancedTask {
719     private int mapId;
720    
721     /** Creates a new instance of <code>UpdateInstruments</code>. */
722     public
723     UpdateInstruments(int mapId) {
724     setTitle("Midi.UpdateInstruments_task");
725     setDescription(i18n.getMessage("Midi.UpdateInstruments.desc"));
726    
727     this.mapId = mapId;
728     }
729    
730     /** The entry point of the task. */
731     public void
732     run() {
733     try {
734     SamplerModel sm = CC.getSamplerModel();
735     MidiInstrumentInfo[] iS = CC.getClient().getMidiInstruments(mapId);
736     MidiInstrumentMap map = sm.getMidiInstrumentMapById(mapId);
737    
738     boolean found = false;
739    
740     for(MidiInstrument instr : map.getAllMidiInstruments()) {
741     for(int i = 0; i < iS.length; i++) {
742     if(instr.getInfo().equals(iS[i])) {
743     iS[i] = null;
744     found = true;
745     }
746     }
747    
748     if(!found) {
749     map.unmapMidiInstrument(instr.getInfo().getEntry());
750     }
751     found = false;
752     }
753    
754     for(MidiInstrumentInfo mii : iS) {
755     if(mii != null) {
756     MidiInstrument instr = new MidiInstrument(mii);
757     map.mapMidiInstrument(mii.getEntry(), instr);
758     }
759     }
760     } catch(Exception x) {
761     setErrorMessage(getDescription() + ": " + HF.getErrorMessage(x));
762     CC.getLogger().log(Level.FINE, getErrorMessage(), x);
763     }
764     }
765     }
766    
767     }

  ViewVC Help
Powered by ViewVC