[Bluemusic-commits] SF.net SVN: bluemusic:[4198] blue/trunk
Brought to you by:
kunstmusik
From: <kun...@us...> - 2010-04-05 00:31:59
|
Revision: 4198 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4198&view=rev Author: kunstmusik Date: 2010-04-05 00:31:52 +0000 (Mon, 05 Apr 2010) Log Message: ----------- initial working Midi Input System Modified Paths: -------------- blue/trunk/blue-core/src/blue/BlueData.java blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java blue/trunk/blue-ui-core/src/blue/ui/core/midi/Bundle.properties blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.form blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.java Added Paths: ----------- blue/trunk/blue-core/src/blue/midi/ blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java blue/trunk/blue-core/src/blue/midi/MidiKeyMapping.java blue/trunk/blue-core/src/blue/midi/MidiVelocityMapping.java blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputEngine.java blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.form blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.java Modified: blue/trunk/blue-core/src/blue/BlueData.java =================================================================== --- blue/trunk/blue-core/src/blue/BlueData.java 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-core/src/blue/BlueData.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -27,7 +27,6 @@ import java.io.Serializable; import java.io.StringReader; import java.util.ArrayList; -import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; @@ -37,6 +36,7 @@ import Silence.XMLSerializer; import blue.blueLive.LiveObject; import blue.ftable.FTableSet; +import blue.midi.MidiInputProcessor; import blue.mixer.Mixer; import blue.noteProcessor.NoteProcessorChainMap; import blue.orchestra.Instrument; @@ -117,6 +117,8 @@ private String commandLine; + private MidiInputProcessor midiInputProcessor; + // refactored out to GlobalOrcSco, left in for compatibilty (ver 0.89.5) private String globalScore; @@ -157,6 +159,8 @@ liveData = new LiveData(); tempo = new Tempo(); + + midiInputProcessor = new MidiInputProcessor(); } public PolyObject getPolyObject() { @@ -703,4 +707,8 @@ public void setTempo(Tempo tempo) { this.tempo = tempo; } + + public MidiInputProcessor getMidiInputProcessor() { + return midiInputProcessor; + } } \ No newline at end of file Added: blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java =================================================================== --- blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java (rev 0) +++ blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,156 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ +package blue.midi; + +import blue.soundObject.pianoRoll.Scale; +import java.text.MessageFormat; + +/** + * + * @author syi + */ +public class MidiInputProcessor { + + private static final MessageFormat PCH_FORMAT = new MessageFormat("{0}.{1}"); + + private static final MessageFormat NOTE_FORMAT = new MessageFormat("i{0}.{1} 0 -1 {2} {3}"); + + private static final MessageFormat NOTE_OFF_FORMAT = new MessageFormat("i-{0}.{1} 0 0"); + + private MidiKeyMapping keyMapping = MidiKeyMapping.PCH; + + private MidiVelocityMapping velMapping = MidiVelocityMapping.MIDI; + + Scale scale = Scale.get12TET(); + + String pitchConstant = ""; + + String ampConstant = ""; + + double ampMin = 0.0; + + double ampMax = 1.0; + + public String getAmpConstant() { + return ampConstant; + } + + public void setAmpConstant(String ampConstant) { + this.ampConstant = ampConstant; + } + + public double getAmpMax() { + return ampMax; + } + + public void setAmpMax(double ampMax) { + this.ampMax = ampMax; + } + + public double getAmpMin() { + return ampMin; + } + + public void setAmpMin(double ampMin) { + this.ampMin = ampMin; + } + + public String getPitchConstant() { + return pitchConstant; + } + + public void setPitchConstant(String pitchConstant) { + this.pitchConstant = pitchConstant; + } + + public String getNoteOn(String id, int noteNum, int key, int velocity) { + return NOTE_FORMAT.format(new Object[] { id, noteNum, processKey(key), processVelocity( + velocity)}); + } + + public String getNoteOff(String id, int noteNum) { + return NOTE_OFF_FORMAT.format(new Object[] { id, noteNum}); + } + + protected String processKey(int key) { + String retVal = null; + + switch(keyMapping) { + case MIDI: + retVal = Integer.toString(key); + break; + case PCH: + retVal = convertPch(key); + break; + case OCT: + break; + case CONSTANT: + retVal = pitchConstant; + case TUNING_CPS: + break; + case TUNING_BLUE_PCH: + break; + } + + return retVal; + } + + protected String convertPch(int midiKey) { + int oct = midiKey / 12 + 3; + int key = midiKey % 12; + + return PCH_FORMAT.format(new Object[]{oct, key < 10 ? "0" + key : key}); + } + + protected String processVelocity(int key) { + String retVal = null; + + switch (velMapping) { + case MIDI: + retVal = Integer.toString(key); + break; + case CONSTANT: + retVal = ampConstant; + break; + case AMP: + retVal = Double.toString(((key * key) / 16239.0) * 30000); + break; + } + + return retVal; + } + + public MidiKeyMapping getKeyMapping() { + return keyMapping; + } + + public void setKeyMapping(MidiKeyMapping keyMapping) { + this.keyMapping = keyMapping; + } + + public MidiVelocityMapping getVelMapping() { + return velMapping; + } + + public void setVelMapping(MidiVelocityMapping velMapping) { + this.velMapping = velMapping; + } + +} Added: blue/trunk/blue-core/src/blue/midi/MidiKeyMapping.java =================================================================== --- blue/trunk/blue-core/src/blue/midi/MidiKeyMapping.java (rev 0) +++ blue/trunk/blue-core/src/blue/midi/MidiKeyMapping.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,48 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ +package blue.midi; + +/** + * + * @author syi + */ +public enum MidiKeyMapping { + + MIDI, PCH, OCT, CONSTANT, TUNING_BLUE_PCH, TUNING_CPS; + + @Override + public String toString() { + switch (this) { + case MIDI: + return "MIDI"; + case PCH: + return "Csound PCH"; + case OCT: + return "Csound OCT"; + case CONSTANT: + return "Constant"; + case TUNING_BLUE_PCH: + return "Tuning - bluePCH"; + case TUNING_CPS: + return "Tuning - CPS"; + } + return null; + } +} Added: blue/trunk/blue-core/src/blue/midi/MidiVelocityMapping.java =================================================================== --- blue/trunk/blue-core/src/blue/midi/MidiVelocityMapping.java (rev 0) +++ blue/trunk/blue-core/src/blue/midi/MidiVelocityMapping.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,42 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ + +package blue.midi; + +/** + * + * @author syi + */ +public enum MidiVelocityMapping { + MIDI, AMP, CONSTANT; + + @Override + public String toString() { + switch(this) { + case MIDI: + return "MIDI"; + case AMP: + return "Amp"; + case CONSTANT: + return "Constant"; + } + return null; + } +} Modified: blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java =================================================================== --- blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -63,12 +63,13 @@ try { input = MidiSystem.getMidiDevice(info); input.open(); + cl.stateChanged(e); } catch (MidiUnavailableException ex) { input = null; throw ex; + } catch (IllegalArgumentException ex) { + input = null; } - - cl.stateChanged(e); } public boolean isOpen() { Modified: blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -22,18 +22,17 @@ import blue.BlueConstants; import blue.BluePlugin; import blue.BluePluginFactory; -import blue.BluePluginManager; import blue.BlueSystem; import blue.MainToolBar; import blue.WindowSettingManager; import blue.automation.ParameterTimeManagerFactory; import blue.automation.ParameterTimeManagerImpl; +import blue.midi.MidiInputManager; import blue.orchestra.BlueSynthBuilder; import blue.orchestra.BlueX7; import blue.orchestra.editor.InstrumentEditor; import blue.projects.BlueProject; import blue.projects.BlueProjectManager; -import blue.scripting.PythonProxy; import blue.settings.TextColorsSettings; import blue.soundObject.*; import blue.soundObject.editor.AudioFileEditor; @@ -53,6 +52,7 @@ import blue.soundObject.editor.SoundObjectEditor; import blue.soundObject.editor.TrackerEditor; import blue.soundObject.editor.ZakLineEditor; +import blue.ui.core.midi.MidiInputEngine; import blue.ui.core.orchestra.editor.BlueSynthBuilderEditor; import blue.ui.core.orchestra.editor.BlueX7Editor; import blue.ui.core.soundObject.renderer.AbstractLineObjectRenderer; @@ -72,8 +72,6 @@ import java.awt.Color; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import org.netbeans.api.progress.ProgressHandle; -import org.netbeans.api.progress.ProgressHandleFactory; import org.openide.modules.ModuleInstall; import org.openide.windows.WindowManager; import org.syntax.jedit.SyntaxStyle; @@ -144,6 +142,8 @@ // }.start(); // } // }); + + MidiInputManager.getInstance().addReceiver(MidiInputEngine.getInstance()); } private void setWindowTitle() { Modified: blue/trunk/blue-ui-core/src/blue/ui/core/midi/Bundle.properties =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/Bundle.properties 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/Bundle.properties 2010-04-05 00:31:52 UTC (rev 4198) @@ -1,6 +1,11 @@ CTL_MidiInputPanelAction=MidiInputPanel CTL_MidiInputPanelTopComponent=MidiInputPanel Window HINT_MidiInputPanelTopComponent=This is a MidiInputPanel window -MidiInputPanelTopComponent.jRadioButton1.text=Instrument -MidiInputPanelTopComponent.jRadioButton2.text=Custom Note Template -MidiInputPanelTopComponent.jTextField1.text=jTextField1 +MidiInputProcessorPanel.jLabel1.text=Scale +MidiInputProcessorPanel.jLabel2.text=Key Mapping +MidiInputProcessorPanel.jLabel3.text=Constant +MidiInputProcessorPanel.jLabel5.text=Vel Mapping +MidiInputProcessorPanel.jLabel4.text=Constant +MidiInputProcessorPanel.ampConstantText.text=jTextField1 +MidiInputProcessorPanel.keyConstantText.text=jTextField1 +MidiInputPanelTopComponent.midiInputProcessorPanel1.TabConstraints.tabTitle=Realtime Added: blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputEngine.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputEngine.java (rev 0) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputEngine.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,124 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2010 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ +package blue.ui.core.midi; + +import blue.BlueData; +import blue.InstrumentAssignment; +import blue.midi.MidiInputProcessor; +import blue.projects.BlueProject; +import blue.projects.BlueProjectManager; +import blue.ui.core.blueLive.BlueLiveToolBar; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import javax.sound.midi.MidiMessage; +import javax.sound.midi.Receiver; +import javax.sound.midi.ShortMessage; + +/** + * + * @author syi + */ +public final class MidiInputEngine implements Receiver { + + private static MidiInputEngine instance = new MidiInputEngine(); + + private static BlueLiveToolBar toolbar; + + private ArrayList<InstrumentAssignment> arrangement; + + private MidiInputProcessor processor = null; + + public static MidiInputEngine getInstance() { + if (toolbar == null) { + toolbar = BlueLiveToolBar.getInstance(); + } + return instance; + } + + + private MidiInputEngine() { + BlueProjectManager.getInstance().addPropertyChangeListener(new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + if (BlueProjectManager.CURRENT_PROJECT.equals(evt. + getPropertyName())) { + reinitialize(); + } + } + }); + } + + protected void reinitialize() { + BlueProject project = BlueProjectManager.getInstance().getCurrentProject(); + BlueData data = null; + if (project != null) { + data = project.getData(); + arrangement = data.getArrangement().getArrangement(); + processor = data.getMidiInputProcessor(); + } + } + + public void send(MidiMessage message, long timeStamp) { + + if (message instanceof ShortMessage) { + + ShortMessage shortMsg = (ShortMessage) message; + int channel = shortMsg.getChannel(); + int noteNum = shortMsg.getData1(); + int velocity = shortMsg.getData2(); + + if(processor == null || arrangement == null || channel >= arrangement.size()) { + return; + } + + String id = arrangement.get(channel).arrangementId; + + String score = "i"; + + switch (shortMsg.getCommand()) { + case ShortMessage.NOTE_ON: + if (velocity > 0) { + score = processor.getNoteOn(id, noteNum, noteNum, + velocity); + } else { + score = processor.getNoteOff(id, noteNum); + } + + break; + case ShortMessage.NOTE_OFF: +// noteNum = shortMsg.getData1(); +// velocity = shortMsg.getData2(); + + score = processor.getNoteOff(id, noteNum); + + break; + } + + System.err.println(score); + toolbar.sendEvents(score); + } + + } + + public void close() { + throw new UnsupportedOperationException("Not supported yet."); + } +} Modified: blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.form =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.form 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.form 2010-04-05 00:31:52 UTC (rev 4198) @@ -16,93 +16,32 @@ <Layout> <DimensionLayout dim="0"> <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" alignment="0" attributes="0"> - <EmptySpace max="-2" attributes="0"/> - <Group type="103" groupAlignment="0" attributes="0"> - <Component id="jComboBox2" alignment="0" pref="194" max="32767" attributes="0"/> - <Component id="jRadioButton1" min="-2" max="-2" attributes="0"/> - <Component id="jRadioButton2" alignment="0" min="-2" max="-2" attributes="0"/> - <Group type="102" alignment="0" attributes="0"> - <EmptySpace min="21" pref="21" max="-2" attributes="0"/> - <Group type="103" groupAlignment="1" max="-2" attributes="0"> - <Component id="jTextField1" max="32767" attributes="0"/> - <Component id="jComboBox1" alignment="1" min="-2" pref="173" max="-2" attributes="1"/> - </Group> - </Group> - </Group> - <EmptySpace max="-2" attributes="0"/> - </Group> + <Component id="jTabbedPane1" alignment="0" pref="282" max="32767" attributes="0"/> </Group> </DimensionLayout> <DimensionLayout dim="1"> <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" alignment="0" attributes="0"> - <EmptySpace max="-2" attributes="0"/> - <Component id="jComboBox2" min="-2" max="-2" attributes="0"/> - <EmptySpace type="unrelated" max="-2" attributes="0"/> - <Component id="jRadioButton1" min="-2" max="-2" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> - <Component id="jComboBox1" min="-2" max="-2" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> - <Component id="jRadioButton2" min="-2" max="-2" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> - <Component id="jTextField1" min="-2" max="-2" attributes="0"/> - <EmptySpace pref="166" max="32767" attributes="0"/> - </Group> + <Component id="jTabbedPane1" alignment="0" max="32767" attributes="0"/> </Group> </DimensionLayout> </Layout> <SubComponents> - <Component class="javax.swing.JRadioButton" name="jRadioButton1"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputPanelTopComponent.jRadioButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - </Properties> - </Component> - <Component class="javax.swing.JRadioButton" name="jRadioButton2"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputPanelTopComponent.jRadioButton2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jRadioButton2ActionPerformed"/> - </Events> - </Component> - <Component class="javax.swing.JComboBox" name="jComboBox1"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="4"> - <StringItem index="0" value="Item 1"/> - <StringItem index="1" value="Item 2"/> - <StringItem index="2" value="Item 3"/> - <StringItem index="3" value="Item 4"/> - </StringArray> - </Property> - </Properties> - </Component> - <Component class="javax.swing.JTextField" name="jTextField1"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputPanelTopComponent.jTextField1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - </Properties> - </Component> - <Component class="javax.swing.JComboBox" name="jComboBox2"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="4"> - <StringItem index="0" value="Item 1"/> - <StringItem index="1" value="Item 2"/> - <StringItem index="2" value="Item 3"/> - <StringItem index="3" value="Item 4"/> - </StringArray> - </Property> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jComboBox2ActionPerformed"/> - </Events> - </Component> + <Container class="javax.swing.JTabbedPane" name="jTabbedPane1"> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/> + <SubComponents> + <Component class="blue.ui.core.midi.MidiInputProcessorPanel" name="midiInputProcessorPanel1"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="Realtime"> + <Property name="tabTitle" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputPanelTopComponent.midiInputProcessorPanel1.TabConstraints.tabTitle" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + </Component> + </SubComponents> + </Container> </SubComponents> </Form> Modified: blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.java 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -4,6 +4,11 @@ */ package blue.ui.core.midi; +import blue.BlueData; +import blue.projects.BlueProject; +import blue.projects.BlueProjectManager; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.logging.Logger; import org.openide.util.NbBundle; import org.openide.windows.TopComponent; @@ -26,12 +31,37 @@ public MidiInputPanelTopComponent() { initComponents(); - setName(NbBundle.getMessage(MidiInputPanelTopComponent.class, "CTL_MidiInputPanelTopComponent")); - setToolTipText(NbBundle.getMessage(MidiInputPanelTopComponent.class, "HINT_MidiInputPanelTopComponent")); + setName(NbBundle.getMessage(MidiInputPanelTopComponent.class, + "CTL_MidiInputPanelTopComponent")); + setToolTipText(NbBundle.getMessage(MidiInputPanelTopComponent.class, + "HINT_MidiInputPanelTopComponent")); // setIcon(ImageUtilities.loadImage(ICON_PATH, true)); + BlueProjectManager.getInstance().addPropertyChangeListener(new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + if (BlueProjectManager.CURRENT_PROJECT.equals(evt. + getPropertyName())) { + reinitialize(); + } + } + }); + + reinitialize(); } + protected void reinitialize() { + BlueProject project = BlueProjectManager.getInstance(). + getCurrentProject(); + BlueData data = null; + if (project != null) { + data = project.getData(); + + midiInputProcessorPanel1.setMidiInputProcessor(data. + getMidiInputProcessor()); + } + } + /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is @@ -40,81 +70,27 @@ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { - jRadioButton1 = new javax.swing.JRadioButton(); - jRadioButton2 = new javax.swing.JRadioButton(); - jComboBox1 = new javax.swing.JComboBox(); - jTextField1 = new javax.swing.JTextField(); - jComboBox2 = new javax.swing.JComboBox(); + jTabbedPane1 = new javax.swing.JTabbedPane(); + midiInputProcessorPanel1 = new blue.ui.core.midi.MidiInputProcessorPanel(); - org.openide.awt.Mnemonics.setLocalizedText(jRadioButton1, org.openide.util.NbBundle.getMessage(MidiInputPanelTopComponent.class, "MidiInputPanelTopComponent.jRadioButton1.text")); // NOI18N + jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage(MidiInputPanelTopComponent.class, "MidiInputPanelTopComponent.midiInputProcessorPanel1.TabConstraints.tabTitle"), midiInputProcessorPanel1); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(jRadioButton2, org.openide.util.NbBundle.getMessage(MidiInputPanelTopComponent.class, "MidiInputPanelTopComponent.jRadioButton2.text")); // NOI18N - jRadioButton2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jRadioButton2ActionPerformed(evt); - } - }); - - jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - - jTextField1.setText(org.openide.util.NbBundle.getMessage(MidiInputPanelTopComponent.class, "MidiInputPanelTopComponent.jTextField1.text")); // NOI18N - - jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - jComboBox2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jComboBox2ActionPerformed(evt); - } - }); - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jComboBox2, 0, 194, Short.MAX_VALUE) - .addComponent(jRadioButton1) - .addComponent(jRadioButton2) - .addGroup(layout.createSequentialGroup() - .addGap(21, 21, 21) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(jTextField1) - .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addContainerGap()) + .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jRadioButton1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jRadioButton2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(166, Short.MAX_VALUE)) + .addComponent(jTabbedPane1) ); }// </editor-fold>//GEN-END:initComponents - - private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton2ActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_jRadioButton2ActionPerformed - - private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox2ActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_jComboBox2ActionPerformed - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JComboBox jComboBox1; - private javax.swing.JComboBox jComboBox2; - private javax.swing.JRadioButton jRadioButton1; - private javax.swing.JRadioButton jRadioButton2; - private javax.swing.JTextField jTextField1; + private javax.swing.JTabbedPane jTabbedPane1; + private blue.ui.core.midi.MidiInputProcessorPanel midiInputProcessorPanel1; // End of variables declaration//GEN-END:variables + /** * Gets default instance. Do not use directly: reserved for *.settings files only, * i.e. deserialization routines; otherwise you could get a non-deserialized instance. @@ -131,7 +107,8 @@ * Obtain the MidiInputPanelTopComponent instance. Never call {@link #getDefault} directly! */ public static synchronized MidiInputPanelTopComponent findInstance() { - TopComponent win = WindowManager.getDefault().findTopComponent(PREFERRED_ID); + TopComponent win = WindowManager.getDefault().findTopComponent( + PREFERRED_ID); if (win == null) { Logger.getLogger(MidiInputPanelTopComponent.class.getName()).warning( "Cannot find " + PREFERRED_ID + " component. It will not be located properly in the window system."); Added: blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.form =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.form (rev 0) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.form 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,166 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + </AuxValues> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jSeparator1" alignment="0" pref="192" max="32767" attributes="0"/> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel2" min="-2" max="-2" attributes="0"/> + <Component id="jLabel1" min="-2" pref="31" max="-2" attributes="0"/> + <Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="keyMapComboBox" alignment="0" pref="121" max="32767" attributes="0"/> + <Component id="keyConstantText" alignment="0" pref="121" max="32767" attributes="0"/> + </Group> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel4" min="-2" max="-2" attributes="0"/> + <Component id="jLabel5" min="-2" pref="61" max="-2" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="ampMapComboBox" alignment="0" pref="121" max="32767" attributes="0"/> + <Component id="ampConstantText" alignment="0" pref="121" max="32767" attributes="0"/> + </Group> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="keyMapComboBox" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Component id="jLabel1" min="-2" max="-2" attributes="1"/> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="keyConstantText" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Component id="jSeparator1" min="-2" pref="10" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="ampMapComboBox" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="ampConstantText" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jLabel4" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace min="-2" pref="180" max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel1"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel2"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JComboBox" name="keyMapComboBox"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="4"> + <StringItem index="0" value="Item 1"/> + <StringItem index="1" value="Item 2"/> + <StringItem index="2" value="Item 3"/> + <StringItem index="3" value="Item 4"/> + </StringArray> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="keyMapComboBoxActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JLabel" name="jLabel3"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="keyConstantText"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.keyConstantText.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JSeparator" name="jSeparator1"> + </Component> + <Component class="javax.swing.JTextField" name="ampConstantText"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.ampConstantText.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel4"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.jLabel4.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel5"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.jLabel5.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JComboBox" name="ampMapComboBox"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="4"> + <StringItem index="0" value="Item 1"/> + <StringItem index="1" value="Item 2"/> + <StringItem index="2" value="Item 3"/> + <StringItem index="3" value="Item 4"/> + </StringArray> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="ampMapComboBoxActionPerformed"/> + </Events> + </Component> + </SubComponents> +</Form> Added: blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.java (rev 0) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,210 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ + +/* + * MidiInputProcessorPanel.java + * + * Created on Apr 4, 2010, 6:15:34 PM + */ + +package blue.ui.core.midi; + +import blue.event.SimpleDocumentListener; +import blue.midi.MidiInputProcessor; +import blue.midi.MidiKeyMapping; +import blue.midi.MidiVelocityMapping; +import javax.swing.DefaultComboBoxModel; +import javax.swing.event.DocumentEvent; + +/** + * + * @author syi + */ +public class MidiInputProcessorPanel extends javax.swing.JPanel { + private MidiInputProcessor processor; + + /** Creates new form MidiInputProcessorPanel */ + public MidiInputProcessorPanel() { + initComponents(); + keyMapComboBox.setModel(new DefaultComboBoxModel(MidiKeyMapping.values())); + ampMapComboBox.setModel(new DefaultComboBoxModel(MidiVelocityMapping.values())); + + keyConstantText.getDocument().addDocumentListener(new SimpleDocumentListener() { + + @Override + public void documentChanged(DocumentEvent e) { + if (processor != null) { + processor.setPitchConstant(keyConstantText.getText()); + } + } + }); + + ampConstantText.getDocument().addDocumentListener(new SimpleDocumentListener() { + + @Override + public void documentChanged(DocumentEvent e) { + if (processor != null) { + processor.setAmpConstant(ampConstantText.getText()); + } + } + }); + } + + public void setMidiInputProcessor(MidiInputProcessor processor) { + this.processor = null; + + keyConstantText.setText(processor.getPitchConstant()); + ampConstantText.setText(processor.getAmpConstant()); + + keyMapComboBox.setSelectedItem(processor.getKeyMapping()); + ampMapComboBox.setSelectedItem(processor.getVelMapping()); + + this.processor = processor; + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + keyMapComboBox = new javax.swing.JComboBox(); + jLabel3 = new javax.swing.JLabel(); + keyConstantText = new javax.swing.JTextField(); + jSeparator1 = new javax.swing.JSeparator(); + ampConstantText = new javax.swing.JTextField(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + ampMapComboBox = new javax.swing.JComboBox(); + + jLabel1.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.jLabel1.text")); // NOI18N + + jLabel2.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.jLabel2.text")); // NOI18N + + keyMapComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + keyMapComboBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + keyMapComboBoxActionPerformed(evt); + } + }); + + jLabel3.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.jLabel3.text")); // NOI18N + + keyConstantText.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.keyConstantText.text")); // NOI18N + + ampConstantText.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.ampConstantText.text")); // NOI18N + + jLabel4.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.jLabel4.text")); // NOI18N + + jLabel5.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.jLabel5.text")); // NOI18N + + ampMapComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + ampMapComboBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ampMapComboBoxActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .addContainerGap() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jSeparator1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 192, Short.MAX_VALUE) + .add(layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel2) + .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 31, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel3)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(keyMapComboBox, 0, 121, Short.MAX_VALUE) + .add(keyConstantText, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 121, Short.MAX_VALUE))) + .add(layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel4) + .add(jLabel5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 61, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(ampMapComboBox, 0, 121, Short.MAX_VALUE) + .add(ampConstantText, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 121, Short.MAX_VALUE)))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .addContainerGap() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel2) + .add(keyMapComboBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(jLabel1) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel3) + .add(keyConstantText, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jSeparator1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(ampMapComboBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel5)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(ampConstantText, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel4)) + .add(180, 180, 180)) + ); + }// </editor-fold>//GEN-END:initComponents + + private void keyMapComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_keyMapComboBoxActionPerformed + if (this.processor != null) { + processor.setKeyMapping((MidiKeyMapping) keyMapComboBox.getSelectedItem()); + } + }//GEN-LAST:event_keyMapComboBoxActionPerformed + + private void ampMapComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ampMapComboBoxActionPerformed + if (this.processor != null) { + processor.setVelMapping((MidiVelocityMapping) ampMapComboBox.getSelectedItem()); + } + }//GEN-LAST:event_ampMapComboBoxActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JTextField ampConstantText; + private javax.swing.JComboBox ampMapComboBox; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JSeparator jSeparator1; + private javax.swing.JTextField keyConstantText; + private javax.swing.JComboBox keyMapComboBox; + // End of variables declaration//GEN-END:variables + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |