Subversion Repositories svn.mios

Rev

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

Rev 505 Rev 628
Line 19... Line 19...
19
 */
19
 */
20
20
21
package org.midibox.sidedit.gui.bassline;
21
package org.midibox.sidedit.gui.bassline;
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
import org.midibox.sidedit.gui.GlobalGUI;
-
 
34
import org.midibox.sidedit.gui.FilterGUI;
-
 
35
import org.midibox.sidedit.BasslineSpecs;
-
 
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.SIDSysexParameterControlRadio;
-
 
42
import org.midibox.sidedit.gui.controls.SIDSysexParameterControlSlider;
-
 
43
import org.midibox.sidedit.gui.controls.SIDSysexParameterControlToggleButton;
-
 
44
import org.midibox.sidedit.gui.controls.SIDSysexParameterControlWaveSelect;
41
import org.midibox.utils.gui.ImageLoader;
45
import org.midibox.utils.gui.ImageLoader;
42
import org.midibox.utils.gui.Knob;
46
import org.midibox.utils.gui.Knob;
43
import org.midibox.utils.gui.MyButtonUI;
47
import org.midibox.utils.gui.MyButtonUI;
44
48
45
public class BasslineGUI extends JPanel {
49
public class BasslineGUI extends JPanel {
Line 51... Line 55...
51
        setLayout(new BorderLayout());
55
        setLayout(new BorderLayout());
52
       
56
53
        GUIs = createGUIs(sidEditController);
57
        GUIs = createGUIs(sidEditController);
54
        createLinkGroups();
58
        createLinkGroups();
55
        JTabbedPane tabbedPane = new JTabbedPane();    
59
        JTabbedPane tabbedPane = new JTabbedPane();
56
        JPanel t1 = new GlobalGUI((Vector)GUIs.elementAt(0),(Vector)GUIs.elementAt(1));
60
        JPanel t1 = new GlobalGUI((Vector) GUIs.elementAt(0), (Vector) GUIs
-
 
61
                .elementAt(1));
57
        JPanel t2 = new OscillatorGUI((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(7));
62
        JPanel t2 = new OscillatorGUI((Vector) GUIs.elementAt(4), (Vector) GUIs
-
 
63
                .elementAt(5), (Vector) GUIs.elementAt(6), (Vector) GUIs
-
 
64
                .elementAt(7));
58
        JPanel t3 = new FilterGUI((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));
65
        JPanel t3 = new FilterGUI((Vector) GUIs.elementAt(2), (Vector) GUIs
-
 
66
                .elementAt(3));
59
        JPanel t4 = new LfoGUI((Vector)GUIs.elementAt(8),(Vector)GUIs.elementAt(9),(Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(11));
67
        JPanel t4 = new LfoGUI((Vector) GUIs.elementAt(8), (Vector) GUIs
-
 
68
                .elementAt(9), (Vector) GUIs.elementAt(10), (Vector) GUIs
-
 
69
                .elementAt(11));
60
        JPanel t6 = new SequencerGUI((Vector)GUIs.elementAt(14),(Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(13));
70
        JPanel t6 = new SequencerGUI((Vector) GUIs.elementAt(14), (Vector) GUIs
-
 
71
                .elementAt(12), (Vector) GUIs.elementAt(13));
61
        JPanel t7 = new ArpGUI((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(5));
72
        JPanel t7 = new ArpGUI((Vector) GUIs.elementAt(4), (Vector) GUIs
-
 
73
                .elementAt(5));
62
               
74
63
        tabbedPane.addTab("Global", t1);
75
        tabbedPane.addTab("Global", t1);
64
        tabbedPane.addTab("Oscillator", t2);
76
        tabbedPane.addTab("Oscillator", t2);
65
        tabbedPane.addTab("Filter", t3);
77
        tabbedPane.addTab("Filter", t3);
66
        tabbedPane.addTab("LFO/ENV", t4);  
78
        tabbedPane.addTab("LFO/ENV", t4);
Line 84... Line 96...
84
       
96
85
    protected Vector createGuiElements(Vector v) {
97
    protected Vector createGuiElements(Vector v) {
86
        // Create controller GUI's
98
        // Create controller GUI's
87
        Vector midiParameterGUIs = new Vector();
99
        Vector midiParameterGUIs = new Vector();
88
        for (int c = 0; c < v.size(); c++) {
100
        for (int c = 0; c < v.size(); c++) {
89
            SIDSysexParameterControl midiParameter = (SIDSysexParameterControl) v.elementAt(c);
101
            SIDSysexParameterControl midiParameter = (SIDSysexParameterControl) v
-
 
102
                    .elementAt(c);
90
            switch (midiParameter.getType()) {
103
            switch (midiParameter.getType()) {
91
                case 0:
104
            case 0:
92
                    // Create knob
105
                // Create knob
-
 
106
                Knob knob = new Knob(ImageLoader
93
                    Knob knob = new Knob(ImageLoader.getImageIcon("plasticknob_strip.png"));       
107
                        .getImageIcon("plasticknob_strip.png"));
94
                    midiParameterGUIs.add(new SIDSysexParameterControlKnob(midiParameter, knob, true, BorderLayout.SOUTH, true, true));
108
                midiParameterGUIs.add(new SIDSysexParameterControlKnob(
-
 
109
                        midiParameter, knob, true, BorderLayout.SOUTH, true,
-
 
110
                        true));
95
                    break;
111
                break;
96
                case 1:
112
            case 1:
97
                    // Create toggle button
113
                // Create toggle button
98
                    JToggleButton button = new JToggleButton();
114
                JToggleButton button = new JToggleButton();
-
 
115
                button.setUI(new MyButtonUI(ImageLoader
99
                    button.setUI(new MyButtonUI(ImageLoader.getImageIcon("button_on.png"), ImageLoader.getImageIcon("button.png")));
116
                        .getImageIcon("button_on.png"), ImageLoader
-
 
117
                        .getImageIcon("button.png")));
100
                    midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(midiParameter, button, false, true, BorderLayout.SOUTH, true, false));
118
                midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(
-
 
119
                        midiParameter, button, false, true, BorderLayout.SOUTH,
-
 
120
                        true, false));
101
                    break;
121
                break;
102
                case 2:
122
            case 2:
103
                    // Create simple toggle button
123
                // Create simple toggle button
104
                    JToggleButton simpleButton = new JToggleButton();
124
                JToggleButton simpleButton = new JToggleButton();
105
                    simpleButton.setUI(new MyButtonUI(ImageLoader.getImageIcon("button_on.png"), ImageLoader.getImageIcon("button.png")));
125
                simpleButton.setUI(new MyButtonUI(ImageLoader
-
 
126
                        .getImageIcon("button_on.png"), ImageLoader
-
 
127
                        .getImageIcon("button.png")));
106
                    midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(midiParameter, simpleButton, false, false, BorderLayout.SOUTH, true, false));
128
                midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(
-
 
129
                        midiParameter, simpleButton, false, false,
-
 
130
                        BorderLayout.SOUTH, true, false));
107
                    break;
131
                break;
108
                case 3:
132
            case 3:
109
                    // Create slider
133
                // Create slider
110
                    JSlider slider = new JSlider();
134
                JSlider slider = new JSlider();
111
                    midiParameterGUIs.add(new SIDSysexParameterControlSlider(midiParameter, slider, true, BorderLayout.SOUTH,true,true));
135
                midiParameterGUIs.add(new SIDSysexParameterControlSlider(
-
 
136
                        midiParameter, slider, true, BorderLayout.SOUTH, true,
-
 
137
                        true));
112
                    break;
138
                break;
113
                case 4:
139
            case 4:
114
                    // Create waveform selector (Voice)
140
                // Create waveform selector (Voice)
115
                    midiParameterGUIs.add(new SIDSysexParameterControlWaveSelect(midiParameter, true, BorderLayout.NORTH,false,false));
141
                midiParameterGUIs.add(new SIDSysexParameterControlWaveSelect(
-
 
142
                        midiParameter, true, BorderLayout.NORTH, false, false));
116
                    break;
143
                break;
117
                case 5:
144
            case 5:
118
                    // Create waveform selector (LFO)
145
                // Create waveform selector (LFO)
119
                    midiParameterGUIs.add(new SIDSysexParameterControlLFOSelect(midiParameter, true, BorderLayout.NORTH,false,false));
146
                midiParameterGUIs.add(new SIDSysexParameterControlLFOSelect(
-
 
147
                        midiParameter, true, BorderLayout.NORTH, false, false));
120
                    break;     
148
                break;
121
                case 6:
149
            case 6:
122
                    // Normal combo
150
                // Normal combo
123
                    JComboBox combo = new JComboBox(midiParameter.getSparseValAlias());
151
                JComboBox combo = new JComboBox(midiParameter
-
 
152
                        .getSparseValAlias());
124
                    midiParameterGUIs.add(new SIDSysexParameterControlCombo(midiParameter,combo,true,BorderLayout.NORTH,false,false));
153
                midiParameterGUIs.add(new SIDSysexParameterControlCombo(
-
 
154
                        midiParameter, combo, true, BorderLayout.NORTH, false,
-
 
155
                        false));
125
                    break;
156
                break;
126
                case 7:
157
            case 7:
127
                    // Simple rotary
158
                // Simple rotary
-
 
159
                Knob knob1 = new Knob(ImageLoader
128
                    Knob knob1 = new Knob(ImageLoader.getImageIcon("plasticknob_strip.png"));      
160
                        .getImageIcon("plasticknob_strip.png"));
-
 
161
                midiParameterGUIs.add(new SIDSysexParameterControlKnob(
129
                    midiParameterGUIs.add(new SIDSysexParameterControlKnob(midiParameter, knob1, false, BorderLayout.SOUTH, true, true));
162
                        midiParameter, knob1, false, BorderLayout.SOUTH, true,
-
 
163
                        true));
130
                    break;
164
                break;
131
                case 8:
165
            case 8:
132
                    // Radio button list
166
                // Radio button list
-
 
167
                midiParameterGUIs.add(new SIDSysexParameterControlRadio(
133
                    midiParameterGUIs.add(new SIDSysexParameterControlRadio(midiParameter, false, BorderLayout.SOUTH, true, true));
168
                        midiParameter, false, BorderLayout.SOUTH, true, true));
134
                    break;
169
                break;
-
 
170
            default:
-
 
171
                midiParameterGUIs.add(midiParameter);
135
                default: midiParameterGUIs.add(midiParameter);System.out.println("Unknown controller type!");
172
                System.out.println("Unknown controller type!");
136
            }  
173
            }
137
        }
174
        }
138
        return midiParameterGUIs;
175
        return midiParameterGUIs;
139
    }  
176
    }
140
   
177
141
    public void createLinkGroups() {
178
    public void createLinkGroups() {
142
        // Create vector of pointers to left and right parameters (for linking only)
179
        // Create vector of pointers to left and right parameters (for linking
-
 
180
        // only)
143
        EXT_L = new Vector();
181
        EXT_L = new Vector();
144
        EXT_R = new Vector();
182
        EXT_R = new Vector();
145
        for (int c = 0; c < 8; c++) {
183
        for (int c = 0; c < 8; c++) {
146
            EXT_L.add(((Vector)GUIs.elementAt(1)).elementAt(2*c));
184
            EXT_L.add(((Vector) GUIs.elementAt(1)).elementAt(2 * c));
147
            EXT_R.add(((Vector)GUIs.elementAt(1)).elementAt((2*c)+1));
185
            EXT_R.add(((Vector) GUIs.elementAt(1)).elementAt((2 * c) + 1));
Line 150... Line 188...
150
   
188
151
    public void stereoLink(boolean b) {
189
    public void stereoLink(boolean b) {
152
        if (b) {
190
        if (b) {
153
            sidEditController.getPatch().setStereoLink(true);
191
            sidEditController.getPatch().setStereoLink(true);
154
            linkPar(EXT_L,EXT_R);                                               // Link external outputs 2 by 2
192
            linkPar(EXT_L, EXT_R); // Link external outputs 2 by 2
155
            linkPar((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));       // Link filter left & right
193
            linkPar((Vector) GUIs.elementAt(2), (Vector) GUIs.elementAt(3)); // Link
-
 
194
            // filter
-
 
195
            // left
-
 
196
            // &
-
 
197
            // right
156
            linkPar((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(5));       // Link V1 & V2
198
            linkPar((Vector) GUIs.elementAt(4), (Vector) GUIs.elementAt(5)); // Link
-
 
199
            // V1
-
 
200
            // &
-
 
201
            // V2
157
            linkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(7));       // Link master L & R
202
            linkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(7)); // Link
-
 
203
            // master
-
 
204
            // L
-
 
205
            // &
-
 
206
            // R
158
            linkPar((Vector)GUIs.elementAt(8),(Vector)GUIs.elementAt(9));       // Link LFO's
207
            linkPar((Vector) GUIs.elementAt(8), (Vector) GUIs.elementAt(9)); // Link
-
 
208
            // LFO's
159
            linkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(11));     // Link Envelopes
209
            linkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(11)); // Link
-
 
210
            // Envelopes
160
            linkPar((Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(13));     // Link Sequencers  
211
            linkPar((Vector) GUIs.elementAt(12), (Vector) GUIs.elementAt(13)); // Link
-
 
212
            // Sequencers
161
        } else {
213
        } else {
162
            sidEditController.getPatch().setStereoLink(false);
214
            sidEditController.getPatch().setStereoLink(false);
163
            unlinkPar(EXT_L,EXT_R);                                             // Unlink external outputs 2 by 2
215
            unlinkPar(EXT_L, EXT_R); // Unlink external outputs 2 by 2
164
            unlinkPar((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));     // Link filter left & right
216
            unlinkPar((Vector) GUIs.elementAt(2), (Vector) GUIs.elementAt(3)); // Link
-
 
217
            // filter
-
 
218
            // left
-
 
219
            // &
-
 
220
            // right
165
            unlinkPar((Vector)GUIs.elementAt(4),(Vector)GUIs.elementAt(5));     // Link V1 & V2
221
            unlinkPar((Vector) GUIs.elementAt(4), (Vector) GUIs.elementAt(5)); // Link
-
 
222
            // V1
-
 
223
            // &
-
 
224
            // V2
166
            unlinkPar((Vector)GUIs.elementAt(6),(Vector)GUIs.elementAt(7));     // Link master L & R
225
            unlinkPar((Vector) GUIs.elementAt(6), (Vector) GUIs.elementAt(7)); // Link
-
 
226
            // master
-
 
227
            // L
-
 
228
            // &
-
 
229
            // R
167
            unlinkPar((Vector)GUIs.elementAt(8),(Vector)GUIs.elementAt(9));     // Link LFO's
230
            unlinkPar((Vector) GUIs.elementAt(8), (Vector) GUIs.elementAt(9)); // Link
-
 
231
            // LFO's
168
            unlinkPar((Vector)GUIs.elementAt(10),(Vector)GUIs.elementAt(11));   // Link Envelopes
232
            unlinkPar((Vector) GUIs.elementAt(10), (Vector) GUIs.elementAt(11)); // Link
-
 
233
            // Envelopes
169
            unlinkPar((Vector)GUIs.elementAt(12),(Vector)GUIs.elementAt(13));   // Link Sequencers  
234
            unlinkPar((Vector) GUIs.elementAt(12), (Vector) GUIs.elementAt(13)); // Link
-
 
235
            // Sequencers
170
        }
236
        }
171
    }
237
    }
172
   
238
173
    protected void linkPar(Vector left, Vector right) {
239
    protected void linkPar(Vector left, Vector right) {
174
        for (int c = 0; c < left.size(); c++) {
240
        for (int c = 0; c < left.size(); c++) {
175
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left.elementAt(c);
241
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left
-
 
242
                    .elementAt(c);
176
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right.elementAt(c);
243
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right
-
 
244
                    .elementAt(c);
177
            g1.addMidiParameter(g2.getMidiParameter());
245
            g1.addMidiParameter(g2.getMidiParameter());
178
            g2.addMidiParameter(g1.getMidiParameter());
246
            g2.addMidiParameter(g1.getMidiParameter());
179
        }
247
        }
180
    }
248
    }
181
   
249
182
    protected void unlinkPar(Vector left, Vector right) {
250
    protected void unlinkPar(Vector left, Vector right) {
183
        for (int c = 0; c < left.size(); c++) {
251
        for (int c = 0; c < left.size(); c++) {
184
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left.elementAt(c);
252
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left
-
 
253
                    .elementAt(c);
185
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right.elementAt(c);
254
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right
-
 
255
                    .elementAt(c);
186
            g1.removeMidiParameter(g2.getMidiParameter());
256
            g1.removeMidiParameter(g2.getMidiParameter());
187
            g2.removeMidiParameter(g1.getMidiParameter());
257
            g2.removeMidiParameter(g1.getMidiParameter());
188
        }
258
        }
189
    }
259
    }
190
}
260
}