classpath-patches
[Top][All Lists]
Advanced

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

[cp-patches] Patch: midi example program


From: Anthony Green
Subject: [cp-patches] Patch: midi example program
Date: Tue, 04 Oct 2005 18:39:19 -0700

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();
+    }
+}






reply via email to

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