Subversion Repositories svn.mios

Rev

Rev 272 | Rev 660 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 272 Rev 628
Line 19... Line 19...
19
 */
19
 */
20
20
21
package org.midibox.sidedit.gui.multi;
21
package org.midibox.sidedit.gui.multi;
22
22
23
import java.awt.BorderLayout;
23
import java.awt.BorderLayout;
24
import java.awt.GridLayout;
-
 
25
import java.util.Vector;
24
import java.util.Vector;
-
 
25
26
import javax.swing.BorderFactory;
26
import javax.swing.BorderFactory;
27
import javax.swing.BoxLayout;
-
 
28
import javax.swing.JComboBox;
27
import javax.swing.JComboBox;
29
import javax.swing.JPanel;
28
import javax.swing.JPanel;
30
import javax.swing.JSlider;
29
import javax.swing.JSlider;
31
import javax.swing.JTabbedPane;
30
import javax.swing.JTabbedPane;
32
import javax.swing.JToggleButton;
31
import javax.swing.JToggleButton;
33
32
34
import org.midibox.sidedit.BasslineSpecs;
-
 
35
import org.midibox.sidedit.DrumSpecs;
-
 
36
import org.midibox.sidedit.SIDSysexInfo;
-
 
37
import org.midibox.sidedit.SIDEditController;
33
import org.midibox.sidedit.SIDEditController;
38
import org.midibox.sidedit.SIDSysexParameterControl;
34
import org.midibox.sidedit.SIDSysexParameterControl;
39
-
 
-
 
35
import org.midibox.sidedit.gui.FilterGUI;
40
import org.midibox.sidedit.gui.controls.*;
36
import org.midibox.sidedit.gui.GlobalGUI;
-
 
37
import org.midibox.sidedit.gui.controls.SIDSysexParameterControlCombo;
-
 
38
import org.midibox.sidedit.gui.controls.SIDSysexParameterControlGUI;
-
 
39
import org.midibox.sidedit.gui.controls.SIDSysexParameterControlKnob;
-
 
40
import org.midibox.sidedit.gui.controls.SIDSysexParameterControlLFOSelect;
-
 
41
import org.midibox.sidedit.gui.controls.SIDSysexParameterControlSlider;
-
 
42
import org.midibox.sidedit.gui.controls.SIDSysexParameterControlToggleButton;
-
 
43
import org.midibox.sidedit.gui.controls.SIDSysexParameterControlWaveSelect;
41
import org.midibox.utils.gui.ImageLoader;
44
import org.midibox.utils.gui.ImageLoader;
42
import org.midibox.utils.gui.Knob;
45
import org.midibox.utils.gui.Knob;
43
import org.midibox.utils.gui.MyButtonUI;
46
import org.midibox.utils.gui.MyButtonUI;
44
import org.midibox.sidedit.gui.GlobalGUI;
-
 
45
import org.midibox.sidedit.gui.FilterGUI;
-
 
