Subversion Repositories svn.mios

Rev

Rev 272 | Rev 660 | Go to most recent revision | Show entire file | Ignore 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.drum;
21
package org.midibox.sidedit.gui.drum;
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
-
 
40
import org.midibox.sidedit.gui.controls.*;
-
 
-
 
35
import org.midibox.sidedit.gui.FilterGUI;
-
 
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 DrumGUI extends JPanel {
48
public class DrumGUI extends JPanel {
48
    private Vector GUIs, EXT_L, EXT_R;
49
    private Vector GUIs, EXT_L, EXT_R;
49
    private SIDEditController sidEditController;
50
    private SIDEditController sidEditController;
50
    public DrumGUI(SIDEditController sidEditController) {  
-
 
-
 
51
-
 
52
    public DrumGUI(SIDEditController sidEditController) {
51
        this.sidEditController = sidEditController;
53
        this.sidEditController = sidEditController;
52
        setLayout(new BorderLayout());
54
        setLayout(new BorderLayout());
53
       
-
 
-
 
55
54
        GUIs = createGUIs(sidEditController);
56
        GUIs = createGUIs(sidEditController);
55
        createLinkGroups();
57
        createLinkGroups();
56
        JTabbedPane tabbedPane = new JTabbedPane();
58
        JTabbedPane tabbedPane = new JTabbedPane();
57
       
-
 
58
        JPanel t1 = new GlobalGUI((Vector)GUIs.elementAt(0),(Vector)GUIs.elementAt(1));    
-
 
59
        JPanel t2 = new DrumInstrumentGUI((Vector)GUIs.elementAt(4),false);
-
 
60
        JPanel t3 = new DrumInstrumentGUI((Vector)GUIs.elementAt(4),true);
-
 
61
        JPanel t4 = new FilterGUI((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));
-
 
62
        JPanel t5 = new SequencerGUI((Vector)GUIs.elementAt(5),(Vector)GUIs.elementAt(6));     
-
 
63
       
-
 
-
 
59
-
 
60
        JPanel t1 = new GlobalGUI((Vector) GUIs.elementAt(0), (Vector) GUIs
-
 
61
                .elementAt(1));
-
 
62
        JPanel t2 = new DrumInstrumentGUI((Vector) GUIs.elementAt(4), false);
-
 
63
        JPanel t3 = new DrumInstrumentGUI((Vector) GUIs.elementAt(4), true);
-
 
64
        JPanel t4 = new FilterGUI((Vector) GUIs.elementAt(2), (Vector) GUIs
-
 
65
                .elementAt(3));
-
 
66
        JPanel t5 = new SequencerGUI((Vector) GUIs.elementAt(5), (Vector) GUIs
-
 
67
                .elementAt(6));
-
 
68
64
        tabbedPane.addTab("Global", t1);
69
        tabbedPane.addTab("Global", t1);
65
        tabbedPane.addTab("Drum Instr.1-8", t2);
70
        tabbedPane.addTab("Drum Instr.1-8", t2);
66
        tabbedPane.addTab("Drum Instr.9-16", t3);
71
        tabbedPane.addTab("Drum Instr.9-16", t3);
67
        tabbedPane.addTab("Filter", t4);               
-
 
-
 
72
        tabbedPane.addTab("Filter", t4);
68
        tabbedPane.addTab("Sequencer", t5);
73
        tabbedPane.addTab("Sequencer", t5);
69
           
-
 
-
 
74
70
        add(tabbedPane, BorderLayout.NORTH);
75
        add(tabbedPane, BorderLayout.NORTH);
71
        setOpaque(false);
76
        setOpaque(false);
72
        setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
77
        setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
73
        stereoLink(true);
78
        stereoLink(true);
74
    }
79
    }
75
   
-
 
-
 
80
76
    protected Vector createGUIs(SIDEditController sidEditController) {
81
    protected Vector createGUIs(SIDEditController sidEditController) {
77
        Vector v_in = (Vector)sidEditController.getEngine();
-
 
-
 
82
        Vector v_in = (Vector) sidEditController.getEngine();
78
        Vector v_out = new Vector();
83
        Vector v_out = new Vector();
79
        for (int b = 0; b < v_in.size(); b++) {
84
        for (int b = 0; b < v_in.size(); b++) {
80
            v_out.addElement(createGuiElements((Vector)v_in.elementAt(b)));        
-
 
-
 
85
            v_out.addElement(createGuiElements((Vector) v_in.elementAt(b)));
81
        }
86
        }
82
        return v_out;
87
        return v_out;
83
    }
88
    }
84
       
-
 
-
 
89
85
    protected Vector createGuiElements(Vector v) {
90
    protected Vector createGuiElements(Vector v) {
86
        // Create controller GUI's
91
        // Create controller GUI's
87
        Vector midiParameterGUIs = new Vector();
92
        Vector midiParameterGUIs = new Vector();
88
        for (int c = 0; c < v.size(); c++) {
93
        for (int c = 0; c < v.size(); c++) {
89
            SIDSysexParameterControl midiParameter = (SIDSysexParameterControl) v.elementAt(c);
-
 
-
 
94
            SIDSysexParameterControl midiParameter = (SIDSysexParameterControl) v
-
 
95
                    .elementAt(c);
90
            switch (midiParameter.getType()) {
96
            switch (midiParameter.getType()) {
91
                case 0:
-
 
92
                    // Create knob
-
 
93
                    Knob knob = new Knob(ImageLoader.getImageIcon("plasticknob_strip.png"));       
-
 
94
                    midiParameterGUIs.add(new SIDSysexParameterControlKnob(midiParameter, knob, true, BorderLayout.SOUTH, true, true));
-
 
95
                    break;
-
 
96
                case 1:
-
 
97
                    // Create toggle button
-
 
98
                    JToggleButton button = new JToggleButton();
-
 
99
                    button.setUI(new MyButtonUI(ImageLoader.getImageIcon("button_on.png"), ImageLoader.getImageIcon("button.png")));
-
 
100
                    midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(midiParameter, button, false, true, BorderLayout.SOUTH, true, false));
-
 
101
                    break;
-
 
102
                case 2:
-
 
103
                    // Create simple toggle button
-
 
104
                    JToggleButton simpleButton = new JToggleButton();
-
 
105
                    simpleButton.setUI(new MyButtonUI(ImageLoader.getImageIcon("button_on.png"), ImageLoader.getImageIcon("button.png")));
-
 
106
                    midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(midiParameter, simpleButton, false, false, BorderLayout.SOUTH, true, false));
-
 
107
                    break;
-
 
108
                case 3:
-
 
109
                    // Create slider
-
 
110
                    JSlider slider = new JSlider();
-
 
111
                    midiParameterGUIs.add(new SIDSysexParameterControlSlider(midiParameter, slider, true, BorderLayout.SOUTH,true,true));
-
 
112
                    break;
-
 
113
                case 4:
-
 
114
                    // Create waveform selector (Voice)
-
 
115
                    midiParameterGUIs.add(new SIDSysexParameterControlWaveSelect(midiParameter, true, BorderLayout.NORTH,false,false));
-
 
116
                    break;
-
 
117
                case 5:
-
 
118
                    // Create waveform selector (LFO)
-
 
119
                    midiParameterGUIs.add(new SIDSysexParameterControlLFOSelect(midiParameter, true, BorderLayout.NORTH,false,false));
-
 
120
                    break;     
-
 
121
                case 6:
-
 
122
                    // Normal combo
-
 
123
                    JComboBox combo = new JComboBox(midiParameter.getSparseValAlias());
-
 
124
                    midiParameterGUIs.add(new SIDSysexParameterControlCombo(midiParameter,combo,true,BorderLayout.NORTH,false,false));
-
 
125
                    break;
-
 
126
                case 7:
-
 
127
                    // Simple rotary
-
 
128
                    Knob knob1 = new Knob(ImageLoader.getImageIcon("plasticknob_strip.png"));      
-
 
129
                    midiParameterGUIs.add(new SIDSysexParameterControlKnob(midiParameter, knob1, false, BorderLayout.SOUTH, true, true));
-
 
130
                    break;
-
 
131
                default: midiParameterGUIs.add(midiParameter);System.out.println("Unknown controller type!");
-
 
132
            }  
-
 
-
 
97
            case 0:
-
 
98
                // Create knob
-
 
99
                Knob knob = new Knob(ImageLoader
-
 
100
                        .getImageIcon("plasticknob_strip.png"));
-
 
101
                midiParameterGUIs.add(new SIDSysexParameterControlKnob(
-
 
102
                        midiParameter, knob, true, BorderLayout.SOUTH, true,
-
 
103
                        true));
-
 
104
                break;
-
 
105
            case 1:
-
 
106
                // Create toggle button
-
 
107
                JToggleButton button = new JToggleButton();
-
 
108
                button.setUI(new MyButtonUI(ImageLoader
-
 
109
                        .getImageIcon("button_on.png"), ImageLoader
-
 
110
                        .getImageIcon("button.png")));
-
 
111
                midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(
-
 
112
                        midiParameter, button, false, true, BorderLayout.SOUTH,
-
 
113
                        true, false));
-
 
114
                break;
-
 
115
            case 2:
-
 
116
                // Create simple toggle button
-
 
117
                JToggleButton simpleButton = new JToggleButton();
-
 
118
                simpleButton.setUI(new MyButtonUI(ImageLoader
-
 
119
                        .getImageIcon("button_on.png"), ImageLoader
-
 
120
                        .getImageIcon("button.png")));
-
 
121
                midiParameterGUIs.add(new SIDSysexParameterControlToggleButton(
-
 
122
                        midiParameter, simpleButton, false, false,
-
 
123
                        BorderLayout.SOUTH, true, false));
-
 
124
                break;
-
 
125
            case 3:
-
 
126
                // Create slider
-
 
127
                JSlider slider = new JSlider();
-
 
128
                midiParameterGUIs.add(new SIDSysexParameterControlSlider(
-
 
129
                        midiParameter, slider, true, BorderLayout.SOUTH, true,
-
 
130
                        true));
-
 
131
                break;
-
 
132
            case 4:
-
 
133
                // Create waveform selector (Voice)
-
 
134
                midiParameterGUIs.add(new SIDSysexParameterControlWaveSelect(
-
 
135
                        midiParameter, true, BorderLayout.NORTH, false, false));
-
 
136
                break;
-
 
137
            case 5:
-
 
138
                // Create waveform selector (LFO)
-
 
139
                midiParameterGUIs.add(new SIDSysexParameterControlLFOSelect(
-
 
140
                        midiParameter, true, BorderLayout.NORTH, false, false));
-
 
141
                break;
-
 
142
            case 6:
-
 
143
                // Normal combo
-
 
144
                JComboBox combo = new JComboBox(midiParameter
-
 
145
                        .getSparseValAlias());
-
 
146
                midiParameterGUIs.add(new SIDSysexParameterControlCombo(
-
 
147
                        midiParameter, combo, true, BorderLayout.NORTH, false,
-
 
148
                        false));
-
 
149
                break;
-
 
150
            case 7:
-
 
151
                // Simple rotary
-
 
152
                Knob knob1 = new Knob(ImageLoader
-
 
153
                        .getImageIcon("plasticknob_strip.png"));
-
 
154
                midiParameterGUIs.add(new SIDSysexParameterControlKnob(
-
 
155
                        midiParameter, knob1, false, BorderLayout.SOUTH, true,
-
 
156
                        true));
-
 
157
                break;
-
 
158
            default:
-
 
159
                midiParameterGUIs.add(midiParameter);
-
 
160
                System.out.println("Unknown controller type!");
-
 
161
            }
133
        }
162
        }
134
        return midiParameterGUIs;
163
        return midiParameterGUIs;
135
    }  
