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.lead;
21
package org.midibox.sidedit.gui.lead;
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;
26
25
27
import javax.sound.midi.SysexMessage;
-
 
28
import javax.swing.BorderFactory;
26
import javax.swing.BorderFactory;
29
import javax.swing.BoxLayout;
-
 
30
import javax.swing.JComboBox;
27
import javax.swing.JComboBox;
31
import javax.swing.JPanel;
28
import javax.swing.JPanel;
32
import javax.swing.JSlider;
29
import javax.swing.JSlider;
33
import javax.swing.JTabbedPane;
30
import javax.swing.JTabbedPane;
34
import javax.swing.JToggleButton;
31
import javax.swing.JToggleButton;
35
import org.midibox.sidedit.gui.MBSIDV2EditorGUI;
-
 
36
import org.midibox.sidedit.SIDSysexInfo;
-
 
-
 
32
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 LeadGUI extends JPanel {
48
public class LeadGUI extends JPanel {
48
    private Vector GUIs, EXT_L, EXT_R, MP_L, MP_R;
49
    private Vector GUIs, EXT_L, EXT_R, MP_L, MP_R;
49
    private SIDEditController sidEditController;
50
    private SIDEditController sidEditController;
50
    private boolean stereoLinked = true;
51
    private boolean stereoLinked = true;
Line 56... Line 57...
56
       
57
57
        GUIs = createGUIs(sidEditController);
58
        GUIs = createGUIs(sidEditController);
58
        createLinkGroups();
59
        createLinkGroups();
59
        permanentLink();
60
        permanentLink();
60
        JTabbedPane tabbedPane = new JTabbedPane();    
61
        JTabbedPane tabbedPane = new JTabbedPane();
61
        JPanel t1 = new GlobalGUI((Vector)GUIs.elementAt(0),(Vector)GUIs.elementAt(1));
62
        JPanel t1 = new GlobalGUI((Vector) GUIs.elementAt(0), (Vector) GUIs
-
 
63
                .elementAt(1));
62
        JPanel t2 = new OscillatorGUI((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(8),(Vector)GUIs.elementAt(9),(Vector)GUIs.elementAt(10));
64
        JPanel t2 = new OscillatorGUI((Vector) GUIs.elementAt(4), (Vector) GUIs
-
 
65
                .elementAt(5), (Vector) GUIs.elementAt(6), (Vector) GUIs
-
 
66
                .elementAt(7), (Vector) GUIs.elementAt(8), (Vector) GUIs
-
 
67
                .elementAt(9), (Vector) GUIs.elementAt(10));
63
        JPanel t3 = new FilterGUI((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));
68
        JPanel t3 = new FilterGUI((Vector) GUIs.elementAt(2), (Vector) GUIs
-
 
69
                .elementAt(3));
64
        JPanel t4 = new LfoGUI((Vector)GUIs.elementAt(11),(Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(13));
70
        JPanel t4 = new LfoGUI((Vector) GUIs.elementAt(11), (Vector) GUIs
-
 
71
                .elementAt(12), (Vector) GUIs.elementAt(13));
65
        JPanel t6 = new ModulationGUI((Vector)GUIs.elementAt(14));
72
        JPanel t6 = new ModulationGUI((Vector) GUIs.elementAt(14));
66
        JPanel t7 = new TriggerGUI((Vector)GUIs.elementAt(15));
73
        JPanel t7 = new TriggerGUI((Vector) GUIs.elementAt(15));
67
        JPanel t8 = new ArpGUI((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(8),(Vector)GUIs.elementAt(9),(Vector)GUIs.elementAt(10));
74
        JPanel t8 = new ArpGUI((Vector) GUIs.elementAt(5), (Vector) GUIs
-
 
75
                .elementAt(6), (Vector) GUIs.elementAt(7), (Vector) GUIs
-
 
76
                .elementAt(8), (Vector) GUIs.elementAt(9), (Vector) GUIs
-
 
77
                .elementAt(10));
68
        JPanel t9 =  new WTGUI((Vector)GUIs.elementAt(16));
78
        JPanel t9 = new WTGUI((Vector) GUIs.elementAt(16));
69
        JPanel t11 = new SwinGUI((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(8),(Vector)GUIs.elementAt(9),(Vector)GUIs.elementAt(10));
79
        JPanel t11 = new SwinGUI((Vector) GUIs.elementAt(5), (Vector) GUIs
-
 
80
                .elementAt(6), (Vector) GUIs.elementAt(7), (Vector) GUIs
-
 
81
                .elementAt(8), (Vector) GUIs.elementAt(9), (Vector) GUIs
-
 
82
                .elementAt(10));
70
       
83
71
        tabbedPane.addTab("Global", t1);
84
        tabbedPane.addTab("Global", t1);
72
        tabbedPane.addTab("Oscillator", t2);
85
        tabbedPane.addTab("Oscillator", t2);
73
        tabbedPane.addTab("Filter", t3);
86
        tabbedPane.addTab("Filter", t3);
74
        tabbedPane.addTab("LFO/ENV", t4);
87
        tabbedPane.addTab("LFO/ENV", t4);
Line 95... Line 108...
95
       
108
96
    protected Vector createGuiElements(Vector v) {
109
    protected Vector createGuiElements(Vector v) {
97
        // Create controller GUI's
110
        // Create controller GUI's
98
        Vector midiParameterGUIs = new Vector();
111
        Vector midiParameterGUIs = new Vector();
99
        for (int c = 0; c < v.size(); c++) {
112
        for (int c = 0; c < v.size(); c++) {
100
            SIDSysexParameterControl midiParameter = (SIDSysexParameterControl) v.elementAt(c);
113
            SIDSysexParameterControl midiParameter = (SIDSysexParameterControl) v
-
 
114
                    .elementAt(c);
101
            switch (midiParameter.getType()) {
115
            switch (midiParameter.getType()) {
102
                case 0:
116
            case 0:
103
                    // Create knob
117
                // Create knob
-
 
118
                Knob knob = new Knob(ImageLoader
104
                    Knob knob = new Knob(ImageLoader.getImageIcon("plasticknob_strip.png"));       
119
                        .getImageIcon("plasticknob_strip.png"));
105
                    midiParameterGUIs.add(new SIDSysexParameterControlKnob(midiParameter, knob, true, BorderLayout.SOUTH, true, true));
120
                midiParameterGUIs.add(new SIDSysexParameterControlKnob(
-
 
121
                        midiParameter, knob, true, BorderLayout.SOUTH, true,
-
 
122
                        true));
106
                    break;
123
                break;
107
                case 1:
124
            case 1:
108
                    // Create toggle button
125
                // Create toggle button
109
                    JToggleButton button = new JToggleButton();
126
                JToggleButton button = new JToggleButton();
-
 
127
                button.setUI(new MyButtonUI(ImageLoader
110
                    button.setUI(new MyButtonUI(ImageLoader.getImageIcon("button_on.png"), ImageLoader.getImageIcon("button.png")));
128
                        .getImageIcon("button_on.png"), ImageLoader
-
 
129
                        .getImageIcon("button.png")));
111
                    midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(midiParameter, button, false, true, BorderLayout.SOUTH, true, false));
130
                midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(
-
 
131
                        midiParameter, button, false, true, BorderLayout.SOUTH,
-
 
132
                        true, false));
112
                    break;
133
                break;
113
                case 2:
134
            case 2:
114
                    // Create simple toggle button
135
                // Create simple toggle button
115
                    JToggleButton simpleButton = new JToggleButton();
136
                JToggleButton simpleButton = new JToggleButton();
116
                    simpleButton.setUI(new MyButtonUI(ImageLoader.getImageIcon("button_on.png"), ImageLoader.getImageIcon("button.png")));
137
                simpleButton.setUI(new MyButtonUI(ImageLoader
-
 
138
                        .getImageIcon("button_on.png"), ImageLoader
-
 
139
                        .getImageIcon("button.png")));
117
                    midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(midiParameter, simpleButton, false, false, BorderLayout.SOUTH, false, false));
140
                midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(
-
 
141
                        midiParameter, simpleButton, false, false,
-
 
142
                        BorderLayout.SOUTH, false, false));
118
                    break;
143
                break;
119
                case 3:
144
            case 3:
120
                    // Create slider
145
                // Create slider
121
                    JSlider slider = new JSlider();
146
                JSlider slider = new JSlider();
122
                    midiParameterGUIs.add(new SIDSysexParameterControlSlider(midiParameter, slider, true, BorderLayout.SOUTH,true,true));
147
                midiParameterGUIs.add(new SIDSysexParameterControlSlider(
-
 
148
                        midiParameter, slider, true, BorderLayout.SOUTH, true,
-
 
149
                        true));
123
                    break;
150
                break;
124
                case 4:
151
            case 4:
125
                    // Create waveform selector (Voice)
152
                // Create waveform selector (Voice)
126
                    midiParameterGUIs.add(new SIDSysexParameterControlWaveSelect(midiParameter, true, BorderLayout.NORTH,false,false));
153
                midiParameterGUIs.add(new SIDSysexParameterControlWaveSelect(
-
 
154
                        midiParameter, true, BorderLayout.NORTH, false, false));
127
                    break;
155
                break;
128
                case 5:
156
            case 5:
129
                    // Create waveform selector (LFO)
157
                // Create waveform selector (LFO)
130
                    midiParameterGUIs.add(new SIDSysexParameterControlLFOSelect(midiParameter, true, BorderLayout.NORTH,false,false));
158
                midiParameterGUIs.add(new SIDSysexParameterControlLFOSelect(
-
 
159
                        midiParameter, true, BorderLayout.NORTH, false, false));
131
                    break;     
160
                break;
132
                case 6:
161
            case 6:
133
                    // Normal combo
162
                // Normal combo
134
                    JComboBox combo = new JComboBox(midiParameter.getSparseValAlias());
163
                JComboBox combo = new JComboBox(midiParameter
-
 
164
                        .getSparseValAlias());
135
                    midiParameterGUIs.add(new SIDSysexParameterControlCombo(midiParameter,combo,true,BorderLayout.NORTH,false,false));
165
                midiParameterGUIs.add(new SIDSysexParameterControlCombo(
-
 
166
                        midiParameter, combo, true, BorderLayout.NORTH, false,
-
 
167
                        false));
136
                    break;
168
                break;
137
                case 7:
169
            case 7:
138
                    // Simple rotary
170
                // Simple rotary
-
 
171
                Knob knob1 = new Knob(ImageLoader
139
                    Knob knob1 = new Knob(ImageLoader.getImageIcon("plasticknob_strip.png"));      
172
                        .getImageIcon("plasticknob_strip.png"));
-
 
173
                midiParameterGUIs.add(new SIDSysexParameterControlKnob(
140
                    midiParameterGUIs.add(new SIDSysexParameterControlKnob(midiParameter, knob1, false, BorderLayout.SOUTH, true, true));
174
                        midiParameter, knob1, false, BorderLayout.SOUTH, true,
-
 
175
                        true));
141
                    break;
176
                break;
-
 
177
            default:
-
 
178
                midiParameterGUIs.add(midiParameter);
142
                default: midiParameterGUIs.add(midiParameter);System.out.println("Unknown controller type!");
179
                System.out.println("Unknown controller type!");
143
            }  
180
            }
144
        }
181
        }
145
        return midiParameterGUIs;
182
        return midiParameterGUIs;
146
    }  
183
    }
147
   
184
148
    public void createLinkGroups() {
185
    public void createLinkGroups() {
149
        // Create vector of pointers to left and right parameters (for linking only)
186
        // Create vector of pointers to left and right parameters (for linking
-
 
187
        // only)
150
        EXT_L = new Vector();
188
        EXT_L = new Vector();
151
        EXT_R = new Vector();
189
        EXT_R = new Vector();
152
        for (int c = 0; c < 8; c++) {
190
        for (int c = 0; c < 8; c++) {
153
            EXT_L.add(((Vector)GUIs.elementAt(1)).elementAt(2*c));
191
            EXT_L.add(((Vector) GUIs.elementAt(1)).elementAt(2 * c));
154
            EXT_R.add(((Vector)GUIs.elementAt(1)).elementAt((2*c)+1));
192
            EXT_R.add(((Vector) GUIs.elementAt(1)).elementAt((2 * c) + 1));
155
        }
193
        }
156
       
194
157
        // Create vector of pointers to left and right parameters (for linking only)
195
        // Create vector of pointers to left and right parameters (for linking
-
 
196
        // only)
158
        MP_L = new Vector();
197
        MP_L = new Vector();
159
        MP_R = new Vector();       
198
        MP_R = new Vector();
160
        for (int nmp = 0; nmp < 8; nmp++) {
199
        for (int nmp = 0; nmp < 8; nmp++) {
161
            for (int c = 8; c < 16; c++) {
200
            for (int c = 8; c < 16; c++) {
162
                MP_L.add(((Vector)GUIs.elementAt(14)).elementAt((24*nmp)+ c));         
201
                MP_L.add(((Vector) GUIs.elementAt(14))
-
 
202
                        .elementAt((24 * nmp) + c));
163
                MP_R.add(((Vector)GUIs.elementAt(14)).elementAt((24*nmp) + c + 8));
203
                MP_R.add(((Vector) GUIs.elementAt(14)).elementAt((24 * nmp) + c
-
 
204
                        + 8));
164
            }
205
            }
165
        }
206
        }
166
    }
207
    }
167
   
208
168
    public void permanentLink() {
209
    public void permanentLink() {
Line 176... Line 217...
176
        linkPar(LFO,TRIGGER);  
217
        linkPar(LFO, TRIGGER);
177
    }
218
    }
178
   
219
179
    public void restLink(boolean b) {      
220
    public void restLink(boolean b) {
180
        if (b) {
221
        if (b) {
181
            linkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(9));   // Link V1 & V5
222
            linkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(9)); // Link
-
 
223
            // V1
-
 
224
            // &
-
 
225
            // V5
182
            linkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(10));  // Link V1 & V6
226
            linkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(10)); // Link
-
 
227
            // V1
-
 
228
            // &
-
 
229
            // V6
183
            linkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(8));   // Link V2 & V4         
230
            linkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(8)); // Link