46
47
47
public class MultiGUI extends JPanel {
48
public class MultiGUI extends JPanel {
48
    private boolean linked = false;
49
    private boolean linked = false;
49
    private Vector GUIs, EXT_L, EXT_R;
50
    private Vector GUIs, EXT_L, EXT_R;
50
    private boolean oscLinked = false;
51
    private boolean oscLinked = false;
Line 58... Line 59...
58
       
59
59
        GUIs = createGUIs(sidEditController);
60
        GUIs = createGUIs(sidEditController);
60
        createLinkGroups();
61
        createLinkGroups();
61
        JTabbedPane tabbedPane = new JTabbedPane();
62
        JTabbedPane tabbedPane = new JTabbedPane();
62
       
63
63
        JPanel t1 = new GlobalGUI((Vector)GUIs.elementAt(0),(Vector)GUIs.elementAt(1));
64
        JPanel t1 = new GlobalGUI((Vector) GUIs.elementAt(0), (Vector) GUIs
-
 
65
                .elementAt(1));
64
        JPanel t2 = new FilterGUI((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));
66
        JPanel t2 = new FilterGUI((Vector) GUIs.elementAt(2), (Vector) GUIs
-
 
67
                .elementAt(3));
65
        JPanel t3 = new InstrumentGUI((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(10));
68
        JPanel t3 = new InstrumentGUI((Vector) GUIs.elementAt(4), (Vector) GUIs
-
 
69
                .elementAt(10));
66
        JPanel t4 = new InstrumentGUI((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(11));
70
        JPanel t4 = new InstrumentGUI((Vector) GUIs.elementAt(5), (Vector) GUIs
-
 
71
                .elementAt(11));
67
        JPanel t5 = new InstrumentGUI((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(12));
72
        JPanel t5 = new InstrumentGUI((Vector) GUIs.elementAt(6), (Vector) GUIs
-
 
73
                .elementAt(12));
68
        JPanel t6 = new InstrumentGUI((Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(13));
74
        JPanel t6 = new InstrumentGUI((Vector) GUIs.elementAt(7), (Vector) GUIs
-
 
75
                .elementAt(13));
69
        JPanel t7 = new InstrumentGUI((Vector)GUIs.elementAt(8),(Vector)GUIs.elementAt(14));
76
        JPanel t7 = new InstrumentGUI((Vector) GUIs.elementAt(8), (Vector) GUIs
-
 
77
                .elementAt(14));
70
        JPanel t8 = new InstrumentGUI((Vector)GUIs.elementAt(9),(Vector)GUIs.elementAt(15));       
78
        JPanel t8 = new InstrumentGUI((Vector) GUIs.elementAt(9), (Vector) GUIs
-
 
79
                .elementAt(15));
71
        JPanel t9 = new WTGUI((Vector)GUIs.elementAt(16), (Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(11),(Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(13),(Vector)GUIs.elementAt(14),(Vector)GUIs.elementAt(15));
80
        JPanel t9 = new WTGUI((Vector) GUIs.elementAt(16), (Vector) GUIs
-
 
81
                .elementAt(10), (Vector) GUIs.elementAt(11), (Vector) GUIs
-
 
82
                .elementAt(12), (Vector) GUIs.elementAt(13), (Vector) GUIs
-
 
83
                .elementAt(14), (Vector) GUIs.elementAt(15));
72
       
84
73
        tabbedPane.addTab("Global", t1);
85
        tabbedPane.addTab("Global", t1);
74
        tabbedPane.addTab("Filter", t2);
86
        tabbedPane.addTab("Filter", t2);
75
        tabbedPane.addTab("Instr.1", t3);
87
        tabbedPane.addTab("Instr.1", t3);
76
        tabbedPane.addTab("Instr.2", t4);
88
        tabbedPane.addTab("Instr.2", t4);
Line 97... Line 109...
97
       
109
98
    protected Vector createGuiElements(Vector v) {
110
    protected Vector createGuiElements(Vector v) {
99
        // Create controller GUI's
111
        // Create controller GUI's
100
        Vector midiParameterGUIs = new Vector();
112
        Vector midiParameterGUIs = new Vector();
101
        for (int c = 0; c < v.size(); c++) {
113
        for (int c = 0; c < v.size(); c++) {
102
            SIDSysexParameterControl midiParameter = (SIDSysexParameterControl) v.elementAt(c);
114
            SIDSysexParameterControl midiParameter = (SIDSysexParameterControl) v
-
 
115
                    .elementAt(c);
103
            switch (midiParameter.getType()) {
116
            switch (midiParameter.getType()) {
104
                case 0:
117
            case 0:
105
                    // Create knob
118
                // Create knob
-
 
119
                Knob knob = new Knob(ImageLoader
106
                    Knob knob = new Knob(ImageLoader.getImageIcon("plasticknob_strip.png"));       
120
                        .getImageIcon("plasticknob_strip.png"));
107
                    midiParameterGUIs.add(new SIDSysexParameterControlKnob(midiParameter, knob, true, BorderLayout.SOUTH, true, true));
121
                midiParameterGUIs.add(new SIDSysexParameterControlKnob(
-
 
122
                        midiParameter, knob, true, BorderLayout.SOUTH, true,
-
 
123
                        true));
108
                    break;
124
                break;
109
                case 1:
125
            case 1:
110
                    // Create toggle button
126
                // Create toggle button
111
                    JToggleButton button = new JToggleButton();
127
                JToggleButton button = new JToggleButton();
-
 
128
                button.setUI(new MyButtonUI(ImageLoader
112
                    button.setUI(new MyButtonUI(ImageLoader.getImageIcon("button_on.png"), ImageLoader.getImageIcon("button.png")));
129
                        .getImageIcon("button_on.png"), ImageLoader
-
 
130
                        .getImageIcon("button.png")));
113
                    midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(midiParameter, button, false, true, BorderLayout.SOUTH, true, false));
131
                midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(
-
 
132
                        midiParameter, button, false, true, BorderLayout.SOUTH,
-
 
133
                        true, false));
114
                    break;
134
                break;
115
                case 2:
135
            case 2:
116
                    // Create simple toggle button
136
                // Create simple toggle button
117
                    JToggleButton simpleButton = new JToggleButton();
137
                JToggleButton simpleButton = new JToggleButton();
118
                    simpleButton.setUI(new MyButtonUI(ImageLoader.getImageIcon("button_on.png"), ImageLoader.getImageIcon("button.png")));
138
                simpleButton.setUI(new MyButtonUI(ImageLoader
-
 
139
                        .getImageIcon("button_on.png"), ImageLoader
-
 
140
                        .getImageIcon("button.png")));
119
                    midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(midiParameter, simpleButton, false, false, BorderLayout.SOUTH, true, false));
141
                midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(
-
 
142
                        midiParameter, simpleButton, false, false,
-
 
143
                        BorderLayout.SOUTH, true, false));
120
                    break;
144
                break;
121
                case 3:
145
            case 3:
122
                    // Create slider
146
                // Create slider
123
                    JSlider slider = new JSlider();
147
                JSlider slider = new JSlider();
124
                    midiParameterGUIs.add(new SIDSysexParameterControlSlider(midiParameter, slider, true, BorderLayout.SOUTH,true,true));
148
                midiParameterGUIs.add(new SIDSysexParameterControlSlider(
-
 
149
                        midiParameter, slider, true, BorderLayout.SOUTH, true,
-
 
150
                        true));
125
                    break;
151
                break;
126
                case 4:
152
            case 4:
127
                    // Create waveform selector (Voice)
153
                // Create waveform selector (Voice)
128
                    midiParameterGUIs.add(new SIDSysexParameterControlWaveSelect(midiParameter, true, BorderLayout.NORTH,false,false));
154
                midiParameterGUIs.add(new SIDSysexParameterControlWaveSelect(
-
 
155
                        midiParameter, true, BorderLayout.NORTH, false, false));
129
                    break;
156
                break;
130
                case 5:
157
            case 5:
131
                    // Create waveform selector (LFO)
158
                // Create waveform selector (LFO)
132
                    midiParameterGUIs.add(new SIDSysexParameterControlLFOSelect(midiParameter, true, BorderLayout.NORTH,false,false));
159
                midiParameterGUIs.add(new SIDSysexParameterControlLFOSelect(
-
 
160
                        midiParameter, true, BorderLayout.NORTH, false, false));
133
                    break;     
161
                break;
134
                case 6:
162
            case 6:
135
                    // Normal combo
163
                // Normal combo
136
                    JComboBox combo = new JComboBox(midiParameter.getSparseValAlias());
164
                JComboBox combo = new JComboBox(midiParameter
-
 
165
                        .getSparseValAlias());
137
                    midiParameterGUIs.add(new SIDSysexParameterControlCombo(midiParameter,combo,true,BorderLayout.NORTH,false,false));
166
                midiParameterGUIs.add(new SIDSysexParameterControlCombo(
-
 
167
                        midiParameter, combo, true, BorderLayout.NORTH, false,
-
 
168
                        false));
138
                    break;
169
                break;
139
                case 7:
170
            case 7:
140
                    // Simple rotary
171
                // Simple rotary
-
 
172
                Knob knob1 = new Knob(ImageLoader
141
                    Knob knob1 = new Knob(ImageLoader.getImageIcon("plasticknob_strip.png"));      
173
                        .getImageIcon("plasticknob_strip.png"));
-
 
174
                midiParameterGUIs.add(new SIDSysexParameterControlKnob(
142
                    midiParameterGUIs.add(new SIDSysexParameterControlKnob(midiParameter, knob1, false, BorderLayout.SOUTH, true, true));
175
                        midiParameter, knob1, false, BorderLayout.SOUTH, true,
-
 
176
                        true));
143
                    break;
177
                break;
-
 
178
            default:
-
 
179
                midiParameterGUIs.add(midiParameter);
144
                default: midiParameterGUIs.add(midiParameter);System.out.println("Unknown controller type!");
180
                System.out.println("Unknown controller type!");
145
            }  
181
            }
146
        }
182
        }
147
        return midiParameterGUIs;
183
        return midiParameterGUIs;
148
    }  
184
    }
149
   
185
150
    public void createLinkGroups() {
186
    public void createLinkGroups() {
151
        // Create vector of pointers to left and right parameters (for linking only)
187
        // Create vector of pointers to left and right parameters (for linking
-
 
188
        // only)
152
        EXT_L = new Vector();
189
        EXT_L = new Vector();
153
        EXT_R = new Vector();
190
        EXT_R = new Vector();
154
        for (int c = 0; c < 8; c++) {
191
        for (int c = 0; c < 8; c++) {
155
            EXT_L.add(((Vector)GUIs.elementAt(1)).elementAt(2*c));
192
            EXT_L.add(((Vector) GUIs.elementAt(1)).elementAt(2 * c));
156
            EXT_R.add(((Vector)GUIs.elementAt(1)).elementAt((2*c)+1));
193
            EXT_R.add(((Vector) GUIs.elementAt(1)).elementAt((2 * c) + 1));
157
        }
194
        }
158
    }
195
    }
159
       
196
160
    public void restLink(boolean b) {      
197
    public void restLink(boolean b) {
161
        if (b) {
198
        if (b) {
162
            linkPar((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(8));   // Link V1 & V5
199
            linkPar((Vector) GUIs.elementAt(4), (Vector) GUIs.elementAt(8)); // Link
-
 
200
            // V1
-
 
201
            // &
-
 
202
            // V5
163
            linkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(14)); // Link V1 & V5 rest
203
            linkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(14)); // Link
-
 
204
            // V1
-
 
205
            // &
-
 
206
            // V5
-
 
207
            // rest
164
            linkPar((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(9));   // Link V1 & V6
208
            linkPar((Vector) GUIs.elementAt(4), (Vector) GUIs.elementAt(9)); // Link
-
 
209
            // V1
-
 
210
            // &
-
 
211
            // V6
165
            linkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(15)); // Link V1 & V6 rest
212
            linkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(15)); // Link
-
 
213
            // V1
-
 
214
            // &
-
 
215
            // V6
-
 
216
            // rest
166
            linkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(7));   // Link V2 & V4         
217
            linkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(7)); // Link
-
 
218
            // V2
-
 
219
            // &
-
 
220
            // V4
167
            linkPar((Vector)GUIs.elementAt(11),(Vector)GUIs.elementAt(13)); // Link V2 & V4 rest
221
            linkPar((Vector) GUIs.elementAt(11), (Vector) GUIs.elementAt(13)); // Link
-
 
222
            // V2
-
 
223
            // &
-
 
224
            // V4
-
 
225
            // rest
168
            linkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(9));   // Link V2 & V6         
226
            linkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(9)); // Link
-
 
227
            // V2
-
 
228
            // &
-
 
229
            // V6
169
            linkPar((Vector)GUIs.elementAt(11),(Vector)GUIs.elementAt(15)); // Link V2 & V6 rest
230
            linkPar((Vector) GUIs.elementAt(11), (Vector) GUIs.elementAt(15)); // Link
-
 
231
            // V2
-
 
232
            // &
-
 
233
            // V6
-
 
234
            // rest
170
            linkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(7));   // Link V3 & V4
235
            linkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(7)); // Link