-
 
136
   
-
 
-
 
164
    }
-
 
165
137
    public void createLinkGroups() {
166
    public void createLinkGroups() {
138
        // Create vector of pointers to left and right parameters (for linking only)
-
 
-
 
167
        // Create vector of pointers to left and right parameters (for linking
-
 
168
        // only)
139
        EXT_L = new Vector();
169
        EXT_L = new Vector();
140
        EXT_R = new Vector();
170
        EXT_R = new Vector();
141
        for (int c = 0; c < 8; c++) {
171
        for (int c = 0; c < 8; c++) {
142
            EXT_L.add(((Vector)GUIs.elementAt(1)).elementAt(2*c));
-
 
143
            EXT_R.add(((Vector)GUIs.elementAt(1)).elementAt((2*c)+1));
-
 
-
 
172
            EXT_L.add(((Vector) GUIs.elementAt(1)).elementAt(2 * c));
-
 
173
            EXT_R.add(((Vector) GUIs.elementAt(1)).elementAt((2 * c) + 1));
144
        }
174
        }
145
    }
175
    }
146
   
-
 
-
 
176
147
    public void stereoLink(boolean b) {
177
    public void stereoLink(boolean b) {
148
        if (b) {
178
        if (b) {
149
            sidEditController.getPatch().setStereoLink(true);
179
            sidEditController.getPatch().setStereoLink(true);
150
            linkPar(EXT_L,EXT_R);                                               // Link external outputs 2 by 2
-
 
151
            linkPar((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));       // Link filter left & right     
-
 
-
 
180
            linkPar(EXT_L, EXT_R); // Link external outputs 2 by 2
-
 
181
            linkPar((Vector) GUIs.elementAt(2), (Vector) GUIs.elementAt(3)); // Link
-
 
182
            // filter
-
 
183
            // left
-
 
184
            // &
-
 
185
            // right
152
        } else {
186
        } else {
153
            sidEditController.getPatch().setStereoLink(false);
187
            sidEditController.getPatch().setStereoLink(false);
154
            unlinkPar(EXT_L,EXT_R);                                             // Unlink external outputs 2 by 2
-
 
155
            unlinkPar((Vector)GUIs.elementAt(2),(Vector)GUIs.elementAt(3));     // Link filter left & right     
-
 
-
 
188
            unlinkPar(EXT_L, EXT_R); // Unlink external outputs 2 by 2
-
 
189
            unlinkPar((Vector) GUIs.elementAt(2), (Vector) GUIs.elementAt(3)); // Link
-
 
190
            // filter
-
 
191
            // left
-
 
192
            // &
-
 
193
            // right
156
        }
194
        }
157
    }
195
    }