-
 
231
            // V2
-
 
232
            // &
-
 
233
            // V4
184
            linkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(10));  // Link V2 & V6         
234
            linkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(10)); // Link
-
 
235
            // V2
-
 
236
            // &
-
 
237
            // V6
185
            linkPar((Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(8));   // Link V3 & V4
238
            linkPar((Vector) GUIs.elementAt(7), (Vector) GUIs.elementAt(8)); // Link
-
 
239
            // V3
-
 
240
            // &
-
 
241
            // V4
186
            linkPar((Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(9));   // Link V3 & V5         
242
            linkPar((Vector) GUIs.elementAt(7), (Vector) GUIs.elementAt(9)); // Link
-
 
243
            // V3
-
 
244
            // &
-
 
245
            // V5
187
        } else {
246
        } else {
188
            unlinkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(9));     // Unlink V1 & V5
247
            unlinkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(9)); // Unlink
-
 
248
            // V1
-
 
249
            // &
-
 
250
            // V5
189
            unlinkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(10));    // Unlink V1 & V6
251
            unlinkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(10)); // Unlink
-
 
252
            // V1
-
 
253
            // &
-
 
254
            // V6
190
            unlinkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(8));     // Unlink V2 & V4           
255
            unlinkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(8)); // Unlink
-
 
256
            // V2
-
 