-
 
236
            // V3
-
 
237
            // &
-
 
238
            // V4
171
            linkPar((Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(13)); // Link V3 & V4 rest
239
            linkPar((Vector) GUIs.elementAt(12), (Vector) GUIs.elementAt(13)); // Link
-
 
240
            // V3
-
 
241
            // &
-
 
242
            // V4
-
 
243
            // rest
172
            linkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(8));   // Link V3 & V5         
244
            linkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(8)); // Link
-
 
245
            // V3
-
 
246
            // &
-
 
247
            // V5
173
            linkPar((Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(14)); // Link V3 & V5 rest
248
            linkPar((Vector) GUIs.elementAt(12), (Vector) GUIs.elementAt(14)); // Link
-
 
249
            // V3
-
 
250
            // &
-
 
251
            // V5
-
 
252
            // rest
174
        } else {
253
        } else {
175
            unlinkPar((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(8));     // Unlink V1 & V5
254
            unlinkPar((Vector) GUIs.elementAt(4), (Vector) GUIs.elementAt(8)); // Unlink
-
 
255
            // V1
-
 
256
            // &
-
 
257
            // V5
176
            unlinkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(14));   // Unlink V1 & V5 rest
258
            unlinkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(14)); // Unlink
-
 
259
            // V1
-
 
260
            // &
