/* * Created on Jun 16, 2015 by Nick * */ package jmsltestsuite.jsyn2; import java.util.Vector; import com.softsynth.jmsl.Composable; import com.softsynth.jmsl.Instrument; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.JMSLMixerContainer; import com.softsynth.jmsl.MusicJob; import com.softsynth.jmsl.Playable; import com.softsynth.jmsl.jsyn2.JSynMusicDevice; import com.softsynth.jmsl.jsyn2.JSynSimpleUnitVoiceInstrument; public class TestInstrumentMixerUsage { Vector instruments = new Vector(); JMSLMixerContainer mixer; int NUM_INS = 100; private void test() { JSynMusicDevice dev = JSynMusicDevice.instance(); System.out.println("opening pure Java JSynMusicDevice"); dev.open(); mixer = new JMSLMixerContainer(); mixer.start(); boolean DO_ADD_TO_MIXER = true; for (int i = 0; i < NUM_INS; i++) { JSynSimpleUnitVoiceInstrument ins = new JSynSimpleUnitVoiceInstrument( com.jsyn.instruments.DrumWoodFM.class.getName(), 8, 1); instruments.addElement(ins); if (DO_ADD_TO_MIXER) { mixer.addInstrument(ins); } } } private void disconnect() { for (int i = 0; i < NUM_INS; i++) { Instrument ins = (Instrument) instruments.elementAt(i); mixer.removeInstrument(ins); } } public static void main(String[] args) { TestInstrumentMixerUsage testInstrumentMixerUsage = new TestInstrumentMixerUsage(); testInstrumentMixerUsage.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(7); mj.setRepeatPause(1.5); mj.launch(JMSL.now()); mj.addStopPlayable(new Playable() { public double play(double time, Composable parent) throws InterruptedException { JMSL.closeMusicDevices(); System.exit(0); return 0; } }); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("removing instruments from mixer"); testInstrumentMixerUsage.disconnect(); } }