Re: [cp-patches] Patch: midi example program

2005-10-05 Thread Meskauskas Audrius
1. It would be interesting to have a MIDI demo. It maybe could even emit 
some sounds, if the devices are available.
2. If the class is executable, should it maybe better be public? Some 
IDE's may not provide context command to run non-public class.


Anthony Green wrote:


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.java1969-12-31 
16:00:00.0 -0800
+++ examples/gnu/classpath/examples/midi/Demo.java  2005-10-04 
18:11:48.0 -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

[cp-patches] Patch: midi example program

2005-10-04 Thread Anthony Green
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.java1969-12-31 
16:00:00.0 -0800
+++ examples/gnu/classpath/examples/midi/Demo.java  2005-10-04 
18:11:48.0 -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