/* Copyright (C) 2006 Christian Schneider * * This file is part of Nomad. * * Nomad 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. * * Nomad 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 Nomad; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ package net.waldorf.miniworks4pole; import java.awt.BorderLayout; import java.awt.Container; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.InputStream; import javax.swing.JFrame; import net.sf.nmedit.jnmprotocol.utils.NmLookup; import net.sf.nmedit.jpatch.ModuleDescriptions; import net.sf.nmedit.jpatch.ModuleDescriptionsParser; import net.sf.nmedit.jpdl.Protocol; import net.sf.nmedit.jsynth.midi.MidiPlug; import net.sf.nmedit.jtheme.store.DefaultStorageContext; import net.sf.nmedit.jtheme.util.RelativeClassLoader; import net.waldorf.miniworks4pole.jpatch.MWPatch; import net.waldorf.miniworks4pole.jprotocol.WProtocol; import net.waldorf.miniworks4pole.jsynth.Miniworks4Pole; import net.waldorf.miniworks4pole.jtheme.JTMWPatch; import net.waldorf.miniworks4pole.jtheme.WMContext; import org.xml.sax.InputSource; public class Test { static final String PATH = "/home/christian/CVS-Arbeitsbereich/nmedit/libs/waldorf/data/"; public static void main(String[] args) throws Exception { String path = PATH; String miniworksui = "miniworks-ui.xml"; testStore(path, miniworksui); } private static void testStore(String path, String miniworksui) throws Exception { ClassLoader classLoader = new RelativeClassLoader(new File(path+"theme/")); InputStream is = classLoader.getResourceAsStream(miniworksui); if (is == null) throw new NullPointerException("stream is null"); try { testStore(classLoader, path, new InputSource(is)); } finally { is.close(); } } private static void testStore(ClassLoader classLoader, String path, InputSource source) throws Exception { ModuleDescriptions md = MWHelper.createModuleDescriptions(); InputStream is = new FileInputStream(PATH+"4pole-example.xml"); try { ModuleDescriptionsParser.parse(md, is); } finally { is.close(); } WProtocol.setProtocol(new Protocol(new FileReader(PATH+"codecs/waldorf-miniworks-4pole.pdl"))); MWPatch patch = new MWPatch(md); WMContext jtcontext = new WMContext(); DefaultStorageContext context = MWHelper.createStorageContext(jtcontext, classLoader); context.parseStore(source); JTMWPatch jtpatch = new JTMWPatch(context, jtcontext, md, patch); /* JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(300,300); f.getContentPane().add(c); f.setVisible(true);*/ JFrame f = new JFrame("Waldorf MiniWorks 4Pole"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setBounds(10, 10, 800, 300); Container cp = f.getContentPane(); cp.setLayout(new BorderLayout()); cp.add(jtpatch, BorderLayout.CENTER); Miniworks4Pole synth = new Miniworks4Pole(md); synth.getInPort().setPlug(new MidiPlug(NmLookup.getFirstInputDevice())); synth.getOutPort().setPlug(new MidiPlug(NmLookup.getFirstOutputDevice())); synth.setConnected(true); synth.getSlot(0).setPatch(patch); /* cutoff.setAdapter(new ControllerAdapter(output.getReceiver(), MiniworksMidiMessage.CN_CUTOFF_FREQUENCY)); resonance.setAdapter(new ControllerAdapter(output.getReceiver(), MiniworksMidiMessage.CN_RESONANCE)); lfoSpeed.setAdapter(new ControllerAdapter(output.getReceiver(), MiniworksMidiMessage.CN_LFO_SPEED)); */ f.setVisible(true); } }