-
 
261
            // V5
-
 
262
            // rest
177
            unlinkPar((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(9));     // Unlink V1 & V6
263
            unlinkPar((Vector) GUIs.elementAt(4), (Vector) GUIs.elementAt(9)); // Unlink
-
 
264
            // V1
-
 
265
            // &
-
 
266
            // V6
178
            unlinkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(15));   // Unlink V1 & V6 rest
267
            unlinkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(15)); // Unlink
-
 
268
            // V1
-
 
269
            // &
-
 
270
            // V6
-
 
271
            // rest
179
            unlinkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(7));     // Unlink V2 & V4           
272
            unlinkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(7)); // Unlink
-
 
273
            // V2
-
 
274
            // &
-
 
275
            // V4
180
            unlinkPar((Vector)GUIs.elementAt(11),(Vector)GUIs.elementAt(13));   // Unlink V2 & V4 rest
276
            unlinkPar((Vector) GUIs.elementAt(11), (Vector) GUIs.elementAt(13)); // Unlink
-
 
277
            // V2
-
 
278
            // &
-
 
279
            // V4
-
 
280
            // rest
181
            unlinkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(9));     // Unlink V2 & V6           
281
            unlinkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(9)); // Unlink
-
 
282
            // V2
-
 
283
            // &
-
 
284
            // V6
