diff options
author | Anthony Green <green@redhat.com> | 2005-10-07 03:21:02 +0000 |
---|---|---|
committer | Anthony Green <green@redhat.com> | 2005-10-07 03:21:02 +0000 |
commit | 8fb197cf8dad95a376255d4bd28441390f05dbed (patch) | |
tree | d4cfa65acd2edd0a9f28be4353ff78a875e46ba6 /examples/gnu/classpath/examples | |
parent | 4838da885c1956769c1fc1d2638a866bf7372c3f (diff) | |
download | classpath-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.java | 137 |
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(); + } +} |