158
   
-
 
-
 
196
159
    protected void linkPar(Vector left, Vector right) {
197
    protected void linkPar(Vector left, Vector right) {
160
        for (int c = 0; c < left.size(); c++) {
198
        for (int c = 0; c < left.size(); c++) {
161
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left.elementAt(c);
-
 
162
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right.elementAt(c);
-
 
-
 
199
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left
-
 
200
                    .elementAt(c);
-
 
201
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right
-
 
202
                    .elementAt(c);
163
            g1.addMidiParameter(g2.getMidiParameter());
203
            g1.addMidiParameter(g2.getMidiParameter());
164
            g2.addMidiParameter(g1.getMidiParameter());
204
            g2.addMidiParameter(g1.getMidiParameter());
165
        }
205
        }
166
    }
206
    }
167
   
-
 
-
 
207
168
    protected void unlinkPar(Vector left, Vector right) {
208
    protected void unlinkPar(Vector left, Vector right) {
169
        for (int c = 0; c < left.size(); c++) {
209
        for (int c = 0; c < left.size(); c++) {
170
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left.elementAt(c);
-
 
171
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right.elementAt(c);
-
 
-
 
210
            SIDSysexParameterControlGUI g1 = (SIDSysexParameterControlGUI) left
-
 
211
                    .elementAt(c);
-
 
212
            SIDSysexParameterControlGUI g2 = (SIDSysexParameterControlGUI) right
-
 
213
                    .elementAt(c);
172
            g1.removeMidiParameter(g2.getMidiParameter());
214
            g1.removeMidiParameter(g2.getMidiParameter());
173
            g2.removeMidiParameter(g1.getMidiParameter());
215
            g2.removeMidiParameter(g1.getMidiParameter());
174
        }
216
        }
175
    }
217
    }
176
}
218
}