182
            unlinkPar((Vector)GUIs.elementAt(11),(Vector)GUIs.elementAt(15));   // Unlink V2 & V6 rest
285
            unlinkPar((Vector) GUIs.elementAt(11), (Vector) GUIs.elementAt(15)); // Unlink
-
 
286
            // V2
-
 
287
            // &
-
 
288
            // V6
-
 
289
            // rest
183
            unlinkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(7));     // Unlink V3 & V4
290
            unlinkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(7)); // Unlink
-
 
291
            // V3
-
 
292
            // &
-
 
293
            // V4
184
            unlinkPar((Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(13));   // Unlink V3 & V4 rest
294
            unlinkPar((Vector) GUIs.elementAt(12), (Vector) GUIs.elementAt(13)); // Unlink
-
 
295
            // V3
-
 
296
            // &
-
 
297
            // V4
-
 
298
            // rest
185
            unlinkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(8));     // Unlink V3 & V5           
299
            unlinkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(8)); // Unlink
-
 
300
            // V3
-
 
301
            // &
-
 
302
            // V5
186
            unlinkPar((Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(14));   // Unlink V3 & V5 rest      
303
            unlinkPar((Vector) GUIs.elementAt(12), (Vector) GUIs.elementAt(14)); // Unlink
-
 
304
            // V3
-
 
305
            // &
-
 
306
            // V5
-
 
307
            // rest
187
        }
308
        }
188
    }
309
    }
189
   
310
190
    public void oscLink(boolean b) {
311
    public void oscLink(boolean b) {
191
        if (b) {
312
        if (b) {
192
            sidEditController.getPatch().setOscillatorLink(true);
313
            sidEditController.getPatch().setOscillatorLink(true);
193
            linkPar((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(5));   // Link V1 & V2
314
            linkPar((Vector) GUIs.elementAt(4), (Vector) GUIs.elementAt(5)); // Link
-
 
315
            // V1
-
 
316
            // &
-
 
317
            // V2
194
            linkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(11)); // Link V1 & V2 rest            
318
            linkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(11)); // Link
-
 
319
            // V1
-
 
320
            // &
-
 
321
            // V2
-
 
322
            // rest
195
            linkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(6));   // Link V2 & V3
323
            linkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(6)); // Link
-
 
324
            // V2
-
 
325
            // &
-
 
326
            // V3
196
            linkPar((Vector)GUIs.elementAt(11),(Vector)GUIs.elementAt(12)); // Link V2 & V3 rest
327
            linkPar((Vector) GUIs.elementAt(11), (Vector) GUIs.elementAt(12)); // Link
-
 
328
            // V2
-
 
329
            // &
-
 
330
            // V3
-
 
331
            // rest
197
            linkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(4));   // Link V3 & V1             