257
            // &
-
 
258
            // V4
191
            unlinkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(10));    // Unlink V2 & V6           
259
            unlinkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(10)); // Unlink
-
 
260
            // V2
-
 
261
            // &
-
 
262
            // V6
192
            unlinkPar((Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(8));     // Unlink V3 & V4
263
            unlinkPar((Vector) GUIs.elementAt(7), (Vector) GUIs.elementAt(8)); // Unlink
-
 
264
            // V3
-
 
265
            // &
-
 
266
            // V4
193
            unlinkPar((Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(9));     // Unlink V3 & V5           
267
            unlinkPar((Vector) GUIs.elementAt(7), (Vector) GUIs.elementAt(9)); // Unlink
-
 
268
            // V3
-
 
269
            // &
-
 
270
            // V5
194
        }
271
        }
195
    }
272
    }
196
   
273
197
    public void oscLink(boolean b) {
274
    public void oscLink(boolean b) {
198
        if (b) {
275
        if (b) {
199
            sidEditController.getPatch().setOscillatorLink(true);
276
            sidEditController.getPatch().setOscillatorLink(true);
200
            linkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(6));   // Link V1 & V2
277
            linkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(6)); // Link
-
 
278
            // V1
-
 
279
            // &
-
 
280
            // V2
201
            linkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(7));   // Link V2 & V3 
281
            linkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(7)); // Link
