classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Meskauskas Audrius
Subject: Re: [cp-patches] Patch: midi example program
Date: Wed, 05 Oct 2005 09:44:02 +0200
User-agent: Mozilla Thunderbird 1.0.2 (Windows/20050317)

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  <address@hidden>

        * 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
address@hidden
http://lists.gnu.org/mailman/listinfo/classpath-patches







reply via email to

[Prev in Thread] Current Thread [Next in Thread]