332
            linkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(4)); // Link
-
 
333
            // V3
-
 
334
            // &
-
 
335
            // V1
198
            linkPar((Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(10)); // Link V3 & V1 rest
336
            linkPar((Vector) GUIs.elementAt(12), (Vector) GUIs.elementAt(10)); // Link
-
 
337
            // V3
-
 
338
            // &
-
 
339
            // V1
-
 
340
            // rest
199
            linkPar((Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(8));   // Link V4 & V5
341
            linkPar((Vector) GUIs.elementAt(7), (Vector) GUIs.elementAt(8)); // Link
-
 
342
            // V4
-
 
343
            // &
-
 
344
            // V5
200
            linkPar((Vector)GUIs.elementAt(13),(Vector)GUIs.elementAt(14)); // Link V4 & V5 rest
345
            linkPar((Vector) GUIs.elementAt(13), (Vector) GUIs.elementAt(14)); // Link
-
 
346
            // V4
-
 
347
            // &
-
 
348
            // V5
-
 
349
            // rest
201
            linkPar((Vector)GUIs.elementAt(8),(Vector)GUIs.elementAt(9));   // Link V5 & V6 
350
            linkPar((Vector) GUIs.elementAt(8), (Vector) GUIs.elementAt(9)); // Link
-
 
351
            // V5
-
 
352
            // &
-
 
353
            // V6
202
            linkPar((Vector)GUIs.elementAt(14),(Vector)GUIs.elementAt(15)); // Link V5 & V6 rest
354
            linkPar((Vector) GUIs.elementAt(14), (Vector) GUIs.elementAt(15)); // Link
-
 
355
            // V5
-
 
356
            // &
-
 
357
            // V6
-
 
358
            // rest
203
            linkPar((Vector)GUIs.elementAt(9),(Vector)GUIs.elementAt(7));   // Link V6 & V4         
359
            linkPar((Vector) GUIs.elementAt(9), (Vector) GUIs.elementAt(7)); // Link
-
 
360
            // V6
-
 
361
            // &
-
 
362
            // V4
204
            linkPar((Vector)GUIs.elementAt(15),(Vector)GUIs.elementAt(13)); // Link V6 & V4 rest
363
            linkPar((Vector) GUIs.elementAt(15), (Vector) GUIs.elementAt(13)); // Link
-
 
364
            // V6
-
 
365
            // &
-
 
366
            // V4
-
 
367
            // rest
205
        } else {
368
        } else {
206
            sidEditController.getPatch().setOscillatorLink(false);
369
            sidEditController.getPatch().setOscillatorLink(false);
207
            unlinkPar((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(5));     // Unlink V1 & V2
370
            unlinkPar((Vector) GUIs.elementAt(4), (Vector) GUIs.elementAt(5)); // Unlink
-
 
371
            // V1
-
 
372
            // &
-
 
373
            // V2
208
            unlinkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(11));   // Unlink V1 & V2 rest          
374
            unlinkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(11)); // Unlink
-
 
375
            // V1
-
 
376
            // &
-
 
377
            // V2
-
 
378
            // rest
209
            unlinkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(6));     // Unlink V2 & V3
379
            unlinkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(6)); // Unlink
-
 
380
            // V2
-
 
381
            // &
-
 
382
            // V3
210
            unlinkPar((Vector)GUIs.elementAt(11),(Vector)GUIs.elementAt(12));   // Unlink V2 & V3 rest
383
            unlinkPar((Vector) GUIs.elementAt(11), (Vector) GUIs.elementAt(12)); // Unlink
-
 
384
            // V2
-
 
385
            // &
-
 
386
            // V3
-
 
387
            // rest
211
            unlinkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(4));     // Unlink V3 & V1               
388
            unlinkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(4)); // Unlink
-
 
389
            // V3
-
 
390
            // &
-
 
391
            // V1