-
 
282
            // V2
-
 
283
            // &
-
 
284
            // V3
202
            linkPar((Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(5));   // Link V3 & V1             
285
            linkPar((Vector) GUIs.elementAt(7), (Vector) GUIs.elementAt(5)); // Link
-
 
286
            // V3
-
 
287
            // &
-
 
288
            // V1
203
            linkPar((Vector)GUIs.elementAt(8),(Vector)GUIs.elementAt(9));   // Link V4 & V5
289
            linkPar((Vector) GUIs.elementAt(8), (Vector) GUIs.elementAt(9)); // Link
-
 
290
            // V4
-
 
291
            // &
-
 
292
            // V5
204
            linkPar((Vector)GUIs.elementAt(9),(Vector)GUIs.elementAt(10));  // Link V5 & V6 
293
            linkPar((Vector) GUIs.elementAt(9), (Vector) GUIs.elementAt(10)); // Link
-
 
294
            // V5
-
 
295
            // &
-
 
296
            // V6
205
            linkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(8));  // Link V6 & V4         
297
            linkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(8)); // Link
-
 
298
            // V6
-
 
299
            // &
-
 
300
            // V4
206
        } else {
301
        } else {
207
            sidEditController.getPatch().setOscillatorLink(false);
302
            sidEditController.getPatch().setOscillatorLink(false);
208
            unlinkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(6)); // Unlink V1 & V2
