package jmsltestsuite; import java.awt.Frame; import com.didkovsky.portview.PVFrame; import com.didkovsky.portview.swing.ViewFactorySwing; import com.softsynth.jmsl.*; import com.softsynth.jmsl.jsyn.JSynMusicDevice; import com.softsynth.jmsl.jsyn.SynthNoteAllPortsInstrument; import com.softsynth.jmsl.view.DimensionNameSpaceValuesEditorPanel; import com.softsynth.jmsl.view.PVFrameAdapter; /** @author Nick Didkovsky */ public class DimensionNameSpaceEditorTest extends MusicJob implements DimensionNameSpaceEditable { double[] dar; public DimensionNameSpaceEditorTest(String synthNoteClassName) { super(); SynthNoteAllPortsInstrument ins = new SynthNoteAllPortsInstrument(); ins.setMaxVoices(8); ins.setSynthNoteClassName(synthNoteClassName); ins.buildFromAttributes(); setInstrument(ins); dar = new double[ins.getDimensionNameSpace().dimension()]; dar[0] = 1.0; dar[1] = 60; dar[2] = 0.2; dar[3] = 1.5; for (int i = 4; i < dar.length; i++) { dar[i] = (ins.getDimensionNameSpace().getHighLimit(i) + ins.getDimensionNameSpace().getLowLimit(i)) / 2.0; } } public double repeat(double playTime) { //System.out.println("play " + playTime); JMSL.out.println(this.getName()); return getInstrument().play(playTime, 1.0, dar); } public void setDimensionNameSpace(DimensionNameSpace d) { } public DimensionNameSpace getDimensionNameSpace() { return getInstrument().getDimensionNameSpace(); } public double[] getDoubleArray() { return dar; } public void setDoubleArray(double[] dar) { this.dar = dar; } public static void main(String args[]) { JMSL.setViewFactory(new ViewFactorySwing()); // Set up a frame that will shut JSyn engine and System.exit() when closed PVFrame f = new PVFrameAdapter("Closebox to quit"); f.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { JMSL.closeMusicDevices(); System.exit(0); } }); f.setSize(300, 200); f.setVisible(true); JSynMusicDevice.instance().edit((Frame)f.getComponent()); JSynMusicDevice.instance().open(); DimensionNameSpaceEditorTest j1 = new DimensionNameSpaceEditorTest("com.softsynth.jsyn.circuits.FilteredSawtoothBL"); Instrument ins1 = j1.getInstrument(); DimensionNameSpaceEditorTest j2 = new DimensionNameSpaceEditorTest("com.softsynth.jsyn.circuits.FilteredSawtoothBL"); Instrument ins2 = j2.getInstrument(); JMSLMixerContainer mixer = new JMSLMixerContainer(); mixer.start(); mixer.addInstrument(ins1); mixer.addInstrument(ins2); f.add(java.awt.BorderLayout.NORTH, mixer.getPanAmpControlPanel()); SequentialCollection seq = new SequentialCollection(j1, j2); seq.setRepeats(10000); seq.launch(JMSL.now()); DimensionNameSpaceValuesEditorPanel p = new DimensionNameSpaceValuesEditorPanel(ins1.getDimensionNameSpace()); p.addDimensionNameSpaceEditable(j1); p.addDimensionNameSpaceEditable(j2); f.add(p.getComponent()); f.pack(); p.update(); } }