/* * Created on Jun 16, 2015 by Nick * */ package jmsltestsuite.jsyn2; import java.util.Vector; import com.jsyn.ports.UnitOutputPort; import com.jsyn.unitgen.LineOut; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.MusicJob; import com.softsynth.jmsl.jsyn2.JSynMusicDevice; import com.softsynth.jmsl.jsyn2.JSynSimpleUnitVoiceInstrument; public class TestInstrumentUsage { Vector outputs = new Vector(); LineOut out; int NUM_INS = 100; private void test() { JSynMusicDevice dev = JSynMusicDevice.instance(); System.out.println("opening pure Java JSynMusicDevice"); dev.open(); out = new LineOut(); dev.add(out); out.start(); boolean DO_PULL = true; for (int i = 0; i < NUM_INS; i++) { JSynSimpleUnitVoiceInstrument ins = new JSynSimpleUnitVoiceInstrument( com.jsyn.instruments.DrumWoodFM.class.getName(), 8, 1); if (DO_PULL) { ((UnitOutputPort) ins.getOutput()).connect(out.input); outputs.addElement(ins.getOutput()); } } } private void disconnect() { for (int i = 0; i < outputs.size(); i++) { com.jsyn.ports.UnitOutputPort outputPort = (com.jsyn.ports.UnitOutputPort) outputs.elementAt(i); outputPort.disconnect(out.input); } } public static void main(String[] args) { TestInstrumentUsage testInstrumentUsage = new TestInstrumentUsage(); testInstrumentUsage.test(); MusicJob mj = new MusicJob() { public double repeat(double ts) { double usage = JSynMusicDevice.instance().getSynthesizer().getUsage(); System.out.println("JSyn usage: " + usage + (usage > 0.2 ? "!!!" : "")); return ts; } }; mj.setRepeats(10); mj.setRepeatPause(1.5); mj.launch(JMSL.now()); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("disconnecting"); testInstrumentUsage.disconnect(); } }