212
            unlinkPar((Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(10));   // Unlink V3 & V1 rest
392
            unlinkPar((Vector) GUIs.elementAt(12), (Vector) GUIs.elementAt(10)); // Unlink
-
 
393
            // V3
-
 
394
            // &
-
 
395
            // V1
-
 
396
            // rest
213
            unlinkPar((Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(8));     // Unlink V4 & V5
397
            unlinkPar((Vector) GUIs.elementAt(7), (Vector) GUIs.elementAt(8)); // Unlink
-
 
398
            // V4
-
 
399
            // &
-
 
400
            // V5
214
            unlinkPar((Vector)GUIs.elementAt(13),(Vector)GUIs.elementAt(14));   // Unlink V4 & V5 rest
401
            unlinkPar((Vector) GUIs.elementAt(13), (Vector) GUIs.elementAt(14)); // Unlink
-
 
402
            // V4
-
 
403
            // &
-
 
404
            // V5
-
 
405
            // rest
215
            unlinkPar((Vector)GUIs.elementAt(8),(Vector)GUIs.elementAt(9));     // Unlink V5 & V6   
406
            unlinkPar((Vector) GUIs.elementAt(8), (Vector) GUIs.elementAt(9)); // Unlink
-
 
407
            // V5
-
 
408
            // &
-
 
409
            // V6
216
            unlinkPar((Vector)GUIs.elementAt(14),(Vector)GUIs.elementAt(15));   // Unlink V5 & V6 rest
410
            unlinkPar((Vector) GUIs.elementAt(14), (Vector) GUIs.elementAt(15)); // Unlink
-
 
411
            // V5
-
 
412
            // &
-
 
413
            // V6
-
 
414
            // rest
217
            unlinkPar((Vector)GUIs.elementAt(9),(Vector)GUIs.elementAt(7));     // Unlink V6 & V4           
415
            unlinkPar((Vector) GUIs.elementAt(9), (Vector) GUIs.elementAt(7)); // Unlink
-
 
416
            // V6
-
 
417
            // &
-
 
418
            // V4
218
            unlinkPar((Vector)GUIs.elementAt(15),(Vector)GUIs.elementAt(13));   // Unlink V6 & V4 rest              
419
            unlinkPar((Vector) GUIs.elementAt(15), (Vector) GUIs.elementAt(13)); // Unlink
-
 
420
            // V6
-
 
421
            // &
-
 
422
            // V4
-
 
423
            // rest
219
        }
424
        }
220
        if (stereoLinked) {
425
        if (stereoLinked) {
221
            restLink(b);
426
            restLink(b);
222
        }      
427
        }
223
        oscLinked = b;
428
        oscLinked = b;
224
    }
429
    }
225
   
-
 
226
   
430
227
    public void stereoLink(boolean b) {
431
    public void stereoLink(boolean b) {
228
        if (b) {
432
        if (b) {
229
            sidEditController.getPatch().setStereoLink(true);
433
            sidEditController.getPatch().setStereoLink(true);
230
            linkPar(EXT_L,EXT_R);                                               // Link external outputs 2 by 2
434
            linkPar(EXT_L, EXT_R); // Link external outputs 2 by 2
231
            linkPar((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));       // Link filter left & right     
435
            linkPar((Vector) GUIs.elementAt(2), (Vector) GUIs.elementAt(3)); // Link
-
 
436
            // filter
-
 
437
            // left
-
 
438
            // &
-
 
439
            // right
232
            linkPar((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(7));       // Link V1 & V4
440
            linkPar((Vector) GUIs.elementAt(4), (Vector) GUIs.elementAt(7)); // Link
-
 
441
            // V1
-
 
442
            // &
-
 
443
            // V4
233
            linkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(13));     // Link V1 & V4 rest
444
            linkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(13)); // Link
-
 
445
            // V1
-
 
446
            // &
-
 
447
            // V4
-
 
448
            // rest
234
            linkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(8));       // Link V2 & V5
449
            linkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(8)); // Link
-
 
450
            // V2
-
 
451
            // &
-
 
452
            // V5
235
            linkPar((Vector)GUIs.elementAt(11),(Vector)GUIs.elementAt(14));     // Link V2 & V5 rest
453
            linkPar((Vector) GUIs.elementAt(11), (Vector) GUIs.elementAt(14)); // Link
-
 
454
            // V2
-
 
455
            // &
-
 
456
            // V5
-
 
457
            // rest
236
            linkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(9));       // Link V3 & V6 
458
            linkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(9)); // Link
-
 
459
            // V3
-
 
460
            // &
-
 
461
            // V6
