summaryrefslogtreecommitdiff
path: root/examples/gnu/classpath/examples
diff options
context:
space:
mode:
authorAnthony Green <green@redhat.com>2005-10-07 03:21:02 +0000
committerAnthony Green <green@redhat.com>2005-10-07 03:21:02 +0000
commit8fb197cf8dad95a376255d4bd28441390f05dbed (patch)
treed4cfa65acd2edd0a9f28be4353ff78a875e46ba6 /examples/gnu/classpath/examples
parent4838da885c1956769c1fc1d2638a866bf7372c3f (diff)
downloadclasspath-8fb197cf8dad95a376255d4bd28441390f05dbed.tar.gz
2005-10-06 Anthony Green <green@redhat.com>
* INSTALL: Describe midi provider dependencies. * native/jni/midi-dssi/README: New file. * LICENSE (terms): Add notice about code copied from the DSSI distribution. * examples/gnu/classpath/examples/midi/Demo.java: New file. * native/jni/midi-dssi/dssi_data.h (dssi_data): Add control_count, control_port_map, control_value_map, sample_rate, and control_values fields. * native/jni/midi-dssi/gnu_javax_sound_midi_dssi_DSSISynthesizer.c (DEBUG_DSSI_PROVIDER): New macro. (get_port_default): New function. (set_control): New function. (Java_gnu_javax_sound_midi_dssi_DSSISynthesizer_open_1): Remove debug output. Reformat. Allocate the control ports and assign proper default values. (Java_gnu_javax_sound_midi_dssi_DSSISynthesizer_noteOn_1): Use JLONG_TO_PTR. (Java_gnu_javax_sound_midi_dssi_DSSISynthesizer_noteOff_1): Ditto. * gnu/javax/sound/midi/dssi/DSSISynthesizer.java (Channel.controlChange): Implement. (controlChange_): New native method. * include/gnu_javax_sound_midi_dssi_DSSISynthesizer.h: Rebuilt. * gnu/javax/sound/midi/alsa/AlsaMidiSequencerDevice.java: Make instance final.
Diffstat (limited to 'examples/gnu/classpath/examples')
-rw-r--r--examples/gnu/classpath/examples/midi/Demo.java137
1 files changed, 137 insertions, 0 deletions
diff --git a/examples/gnu/classpath/examples/midi/Demo.java b/examples/gnu/classpath/examples/midi/Demo.java
new file mode 100644
index 000000000..7e403d8d6
--- /dev/null
+++ b/examples/gnu/classpath/examples/midi/Demo.java
@@ -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.
+ */
+public 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();
+ }
+}