303
            unlinkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(6)); // Unlink
-
 
304
            // V1
-
 
305
            // &
-
 
306
            // V2
209
            unlinkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(7)); // Unlink V2 & V3
307
            unlinkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(7)); // Unlink
-
 
308
            // V2
-
 
309
            // &
-
 
310
            // V3
210
            unlinkPar((Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(5)); // Unlink V3 & V1           
311
            unlinkPar((Vector) GUIs.elementAt(7), (Vector) GUIs.elementAt(5)); // Unlink
-
 
312
            // V3
-
 
313
            // &
-
 
314
            // V1
211
            unlinkPar((Vector)GUIs.elementAt(8),(Vector)GUIs.elementAt(9)); // Unlink V4 & V5
315
            unlinkPar((Vector) GUIs.elementAt(8), (Vector) GUIs.elementAt(9)); // Unlink
-
 
316
            // V4
-
 
317
            // &
-
 
318
            // V5
212
            unlinkPar((Vector)GUIs.elementAt(9),(Vector)GUIs.elementAt(10));// Unlink V5 & V6
319
            unlinkPar((Vector) GUIs.elementAt(9), (Vector) GUIs.elementAt(10));// Unlink
-
 
320
            // V5
-
 
321
            // &
-
 
322
            // V6
213
            unlinkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(8));// Unlink V6 & V4               
323
            unlinkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(8));// Unlink
-
 
324
            // V6
-
 
325
            // &
-
 
326
            // V4
214
        }
327
        }
215
        if (stereoLinked) {
328
        if (stereoLinked) {
216
            restLink(b);
329
            restLink(b);
217
        }      
330
        }
218
        oscLinked = b;
331
        oscLinked = b;
Line 221... Line 334...
221
    public void stereoLink(boolean b) {
334
    public void stereoLink(boolean b) {
222
        if (b) {
335
        if (b) {
223
            sidEditController.getPatch().setStereoLink(true);
336
            sidEditController.getPatch().setStereoLink(true);
224
            linkPar(EXT_L,EXT_R);                                           // Link external outputs 2 by 2
337
            linkPar(EXT_L, EXT_R); // Link external outputs 2 by 2
225
            linkPar(MP_L,MP_R);                                             // Link MP direct assign left & right
338
            linkPar(MP_L, MP_R); // Link MP direct assign left & right
226
            linkPar((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));   // Link filter left & right
339
            linkPar((Vector) GUIs.elementAt(2), (Vector) GUIs.elementAt(3)); // Link
-
 
340
            // filter
-
 
341
            // left
-
 
342
            // &
-
 
343
            // right
227
            linkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(8));   // Link V1 & V4
344
            linkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(8)); // Link
-
 
345
            // V1
-
 
346
            // &
-
 
347
            // V4
228
            linkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(9));   // Link V2 & V5
348
            linkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(9)); // Link