237
            linkPar((Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(15));     // Link V3 & V6 rest
462
            linkPar((Vector) GUIs.elementAt(12), (Vector) GUIs.elementAt(15)); // Link
-
 
463
            // V3
-
 
464
            // &
-
 
465
            // V6
-
 
466
            // rest
238
        } else {
467
        } else {
239
            sidEditController.getPatch().setStereoLink(false);
468
            sidEditController.getPatch().setStereoLink(false);
240
            unlinkPar(EXT_L,EXT_R);                                             // Unlink external outputs 2 by 2
469
            unlinkPar(EXT_L, EXT_R); // Unlink external outputs 2 by 2
241
            unlinkPar((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));     // Unlink filter left & right   
470
            unlinkPar((Vector) GUIs.elementAt(2), (Vector) GUIs.elementAt(3)); // Unlink
-
 
471
            // filter
-
 
472
            // left
-
 
473
            // &
-
 
474
            // right
242
            unlinkPar((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));     // Unlink filter left & right       
475
            unlinkPar((Vector) GUIs.elementAt(2), (Vector) GUIs.elementAt(3)); // Unlink
-
 
476
            // filter
-
 
477
            // left
-
 
478
            // &
-
 
479
            // right
243
            unlinkPar((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(7));     // Unlink V1 & V4
480
            unlinkPar((Vector) GUIs.elementAt(4), (Vector) GUIs.elementAt(7)); // Unlink
-
 
481
            // V1
-
 
482
            // &
-
 
483
            // V4
244
            unlinkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(13));       // Unlink V1 & V4 rest
484
            unlinkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(13)); // Unlink
-
 
485
            // V1
-
 
486
            // &
-
 
487
            // V4
-
 
488
            // rest
245
            unlinkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(8));     // Unlink V2 & V5
489
            unlinkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(8)); // Unlink
-
 
490
            // V2
-
 
491
            // &
-
 
492
            // V5
246
            unlinkPar((Vector)GUIs.elementAt(11),(Vector)GUIs.elementAt(14));       // Unlink V2 & V5 rest
493
            unlinkPar((Vector) GUIs.elementAt(11), (Vector) GUIs.elementAt(14)); // Unlink
-
 
494
            // V2
-
 
495
            // &
-
 
496
            // V5
-
 
497
            // rest
247
            unlinkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(9));         // Unlink V3 & V6   
498
            unlinkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(9)); // Unlink
-
 
499
            // V3
-
 
500
            // &
-
 
501
            // V6
248
            unlinkPar((Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(15));       // Unlink V3 & V6 rest
502
            unlinkPar((Vector) GUIs.elementAt(12), (Vector) GUIs.elementAt(15)); // Unlink
-
 
503
            // V3
-
 
504
            // &
-
 
505
            // V6
-
 
506
            // rest
249
        }  
507
        }
250
        if (oscLinked) {
508
        if (oscLinked) {
251
            restLink(b);
509
            restLink(b);
252
        }
510
        }
253
        stereoLinked = b;      
511
        stereoLinked = b;
254
    }
512
    }
255
   
513
256
    protected void linkPar(Vector left, Vector right) {
514
    protected void linkPar(Vector left, Vector right) {
257
        for (int c = 0; c < left.size(); c++) {
515
        for (int c = 0; c < left.size(); c++) {
258
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left.elementAt(c);
516
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left
-
 
517
                    .elementAt(c);
259
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right.elementAt(c);
518
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right
-
 
519
                    .elementAt(c);
260
            g1.addMidiParameter(g2.getMidiParameter());
520
            g1.addMidiParameter(g2.getMidiParameter());
261
            g2.addMidiParameter(g1.getMidiParameter());
521
            g2.addMidiParameter(g1.getMidiParameter());
262
        }
522
        }
263
    }
523
    }
264
   
524
265
    protected void unlinkPar(Vector left, Vector right) {
525
    protected void unlinkPar(Vector left, Vector right) {
266
        for (int c = 0; c < left.size(); c++) {
526
        for (int c = 0; c < left.size(); c++) {
267
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left.elementAt(c);
527
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left
-
 
528
                    .elementAt(c);
268
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right.elementAt(c);
529
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right
-
 
530
                    .elementAt(c);
269
            g1.removeMidiParameter(g2.getMidiParameter());
531
            g1.removeMidiParameter(g2.getMidiParameter());
270
            g2.removeMidiParameter(g1.getMidiParameter());
532
            g2.removeMidiParameter(g1.getMidiParameter());
271
        }
533
        }
272
    }
534
    }
273
}
535
}