Here's a GUI midi demo for the examples collection. It's just a window with two combo boxes for selecting the MIDI IN and OUT devices. It's handy for debugging.
OK? AG 2005-10-04 Anthony Green <[EMAIL PROTECTED]> * examples/gnu/classpath/examples/midi/Demo.java: New file. diff -uN examples/gnu/classpath/examples/midi-empty/Demo.java examples/gnu/classpath/examples/midi/Demo.java --- examples/gnu/classpath/examples/midi-empty/Demo.java 1969-12-31 16:00:00.000000000 -0800 +++ examples/gnu/classpath/examples/midi/Demo.java 2005-10-04 18:11:48.000000000 -0700 @@ -0,0 +1,137 @@ +/* Demo.java -- And example of MIDI support + Copyright (C) 2005 Free Software Foundation, Inc. + +This file is part of GNU Classpath examples. + +GNU Classpath 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, or (at your option) +any later version. + +GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. */ + +package gnu.classpath.examples.midi; + +import java.awt.*; +import java.awt.event.*; +import java.util.*; +import javax.sound.midi.*; + +/** + * An example how javax.sound.midi facilities work. + */ +class Demo extends Frame implements ItemListener +{ + Choice midiInChoice = new Choice(); + Choice midiOutChoice = new Choice(); + + MidiDevice inDevice = null; + MidiDevice outDevice = null; + + ArrayList inDevices = new ArrayList(); + ArrayList outDevices = new ArrayList(); + + public Demo () throws Exception + { + MenuBar mb = new MenuBar (); + Menu menu = new Menu ("File"); + MenuItem quit = new MenuItem("Quit", new MenuShortcut('Q')); + quit.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + System.exit(0); + } + }); + menu.add (quit); + mb.add(menu); + + setTitle("synthcity: the GNU Classpath MIDI Demo"); + setLayout(new FlowLayout()); + + MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo(); + + for (int i = 0; i < infos.length; i++) + { + MidiDevice device = MidiSystem.getMidiDevice(infos[i]); + if (device.getMaxReceivers() > 0) + { + midiOutChoice.addItem(infos[i].getDescription()); + outDevices.add(device); + } + if (device.getMaxTransmitters() > 0) + { + midiInChoice.addItem(infos[i].getDescription()); + inDevices.add(device); + } + } + + setMenuBar (mb); + add(new Label("MIDI IN: ")); + add(midiInChoice); + add(new Label(" MIDI OUT: ")); + add(midiOutChoice); + + midiInChoice.addItemListener(this); + midiOutChoice.addItemListener(this); + + pack(); + show(); + } + + public void itemStateChanged (ItemEvent e) + { + try + { + if (e.getItemSelectable() == midiInChoice) + { + if (inDevice != null) + inDevice.close(); + inDevice = (MidiDevice) + inDevices.get(midiInChoice.getSelectedIndex()); + } + + if (e.getItemSelectable() == midiOutChoice) + { + if (outDevice != null) + outDevice.close(); + outDevice = (MidiDevice) + outDevices.get(midiOutChoice.getSelectedIndex()); + } + + if (inDevice != null && outDevice != null) + { + if (! inDevice.isOpen()) + inDevice.open(); + if (! outDevice.isOpen()) + outDevice.open(); + Transmitter t = inDevice.getTransmitter(); + if (t == null) + System.err.println (inDevice + ".getTransmitter() == null"); + Receiver r = outDevice.getReceiver(); + if (r == null) + System.err.println (outDevice + ".getReceiver() == null"); + + if (t != null && r != null) + t.setReceiver (r); + } + } + catch (Exception ex) + { + ex.printStackTrace(); + } + } + + public static void main (String args[]) throws Exception + { + new Demo(); + } +} _______________________________________________ Classpath-patches mailing list Classpath-patches@gnu.org http://lists.gnu.org/mailman/listinfo/classpath-patches