-
 
349
            // V2
-
 
350
            // &
-
 
351
            // V5
229
            linkPar((Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(10));  // Link V3 & V6 
352
            linkPar((Vector) GUIs.elementAt(7), (Vector) GUIs.elementAt(10)); // Link
-
 
353
            // V3
-
 
354
            // &
-
 
355
            // V6
230
        } else {
356
        } else {
231
            sidEditController.getPatch().setStereoLink(false);
357
            sidEditController.getPatch().setStereoLink(false);
232
            unlinkPar(EXT_L,EXT_R);                                           // Unlink external outputs 2 by 2
358
            unlinkPar(EXT_L, EXT_R); // Unlink external outputs 2 by 2
233
            unlinkPar(MP_L,MP_R);                                             // Unlink MP direct assign left & right
359
            unlinkPar(MP_L, MP_R); // Unlink MP direct assign left & right
234
            unlinkPar((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));   // Unlink filter left & right
360
            unlinkPar((Vector) GUIs.elementAt(2), (Vector) GUIs.elementAt(3)); // Unlink
-
 
361
            // filter
-
 
362
            // left
-
 
363
            // &
-
 
364
            // right
235
            unlinkPar((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(8));   // Unlink V1 & V4
365
            unlinkPar((Vector) GUIs.elementAt(5), (Vector) GUIs.elementAt(8)); // Unlink
-
 
366
            // V1
-
 
367
            // &
-
 
368
            // V4
236
            unlinkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(9));   // Unlink V2 & V5
369
            unlinkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(9)); // Unlink
-
 
370
            // V2
-
 
371
            // &
-
 
372
            // V5
237
            unlinkPar((Vector)GUIs.elementAt(7),(Vector)GUIs.elementAt(10));  // Unlink V3 & V6 
373
            unlinkPar((Vector) GUIs.elementAt(7), (Vector) GUIs.elementAt(10)); // Unlink
-
 
374
            // V3
-
 
375
            // &
-
 
376
            // V6
238
        }
377
        }
239
        if (oscLinked) {
378
        if (oscLinked) {
240
            restLink(b);
379
            restLink(b);
241
        }
380
        }
242
        stereoLinked = b;
381
        stereoLinked = b;
243
    }
382
    }
244
   
383
245
    protected void linkPar(Vector left, Vector right) {
384
    protected void linkPar(Vector left, Vector right) {
246
        for (int c = 0; c < left.size(); c++) {
385
        for (int c = 0; c < left.size(); c++) {
247
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left.elementAt(c);
386
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left
-
 
387
                    .elementAt(c);
248
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right.elementAt(c);
388
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right
-
 
389
                    .elementAt(c);
249
            g1.addMidiParameter(g2.getMidiParameter());
390
            g1.addMidiParameter(g2.getMidiParameter());
250
            g2.addMidiParameter(g1.getMidiParameter());
391
            g2.addMidiParameter(g1.getMidiParameter());
251
        }
392
        }
252
    }
393
    }
253
   
394
254
    protected void unlinkPar(Vector left, Vector right) {
395
    protected void unlinkPar(Vector left, Vector right) {
255
        for (int c = 0; c < left.size(); c++) {
396
        for (int c = 0; c < left.size(); c++) {
256
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left.elementAt(c);
397
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left
-
 
398
                    .elementAt(c);
257
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right.elementAt(c);
399
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right
-
 
400
                    .elementAt(c);
258
            g1.removeMidiParameter(g2.getMidiParameter());
401
            g1.removeMidiParameter(g2.getMidiParameter());
259
            g2.removeMidiParameter(g1.getMidiParameter());
402
            g2.removeMidiParameter(g1.getMidiParameter());
260
        }
403
        }
261
    }
404
    }
262
}
405
}
263
-