diff options
author | Andrew Haley <aph@redhat.com> | 2016-09-30 16:24:48 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2016-09-30 16:24:48 +0000 |
commit | 07b78716af6a9d7c9fd1e94d9baf94a52c873947 (patch) | |
tree | 3f22b3241c513ad168c8353805614ae1249410f4 /libjava/classpath/javax/sound | |
parent | eae993948bae8b788c53772bcb9217c063716f93 (diff) | |
download | gcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.zip gcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.tar.gz gcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.tar.bz2 |
Makefile.def: Remove libjava.
2016-09-30 Andrew Haley <aph@redhat.com>
* Makefile.def: Remove libjava.
* Makefile.tpl: Likewise.
* Makefile.in: Regenerate.
* configure.ac: Likewise.
* configure: Likewise.
* gcc/java: Remove.
* libjava: Likewise.
From-SVN: r240662
Diffstat (limited to 'libjava/classpath/javax/sound')
54 files changed, 0 insertions, 8863 deletions
diff --git a/libjava/classpath/javax/sound/midi/ControllerEventListener.java b/libjava/classpath/javax/sound/midi/ControllerEventListener.java deleted file mode 100644 index 8349de0..0000000 --- a/libjava/classpath/javax/sound/midi/ControllerEventListener.java +++ /dev/null @@ -1,58 +0,0 @@ -/* ControllerEventListener.java -- Listener for MIDI controller events - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -import java.util.EventListener; - -/** - * The interface defines the methods to be implemented by classes wanting - * to be notified on MIDI controller events from a Sequencer. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public interface ControllerEventListener extends EventListener -{ - /** - * Called on MIDI controller events. - * @param event the controller change event message - */ - public void controlChange(ShortMessage event); -} diff --git a/libjava/classpath/javax/sound/midi/Instrument.java b/libjava/classpath/javax/sound/midi/Instrument.java deleted file mode 100644 index a8626fa..0000000 --- a/libjava/classpath/javax/sound/midi/Instrument.java +++ /dev/null @@ -1,77 +0,0 @@ -/* Instrument.java -- A MIDI Instrument - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * The abstract base class for all MIDI instruments. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public abstract class Instrument extends SoundbankResource -{ - // The instrument patch. - private Patch patch; - - /** - * Create a new Instrument. - * - * @param soundbank the Soundbank containing the instrument. - * @param patch the patch for this instrument - * @param name the name of this instrument - * @param dataClass the class used to represent sample data for this instrument - */ - protected Instrument(Soundbank soundbank, Patch patch, - String name, Class<?> dataClass) - { - super(soundbank, name, dataClass); - this.patch = patch; - } - - /** - * Get the patch for this instrument. - * - * @return the patch for this instrument - */ - public Patch getPatch() - { - return patch; - } -} diff --git a/libjava/classpath/javax/sound/midi/InvalidMidiDataException.java b/libjava/classpath/javax/sound/midi/InvalidMidiDataException.java deleted file mode 100644 index 6325b04..0000000 --- a/libjava/classpath/javax/sound/midi/InvalidMidiDataException.java +++ /dev/null @@ -1,69 +0,0 @@ -/* InvalidMidiDataException.java -- Thrown for invalid MIDI data. - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * This exception is thrown when we encounter bad MIDI data. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class InvalidMidiDataException extends Exception -{ - private static final long serialVersionUID = 2780771756789932067L; - - /** - * Create an InvalidMidiDataException object. - */ - public InvalidMidiDataException() - { - super(); - } - - /** - * Create an InvalidMidiDataException object. - * - * @param s the exception message string - */ - public InvalidMidiDataException(String s) - { - super(s); - } -} diff --git a/libjava/classpath/javax/sound/midi/MetaEventListener.java b/libjava/classpath/javax/sound/midi/MetaEventListener.java deleted file mode 100644 index 28a7a9d..0000000 --- a/libjava/classpath/javax/sound/midi/MetaEventListener.java +++ /dev/null @@ -1,58 +0,0 @@ -/* MetaEventListener.java -- Listener for MIDI meta events - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -import java.util.EventListener; - -/** - * The interface defines the methods to be implemented by classes wanting - * to be notified on MIDI meta events from a Sequencer. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public interface MetaEventListener extends EventListener -{ - /** - * Called on MIDI meta events. - * @param meta the meta event message - */ - public void meta(MetaMessage meta); -} diff --git a/libjava/classpath/javax/sound/midi/MetaMessage.java b/libjava/classpath/javax/sound/midi/MetaMessage.java deleted file mode 100644 index 0aab153..0000000 --- a/libjava/classpath/javax/sound/midi/MetaMessage.java +++ /dev/null @@ -1,178 +0,0 @@ -/* MetaMessage.java -- A meta message for MIDI files. - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * A system exclusive MIDI message. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class MetaMessage extends MidiMessage -{ - /** - * The META status code. Only valid for MIDI files, not the wire protocol. - */ - public static final int META = 0xFF; - - // The length of the variable length data length encoding. - private int lengthLength = 0; - - /** - * Create a default valid meta message. - * - * The official specs don't specify what message is to be - * created. For now, we create a zero length meta message - * with a type code of 0. - */ - public MetaMessage() - { - super(new byte[4]); - data[0] = (byte) META; - data[1] = (byte) 0; // Type - data[2] = (byte) 1; // Length length - data[3] = (byte) 0; // Length - lengthLength = 1; - } - - /** - * Create a MetaMessage object. - * @param data a complete system exclusive message - */ - protected MetaMessage(byte[] data) - { - super(data); - int index = 2; - lengthLength = 1; - while ((data[index++] & 0x80) > 0) - lengthLength++; - } - - /** - * Set the meta message. - * - * @param type the meta type byte (< 128) - * @param data the message data - * @param length the length of the message data - * @throws InvalidMidiDataException if this message is invalid - */ - public void setMessage(int type, byte[] data, int length) - throws InvalidMidiDataException - { - if (type > 127) - throw new InvalidMidiDataException("Meta type 0x" - + Integer.toHexString(type) - + " must be less than 128"); - - // For a nice description of how variable length values are handled, - // see http://www.borg.com/~jglatt/tech/midifile.htm - - // First compute the length of the length value - lengthLength = 0; - int lengthValue = length; - do { - lengthValue = lengthValue >> 7; - lengthLength++; - } while (lengthValue > 0); - - // Now allocate our data array - this.length = 2 + lengthLength + length; - this.data = new byte[this.length]; - this.data[0] = (byte) META; - this.data[1] = (byte) type; - - // Now compute the length representation - long buffer = length & 0x7F; - // Avoid altering length variable; PR42551 - lengthValue = length; - while ((lengthValue >>= 7) > 0) - { - buffer <<= 8; - buffer |= ((lengthValue & 0x7F) | 0x80); - } - - // Now store the variable length length value - int index = 2; - do - { - this.data[index++] = (byte) (buffer & 0xFF); - if ((buffer & 0x80) == 0) - break; - buffer >>= 8; - } while (true); - - // Now copy the real data. - System.arraycopy(data, 0, this.data, index, length); - } - - /** - * Get the meta message type. - * - * @return the meta message type - */ - public int getType() - { - return data[1]; - } - - /** - * Get the data for this message, not including the status, - * type, or length information. - * - * @return the message data, not including status, type or lenght info - */ - public byte[] getData() - { - int dataLength = length - 2 - lengthLength; - byte[] result = new byte[dataLength]; - System.arraycopy(data, 2 + lengthLength, result, 0, dataLength); - return result; - } - - /* Create a deep-copy clone of this object. - * @see java.lang.Object#clone() - */ - public Object clone() - { - byte message[] = new byte[length]; - System.arraycopy(data, 0, message, 0, length); - return new MetaMessage(message); - } -} diff --git a/libjava/classpath/javax/sound/midi/MidiChannel.java b/libjava/classpath/javax/sound/midi/MidiChannel.java deleted file mode 100644 index 36da51d..0000000 --- a/libjava/classpath/javax/sound/midi/MidiChannel.java +++ /dev/null @@ -1,236 +0,0 @@ -/* MidiChannel.java -- A MIDI channel - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * A MIDI channel. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public interface MidiChannel -{ - - /** - * Start playing a note. - * - * @param noteNumber the MIDI note number - * @param velocity the velocity at which the key was pressed - */ - public void noteOn(int noteNumber, int velocity); - - /** - * Stop playing a note. - * - * @param noteNumber the MIDI note number - * @param velocity the volcity at which the ket was released - */ - public void noteOff(int noteNumber, int velocity); - - /** - * Stop playing a note. - * - * @param noteNumber the MIDI note number - */ - public void noteOff(int noteNumber); - - /** - * Change in a key pressure for a note. - * - * @param noteNumber the MIDI note number - * @param pressure the key pressure - */ - public void setPolyPressure(int noteNumber, int pressure); - - /** - * Get the key pressure for a note. - * - * @param noteNumber the MIDI note number - * @return the key pressure - */ - public int getPolyPressure(int noteNumber); - - /** - * Set the key pressure for the channel. - * - * @param pressure the key pressure - */ - public void setChannelPressure(int pressure); - - /** - * Get the key pressure for the channel. - * - * @return the key pressure - */ - public int getChannelPressure(); - - /** - * Set a change in a controller's value. - * - * @param controller the MIDI controller number (0 to 127) - * @param value the new value (0 to 127) - */ - public void controlChange(int controller, int value); - - /** - * Get a controller's value. - * - * @param controller the MIDI controller number (0 to 127) - * @return the controller's value (0 to 127) - */ - public int getController(int controller); - - /** - * Change the patch for this channel. - * - * @param program the patch number to switch to (0 to 127) - */ - public void programChange(int program); - - /** - * Change the bank and patch for this channel. - * - * @param bank the bank to switch to (0 to 16383) - * @param program the patch to switch to (0 to 127) - */ - public void programChange(int bank, int program); - - /** - * Get the current patch for this channel. - * - * @return current patch (0 to 127) - */ - public int getProgram(); - - /** - * Change the pitch bend for this channel using a positive 14-bit value. - * - * @param bend the new pitch bend value - */ - public void setPitchBend(int bend); - - /** - * Get the pitch bend for this channel as a positive 14-bit value. - * - * @return the current patch bend value - */ - public int getPitchBend(); - - /** - * Reset all MIDI controllers to their default values. - */ - public void resetAllControllers(); - - /** - * Stop playing all notes. Sound may not stop. - */ - public void allNotesOff(); - - /** - * Stop all sound. - */ - public void allSoundOff(); - - /** - * Set whether or not local controls are on or off. They are on by - * default. - * - * @param on true to enable local controls, false to disable - * @return the new value - */ - public boolean localControl(boolean on); - - /** - * Turns mono mode on or off. - * - * @param on true to enable mono mode, false to disable - */ - public void setMono(boolean on); - - /** - * Get the current mono mode. - * - * @return true if mono is enabled, false otherwise - */ - public boolean getMono(); - - /** - * Turns omni mode on or off. - * - * @param on true to enable omni mode, false to disable - */ - public void setOmni(boolean on); - - /** - * Get the current omni mode. - * - * @return true if omni is enabled, false otherwise - */ - public boolean getOmni(); - - /** - * Turns mute mode on or off. - * - * @param mute true to enable mute mode, false to disable - */ - public void setMute(boolean mute); - - /** - * Get the current mute mode. - * - * @return true if mute is enabled, false otherwise - */ - public boolean getMute(); - - /** - * Turns solo mode on or off. If any channels are soloed, then only those - * channels make sounds, otherwise all channels will make sound. - * - * @param solo true to enable solo mode, false to disable - */ - public void setSolo(boolean solo); - - /** - * Get the current solo mode. - * - * @return true is solo is enabled, false otherwise. - */ - public boolean getSolo(); -} diff --git a/libjava/classpath/javax/sound/midi/MidiDevice.java b/libjava/classpath/javax/sound/midi/MidiDevice.java deleted file mode 100644 index 7ce22ca..0000000 --- a/libjava/classpath/javax/sound/midi/MidiDevice.java +++ /dev/null @@ -1,221 +0,0 @@ -/* MidiDevice.java -- Interface for MIDI devices - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * Interface for all MIDI devices. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public interface MidiDevice - extends AutoCloseable -{ - /** - * Get the Info object describing this device. - * @return the Info object describing this device - */ - public Info getDeviceInfo(); - - /** - * Open this MIDI device and allocate any system resource we need. - * - * @throws MidiUnavailableException if we're not able to open for some reason - */ - public void open() throws MidiUnavailableException; - - /** - * Close this MIDI device, and release any system resources we're using. - */ - public void close(); - - /** - * Returns true if this MIDI device is open and false otherwise. - * - * @return true if this is open, false otherwise - */ - public boolean isOpen(); - - /** - * If this device supports time-stamps, then it will return the number - * of microseconds since this device has been open, and -1 otherwise. - * - * @return -1 or the number of microseconds since this was opened - */ - public long getMicrosecondPosition(); - - /** - * The maximum number of MIDI IN connections we can get as Receivers, - * or -1 if there is no maximum. - * - * @return -1 or the maximum number of Receivers we can get - */ - public int getMaxReceivers(); - - /** - * The maximum number of MIDI OUT connections we can get as Transmitters, - * or -1 if there is no maximum. - * - * @return -1 or the maximum number of Transmitters we can get - */ - public int getMaxTransmitters(); - - /** - * Get a MIDI IN Receiver for this device. - * - * @return a MIDI IN Receiver for this device - * @throws MidiUnavailableException if we can't get a Receiver - */ - public Receiver getReceiver() throws MidiUnavailableException; - - /** - * Get a MIDI OUT Transmitter for this device. - * - * @return a MIDI OUT Transmitter for this device - * @throws MidiUnavailableException if we can't get a Transmitter - */ - public Transmitter getTransmitter() throws MidiUnavailableException; - - /** - * A MIDI device descriptor object. - * - * @author green@redhat.com - * - */ - public static class Info - { - // Private data describing this device - private String name; - private String vendor; - private String description; - private String version; - - /** - * Create an Info object for a MIDI device - * - * @param name the device name - * @param vendor the vendor name - * @param description the device description - * @param version the device version string - */ - protected Info(String name, String vendor, String description, String version) - { - this.name = name; - this.vendor = vendor; - this.description = description; - this.version = version; - } - - /** - * This equals method only returns true if this object - * is the same as obj. - * - * @param obj the object we're comparing to - * @return true if this is the same object - * @see java.lang.Object#equals(java.lang.Object) - */ - public final boolean equals(Object obj) - { - return super.equals(obj); - } - - /** - * A hash code for this object. - * - * @return the hash code for this object - * @see java.lang.Object#hashCode() - */ - public final int hashCode() - { - return super.hashCode(); - } - - /** - * Get the device name. - * - * @return the device name - */ - public final String getName() - { - return name; - } - - /** - * Get the device vendor. - * - * @return the device vendor - */ - public final String getVendor() - { - return vendor; - } - - /** - * Get the device description - * - * @return the device description - */ - public final String getDescription() - { - return description; - } - - /** - * get the device version - * - * @return the device version - */ - public final String getVersion() - { - return version; - } - - /** - * Simple return the name of the device. - * - * @return the device name - * @see java.lang.Object#toString() - */ - public final String toString() - { - return name; - } - } -} diff --git a/libjava/classpath/javax/sound/midi/MidiEvent.java b/libjava/classpath/javax/sound/midi/MidiEvent.java deleted file mode 100644 index 3b0072c..0000000 --- a/libjava/classpath/javax/sound/midi/MidiEvent.java +++ /dev/null @@ -1,95 +0,0 @@ -/* MidiEvent.java -- A MIDI Event - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * A MIDI event is the combination of a MIDI message and a timestamp specified - * in MIDI ticks. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class MidiEvent -{ - private final MidiMessage message; - private long tick; - - /** - * Create a MIDI event object from the given MIDI message and timestamp. - * - * @param message the MidiMessage for this event - * @param tick the timestamp for this event - */ - public MidiEvent(MidiMessage message, long tick) - { - this.message = message; - this.tick = tick; - } - - /** - * Get the MIDI message for this event. - * - * @return the MidiMessage for this event - */ - public MidiMessage getMessage() - { - return message; - } - - /** - * Set the timestemp for this event in MIDI ticks. - * - * @param tick the timestamp - */ - public void setTick(long tick) - { - this.tick = tick; - } - - /** - * Get the timestamp for this event in MIDI ticks. - * - * @return the timestamp for this even in MIDI ticks - */ - public long getTick() - { - return tick; - } -} diff --git a/libjava/classpath/javax/sound/midi/MidiFileFormat.java b/libjava/classpath/javax/sound/midi/MidiFileFormat.java deleted file mode 100644 index 73744523d..0000000 --- a/libjava/classpath/javax/sound/midi/MidiFileFormat.java +++ /dev/null @@ -1,158 +0,0 @@ -/* MidiFileFormat.java -- Information about a MIDI file - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * Describe a MIDI file, including specifics about its type, length and timing. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class MidiFileFormat -{ - /** - * The MIDI file type. This is either 0, 1 or 2. - * - * Type 0 files contain a single track and represents a single song - * performance. - * Type 1 may contain multiple tracks for a single song performance. - * Type 2 may contain multiple tracks, each representing a - * separate song performance. - * - * See http://en.wikipedia.org/wiki/MIDI#MIDI_file_formats for more - * information. - */ - protected int type; - - /** - * The division type of the MIDI file. - */ - protected float divisionType; - - /** - * The timing resolution of the MIDI file. - */ - protected int resolution; - - /** - * The size of the MIDI file in bytes. - */ - protected int byteLength = UNKNOWN_LENGTH; - - /** - * The length of the MIDI file in microseconds. - */ - protected long microsecondLength = UNKNOWN_LENGTH; - - /** - * A special value indicating an unknown quantity. - */ - public static final int UNKNOWN_LENGTH = -1; // FIXME is this really -1? - - /** - * Create a MidiFileFormat object from the given parameters. - * - * @param type the MIDI file type (0, 1, or 2) - * @param divisionType the MIDI file division type - * @param resolution the MIDI file timing resolution - * @param bytes the MIDI file size in bytes - * @param microseconds the MIDI file length in microseconds - */ - public MidiFileFormat(int type, float divisionType, - int resolution, int bytes, long microseconds) - { - this.type = type; - this.divisionType = divisionType; - this.resolution = resolution; - this.byteLength = bytes; - this.microsecondLength = microseconds; - } - - /** - * Get the MIDI file type (0, 1, or 2). - * - * @return the MIDI file type (0, 1, or 2) - */ - public int getType() - { - return type; - } - - /** - * Get the file division type. - * - * @return the file divison type - */ - public float getDivisionType() - { - return divisionType; - } - - /** - * Get the file timing resolution. If the division type is PPQ, then this - * is value represents ticks per beat, otherwise it's ticks per frame (SMPTE). - * - * @return the timing resolution in ticks per beat or ticks per frame - */ - public int getResolution() - { - return resolution; - } - - /** - * Get the file length in bytes. - * - * @return the file length in bytes or UNKNOWN_LENGTH - */ - public int getByteLength() - { - return byteLength; - } - - /** - * Get the file length in microseconds. - * - * @return the file length in microseconds or UNKNOWN_LENGTH - */ - public long getMicrosecondLength() - { - return microsecondLength; - } -} diff --git a/libjava/classpath/javax/sound/midi/MidiMessage.java b/libjava/classpath/javax/sound/midi/MidiMessage.java deleted file mode 100644 index 8066151..0000000 --- a/libjava/classpath/javax/sound/midi/MidiMessage.java +++ /dev/null @@ -1,126 +0,0 @@ -/* MidiMessage.java -- base class for MIDI messages. - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * The base class for all MIDI messages. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public abstract class MidiMessage implements Cloneable -{ - /** - * MIDI message data. - */ - protected byte data[]; - - /** - * The total length of the MIDI message. - */ - protected int length; - - /** - * MidiMessage contructor. - * - * @param data a valid MIDI message - */ - protected MidiMessage(byte[] data) - { - this.data = data; - this.length = data.length; - } - - /** - * Set the complete MIDI message. - * - * @param data The complete MIDI message. - * @param length The length of the MIDI message. - * @throws InvalidMidiDataException Thrown when the MIDI message is invalid. - */ - protected void setMessage(byte[] data, int length) - throws InvalidMidiDataException - { - this.data = new byte[length]; - System.arraycopy(data, 0, this.data, 0, length); - this.length = length; - } - - /** - * Get the MIDI message data. - * - * @return an array containing the MIDI message data - */ - public byte[] getMessage() - { - byte copy[] = new byte[length]; - System.arraycopy(data, 0, copy, 0, length); - return copy; - } - - /** - * Get the status byte of the MIDI message (as an int) - * - * @return the status byte of the MIDI message (as an int), or zero if the message length is zero. - */ - public int getStatus() - { - if (length > 0) - return (data[0] & 0xff); - else - return 0; - } - - /** - * Get the length of the MIDI message. - * - * @return the length of the MIDI messsage - */ - public int getLength() - { - return length; - } - - /* Create a clone of this object. - * - * @see java.lang.Object#clone() - */ - public abstract Object clone(); -} diff --git a/libjava/classpath/javax/sound/midi/MidiSystem.java b/libjava/classpath/javax/sound/midi/MidiSystem.java deleted file mode 100644 index 0e36805..0000000 --- a/libjava/classpath/javax/sound/midi/MidiSystem.java +++ /dev/null @@ -1,579 +0,0 @@ -/* MidiSystem.java -- Access system MIDI resources - Copyright (C) 2005, 2012 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -import gnu.classpath.ServiceFactory; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; -import java.util.Iterator; - -import javax.sound.midi.spi.MidiDeviceProvider; -import javax.sound.midi.spi.MidiFileReader; -import javax.sound.midi.spi.MidiFileWriter; -import javax.sound.midi.spi.SoundbankReader; - -/** - * MidiSystem provides access to the computer system's MIDI resources, - * as well as utility routines for reading MIDI files and more. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class MidiSystem -{ - private MidiSystem() - { - // Not instantiable. - } - - /** - * Get an array of all available MIDI devices. - * - * @return a possibly empty array of all available MIDI devices - */ - public static MidiDevice.Info[] getMidiDeviceInfo() - { - Iterator<MidiDeviceProvider> deviceProviders = - ServiceFactory.lookupProviders(MidiDeviceProvider.class); - List<MidiDevice.Info> infoList = new ArrayList<MidiDevice.Info>(); - - while (deviceProviders.hasNext()) - { - MidiDeviceProvider provider = (MidiDeviceProvider) deviceProviders.next(); - MidiDevice.Info[] infos = provider.getDeviceInfo(); - for (int i = infos.length; i > 0; ) - infoList.add(infos[--i]); - } - - return infoList.toArray(new MidiDevice.Info[infoList.size()]); - } - - /** - * Get the specified MIDI device. - * - * @param info a description of the device we're looking for - * @return the requested MIDI device - * @throws MidiUnavailableException if no MIDI devices are configured or found - * @throws IllegalArgumentException if the device described by info is not found - */ - public static MidiDevice getMidiDevice(MidiDevice.Info info) - throws MidiUnavailableException - { - Iterator<MidiDeviceProvider> deviceProviders = - ServiceFactory.lookupProviders(MidiDeviceProvider.class); - - if (! deviceProviders.hasNext()) - throw new MidiUnavailableException("No MIDI device providers available."); - - do - { - MidiDeviceProvider provider = - (MidiDeviceProvider) deviceProviders.next(); - if (provider.isDeviceSupported(info)) - return provider.getDevice(info); - } while (deviceProviders.hasNext()); - - throw new IllegalArgumentException("MIDI device " - + info + " not available."); - } - - /** - * Get the default Receiver instance. This just picks the first one - * it finds for now. - * - * @return the default Receiver instance - * @throws MidiUnavailableException if no Receiver is found - */ - public static Receiver getReceiver() throws MidiUnavailableException - { - // TODO: The 1.5 spec has a fancy mechanism to specify the default - // receiver device. For now, well just return the first one we find. - MidiDevice.Info[] infos = getMidiDeviceInfo(); - for (int i = 0; i < infos.length; i++) - { - MidiDevice device = getMidiDevice(infos[i]); - if (device instanceof Receiver) - return (Receiver) device; - } - throw new MidiUnavailableException("No Receiver device available"); - } - - /** - * Get the default Transmitter instance. This just picks the first one - * it finds for now. - * - * @return the default Transmitter instance - * @throws MidiUnavailableException if no Transmitter is found - */ - public static Transmitter getTransmitter() throws MidiUnavailableException - { - // TODO: The 1.5 spec has a fancy mechanism to specify the default - // Transmitter device. For now, well just return the first one we find. - MidiDevice.Info[] infos = getMidiDeviceInfo(); - for (int i = 0; i < infos.length; i++) - { - MidiDevice device = getMidiDevice(infos[i]); - if (device instanceof Transmitter) - return (Transmitter) device; - } - throw new MidiUnavailableException("No Transmitter device available"); - } - - /** - * Get the default Synthesizer instance. This just picks the first one - * it finds for now. - * - * @return the default Synthesizer instance - * @throws MidiUnavailableException if no Synthesizer is found - */ - public static Synthesizer getSynthesizer() throws MidiUnavailableException - { - // TODO: The 1.5 spec has a fancy mechanism to specify the default - // Synthesizer device. For now, well just return the first one we find. - MidiDevice.Info[] infos = getMidiDeviceInfo(); - for (int i = 0; i < infos.length; i++) - { - MidiDevice device = getMidiDevice(infos[i]); - if (device instanceof Synthesizer) - return (Synthesizer) device; - } - throw new MidiUnavailableException("No Synthesizer device available"); - } - - /** - * Get the default Sequencer instance. This just picks the first one - * it finds for now. - * - * @return the default Sequencer instance - * @throws MidiUnavailableException if no Sequencer is found - */ - public static Sequencer getSequencer() throws MidiUnavailableException - { - // TODO: The 1.5 spec has a fancy mechanism to specify the default - // Sequencer device. For now, well just return the first one we find. - MidiDevice.Info[] infos = getMidiDeviceInfo(); - for (int i = 0; i < infos.length; i++) - { - MidiDevice device = getMidiDevice(infos[i]); - if (device instanceof Sequencer) - return (Sequencer) device; - } - throw new MidiUnavailableException("No Sequencer device available"); - } - - /** - * Read a Soundbank object from the given stream. - * - * @param stream the stream from which to read the Soundbank - * @return the Soundbank object - * @throws InvalidMidiDataException if we were unable to read the soundbank - * @throws IOException if an I/O error happened while reading - */ - public static Soundbank getSoundbank(InputStream stream) - throws InvalidMidiDataException, IOException - { - Iterator<SoundbankReader> readers = - ServiceFactory.lookupProviders(SoundbankReader.class); - while (readers.hasNext()) - { - SoundbankReader sr = readers.next(); - Soundbank sb = sr.getSoundbank(stream); - if (sb != null) - return sb; - } - throw new InvalidMidiDataException("Cannot read soundbank from stream"); - } - - /** - * Read a Soundbank object from the given url. - * - * @param url the url from which to read the Soundbank - * @return the Soundbank object - * @throws InvalidMidiDataException if we were unable to read the soundbank - * @throws IOException if an I/O error happened while reading - */ - public static Soundbank getSoundbank(URL url) - throws InvalidMidiDataException, IOException - { - Iterator<SoundbankReader> readers = - ServiceFactory.lookupProviders(SoundbankReader.class); - while (readers.hasNext()) - { - SoundbankReader sr = readers.next(); - Soundbank sb = sr.getSoundbank(url); - if (sb != null) - return sb; - } - throw new InvalidMidiDataException("Cannot read from url " + url); - } - - /** - * Read a Soundbank object from the given file. - * - * @param file the file from which to read the Soundbank - * @return the Soundbank object - * @throws InvalidMidiDataException if we were unable to read the soundbank - * @throws IOException if an I/O error happened while reading - */ - public static Soundbank getSoundbank(File file) - throws InvalidMidiDataException, IOException - { - Iterator<SoundbankReader> readers = - ServiceFactory.lookupProviders(SoundbankReader.class); - while (readers.hasNext()) - { - SoundbankReader sr = (SoundbankReader) readers.next(); - Soundbank sb = sr.getSoundbank(file); - if (sb != null) - return sb; - } - throw new InvalidMidiDataException("Cannot read soundbank from file " - + file); - } - - /** - * Read a MidiFileFormat object from the given stream. - * - * @param stream the stream from which to read the MidiFileFormat - * @return the MidiFileFormat object - * @throws InvalidMidiDataException if we were unable to read the MidiFileFormat - * @throws IOException if an I/O error happened while reading - */ - public static MidiFileFormat getMidiFileFormat(InputStream stream) - throws InvalidMidiDataException, IOException - { - Iterator<MidiFileReader> readers = - ServiceFactory.lookupProviders(MidiFileReader.class); - while (readers.hasNext()) - { - MidiFileReader sr = readers.next(); - MidiFileFormat sb = sr.getMidiFileFormat(stream); - if (sb != null) - return sb; - } - throw new InvalidMidiDataException("Can't read MidiFileFormat from stream"); - } - - /** - * Read a MidiFileFormat object from the given url. - * - * @param url the url from which to read the MidiFileFormat - * @return the MidiFileFormat object - * @throws InvalidMidiDataException if we were unable to read the MidiFileFormat - * @throws IOException if an I/O error happened while reading - */ - public static MidiFileFormat getMidiFileFormat(URL url) - throws InvalidMidiDataException, IOException - { - Iterator<MidiFileReader> readers = - ServiceFactory.lookupProviders(MidiFileReader.class); - while (readers.hasNext()) - { - MidiFileReader sr = readers.next(); - MidiFileFormat sb = sr.getMidiFileFormat(url); - if (sb != null) - return sb; - } - throw new InvalidMidiDataException("Cannot read from url " + url); - } - - /** - * Read a MidiFileFormat object from the given file. - * - * @param file the file from which to read the MidiFileFormat - * @return the MidiFileFormat object - * @throws InvalidMidiDataException if we were unable to read the MidiFileFormat - * @throws IOException if an I/O error happened while reading - */ - public static MidiFileFormat getMidiFileFormat(File file) - throws InvalidMidiDataException, IOException - { - Iterator<MidiFileReader> readers = - ServiceFactory.lookupProviders(MidiFileReader.class); - while (readers.hasNext()) - { - MidiFileReader sr = readers.next(); - MidiFileFormat sb = sr.getMidiFileFormat(file); - if (sb != null) - return sb; - } - throw new InvalidMidiDataException("Can't read MidiFileFormat from file " - + file); - } - - /** - * Read a Sequence object from the given stream. - * - * @param stream the stream from which to read the Sequence - * @return the Sequence object - * @throws InvalidMidiDataException if we were unable to read the Sequence - * @throws IOException if an I/O error happened while reading - */ - public static Sequence getSequence(InputStream stream) - throws InvalidMidiDataException, IOException - { - Iterator<MidiFileReader> readers = - ServiceFactory.lookupProviders(MidiFileReader.class); - while (readers.hasNext()) - { - MidiFileReader sr = readers.next(); - Sequence sq = sr.getSequence(stream); - if (sq != null) - return sq; - } - throw new InvalidMidiDataException("Can't read Sequence from stream"); - } - - /** - * Read a Sequence object from the given url. - * - * @param url the url from which to read the Sequence - * @return the Sequence object - * @throws InvalidMidiDataException if we were unable to read the Sequence - * @throws IOException if an I/O error happened while reading - */ - public static Sequence getSequence(URL url) - throws InvalidMidiDataException, IOException - { - Iterator<MidiFileReader> readers = - ServiceFactory.lookupProviders(MidiFileReader.class); - while (readers.hasNext()) - { - MidiFileReader sr = readers.next(); - Sequence sq = sr.getSequence(url); - if (sq != null) - return sq; - } - throw new InvalidMidiDataException("Cannot read from url " + url); - } - - /** - * Read a Sequence object from the given file. - * - * @param file the file from which to read the Sequence - * @return the Sequence object - * @throws InvalidMidiDataException if we were unable to read the Sequence - * @throws IOException if an I/O error happened while reading - */ - public static Sequence getSequence(File file) - throws InvalidMidiDataException, IOException - { - Iterator<MidiFileReader> readers = - ServiceFactory.lookupProviders(MidiFileReader.class); - while (readers.hasNext()) - { - MidiFileReader sr = readers.next(); - Sequence sq = sr.getSequence(file); - if (sq != null) - return sq; - } - throw new InvalidMidiDataException("Can't read Sequence from file " - + file); - } - - /** - * Return an array of supported MIDI file types on this system. - * - * @return the array of supported MIDI file types - */ - public static int[] getMidiFileTypes() - { - // We only support a max of 3 MIDI file types. - boolean supported[] = new boolean[3]; - // The number of supported formats. - int count = 0; - Iterator<MidiFileWriter> writers = - ServiceFactory.lookupProviders(MidiFileWriter.class); - while (writers.hasNext()) - { - MidiFileWriter fw = writers.next(); - int types[] = fw.getMidiFileTypes(); - for (int i = types.length; i > 0;) - { - int type = types[--i]; - if (supported[type] == false) - { - count++; - supported[type] = true; - } - } - } - int result[] = new int[count]; - for (int i = supported.length; i > 0;) - { - if (supported[--i]) - result[--count] = i; - } - return result; - } - - /** - * Return true if the system supports writing files of type fileType. - * - * @param fileType the MIDI file type we want to write - * @return true if we can write fileType files, false otherwise - */ - public static boolean isFileTypeSupported(int fileType) - { - Iterator<MidiFileWriter> writers = ServiceFactory.lookupProviders(MidiFileWriter.class); - while (writers.hasNext()) - { - MidiFileWriter fw = writers.next(); - - if (fw.isFileTypeSupported(fileType)) - return true; - } - return false; - } - - /** - * Return an array of supported MIDI file types on this system - * for the given sequnce. - * - * @param sequence the sequnce to write - * @return the array of supported MIDI file types - */ - public static int[] getMidiFileTypes(Sequence sequence) - { - // We only support a max of 3 MIDI file types. - boolean supported[] = new boolean[3]; - // The number of supported formats. - int count = 0; - Iterator<MidiFileWriter> writers = ServiceFactory.lookupProviders(MidiFileWriter.class); - while (writers.hasNext()) - { - MidiFileWriter fw = (MidiFileWriter) writers.next(); - int types[] = fw.getMidiFileTypes(sequence); - for (int i = types.length; i > 0;) - { - int type = types[--i]; - if (supported[type] == false) - { - count++; - supported[type] = true; - } - } - } - int result[] = new int[count]; - for (int i = supported.length; i > 0;) - { - if (supported[--i]) - result[--count] = i; - } - return result; - } - - /** - * Return true if the system supports writing files of type fileType - * for the given sequence. - * - * @param fileType the MIDI file type we want to write - * @param sequence the Sequence we want to write - * @return true if we can write fileType files for sequence, false otherwise - */ - public static boolean isFileTypeSupported(int fileType, Sequence sequence) - { - Iterator<MidiFileWriter> writers = ServiceFactory.lookupProviders(MidiFileWriter.class); - while (writers.hasNext()) - { - MidiFileWriter fw = (MidiFileWriter) writers.next(); - - if (fw.isFileTypeSupported(fileType, sequence)) - return true; - } - return false; - } - - /** - * Write a sequence to an output stream using a specific MIDI file format. - * - * @param in the sequence to write - * @param fileType the MIDI file format to use - * @param out the output stream to write to - * @return the number of bytes written - * @throws IOException if an I/O exception happens - * @throws IllegalArgumentException if fileType is not supported for in - */ - public static int write(Sequence in, int fileType, OutputStream out) - throws IOException - { - Iterator<MidiFileWriter> writers = ServiceFactory.lookupProviders(MidiFileWriter.class); - while (writers.hasNext()) - { - MidiFileWriter fw = (MidiFileWriter) writers.next(); - - if (fw.isFileTypeSupported(fileType, in)) - return fw.write(in, fileType, out); - } - throw new IllegalArgumentException("File type " - + fileType + " is not supported"); - } - - /** - * Write a sequence to a file using a specific MIDI file format. - * - * @param in the sequence to write - * @param fileType the MIDI file format to use - * @param out the file to write to - * @return the number of bytes written - * @throws IOException if an I/O exception happens - * @throws IllegalArgumentException if fileType is not supported for in - */ - public static int write(Sequence in, int fileType, File out) - throws IOException - { - Iterator<MidiFileWriter> writers = ServiceFactory.lookupProviders(MidiFileWriter.class); - while (writers.hasNext()) - { - MidiFileWriter fw = (MidiFileWriter) writers.next(); - - if (fw.isFileTypeSupported(fileType, in)) - return fw.write(in, fileType, out); - } - throw new IllegalArgumentException("File type " - + fileType + " is not supported"); - } -} diff --git a/libjava/classpath/javax/sound/midi/MidiUnavailableException.java b/libjava/classpath/javax/sound/midi/MidiUnavailableException.java deleted file mode 100644 index 5403e42..0000000 --- a/libjava/classpath/javax/sound/midi/MidiUnavailableException.java +++ /dev/null @@ -1,69 +0,0 @@ -/* MidiUnavailableException.java -- MIDI resources are not available - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * This exception is thrown when MIDI resources are not available. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class MidiUnavailableException extends Exception -{ - private static final long serialVersionUID = 6093809578628944323L; - - /** - * Create a MidiUnavailableException. - */ - public MidiUnavailableException() - { - super(); - } - - /** - * Create an MidiUnavailableException object. - * - * @param s the exception message string - */ - public MidiUnavailableException(String s) - { - super(s); - } -} diff --git a/libjava/classpath/javax/sound/midi/Patch.java b/libjava/classpath/javax/sound/midi/Patch.java deleted file mode 100644 index 75e347f..0000000 --- a/libjava/classpath/javax/sound/midi/Patch.java +++ /dev/null @@ -1,86 +0,0 @@ -/* Patch.java -- A MIDI patch. - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * A Patch describes where an Instrument is loaded on a Synthesizer. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class Patch -{ - // Private data describing the patch - private int bank = 0; - private int program = 0; - - /** - * Create a Patch object, specifying the bank and program in which this Patch - * is located. - * - * @param bank the bank in which this Patch is located - * @param program the program in which this Patch is located - */ - public Patch(int bank, int program) - { - this.bank = bank; - this.program = program; - } - - /** - * Get the bank in which this Patch is located. - * - * @return the bank in which this Patch is located - */ - public int getBank() - { - return bank; - } - - /** - * Get the program in which this Patch is located. - * - * @return the program in which this Patch is located - */ - public int getProgram() - { - return program; - } -} diff --git a/libjava/classpath/javax/sound/midi/Receiver.java b/libjava/classpath/javax/sound/midi/Receiver.java deleted file mode 100644 index 535c9df..0000000 --- a/libjava/classpath/javax/sound/midi/Receiver.java +++ /dev/null @@ -1,67 +0,0 @@ -/* Receiver.java -- An interface for objects receiving MIDI data - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * This interface describes the methods required by objects receiving MIDI - * messages. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public interface Receiver - extends AutoCloseable -{ - /** - * Send a MIDI message and timestamp. Some receivers don't support - * timestamps, in which case timeStamp should be -1. - * - * @param message the MIDI message to send - * @param timeStamp time timestamp for this message in microseconds (or -1) - * @throws IllegalStateException if the receiver is closed - */ - public void send(MidiMessage message, long timeStamp) - throws IllegalStateException; - - /** - * Close this receiver, possibly freeing system resources. - */ - public void close(); -} diff --git a/libjava/classpath/javax/sound/midi/Sequence.java b/libjava/classpath/javax/sound/midi/Sequence.java deleted file mode 100644 index 833150a..0000000 --- a/libjava/classpath/javax/sound/midi/Sequence.java +++ /dev/null @@ -1,248 +0,0 @@ -/* Sequence.java -- A sequence of MIDI events - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -import java.util.Iterator; -import java.util.Vector; - -/** - * Objects of this type represent sequences of MIDI messages that can be - * played back by a Sequencer. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class Sequence -{ - /** - * The timing division type for this sequence (PPQ or SMPTE*) - */ - protected float divisionType; - - /** - * The timing resolution in ticks/beat or ticks/frame, depending on the - * division type. - */ - protected int resolution; - - /** - * The MIDI tracks used by this sequence. - */ - protected Vector<Track> tracks; - - /** - * Tempo-based timing. Resolution is specified in ticks per beat. - */ - public static final float PPQ = 0.0f; - - /** - * 24 frames/second timing. Resolution is specific in ticks per frame. - */ - public static final float SMPTE_24 = 24.0f; - - /** - * 25 frames/second timing. Resolution is specific in ticks per frame. - */ - public static final float SMPTE_25 = 25.0f; - - /** - * 30 frames/second timing. Resolution is specific in ticks per frame. - */ - public static final float SMPTE_30 = 30.0f; - - /** - * 29.97 frames/second timing. Resolution is specific in ticks per frame. - */ - public static final float SMPTE_30DROP = 29.97f; - - // Private helper class - private void init(float divisionType, int resolution, int numTracks) - throws InvalidMidiDataException - { - if (divisionType != PPQ - && divisionType != SMPTE_24 - && divisionType != SMPTE_25 - && divisionType != SMPTE_30 - && divisionType != SMPTE_30DROP) - throw new InvalidMidiDataException("Invalid division type (" - + divisionType + ")"); - - this.divisionType = divisionType; - this.resolution = resolution; - - tracks = new Vector<Track>(numTracks); - while (numTracks > 0) - tracks.set(--numTracks, new Track()); - } - - /** - * Create a MIDI sequence object with no initial tracks. - * - * @param divisionType the division type (must be one of PPQ or SMPTE_*) - * @param resolution the timing resolution - * @throws InvalidMidiDataException if the division type is invalid - */ - public Sequence(float divisionType, int resolution) - throws InvalidMidiDataException - { - init(divisionType, resolution, 0); - } - - /** - * Create a MIDI seqence object. - * - * @param divisionType the division type (must be one of PPQ or SMPTE_*) - * @param resolution the timing resolution - * @param numTracks the number of initial tracks - * @throws InvalidMidiDataException if the division type is invalid - */ - public Sequence(float divisionType, int resolution, int numTracks) - throws InvalidMidiDataException - { - init(divisionType, resolution, 0); - } - - /** - * The division type of this sequence. - * - * @return division type of this sequence - */ - public float getDivisionType() - { - return divisionType; - } - - /** - * The timing resolution for this sequence, relative to the division type. - * - * @return the timing resolution for this sequence - */ - public int getResolution() - { - return resolution; - } - - /** - * Create a new empty MIDI track and add it to this sequence. - * - * @return the newly create MIDI track - */ - public Track createTrack() - { - Track track = new Track(); - tracks.add(track); - return track; - } - - /** - * Remove the specified MIDI track from this sequence. - * - * @param track the track to remove - * @return true if track was removed and false othewise - */ - public boolean deleteTrack(Track track) - { - return tracks.remove(track); - } - - /** - * Get an array of MIDI tracks used in this sequence. - * - * @return a possibly empty array of tracks - */ - public Track[] getTracks() - { - return tracks.toArray(new Track[tracks.size()]); - } - - /** - * The length of this sequence in microseconds. - * - * @return the length of this sequence in microseconds - */ - public long getMicrosecondLength() - { - long tickLength = getTickLength(); - - if (divisionType == PPQ) - { - // FIXME - // How can this possible be computed? PPQ is pulses per quarter-note, - // which is dependent on the tempo of the Sequencer. - throw new - UnsupportedOperationException("Can't compute PPQ based lengths yet"); - } - else - { - // This is a fixed tick per frame computation - return (long) ((tickLength * 1000000) / (divisionType * resolution)); - } - } - - /** - * The length of this sequence in MIDI ticks. - * - * @return the length of this sequence in MIDI ticks - */ - public long getTickLength() - { - long length = 0; - Iterator<Track> itr = tracks.iterator(); - while (itr.hasNext()) - { - Track track = itr.next(); - long trackTicks = track.ticks(); - if (trackTicks > length) - length = trackTicks; - } - return length; - } - - /** - * Get an array of patches used in this sequence. - * - * @return an array of patches used in this sequence - */ - public Patch[] getPatchList() - { - // FIXE: not quite sure how to do this yet. - throw new UnsupportedOperationException("Can't get patch list yet"); - } -} diff --git a/libjava/classpath/javax/sound/midi/Sequencer.java b/libjava/classpath/javax/sound/midi/Sequencer.java deleted file mode 100644 index ca9cad7..0000000 --- a/libjava/classpath/javax/sound/midi/Sequencer.java +++ /dev/null @@ -1,402 +0,0 @@ -/* Sequencer.java -- A MIDI sequencer object - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -import java.io.IOException; -import java.io.InputStream; - -/** - * A Sequencer object plays MIDI sequences described as Sequence objects. - * This class provides methods for loading and unloading sequences, as well - * as basic transport controls. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public interface Sequencer extends MidiDevice -{ - /** - * Set the Sequence object for this sequencer. - * - * @param seq the Sequence to process - * @throws InvalidMidiDataException if the sequence is invalid for any reason - */ - public void setSequence(Sequence seq) throws InvalidMidiDataException; - - /** - * Set the sequence for this sequencer. istream reads on a valid MIDI file. - * - * @param istream an input stream for a valid MIDI file - * @throws IOException if an I/O exception happens - * @throws InvalidMidiDataException if the MIDI file contains bad data - */ - public void setSequence(InputStream istream) - throws IOException, InvalidMidiDataException; - - /** - * Get the current sequence object for this sequencer. - * - * @return the current sequence object. May be null. - */ - public Sequence getSequence(); - - /** - * Start playback of the current sequence. - */ - public void start(); - - /** - * Stop playback of the current sequence. - */ - public void stop(); - - /** - * Returns true if the sequence is playing. - * - * @return true if the sequence is playing and false otherwise - */ - public boolean isRunning(); - - /** - * Start playback and record of MIDI events. - * Any tracks enabled for recording will have their events replaced. - * Any newly recorded events, and all events from non-recording tracks - * will be sent to the sequencer's transmitter. - */ - public void startRecording(); - - /** - * Stop recording, although continue playing. - */ - public void stopRecording(); - - /** - * Returns true if sequence is recording. - * - * @return true if the sequence is recording and false otherwise - */ - public boolean isRecording(); - - /** - * Enable recording for a specific track using data from a specific channel. - * - * @param track the track to enable for recording - * @param channel the channel from which to record - */ - public void recordEnable(Track track, int channel); - - /** - * Disable recording for a specific track. - * - * @param track the track to disable recording for - */ - public void recordDisable(Track track); - - /** - * Get the current tempo in beats per minute. - * - * @return the current tempo in beats per minute - */ - public float getTempoInBPM(); - - /** - * Sets the current tempo in beats per minute. - * - * @param bpm the new tempo in bears per minutes - */ - public void setTempoInBPM(float bpm); - - /** - * Get the current tempo in microseconds per quarter note. - * - * @return the current tempo in microseconds per quarter note. - */ - public float getTempoInMPQ(); - - /** - * Sets the current tempo in microseconds per quarter note. - * - * @param mpq the new tempo in microseconds per quarter note. - */ - public void setTempoInMPQ(float mpq); - - /** - * Set a scaling factor for the playback tempo, which is 1.0 by default. - * - * @param factor the new tempo scaling factor - */ - public void setTempoFactor(float factor); - - /** - * Get the current scaling factor for the playback tempo. - * - * @return the current tempo scaling factor - */ - public float getTempoFactor(); - - /** - * Get the length of the current sequence in MIDI ticks. - * - * @return the length of the current sequence in MIDI ticks - */ - public long getTickLength(); - - /** - * Get the current playback position of the sequencer in MIDI ticks. - * - * @return the current playback position of the sequencer in MIDI ticks - */ - public long getTickPosition(); - - /** - * Set the current playback position of the sequencer in MIDI ticks. - * - * @param tick the new playback position of the sequencer in MIDI ticks - */ - public void setTickPosition(long tick); - - /** - * Get the length of the current sequence in microseconds. - * - * @return the length of the current sequence in microseconds - */ - public long getMicrosecondLength(); - - /** - * Get the current playback position of the sequencer in microseconds. - * - * @return the current playback position of the sequencer in microseconds - */ - public long getMicrosecondPosition(); - - /** - * Set the current playback position of the sequencer in microseconds. - * - * @param microsecond the new playback position of the sequencer in microseconds - */ - public void setMicrosecondPosition(long microsecond); - - /** - * Set the source of timing information. sync must be found in the array - * returned by getMasterSyncModes(). - * FIXME: What happens if it isn't? - * - * @param sync the new source of timing information - */ - public void setMasterSyncMode(SyncMode sync); - - /** - * Get the source of timing information. - * - * @return the current source of timing information - */ - public SyncMode getMasterSyncMode(); - - /** - * Get an array of timing sources supported by this sequencer. - * - * @return an array of timing sources supported by this sequencer - */ - public SyncMode[] getMasterSyncModes(); - - /** - * Set the slave synchronization mode for this sequencer. sync must be - * found in the array returned by getSlaveSyncModes(). - * FIXME: What happens if it isn't? - * - * @param sync the new slave sync mode for this sequencer - */ - public void setSlaveSyncMode(SyncMode sync); - - /** - * Get the current slave synchronization mode. - * - * @return the current slave synchronization mode - */ - public SyncMode getSlaveSyncMode(); - - /** - * Get an array of slave sync modes supported by this sequencer. - * - * @return an array of slave sync modes supported by this sequencer - */ - public SyncMode[] getSlaveSyncModes(); - - /** - * Sets the mute state for a specific track. - * - * @param track the track to modify - * @param mute the new mute state - */ - public void setTrackMute(int track, boolean mute); - - /** - * Get the mute state of a specific track. - * - * @param track the track to query - * @return the mute state for track - */ - public boolean getTrackMute(int track); - - /** - * Sets the solo state for a specific track. - * - * @param track the track to modify - * @param solo the new solo state - */ - public void setTrackSolo(int track, boolean solo); - - /** - * Get the solo state for a specific track. - * - * @param track the track to query - * @return the solo state for track - */ - public boolean getTrackSolo(int track); - - /** - * Add a meta event listening object to this sequencer. It will receive - * notification whenever the sequencer processes a meta event. - * A listener may fail to get added if this sequencer doesn't support - * meta events. - * - * @param listener the listener to add - * @return true if listener was added, false othewise - */ - public boolean addMetaEventListener(MetaEventListener listener); - - /** - * Remove a meta event listener from this sequencer. - * - * @param listener the listener to remove - */ - public void removeMetaEventListener(MetaEventListener listener); - - /** - * Add a controller event listening object to this sequencer. It will - * receive notification whenever the sequencer processes a controller - * event for a specified controller number.. - * - * @param listener the listener to add - * @param controllers the conroller numbers to listen to - * @return the controller numbers being listened to - */ - public int[] addControllerEventListener(ControllerEventListener listener, - int controllers[]); - - /** - * Remove a controller listener from this sequencer for the specified - * controller numbers. - * - * @param listener the listener to remove - * @param controllers the controllers to unlisten - * @return the controller numbers being unlistened - */ - public int[] removeControllerEventListener(ControllerEventListener listener, - int controllers[]); - - /** - * A SyncMode object represents the mechanism by which a MIDI sequencer - * synchronizes time with a master or slave device. - * - * @author green@redhat.com - * - */ - public static class SyncMode - { - /** - * A master sync mode indicating the use of an internal sequencer clock. - */ - public static final SyncMode INTERNAL_CLOCK = new SyncMode("Internal Clock"); - - /** - * A master or slave sync mode indicating the use of MIDI clock messages. - */ - public static final SyncMode MIDI_SYNC = new SyncMode("MIDI Sync"); - - /** - * A master or slave sync mode indicating the use of MIDI Time Code - * messages. - */ - public static final SyncMode MIDI_TIME_CODE = new SyncMode("MIDI Time Code"); - - /** - * A slave sync mode indicating that no timing info will be transmitted. - */ - public static final SyncMode NO_SYNC = new SyncMode("No Timing"); - - // The name - private String name; - - /** - * Create a new SyncMode object - * @param name the SyncMode name - */ - protected SyncMode(String name) - { - this.name = name; - } - - /** - * SyncMode objects are only equal when identical. - */ - public final boolean equals(Object o) - { - return super.equals(o); - } - - /** - * SyncMode objects use the Object hashCode. - */ - public final int hashCode() - { - return super.hashCode(); - } - - /** - * Use the SyncMode name as the string representation. - * @see java.lang.Object#toString() - */ - public final String toString() - { - return name; - } - } -} diff --git a/libjava/classpath/javax/sound/midi/ShortMessage.java b/libjava/classpath/javax/sound/midi/ShortMessage.java deleted file mode 100644 index 08b8737..0000000 --- a/libjava/classpath/javax/sound/midi/ShortMessage.java +++ /dev/null @@ -1,336 +0,0 @@ -/* ShortMessage.java -- A MIDI message no longer than 3 bytes - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * A short MIDI message that is no longer than 3 bytes long. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class ShortMessage extends MidiMessage -{ - /** - * Status byte for Time Code message. - */ - public static final int MIDI_TIME_CODE = 0xF1; - - /** - * Status byte for Song Position Pointer message. - */ - public static final int SONG_POSITION_POINTER = 0xF2; - - /** - * Status byte for Song Select message. - */ - public static final int SONG_SELECT = 0xF3; - - /** - * Status byte for Tune Request message. - */ - public static final int TUNE_REQUEST = 0xF6; - - /** - * Status byte for End Of Exclusive message. - */ - public static final int END_OF_EXCLUSIVE = 0xF7; - - /** - * Status byte for Timing Clock message. - */ - public static final int TIMING_CLOCK = 0xF8; - - /** - * Status byte for Start message. - */ - public static final int START = 0xFA; - - /** - * Status byte for Continue message. - */ - public static final int CONTINUE = 0xFB; - - /** - * Status byte for Stop message. - */ - public static final int STOP = 0xFC; - - /** - * Status byte for Active Sensing message. - */ - public static final int ACTIVE_SENSING = 0xFE; - - /** - * Status byte for System Reset message. - */ - public static final int SYSTEM_RESET = 0xFF; - - /** - * Status nibble for Note Off message. - */ - public static final int NOTE_OFF = 0x80; - - /** - * Status nibble for Note On message. - */ - public static final int NOTE_ON = 0x90; - - /** - * Status nibble for Poly Pressure message. - */ - public static final int POLY_PRESSURE = 0xA0; - - /** - * Status nibble for Control Change message. - */ - public static final int CONTROL_CHANGE = 0xB0; - - /** - * Status nibble for Program Change message. - */ - public static final int PROGRAM_CHANGE = 0xC0; - - /** - * Statue nibble for Channel Pressure message. - */ - public static final int CHANNEL_PRESSURE = 0xD0; - - /** - * Status nibble for Pitch Bend message. - */ - public static final int PITCH_BEND = 0xE0; - - // Create and initialize a default, arbitrary message. - private static byte[] defaultMessage; - static - { - defaultMessage = new byte[1]; - defaultMessage[0] = (byte) STOP; - } - - /** - * Create a short MIDI message. - * - * The spec requires that this represent a valid MIDI message, but doesn't - * specify what it should be. We've chosen the STOP message for our - * implementation. - */ - public ShortMessage() - { - this(defaultMessage); - } - - /** - * Create a short MIDI message. - * - * The data argument should be a valid MIDI message. Unfortunately the spec - * does not allow us to throw an InvalidMidiDataException if data is invalid. - * - * @param data the message data - */ - protected ShortMessage(byte[] data) - { - super(data); - } - - /** - * Set the MIDI message. - * - * @param status the status byte for this message - * @param data1 the first data byte for this message - * @param data2 the second data byte for this message - * @throws InvalidMidiDataException if status is bad, or data is out of range - */ - public void setMessage(int status, int data1, int data2) - throws InvalidMidiDataException - { - length = getDataLength(status); - length++; - if (data == null || data.length < length) - data = new byte[length]; - data[0] = (byte) status; - if (length > 1) - { - if (data1 < 0 || data1 > 127) - throw new InvalidMidiDataException("data1 (" + data1 - + ") must be between 0 and 127."); - data[1] = (byte) data1; - if (length > 2) - { - if (data2 < 0 || data2 > 127) - throw new InvalidMidiDataException("data2 (" + data2 - + ") must be between 0 and 127."); - data[2] = (byte) data2; - } - } - } - - public void setMessage(int command, int channel, int data1, int data2) - throws InvalidMidiDataException - { - // TODO: This could probably stand some error checking. - // It currently assumes command and channel are valid values. - setMessage(command + channel, data1, data2); - } - - /** - * Set the MIDI message to one that requires no data bytes. - * - * @param status the status byte for this message - * @throws InvalidMidiDataException if status is bad, or requires data - */ - public void setMessage(int status) throws InvalidMidiDataException - { - int length = getDataLength(status); - if (length != 0) - throw new InvalidMidiDataException("Status byte 0x" - + Integer.toHexString(status) - + " requires " - + length + " bytes of data."); - setMessage(status, 0, 0); - } - - - /** - * Return the number of data bytes needed for a given MIDI status byte. - * - * @param status the status byte for a short MIDI message - * @return the number of data bytes needed for this status byte - * @throws InvalidMidiDataException if status is an invalid status byte - */ - protected final int getDataLength(int status) throws InvalidMidiDataException - { - int originalStatus = status; - - if ((status & 0xF0) != 0xF0) - status &= 0xF0; - - switch (status) - { - case NOTE_OFF: - case NOTE_ON: - case POLY_PRESSURE: - case CONTROL_CHANGE: - case PITCH_BEND: - case SONG_POSITION_POINTER: - return 2; - - case PROGRAM_CHANGE: - case CHANNEL_PRESSURE: - case SONG_SELECT: - case 0xF5: // FIXME: unofficial bus select. Not in spec?? - return 1; - - case TUNE_REQUEST: - case END_OF_EXCLUSIVE: - case TIMING_CLOCK: - case START: - case CONTINUE: - case STOP: - case ACTIVE_SENSING: - case SYSTEM_RESET: - return 0; - - default: - throw new InvalidMidiDataException("Invalid status: 0x" - + Integer.toHexString(originalStatus)); - } - } - - /** - * Get the channel information from this MIDI message, assuming it is a - * MIDI channel message. - * - * @return the MIDI channel for this message - */ - public int getChannel() - { - return data[0] & 0x0F; - } - - /** - * Get the command nibble from this MIDI message, assuming it is a MIDI - * channel message. - * - * @return the MIDI command for this message - */ - public int getCommand() - { - return data[0] & 0xF0; - } - - /** - * Get the first data byte from this message, assuming it exists, and - * zero otherwise. - * - * @return the first data byte or zero if none exists. - */ - public int getData1() - { - if (length > 1) - return data[1]; - else - return 0; - } - - /** - * Get the second data byte from this message, assuming it exists, and - * zero otherwise. - * - * @return the second date byte or zero if none exists. - */ - public int getData2() - { - if (length > 2) - return data[2]; - else - return 0; - } - - /* Create a deep-copy clone of this object. - * @see java.lang.Object#clone() - */ - public Object clone() - { - byte message[] = new byte[length]; - System.arraycopy(data, 0, message, 0, length); - return new ShortMessage(message); - } -} diff --git a/libjava/classpath/javax/sound/midi/Soundbank.java b/libjava/classpath/javax/sound/midi/Soundbank.java deleted file mode 100644 index d959cf5..0000000 --- a/libjava/classpath/javax/sound/midi/Soundbank.java +++ /dev/null @@ -1,101 +0,0 @@ -/* Soundbank.java -- Container of Instruments to be loaded into a Synthesizer - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * A Soundbank is a container for instruments which may be loaded into - * a Synthesizer. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public interface Soundbank -{ - /** - * Get the sound bank name. - * - * @return the sound bank name - */ - String getName(); - - /** - * Get the sound bank version. - * - * @return the sound bank version - */ - String getVersion(); - - /** - * Get the sound bank vendor. - * - * @return the sound bank vendor - */ - String getVendor(); - - - /** - * Get the sound bank description. - * - * @return the sound bank description - */ - String getDescription(); - - /** - * Get an array of non-Instrument resources in this sound bank. - * - * @return an array of non-instrument resources in this sound bank - */ - SoundbankResource[] getResources(); - - /** - * Get an array of Instruments in this sound bank. - * - * @return an array of instruments in this sound bank - */ - Instrument[] getInstruments(); - - /** - * Get the Instrument for the given Patch. - * - * @param patch the Patch to search for - * @return the Instrument corresponding to patch - */ - Instrument getInstrument(Patch patch); -} diff --git a/libjava/classpath/javax/sound/midi/SoundbankResource.java b/libjava/classpath/javax/sound/midi/SoundbankResource.java deleted file mode 100644 index 6c3a4f2..0000000 --- a/libjava/classpath/javax/sound/midi/SoundbankResource.java +++ /dev/null @@ -1,104 +0,0 @@ -/* SoundbankResource.java -- An audio resource from a sound bank - Copyright (C) 2005, 2012 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * SoundbankResource objects represent audio data stored in a sound bank. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public abstract class SoundbankResource -{ - private final Soundbank soundbank; - private final String name; - private final Class<?> dataClass; - - /** - * Create a SoundbankResource object. - * - * @param soundbank the soundbank object containing this resource - * @param name the name of the resource - * @param dataClass the class used to represent the audio data - */ - protected SoundbankResource(Soundbank soundbank, String name, Class<?> dataClass) - { - this.soundbank = soundbank; - this.name = name; - this.dataClass = dataClass; - } - - /** - * Get the sound bank containing this resource. - * - * @return the sound bank in which this resource resides - */ - public Soundbank getSoundbank() - { - return soundbank; - } - - /** - * Get the name of this resource. - * - * @return the name of this resource - */ - public String getName() - { - return name; - } - - /** - * Get the class used to represent the audio data for this resource. - * - * @return the class used to represent the audio data for this resource - */ - public Class<?> getDataClass() - { - return dataClass; - } - - /** - * Get the audio data for this resource. - * - * @return the audio data object for this resource - */ - public abstract Object getData(); -} diff --git a/libjava/classpath/javax/sound/midi/Synthesizer.java b/libjava/classpath/javax/sound/midi/Synthesizer.java deleted file mode 100644 index 3a7ab3c..0000000 --- a/libjava/classpath/javax/sound/midi/Synthesizer.java +++ /dev/null @@ -1,173 +0,0 @@ -/* Synthesizer.java -- A MIDI audio synthesizer interface - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * Interface for MIDI audio synthesizer devices. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public interface Synthesizer extends MidiDevice -{ - /** - * Get the maximum number of notes that the synth can play at once. - * - * @return the maximum number of notes that the synth can play at once - */ - public int getMaxPolyphony(); - - /** - * The processing latency for this synth in microseconds. - * - * @return the processing latency for this synth in microseconds - */ - public long getLatency(); - - /** - * Get the set of MIDI channels controlled by this synth. - * - * @return an array of MIDI channels controlled by this synth - */ - public MidiChannel[] getChannels(); - - /** - * Get the current status for the voices produced by this synth. - * - * @return an array of VoiceStatus objects, getMaxPolyphony() in length - */ - public VoiceStatus[] getVoiceStatus(); - - /** - * Returns true is this synth is capable of loading soundbank. - * - * @param soundbank the Soundbank to examine - * @return true if soundbank can be loaded, false otherwise - */ - public boolean isSoundbankSupported(Soundbank soundbank); - - /** - * Load an instrument into this synth. The instrument must be part of a - * supported soundbank. - * - * @param instrument the Instrument to load - * @return true if the instrument was loaded and false otherwise - * @throws IllegalArgumentException if this synth doesn't support instrument - */ - public boolean loadInstrument(Instrument instrument); - - /** - * Unload an instrument from this synth. - * - * @param instrument the Instrument to unload - * @throws IllegalArgumentException if this synth doesn't support instrument - */ - public void unloadInstrument(Instrument instrument); - - /** - * Move an intrument from one place to another. The instrument at the - * target location is unloaded. - * - * @param from the instrument source - * @param to the instrument target - * @return if from was remapped - * @throws IllegalArgumentException - */ - public boolean remapInstrument(Instrument from, Instrument to); - - /** - * Get the default Soundbank for this synth. Return null if there is no - * default. - * - * @return the default Soundbank for this synth, possibly null. - */ - public Soundbank getDefaultSoundbank(); - - /** - * Get an array containing all instruments in this synthesizer. - * - * @return an array containing all instruments in this synthesizer - */ - public Instrument[] getAvailableInstruments(); - - /** - * Get an array containing all instruments loaded in this synthesizer. - * - * @return an array containing all instruments loaded in this synthesizer - */ - public Instrument[] getLoadedInstruments(); - - /** - * Load all soundbank instruments into this synthesizer. - * - * @param soundbank the Soundbank from which to load instruments - * @return true if all instruments were loaded, false othewise - * @throws IllegalArgumentException if the soundbank isn't supported by this - */ - public boolean loadAllInstruments(Soundbank soundbank); - - /** - * Unload all soundbank instruments from this synthesizer. - * - * @param soundbank the Soundbank containing the instruments to unload - * @throws IllegalArgumentException if the soundbank isn't supported by this - */ - public void unloadAllInstruments(Soundbank soundbank); - - /** - * Load a subset of soundbank instruments into this synthesizer. The - * subset is defined by an array of Patch objects. - * - * @param soundbank the Soundbank from which to load instruments - * @param patchList the array of patches identifying instruments to load - * @return true if instruments were loaded, false otherwise - * @throws IllegalArgumentException if the soundbank isn't supported by this - */ - public boolean loadInstruments(Soundbank soundbank, Patch[] patchList); - - /** - * Unload a subset of soundbank instruments from this synthesizer. - * - * @param soundbank the Soundbank containing the instruments to unload - * @param patchList the array of patches identifying instruments to unload - * @throws IllegalArgumentException if the soundbank isn't supported by this - */ - public void unloadInstruments(Soundbank soundbank, Patch[] patchList); -} diff --git a/libjava/classpath/javax/sound/midi/SysexMessage.java b/libjava/classpath/javax/sound/midi/SysexMessage.java deleted file mode 100644 index 93e3b5d..0000000 --- a/libjava/classpath/javax/sound/midi/SysexMessage.java +++ /dev/null @@ -1,138 +0,0 @@ -/* SysexMessage.java -- System Exclusive MIDI message. - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * A system exclusive MIDI message. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class SysexMessage extends MidiMessage -{ - public static final int SYSTEM_EXCLUSIVE = 0xF0; - - public static final int SPECIAL_SYSTEM_EXCLUSIVE = 0xF7; - - /** - * Create a default valid system exclusive message. - * - * The official specs don't specify what message is to be - * created. Our implementation creates an empty - * system exclusive message. - */ - public SysexMessage() - { - super(new byte[2]); - data[0] = (byte) SYSTEM_EXCLUSIVE; - data[1] = (byte) ShortMessage.END_OF_EXCLUSIVE; - } - - /** - * Create a SysexMessage object. - * @param data a complete system exclusive message - */ - protected SysexMessage(byte[] data) - { - super(data); - } - - /** - * Set the sysex message. The first data byte (status) must be - * 0xF0 or 0xF7. - * - * @param data the message data - * @param length the length of the message data - * @throws InvalidMidiDataException if the status byte is not 0xF0 or 0xF7 - */ - public void setMessage(byte[] data, int length) - throws InvalidMidiDataException - { - if (data[0] != SYSTEM_EXCLUSIVE - && data[0] != SPECIAL_SYSTEM_EXCLUSIVE) - throw new InvalidMidiDataException("Sysex message starts with 0x" - + Integer.toHexString(data[0]) - + " instead of 0xF0 or 0xF7"); - super.setMessage(data, length); - } - - /** - * Set the sysex message. status must be either 0xF0 or 0xF7. - * - * @param status the sysex statys byte (0xF0 or 0xF7) - * @param data the message data - * @param length the length of the message data - * @throws InvalidMidiDataException if status is not 0xF0 or 0xF7 - */ - public void setMessage(int status, byte[] data, int length) - throws InvalidMidiDataException - { - if (status != SYSTEM_EXCLUSIVE - && status != SPECIAL_SYSTEM_EXCLUSIVE) - throw new InvalidMidiDataException("Sysex message starts with 0x" - + Integer.toHexString(status) - + " instead of 0xF0 or 0xF7"); - this.data = new byte[length+1]; - this.data[0] = (byte) status; - System.arraycopy(data, 0, this.data, 1, length); - this.length = length+1; - } - - /** - * Get the data for this message, not including the status byte. - * @return the message data, not including the status byte - */ - public byte[] getData() - { - byte[] result = new byte[length - 1]; - System.arraycopy(data, 1, result, 0, length - 1); - return result; - } - - /* Create a deep-copy clone of this object. - * @see java.lang.Object#clone() - */ - public Object clone() - { - byte message[] = new byte[length]; - System.arraycopy(data, 0, message, 0, length); - return new SysexMessage(message); - } -} diff --git a/libjava/classpath/javax/sound/midi/Track.java b/libjava/classpath/javax/sound/midi/Track.java deleted file mode 100644 index 9c39257..0000000 --- a/libjava/classpath/javax/sound/midi/Track.java +++ /dev/null @@ -1,164 +0,0 @@ -/* Track.java -- A track of MIDI events - Copyright (C) 2005, 2012 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -import java.util.HashSet; -import java.util.Vector; - -/** - * A Track contains a list of timecoded MIDI events for processing - * by a Sequencer. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class Track -{ - /** - * The list of MidiEvents for this track. - */ - Vector<MidiEvent> events = new Vector<MidiEvent>(); - - // A HashSet to speed processing - private HashSet<MidiEvent> eventSet = new HashSet<MidiEvent>(); - - // This is only instantiable within this package. - Track() - { - } - - /** - * Add a new event to this track. Specific events may only be added once. - * The event will be inserted into the appropriate spot in the event list - * based on its timecode. - * - * @param event the event to add - * @return true if the event was added, false otherwise - */ - public boolean add(MidiEvent event) - { - synchronized (events) - { - if (eventSet.contains(event)) - return false; - - eventSet.add(event); - - long targetTick = event.getTick(); - int i = events.size() - 1; - while (i >= 0 && (events.get(i).getTick() > targetTick)) - i--; - events.add(i+1, event); - return true; - } - } - - /** - * Remove an event from this track. - * - * @param event the event to remove - * @return true if the event was removed, false otherwise - */ - public boolean remove(MidiEvent event) - { - synchronized (events) - { - if (! eventSet.remove(event)) - return false; - - int i = events.indexOf(event); - if (i >= 0) - { - events.remove(i); - return true; - } - - throw new InternalError("event in set but not list"); - } - } - - /** - * Get an event idetified by its order index - * - * @param index the location of the event to get - * @return the event at index - * @throws ArrayIndexOutOfBoundsException if index is out of bounds - */ - public MidiEvent get(int index) throws ArrayIndexOutOfBoundsException - { - synchronized (events) - { - try - { - return events.get(index); - } - catch (IndexOutOfBoundsException e) - { - throw (ArrayIndexOutOfBoundsException) - new ArrayIndexOutOfBoundsException().initCause(e); - } - } - } - - - /** - * Get the number events in this track. - * - * @return the number of events in this track - */ - public int size() - { - return events.size(); - } - - /** - * Get the length of the track in MIDI ticks. - * - * @return the length of the track in MIDI ticks - */ - public long ticks() - { - synchronized (events) - { - int size = events.size(); - return events.get(size - 1).getTick(); - } - } - } diff --git a/libjava/classpath/javax/sound/midi/Transmitter.java b/libjava/classpath/javax/sound/midi/Transmitter.java deleted file mode 100644 index 2c62795..0000000 --- a/libjava/classpath/javax/sound/midi/Transmitter.java +++ /dev/null @@ -1,71 +0,0 @@ -/* Transmitter.java -- A interface for objects sending MIDI events - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * This interface specifies the methods required by objects which send - * MIDI events to Receivers, including MIDI IN ports and Sequencers. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public interface Transmitter - extends AutoCloseable -{ - /** - * Set the Receiver to which MIDI events will be sent. - * - * @param receiver the Receiver to which MIDI events will be sent - */ - public void setReceiver(Receiver receiver); - - /** - * Get the Receiver to which MIDI events will be sent (possibly null) - * - * @return the Receiver to which MIDI events will be sent (possibly null) - */ - public Receiver getReceiver(); - - /** - * Close this Transmitter, possibly releasing system resources. - * FIXME: Does this mean the Receiver is closed? I think it must. - */ - public void close(); -} diff --git a/libjava/classpath/javax/sound/midi/VoiceStatus.java b/libjava/classpath/javax/sound/midi/VoiceStatus.java deleted file mode 100644 index 2ba0c9e..0000000 --- a/libjava/classpath/javax/sound/midi/VoiceStatus.java +++ /dev/null @@ -1,79 +0,0 @@ -/* VoiceStatus.java -- the current status of a Synthesizer voice - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi; - -/** - * Objects of this type define the status of a Synthesizer voice. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public class VoiceStatus -{ - /** - * True if this voice is processing a MIDI note. - */ - public boolean active = false; - - /** - * The channel for this voice when active. - */ - public int channel = 0; - - /** - * The bank of the voice when active. - */ - public int bank = 0; - - /** - * The program for this voice when active. - */ - public int program = 0; - - /** - * The note for this voice when active. - */ - public int note = 0; - - /** - * The volume for this voice when active. - */ - public int volume = 0; -} diff --git a/libjava/classpath/javax/sound/midi/spi/MidiDeviceProvider.java b/libjava/classpath/javax/sound/midi/spi/MidiDeviceProvider.java deleted file mode 100644 index 7119ec4..0000000 --- a/libjava/classpath/javax/sound/midi/spi/MidiDeviceProvider.java +++ /dev/null @@ -1,90 +0,0 @@ -/* MidiDeviceProvider.java -- Abstract parent for a MIDI device provider. - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi.spi; - -import javax.sound.midi.*; - -/** - * The abstract base class for all MidiDeviceProvider types. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public abstract class MidiDeviceProvider -{ - /** - * Returns true if this provider supports a specific MIDI device. - * - * @param info the MIDI device descriptor - * @return true if this provider supports info - */ - public boolean isDeviceSupported(MidiDevice.Info info) - { - MidiDevice.Info infos[] = getDeviceInfo(); - - int i = infos.length; - - while (i > 0) - { - if (info.equals(infos[--i])) - return true; - } - - return false; - } - - /** - * Get the list descriptors for all MIDI devices supported by - * this provider. - * - * @return an array of descriptors for all supported MIDI devices. - */ - public abstract MidiDevice.Info[] getDeviceInfo(); - - /** - * Get the MidiDevice for the MIDI device described by info - * - * @param info the descriptor for the MIDI device we want - * @return the MidiDevice we're looking for - * @throws IllegalArgumentException is this provider doesn't support info - */ - public abstract MidiDevice getDevice(MidiDevice.Info info) - throws IllegalArgumentException; -} diff --git a/libjava/classpath/javax/sound/midi/spi/MidiFileReader.java b/libjava/classpath/javax/sound/midi/spi/MidiFileReader.java deleted file mode 100644 index d370a8a..0000000 --- a/libjava/classpath/javax/sound/midi/spi/MidiFileReader.java +++ /dev/null @@ -1,125 +0,0 @@ -/* MidiFilerReader.java -- MIDI file reading services - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi.spi; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; - -import javax.sound.midi.InvalidMidiDataException; -import javax.sound.midi.MidiFileFormat; -import javax.sound.midi.Sequence; - -/** - * The MidiFileReader abstract class defines the methods to be provided - * by a MIDI file reader. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public abstract class MidiFileReader -{ - /** - * Read a MidiFileFormat from the given stream. - * - * @param stream the stream from which to read the MIDI data - * @return the MidiFileFormat object - * @throws InvalidMidiDataException if the stream refers to invalid data - * @throws IOException if an I/O exception occurs while reading - */ - public abstract MidiFileFormat getMidiFileFormat(InputStream stream) - throws InvalidMidiDataException, IOException; - - /** - * Read a MidiFileFormat from the given stream. - * - * @param url the url from which to read the MIDI data - * @return the MidiFileFormat object - * @throws InvalidMidiDataException if the url refers to invalid data - * @throws IOException if an I/O exception occurs while reading - */ - public abstract MidiFileFormat getMidiFileFormat(URL url) - throws InvalidMidiDataException, IOException; - - /** - * Read a MidiFileFormat from the given stream. - * - * @param file the file from which to read the MIDI data - * @return the MidiFileFormat object - * @throws InvalidMidiDataException if the file refers to invalid data - * @throws IOException if an I/O exception occurs while reading - */ - public abstract MidiFileFormat getMidiFileFormat(File file) - throws InvalidMidiDataException, IOException; - - /** - * Read a Sequence from the given stream. - * - * @param stream the stream from which to read the MIDI data - * @return the Sequence object - * @throws InvalidMidiDataException if the stream refers to invalid data - * @throws IOException if an I/O exception occurs while reading - */ - public abstract Sequence getSequence(InputStream stream) - throws InvalidMidiDataException, IOException; - - /** - * Read a Sequence from the given stream. - * - * @param url the url from which to read the MIDI data - * @return the Sequence object - * @throws InvalidMidiDataException if the url refers to invalid data - * @throws IOException if an I/O exception occurs while reading - */ - public abstract Sequence getSequence(URL url) - throws InvalidMidiDataException, IOException; - - /** - * Read a Sequence from the given stream. - * - * @param file the file from which to read the MIDI data - * @return the Sequence object - * @throws InvalidMidiDataException if the file refers to invalid data - * @throws IOException if an I/O exception occurs while reading - */ - public abstract Sequence getSequence(File file) - throws InvalidMidiDataException, IOException; -} diff --git a/libjava/classpath/javax/sound/midi/spi/MidiFileWriter.java b/libjava/classpath/javax/sound/midi/spi/MidiFileWriter.java deleted file mode 100644 index 08aee36..0000000 --- a/libjava/classpath/javax/sound/midi/spi/MidiFileWriter.java +++ /dev/null @@ -1,143 +0,0 @@ -/* MidiFileWriter.java -- MIDI file writing services - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi.spi; - -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; - -import javax.sound.midi.Sequence; - -/** - * MidiFileWriter provides MIDI file writing services. - * - * There are three types of Standard MIDI File (SMF) formats, - * represented by integers 0, 1, and 2. - * - * Type 0 files contain a single track and represents a single song - * performance. - * Type 1 may contain multiple tracks for a single song performance. - * Type 2 may contain multiple tracks, each representing a - * separate song performance. - * - * See http://en.wikipedia.org/wiki/MIDI#MIDI_file_formats for more - * information. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public abstract class MidiFileWriter -{ - /** - * Return the MIDI file types supported by this writer. - * - * @return the MIDI file types, or an empty array - */ - public abstract int[] getMidiFileTypes(); - - /** - * Return the MIDI file types supported by this writer for the - * given sequence. - * - * @param sequence the sequence we'd like to write - * @return the MIDI file types, or an empty array - */ - public abstract int[] getMidiFileTypes(Sequence sequence); - - /** - * Returns true if this writer supports the given file type. - * - * @param fileType the file type we're asking about - * @return true if this writer supports fileType, false otherwise - */ - public boolean isFileTypeSupported(int fileType) - { - int types[] = getMidiFileTypes(); - for (int i = types.length; i > 0;) - { - if (types[--i] == fileType) - return true; - } - return false; - } - - /** - * Returns true if this writer supports the given file type for the - * given sequence. - * - * @param fileType the file type we're asking about - * @param sequence the sequence we'd like to write - * @return true if this writer supports fileType, false otherwise - */ - public boolean isFileTypeSupported(int fileType, Sequence sequence) - { - int types[] = getMidiFileTypes(sequence); - for (int i = types.length; i > 0;) - { - if (types[--i] == fileType) - return true; - } - return false; - } - - /** - * Write a sequence to a stream using the specified MIDI file type. - * - * @param in the sequence to write - * @param fileType the MIDI file type to use - * @param out the output stream to write to - * @return the number of byte written - * @throws IOException if an I/O exception happens - */ - public abstract int write(Sequence in, int fileType, OutputStream out) - throws IOException; - - /** - * Write a sequence to a file using the specified MIDI file type. - * - * @param in the sequence to write - * @param fileType the MIDI file type to use - * @param out the file to write to - * @return the number of byte written - * @throws IOException if an I/O exception happens - */ - public abstract int write(Sequence in, int fileType, File out) - throws IOException; -} diff --git a/libjava/classpath/javax/sound/midi/spi/SoundbankReader.java b/libjava/classpath/javax/sound/midi/spi/SoundbankReader.java deleted file mode 100644 index 948d54f..0000000 --- a/libjava/classpath/javax/sound/midi/spi/SoundbankReader.java +++ /dev/null @@ -1,97 +0,0 @@ -/* SoundbankReader.java -- Soundbank file reading services - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.midi.spi; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; - -import javax.sound.midi.InvalidMidiDataException; -import javax.sound.midi.Soundbank; - -/** - * The SoundbankReader abstract class defines the methods to be provided - * by a soundbank file reader. - * - * @author Anthony Green (green@redhat.com) - * @since 1.3 - * - */ -public abstract class SoundbankReader -{ - /** - * Get a Soundbank from the given URL. - * - * @param url from which to read the Soundbank - * - * @return the Soundbank object - * - * @throws InvalidMidiDataException if the data provided by url cannot be recognized - * @throws IOException if the data provided by url cannot be read - */ - public abstract Soundbank getSoundbank(URL url) - throws InvalidMidiDataException, IOException; - - /** - * Get a Soundbank from the given InputStream. - * - * @param stream from which to read the Soundbank - * - * @return the Soundbank object - * - * @throws InvalidMidiDataException if the data provided by InputStream cannot be recognized - * @throws IOException if the data provided by InputStream cannot be read - */ - public abstract Soundbank getSoundbank(InputStream stream) - throws InvalidMidiDataException, IOException; - - /** - * Get a Soundbank from the given File. - * - * @param file from which to read the Soundbank - * - * @return the Soundbank object - * - * @throws InvalidMidiDataException if the data provided by File cannot be recognized - * @throws IOException if the data provided by File cannot be read - */ - public abstract Soundbank getSoundbank(File file) - throws InvalidMidiDataException, IOException; -} diff --git a/libjava/classpath/javax/sound/sampled/AudioFileFormat.java b/libjava/classpath/javax/sound/sampled/AudioFileFormat.java deleted file mode 100644 index 2eeb78c..0000000 --- a/libjava/classpath/javax/sound/sampled/AudioFileFormat.java +++ /dev/null @@ -1,242 +0,0 @@ -/* Audio file format - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * This describes an audio file, including information about its length, - * the format of the audio data, and other things. - * @since 1.3 - */ -public class AudioFileFormat -{ - /** - * An instance of this type describes a standard audio file format. - * @since 1.3 - */ - public static class Type - { - // This is kind of goofy since there are multiple extensions for - // some of these. - - /** The AIFC format. */ - public static final Type AIFC = new Type("AIFC", "aifc"); - - /** The AIFF format. */ - public static final Type AIFF = new Type("AIFF", "aiff"); - - /** The AU format. */ - public static final Type AU = new Type("AU", "au"); - - /** The SND format. */ - public static final Type SND = new Type("SND", "snd"); - - /** The WAVE format. */ - public static final Type WAVE = new Type ("WAVE", "wav"); - - private String name; - private String extension; - - /** - * Create a new Type given its name and file extension. - * The file extension does not include the ".". - * @param name the type's name - * @param extension the file extension - */ - public Type(String name, String extension) - { - this.name = name; - this.extension = extension; - } - - public final boolean equals(Object o) - { - if (! (o instanceof Type)) - return false; - Type other = (Type) o; - return name.equals(other.name) && extension.equals(other.extension); - } - - public final int hashCode() - { - return name.hashCode() + extension.hashCode(); - } - - /** - * Return the extension associated with this Type. - */ - public String getExtension() - { - return extension; - } - - /** - * Return the name of this Type. - */ - public final String toString() - { - return name; - } - } - - private int byteLength; - private AudioFormat format; - private Type type; - private int frameLength; - private Map<String, Object> properties; - - /** - * Create a new AudioFileFormat given the type, the format, and the - * frame length. The new object will have an unspecified byte length, - * and an empty properties map. - * @param type the type - * @param fmt the format - * @param frameLen the frame length - */ - public AudioFileFormat(Type type, AudioFormat fmt, int frameLen) - { - this.byteLength = AudioSystem.NOT_SPECIFIED; - this.format = fmt; - this.type = type; - this.frameLength = frameLen; - this.properties = Collections.<String, Object> emptyMap(); - } - - /** - * Create a new AudioFileFormat given the type, the format, the - * frame length, and some properties. The new object will have an - * unspecified byte length. A copy of the properties argument will - * be made, so changes to the map passed in will not affect the - * new AudioFileFormat. - * @param type the type - * @param fmt the format - * @param frameLen the frame length - * @param properties the properties - */ - public AudioFileFormat(Type type, AudioFormat fmt, int frameLen, - Map<String, Object> properties) - { - this.byteLength = AudioSystem.NOT_SPECIFIED; - this.format = fmt; - this.type = type; - this.frameLength = frameLen; - this.properties = Collections.unmodifiableMap(new HashMap<String, Object>(properties)); - } - - /** - * Create a new AudioFileFormat given the type, the byte length, the format, - * and the frame length. The new object will have an empty properties map. - * @param type the type - * @param byteLen the byte length - * @param fmt the format - * @param frameLen the frame length - */ - protected AudioFileFormat(Type type, int byteLen, AudioFormat fmt, - int frameLen) - { - this.byteLength = byteLen; - this.format = fmt; - this.type = type; - this.frameLength = frameLen; - this.properties = Collections.<String, Object> emptyMap(); - } - - /** - * Return the byte length of this file format. - */ - public int getByteLength() - { - return byteLength; - } - - /** - * Return the AudioFormat associated with this file format. - */ - public AudioFormat getFormat() - { - return format; - } - - /** - * Return the frame length of this file format. - */ - public int getFrameLength() - { - return frameLength; - } - - /** - * Return the value of a property defined in this format. - * @param key the property name - * @return the value of the property, or null if the property is not defined - */ - public Object getProperty(String key) - { - return properties.get(key); - } - - /** - * Return the Type associated with this file format. - */ - public Type getType() - { - return type; - } - - /** - * Return the properties associated with this format, as a Map. - * The returned Map is unmodifiable. - */ - public Map<String, Object> properties() - { - return properties; - } - - /** - * Return a description of this AudioFileFormat. - */ - public String toString() - { - return ("byteLength=" + byteLength + "; format=" + format - + "; type=" + type + "; frameLength=" + frameLength); - } -} diff --git a/libjava/classpath/javax/sound/sampled/AudioFormat.java b/libjava/classpath/javax/sound/sampled/AudioFormat.java deleted file mode 100644 index b4fc601..0000000 --- a/libjava/classpath/javax/sound/sampled/AudioFormat.java +++ /dev/null @@ -1,366 +0,0 @@ -/* An audio format - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -import gnu.java.lang.CPStringBuilder; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * This class describes an audio format, including its encoding, - * the number of channels, its frame rate, etc. - * @since 1.3 - */ -public class AudioFormat -{ - /** - * This describes a given audio format encoding. - * @since 1.3 - */ - public static class Encoding - { - /** The ALAW encoding. */ - public static final Encoding ALAW = new Encoding("alaw"); - - /** The signed PCM encoding. */ - public static final Encoding PCM_SIGNED = new Encoding("pcm_signed"); - - /** The unsigned PCM encoding. */ - public static final Encoding PCM_UNSIGNED = new Encoding("pcm_unsigned"); - - /** The ULAW encoding. */ - public static final Encoding ULAW = new Encoding("ulaw"); - - private String name; - - /** - * Create a new encoding descriptor, given its name. - * @param name the name - */ - public Encoding(String name) - { - this.name = name; - } - - public final boolean equals(Object o) - { - return super.equals(o); - } - - public final int hashCode() - { - return super.hashCode(); - } - - /** - * Return the name of this encoding. - */ - public final String toString() - { - return name; - } - } - - /** - * True if the audio data is stored big-endian. - */ - protected boolean bigEndian; - - /** - * The number of channels of data in this format. - */ - protected int channels; - - /** - * The encoding of this format. - */ - protected Encoding encoding; - - /** - * The frame rate of this format. This is the number of frames - * per second. - */ - protected float frameRate; - - /** - * The number of bytes per frame in this format. - */ - protected int frameSize; - - /** - * The number of samples per second. - */ - protected float sampleRate; - - /** - * The number of bits in each sample. - */ - protected int sampleSizeInBits; - - private Map<String, Object> properties; - - /** - * Create a new audio format, given various attributes of it. - * The properties map for this format will be empty. - * - * @param encoding the encoding for this format - * @param sampleRate the sample rate - * @param sampleSizeInBits the sample size, in bits - * @param channels the number of channels - * @param frameSize the frame size, in bytes - * @param frameRate the frame rate, in frames per second - * @param bigEndian true if the data is stored big-endian - */ - public AudioFormat(Encoding encoding, float sampleRate, int sampleSizeInBits, - int channels, int frameSize, float frameRate, - boolean bigEndian) - { - this.encoding = encoding; - this.sampleRate = sampleRate; - this.sampleSizeInBits = sampleSizeInBits; - this.channels = channels; - this.frameSize = frameSize; - this.frameRate = frameRate; - this.bigEndian = bigEndian; - this.properties = Collections.<String, Object> emptyMap(); - } - - /** - * Create a new audio format, given various attributes of it. - * The properties map is copied by this constructor, so changes - * to the argument Map will not affect the new object. - * - * @param encoding the encoding for this format - * @param sampleRate the sample rate - * @param sampleSizeInBits the sample size, in bits - * @param channels the number of channels - * @param frameSize the frame size, in bytes - * @param frameRate the frame rate, in frames per second - * @param bigEndian true if the data is stored big-endian - * @param properties a map describing properties of this format - */ - public AudioFormat(Encoding encoding, float sampleRate, int sampleSizeInBits, - int channels, int frameSize, float frameRate, - boolean bigEndian, Map<String, Object> properties) - { - this.encoding = encoding; - this.sampleRate = sampleRate; - this.sampleSizeInBits = sampleSizeInBits; - this.channels = channels; - this.frameSize = frameSize; - this.frameRate = frameRate; - this.bigEndian = bigEndian; - this.properties = Collections.unmodifiableMap(new HashMap<String, Object>(properties)); - } - - /** - * Create a new PCM-based audio format, given various attributes of it. - * The encoding will either be Encoding#PCM_SIGNED or Encoding#PCM_UNSIGNED. - * The frame size for this format will be derived from the sample size in - * bits and the number of channels, unless one of those is - * AudioSystem#NOT_SPECIFIED. The frame rate will be the same as the sample - * rate, and the properties map will be empty. - * - * @param sampleRate the sample rate - * @param sampleSizeInBits the sample size, in bits - * @param channels the number of channels - * @param signed true if this is a signed encoding - * @param bigEndian true if the data is stored big-endian - */ - public AudioFormat(float sampleRate, int sampleSizeInBits, - int channels, boolean signed, boolean bigEndian) - { - this.encoding = signed ? Encoding.PCM_SIGNED : Encoding.PCM_UNSIGNED; - this.sampleRate = sampleRate; - this.sampleSizeInBits = sampleSizeInBits; - this.channels = channels; - // It isn't clear whether channels can be NOT_SPECIFIED. - if (sampleSizeInBits == AudioSystem.NOT_SPECIFIED - || channels == AudioSystem.NOT_SPECIFIED) - this.frameSize = AudioSystem.NOT_SPECIFIED; - else - this.frameSize = (sampleSizeInBits + 7) / 8 * channels; - this.frameRate = sampleRate; - this.bigEndian = bigEndian; - this.properties = Collections.<String, Object> emptyMap(); - } - - /** - * Return the number of channels in this format. - */ - public int getChannels() - { - return channels; - } - - /** - * Return the encoding of this format. - */ - public Encoding getEncoding() - { - return encoding; - } - - /** - * Return the frame rate of this format. - */ - public float getFrameRate() - { - return frameRate; - } - - /** - * Return the frame size of this format. - */ - public int getFrameSize() - { - return frameSize; - } - - /** - * Given a key, return a property associated with this format; - * or null if this property is not set. - * @param key the name of the property - * @return the value of the property, or null if the property is not set - */ - public Object getProperty(String key) - { - return properties.get(key); - } - - /** - * Return the sample rate of this format. - */ - public float getSampleRate() - { - return sampleRate; - } - - /** - * Return the sample size of this format, in bits. - */ - public int getSampleSizeInBits() - { - return sampleSizeInBits; - } - - /** - * Return true if this format is big endian, false otherwise. - * This only matters for formats whose sample size is greater than - * one byte. - */ - public boolean isBigEndian() - { - return bigEndian; - } - - /** - * Return true if this audio format matches another. - * @param fmt the format to match against - * @return true if they match, false otherwise - */ - public boolean matches(AudioFormat fmt) - { - if (! encoding.equals(fmt.encoding) - || channels != fmt.channels - || sampleSizeInBits != fmt.sampleSizeInBits - || frameSize != fmt.frameSize) - return false; - if (sampleRate != AudioSystem.NOT_SPECIFIED - && fmt.sampleRate != AudioSystem.NOT_SPECIFIED - && sampleRate != fmt.sampleRate) - return false; - if (frameRate != AudioSystem.NOT_SPECIFIED - && fmt.frameRate != AudioSystem.NOT_SPECIFIED - && frameRate != fmt.frameRate) - return false; - if (sampleSizeInBits > 8) - return bigEndian == fmt.bigEndian; - return true; - } - - /** - * Return a read-only Map holding the properties associated with - * this format. - */ - public Map<String, Object> properties() - { - return properties; - } - - /** - * Return a description of this format. - */ - public String toString() - { - CPStringBuilder result = new CPStringBuilder(); - - // usually at least encoding should be somewhat specified - result.append(encoding); - - if (sampleRate != AudioSystem.NOT_SPECIFIED) - { - result.append(" "); - result.append(sampleRate); - result.append(" Hz"); - } - - if (sampleSizeInBits != AudioSystem.NOT_SPECIFIED) - { - result.append(" "); - result.append(sampleSizeInBits); - result.append(" bits"); - } - - if (channels != AudioSystem.NOT_SPECIFIED) - { - result.append(" "); - result.append(channels); - result.append(" channel"); - if (channels > 1) result.append("s"); - } - - if (sampleSizeInBits > 8) - result.append(bigEndian ? " big endian" : " little endian"); - - return result.toString(); - } -} diff --git a/libjava/classpath/javax/sound/sampled/AudioInputStream.java b/libjava/classpath/javax/sound/sampled/AudioInputStream.java deleted file mode 100644 index 526e7e1..0000000 --- a/libjava/classpath/javax/sound/sampled/AudioInputStream.java +++ /dev/null @@ -1,258 +0,0 @@ -/* - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -import java.io.IOException; -import java.io.InputStream; - -/** - * This is an InputStream which is specialized for reading audio files. - * In particular it only allows operations to act on a multiple of - * the audio stream's frame size. - * @since 1.3 - */ -public class AudioInputStream extends InputStream -{ - /** The format of the audio stream. */ - protected AudioFormat format; - - /** The length of the audio stream in frames. */ - protected long frameLength; - - /** The current frame position, starting from frame zero. */ - protected long framePos; - - /** The size of a frame in bytes. */ - protected int frameSize; - - // I wonder why this class doesn't inherit from FilterInputStream. - private InputStream input; - - // The saved frame position, used for mark/reset. - private long markedFramePos; - - /** - * Create a new AudioInputStream given an underlying InputStream, - * the audio format, and the length of the data in frames. The - * frame size is taken from the format. - * @param is the underlying input stream - * @param fmt the format of the data - * @param length the length of the data in frames - */ - public AudioInputStream(InputStream is, AudioFormat fmt, long length) - { - this.format = fmt; - this.frameLength = length; - this.framePos = 0; - this.frameSize = fmt.getFrameSize(); - this.input = is; - } - - /** - * Create a new AudioInputStream given a TargetDataLine. The audio - * format and the frame size are taken from the line. - * @param line the TargetDataLine - */ - public AudioInputStream(TargetDataLine line) - { - this(new TargetInputStream(line), line.getFormat(), - AudioSystem.NOT_SPECIFIED); - } - - /** - * Return the number of bytes available to be read from the - * underlying stream. This wrapper method ensures that the result - * is always a multiple of the frame size. - */ - public int available() throws IOException - { - int result = input.available(); - // Ensure result is a multiple of the frame size. - if (frameSize != AudioSystem.NOT_SPECIFIED) - result -= result % frameSize; - return result; - } - - /** - * Close the stream. - */ - public void close() throws IOException - { - input.close(); - } - - /** - * Get the format associated with this stream. - * @return the AudioFormat - */ - public AudioFormat getFormat() - { - return format; - } - - /** - * Get the length of this stream in frames. Note that this - * may be AudioSystem#NOT_SPECIFIED. - * @return the length of the stream in frames - */ - public long getFrameLength() - { - return frameLength; - } - - public void mark(int limit) - { - input.mark(limit); - markedFramePos = framePos; - } - - /** - * Return true if the underlying stream supports mark and reset, - * false otherwise. - */ - public boolean markSupported() - { - return input.markSupported(); - } - - /** - * Read a single byte from the underlying stream. If the frame - * size is set, and is not one byte, an IOException will be thrown. - */ - public int read() throws IOException - { - if (frameSize != 1) - throw new IOException("frame size must be 1 for read()"); - int result; - if (framePos == frameLength) - result = -1; - else - result = input.read(); - if (result != -1) - ++framePos; - return result; - } - - public int read(byte[] buf) throws IOException - { - return read(buf, 0, buf.length); - } - - public int read(byte[] buf, int offset, int length) throws IOException - { - int result; - if (framePos == frameLength) - result = -1; - else - { - int myFrameSize = (frameSize == AudioSystem.NOT_SPECIFIED - ? 1 : frameSize); - // Ensure length is a multiple of frame size. - length -= length % myFrameSize; - - result = 0; - while (result == 0 || result % myFrameSize != 0) - { - int val = input.read(buf, offset, length); - if (val < 0) - { - // This is a weird situation as we might have read a - // frame already. It isn't clear at all what to do if - // we only found a partial frame. For now we just - // return whatever we did find. - if (result == 0) - return -1; - result -= result % myFrameSize; - break; - } - result += val; - } - // assert result % myFrameSize == 0; - framePos += result / myFrameSize; - } - return result; - } - - public void reset() throws IOException - { - input.reset(); - framePos = markedFramePos; - } - - public long skip(long n) throws IOException - { - if (frameSize != AudioSystem.NOT_SPECIFIED) - n -= n % frameSize; - long actual = input.skip(n); - if (frameSize != AudioSystem.NOT_SPECIFIED) - framePos += actual / frameSize; - return actual; - } - - private static class TargetInputStream extends InputStream - { - private TargetDataLine line; - private byte[] buf; - - /** - * Create a new TargetInputStream. - * @param line the line to wrap - */ - public TargetInputStream(TargetDataLine line) - { - this.line = line; - // FIXME: do we have to call line.open()? - } - - public synchronized int read() throws IOException - { - if (buf == null) - buf = new byte[1]; - int count = read(buf, 0, 1); - if (count < 0) - return -1; - return buf[0]; - } - - public int read(byte[] buf, int offset, int length) throws IOException - { - return line.read(buf, offset, length); - } - } -} diff --git a/libjava/classpath/javax/sound/sampled/AudioPermission.java b/libjava/classpath/javax/sound/sampled/AudioPermission.java deleted file mode 100644 index a5325c9..0000000 --- a/libjava/classpath/javax/sound/sampled/AudioPermission.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -import java.security.BasicPermission; - -/** - * This represents the permission to use an audio device. - * The only predefined permission names are "play" and "record". - * @since 1.3 - */ -public class AudioPermission extends BasicPermission -{ - private static final long serialVersionUID = -5518053473477801126L; - - /** - * Construct an AudioPermission with the given name. - * @param name the name of the permission, like "play" or "record" - */ - public AudioPermission(String name) - { - super(name); - } - - /** - * Construct an AudioPermission with the given name. - * @param name the name of the permission, like "play" or "record" - * @param actions the actions; should be null - */ - public AudioPermission(String name, String actions) - { - super(name, actions); - } -} diff --git a/libjava/classpath/javax/sound/sampled/AudioSystem.java b/libjava/classpath/javax/sound/sampled/AudioSystem.java deleted file mode 100644 index 5999521..0000000 --- a/libjava/classpath/javax/sound/sampled/AudioSystem.java +++ /dev/null @@ -1,756 +0,0 @@ -/* Main interface to audio system - Copyright (C) 2005, 2012 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -import gnu.classpath.ServiceFactory; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URL; -import java.util.HashSet; -import java.util.Iterator; - -import javax.sound.sampled.spi.AudioFileReader; -import javax.sound.sampled.spi.AudioFileWriter; -import javax.sound.sampled.spi.FormatConversionProvider; -import javax.sound.sampled.spi.MixerProvider; - -/** - * This clas is the primary interface to the audio system. It contains - * a number of static methods which can be used to access this package's - * functionality. - * - * @since 1.3 - */ -public class AudioSystem -{ - /** - * A constant which can be passed to a number of methods in this package, - * to indicate an unspecified value. - */ - public static final int NOT_SPECIFIED = -1; - - // This class is not instantiable. - private AudioSystem() - { - } - - /** - * Return the file format of a given File. - * @param f the file to check - * @return the format of the file - * @throws UnsupportedAudioFileException if the file's format is not - * recognized - * @throws IOException if there is an I/O error reading the file - */ - public static AudioFileFormat getAudioFileFormat(File f) - throws UnsupportedAudioFileException, IOException - { - Iterator<AudioFileReader> i = ServiceFactory.lookupProviders(AudioFileReader.class); - while (i.hasNext()) - { - AudioFileReader reader = i.next(); - try - { - return reader.getAudioFileFormat(f); - } - catch (UnsupportedAudioFileException _) - { - // Try the next provider. - } - } - throw new UnsupportedAudioFileException("file type not recognized"); - } - - /** - * Return the file format of a given input stream. - * @param is the input stream to check - * @return the format of the stream - * @throws UnsupportedAudioFileException if the stream's format is not - * recognized - * @throws IOException if there is an I/O error reading the stream - */ - public static AudioFileFormat getAudioFileFormat(InputStream is) - throws UnsupportedAudioFileException, IOException - { - Iterator<AudioFileReader> i = ServiceFactory.lookupProviders(AudioFileReader.class); - while (i.hasNext()) - { - AudioFileReader reader = i.next(); - try - { - return reader.getAudioFileFormat(is); - } - catch (UnsupportedAudioFileException _) - { - // Try the next provider. - } - } - throw new UnsupportedAudioFileException("input stream type not recognized"); - } - - /** - * Return the file format of a given URL. - * @param url the URL to check - * @return the format of the URL - * @throws UnsupportedAudioFileException if the URL's format is not - * recognized - * @throws IOException if there is an I/O error reading the URL - */ - public static AudioFileFormat getAudioFileFormat(URL url) - throws UnsupportedAudioFileException, IOException - { - Iterator<AudioFileReader> i = ServiceFactory.lookupProviders(AudioFileReader.class); - while (i.hasNext()) - { - AudioFileReader reader = i.next(); - try - { - return reader.getAudioFileFormat(url); - } - catch (UnsupportedAudioFileException _) - { - // Try the next provider. - } - } - throw new UnsupportedAudioFileException("URL type not recognized"); - } - - /** - * Return an array of all the supported AudioFileFormat types. - * @return an array of unique types - */ - public static AudioFileFormat.Type[] getAudioFileTypes() - { - HashSet<AudioFileFormat.Type> result - = new HashSet<AudioFileFormat.Type>(); - Iterator<AudioFileWriter> i = ServiceFactory.lookupProviders(AudioFileWriter.class); - while (i.hasNext()) - { - AudioFileWriter writer = i.next(); - AudioFileFormat.Type[] types = writer.getAudioFileTypes(); - for (int j = 0; j < types.length; ++j) - result.add(types[j]); - } - return result.toArray(new AudioFileFormat.Type[result.size()]); - } - - /** - * Return an array of all the supported AudioFileFormat types which match the - * given audio input stream - * @param ais the audio input stream - * @return an array of unique types - */ - public static AudioFileFormat.Type[] getAudioFileTypes(AudioInputStream ais) - { - HashSet<AudioFileFormat.Type> result - = new HashSet<AudioFileFormat.Type>(); - Iterator<AudioFileWriter> i = ServiceFactory.lookupProviders(AudioFileWriter.class); - while (i.hasNext()) - { - AudioFileWriter writer = i.next(); - AudioFileFormat.Type[] types = writer.getAudioFileTypes(ais); - for (int j = 0; j < types.length; ++j) - result.add(types[j]); - } - return result.toArray(new AudioFileFormat.Type[result.size()]); - } - - /** - * Given an audio input stream, this will try to create a new audio input - * stream whose encoding matches the given target encoding. If no provider - * offers this conversion, an exception is thrown. - * @param targ the target encoding - * @param ais the original audio stream - * @return a new audio stream - * @throws IllegalArgumentException if the conversion cannot be made - */ - public static AudioInputStream getAudioInputStream(AudioFormat.Encoding targ, - AudioInputStream ais) - { - Iterator<FormatConversionProvider> i = - ServiceFactory.lookupProviders(FormatConversionProvider.class); - while (i.hasNext()) - { - FormatConversionProvider prov = i.next(); - if (! prov.isConversionSupported(targ, ais.getFormat())) - continue; - return prov.getAudioInputStream(targ, ais); - } - throw new IllegalArgumentException("encoding not supported for stream"); - } - - /** - * Given an audio input stream, this will try to create a new audio input - * stream whose format matches the given target format. If no provider - * offers this conversion, an exception is thrown. - * @param targ the target format - * @param ais the original audio stream - * @return a new audio stream - * @throws IllegalArgumentException if the conversion cannot be made - */ - public static AudioInputStream getAudioInputStream(AudioFormat targ, - AudioInputStream ais) - { - Iterator<FormatConversionProvider> i = - ServiceFactory.lookupProviders(FormatConversionProvider.class); - while (i.hasNext()) - { - FormatConversionProvider prov = i.next(); - if (! prov.isConversionSupported(targ, ais.getFormat())) - continue; - return prov.getAudioInputStream(targ, ais); - } - throw new IllegalArgumentException("format not supported for stream"); - } - - /** - * Return an audio input stream for the file. - * @param f the file to read - * @return an audio input stream for the file - * @throws UnsupportedAudioFileException if the file's audio format is not - * recognized - * @throws IOException if there is an error while reading the file - */ - public static AudioInputStream getAudioInputStream(File f) - throws UnsupportedAudioFileException, IOException - { - Iterator<AudioFileReader> i = ServiceFactory.lookupProviders(AudioFileReader.class); - while (i.hasNext()) - { - AudioFileReader reader = i.next(); - try - { - return reader.getAudioInputStream(f); - } - catch (UnsupportedAudioFileException _) - { - // Try the next provider. - } - } - throw new UnsupportedAudioFileException("file type not recognized"); - } - - /** - * Return an audio input stream given an input stream. - * @param is the input stream - * @return an audio input stream - * @throws UnsupportedAudioFileException if the input stream's audio format - * is not supported by any of the installed providers - * @throws IOException if there is an error while reading the input stream - */ - public static AudioInputStream getAudioInputStream(InputStream is) - throws UnsupportedAudioFileException, IOException - { - Iterator<AudioFileReader> i = ServiceFactory.lookupProviders(AudioFileReader.class); - while (i.hasNext()) - { - AudioFileReader reader = i.next(); - try - { - return reader.getAudioInputStream(is); - } - catch (UnsupportedAudioFileException _) - { - // Try the next provider. - } - } - throw new UnsupportedAudioFileException("input stream type not recognized"); - } - - /** - * Return an audio input stream for the given URL. - * @param url the URL - * @return an audio input stream - * @throws UnsupportedAudioFileException if the URL's audio format is not - * supported by any of the installed providers - * @throws IOException if there is an error while reading the URL - */ - public static AudioInputStream getAudioInputStream(URL url) - throws UnsupportedAudioFileException, IOException - { - Iterator<AudioFileReader> i = ServiceFactory.lookupProviders(AudioFileReader.class); - while (i.hasNext()) - { - AudioFileReader reader = i.next(); - try - { - return reader.getAudioInputStream(url); - } - catch (UnsupportedAudioFileException _) - { - // Try the next provider. - } - } - throw new UnsupportedAudioFileException("URL type not recognized"); - } - - /** - * Return a new clip which can be used for playing back an audio stream. - * @throws LineUnavailableException if a clip is not available for some - * reason - * @throws SecurityException if a clip cannot be made for security reasons - * @since 1.5 - */ - public static Clip getClip() - throws LineUnavailableException - { - Mixer.Info[] infos = getMixerInfo(); - for (int i = 0; i < infos.length; ++i) - { - Mixer mix = getMixer(infos[i]); - Line[] lines = mix.getSourceLines(); - for (int j = 0; j < lines.length; ++j) - { - if (lines[j] instanceof Clip) - return (Clip) lines[j]; - } - } - throw new LineUnavailableException("no Clip available"); - } - - /** - * Return a new clip which can be used for playing back an audio stream. - * The clip is obtained from the indicated mixer. - * @param info the mixer to use - * @throws LineUnavailableException if a clip is not available for some - * reason - * @throws SecurityException if a clip cannot be made for security reasons - * @since 1.5 - */ - public static Clip getClip(Mixer.Info info) - throws LineUnavailableException - { - Mixer mix = getMixer(info); - Line[] lines = mix.getSourceLines(); - for (int j = 0; j < lines.length; ++j) - { - if (lines[j] instanceof Clip) - return (Clip) lines[j]; - } - throw new LineUnavailableException("no Clip available"); - } - - /** - * Return a line matching the provided description. All the providers - * on the system are searched for a matching line. - * @param info description of the line - * @return the matching line - * @throws LineUnavailableException if no provider supplies a matching line - */ - public static Line getLine(Line.Info info) throws LineUnavailableException - { - Mixer.Info[] infos = getMixerInfo(); - for (int i = 0; i < infos.length; ++i) - { - Mixer mix = getMixer(infos[i]); - try - { - return mix.getLine(info); - } - catch (LineUnavailableException _) - { - // Try the next provider. - } - } - throw new LineUnavailableException("no Clip available"); - } - - /** - * Return a mixer matching the provided description. All the providers - * on the system are searched for a matching mixer. - * @param info description of the mixer - * @return the matching mixer - * @throws IllegalArgumentException if no provider supplies a matching mixer - */ - public static Mixer getMixer(Mixer.Info info) - { - Iterator<MixerProvider> i = ServiceFactory.lookupProviders(MixerProvider.class); - while (i.hasNext()) - { - MixerProvider prov = i.next(); - if (prov.isMixerSupported(info)) - return prov.getMixer(info); - } - throw new IllegalArgumentException("mixer not found"); - } - - /** - * Return an array of descriptions of all the mixers provided on the system. - */ - public static Mixer.Info[] getMixerInfo() - { - HashSet<Mixer.Info> result = new HashSet<Mixer.Info>(); - Iterator<MixerProvider> i = ServiceFactory.lookupProviders(MixerProvider.class); - while (i.hasNext()) - { - MixerProvider prov = i.next(); - Mixer.Info[] is = prov.getMixerInfo(); - for (int j = 0; j < is.length; ++j) - result.add(is[j]); - } - return result.toArray(new Mixer.Info[result.size()]); - } - - /** - * Return a source data line matching the given audio format. - * @param fmt the audio format - * @throws LineUnavailableException if no source data line matching - * this format is available - * @since 1.5 - */ - public static SourceDataLine getSourceDataLine(AudioFormat fmt) - throws LineUnavailableException - { - DataLine.Info info = new DataLine.Info(SourceDataLine.class, fmt); - Mixer.Info[] mixers = getMixerInfo(); - for (int i = 0; i < mixers.length; ++i) - { - Mixer mix = getMixer(mixers[i]); - if (mix.isLineSupported(info)) - return (SourceDataLine) mix.getLine(info); - } - throw new LineUnavailableException("source data line not found"); - } - - /** - * Return a target data line matching the given audio format. - * @param fmt the audio format - * @throws LineUnavailableException if no target data line matching - * this format is available - * @since 1.5 - */ - public static SourceDataLine getSourceDataLine(AudioFormat fmt, - Mixer.Info mixer) - throws LineUnavailableException - { - DataLine.Info info = new DataLine.Info(SourceDataLine.class, fmt); - Mixer mix = getMixer(mixer); - if (mix.isLineSupported(info)) - return (SourceDataLine) mix.getLine(info); - throw new LineUnavailableException("source data line not found"); - } - - /** - * Return an array of descriptions of all the source lines matching - * the given line description. - * @param info description of the lines to match - */ - public static Line.Info[] getSourceLineInfo(Line.Info info) - { - HashSet<Line.Info> result = new HashSet<Line.Info>(); - Mixer.Info[] infos = getMixerInfo(); - for (int i = 0; i < infos.length; ++i) - { - Mixer mix = getMixer(infos[i]); - Line.Info[] srcs = mix.getSourceLineInfo(info); - for (int j = 0; j < srcs.length; ++j) - result.add(srcs[j]); - } - return result.toArray(new Line.Info[result.size()]); - } - - /** - * Find and return a target data line matching the given audio format. - * @param fmt the format to match - * @throws LineUnavailableException if no matching line was found - * @since 1.5 - */ - public static TargetDataLine getTargetDataLine(AudioFormat fmt) - throws LineUnavailableException - { - DataLine.Info info = new DataLine.Info(TargetDataLine.class, fmt); - Mixer.Info[] mixers = getMixerInfo(); - for (int i = 0; i < mixers.length; ++i) - { - Mixer mix = getMixer(mixers[i]); - if (mix.isLineSupported(info)) - return (TargetDataLine) mix.getLine(info); - } - throw new LineUnavailableException("target data line not found"); - } - - /** - * Return a target data line matching the given audio format and - * mixer. - * @param fmt the audio format - * @param mixer the mixer description - * @return a target data line - * @throws LineUnavailableException if no matching target data line was - * found - * @since 1.5 - */ - public static TargetDataLine getTargetDataLine(AudioFormat fmt, - Mixer.Info mixer) - throws LineUnavailableException - { - DataLine.Info info = new DataLine.Info(TargetDataLine.class, fmt); - Mixer mix = getMixer(mixer); - if (mix.isLineSupported(info)) - return (TargetDataLine) mix.getLine(info); - throw new LineUnavailableException("target data line not found"); - } - - /** - * Given a source encoding, return an array of all target encodings to which - * data in this form can be converted. - * @param source the source encoding - */ - public static AudioFormat.Encoding[] getTargetEncodings(AudioFormat.Encoding source) - { - HashSet<AudioFormat.Encoding> result - = new HashSet<AudioFormat.Encoding>(); - Iterator<FormatConversionProvider> i = - ServiceFactory.lookupProviders(FormatConversionProvider.class); - while (i.hasNext()) - { - FormatConversionProvider prov = i.next(); - if (! prov.isSourceEncodingSupported(source)) - continue; - AudioFormat.Encoding[] es = prov.getTargetEncodings(); - for (int j = 0; j < es.length; ++j) - result.add(es[j]); - } - return result.toArray(new AudioFormat.Encoding[result.size()]); - } - - /** - * Given a source format, return an array of all the target encodings to - * which data in this format can be converted. - * @param source the source format - */ - public static AudioFormat.Encoding[] getTargetEncodings(AudioFormat source) - { - HashSet<AudioFormat.Encoding> result - = new HashSet<AudioFormat.Encoding>(); - Iterator<FormatConversionProvider> i = - ServiceFactory.lookupProviders(FormatConversionProvider.class); - while (i.hasNext()) - { - FormatConversionProvider prov = i.next(); - AudioFormat.Encoding[] es = prov.getTargetEncodings(source); - for (int j = 0; j < es.length; ++j) - result.add(es[j]); - } - return result.toArray(new AudioFormat.Encoding[result.size()]); - } - - /** - * Given a target encoding and a source audio format, return an array of all - * matching audio formats to which data in this source format can be converted. - * @param encoding the target encoding - * @param sourceFmt the source format - */ - public static AudioFormat[] getTargetFormats(AudioFormat.Encoding encoding, - AudioFormat sourceFmt) - { - HashSet<AudioFormat> result = new HashSet<AudioFormat>(); - Iterator<FormatConversionProvider> i = - ServiceFactory.lookupProviders(FormatConversionProvider.class); - while (i.hasNext()) - { - FormatConversionProvider prov = i.next(); - AudioFormat[] es = prov.getTargetFormats(encoding, sourceFmt); - for (int j = 0; j < es.length; ++j) - result.add(es[j]); - } - return result.toArray(new AudioFormat[result.size()]); - } - - /** - * Given a line description, return an array of descriptions of all - * the matching target lines. - * @param info the line description - */ - public static Line.Info[] getTargetLineInfo(Line.Info info) - { - HashSet<Line.Info> result = new HashSet<Line.Info>(); - Mixer.Info[] infos = getMixerInfo(); - for (int i = 0; i < infos.length; ++i) - { - Mixer mix = getMixer(infos[i]); - Line.Info[] targs = mix.getTargetLineInfo(info); - for (int j = 0; j < targs.length; ++j) - result.add(targs[j]); - } - return result.toArray(new Line.Info[result.size()]); - } - - /** - * Return true if the currently installed providers are able to - * convert data from the given source format to the given target encoding. - * @param targ the target encoding - * @param source the source format - */ - public static boolean isConversionSupported(AudioFormat.Encoding targ, - AudioFormat source) - { - Iterator<FormatConversionProvider> i - = ServiceFactory.lookupProviders(FormatConversionProvider.class); - while (i.hasNext()) - { - FormatConversionProvider prov = i.next(); - if (prov.isConversionSupported(targ, source)) - return true; - } - return false; - } - - /** - * Return true if the currently installed providers are able to convert - * the given source format to the given target format. - * @param targ the target format - * @param source the source format - */ - public static boolean isConversionSupported(AudioFormat targ, - AudioFormat source) - { - Iterator<FormatConversionProvider> i - = ServiceFactory.lookupProviders(FormatConversionProvider.class); - while (i.hasNext()) - { - FormatConversionProvider prov = i.next(); - if (prov.isConversionSupported(targ, source)) - return true; - } - return false; - } - - private static boolean isFileTypeSupported(AudioFileFormat.Type[] types, - AudioFileFormat.Type type) - { - for (int i = 0; i < types.length; ++i) - { - if (types[i].equals(type)) - return true; - } - return false; - } - - /** - * Return true if the given audio file format is supported by one of - * the providers installed on the system. - * @param type the audio file format type - */ - public static boolean isFileTypeSupported(AudioFileFormat.Type type) - { - return isFileTypeSupported(getAudioFileTypes(), type); - } - - /** - * Return true if the given audio file format is supported for the - * given audio input stream by one of the providers installed on the - * system. - * @param type the audio file format type - * @param ais the audio input stream - */ - public static boolean isFileTypeSupported(AudioFileFormat.Type type, - AudioInputStream ais) - { - return isFileTypeSupported(getAudioFileTypes(ais), type); - } - - /** - * Return true if some provider on the system supplies a line - * matching the argument. - * @param info the line to match - */ - public static boolean isLineSupported(Line.Info info) - { - Mixer.Info[] infos = getMixerInfo(); - for (int i = 0; i < infos.length; ++i) - { - if (getMixer(infos[i]).isLineSupported(info)) - return true; - } - return false; - } - - /** - * Write an audio input stream to the given file, using the specified - * audio file format. All the providers installed on the system will - * be searched to find one that supports this operation. - * @param ais the audio input stream to write - * @param type the desired audio file format type - * @param out the file to write to - * @return the number of bytes written - * @throws IOException if an I/O error occurs while writing - * @throws IllegalArgumentException if the file type is not supported - */ - public static int write(AudioInputStream ais, AudioFileFormat.Type type, - File out) - throws IOException - { - Iterator<AudioFileWriter> i = ServiceFactory.lookupProviders(AudioFileWriter.class); - while (i.hasNext()) - { - AudioFileWriter w = i.next(); - if (w.isFileTypeSupported(type, ais)) - return w.write(ais, type, out); - } - throw new IllegalArgumentException("file type not supported by system"); - } - - /** - * Write an audio input stream to the given output stream, using the - * specified audio file format. All the providers installed on the - * system will be searched to find one that supports this operation. - * @param ais the audio input stream to write - * @param type the desired audio file format type - * @param os the output stream to write to - * @return the number of bytes written - * @throws IOException if an I/O error occurs while writing - * @throws IllegalArgumentException if the file type is not supported - */ - public static int write(AudioInputStream ais, AudioFileFormat.Type type, - OutputStream os) - throws IOException - { - Iterator<AudioFileWriter> i = ServiceFactory.lookupProviders(AudioFileWriter.class); - while (i.hasNext()) - { - AudioFileWriter w = i.next(); - if (w.isFileTypeSupported(type, ais)) - return w.write(ais, type, os); - } - throw new IllegalArgumentException("file type not supported by system"); - } -} diff --git a/libjava/classpath/javax/sound/sampled/BooleanControl.java b/libjava/classpath/javax/sound/sampled/BooleanControl.java deleted file mode 100644 index 37e372e..0000000 --- a/libjava/classpath/javax/sound/sampled/BooleanControl.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** - * A BooleanControl is a Control which has two states. - * @since 1.3 - */ -public abstract class BooleanControl extends Control -{ - /** - * A Type specialized to represent a boolean control. - * @since 1.3 - */ - public static class Type extends Control.Type - { - // FIXME: correct constructions? - - /** - * A control for applying reverb. - */ - public final static Type APPLY_REVERB = new Type("Apply reverb"); - - /** - * A control for muting. - */ - public final static Type MUTE = new Type("Mute"); - - /** - * Create a new Type given its name. - * @param name the name of the type - */ - protected Type(String name) - { - super(name); - } - } - - private boolean value; - private String trueLabel; - private String falseLabel; - - /** - * Create a new boolean control, with the indicated Type and initial - * value. The description strings will default to "true" and "false". - * @param type the type - * @param init the initial value - */ - protected BooleanControl(Type type, boolean init) - { - super(type); - this.value = init; - this.trueLabel = "true"; - this.falseLabel = "false"; - } - - /** - * Create a new boolean control, with the indicated Type, initial - * value, and labels. - * @param type the type - * @param init the initial value - * @param trueLabel the label for the true state - * @param falseLabel the label for the false state - */ - protected BooleanControl(Type type, boolean init, String trueLabel, - String falseLabel) - { - super(type); - this.value = init; - this.trueLabel = trueLabel; - this.falseLabel = falseLabel; - } - - /** - * Return the label corresponding to the indicated state. - * @param state the state - * @return the true label or the false label, as appropriate - */ - public String getStateLabel(boolean state) - { - return state ? trueLabel : falseLabel; - } - - /** - * Return the current value of thhe control. - */ - public boolean getValue() - { - return value; - } - - /** - * Set the value of the control as indicated. - * @param value the new value - */ - public void setValue(boolean value) - { - this.value = value; - } - - /** - * Return a string describing this control. - */ - public String toString() - { - return super.toString() + ": " + getStateLabel(value); - } -} diff --git a/libjava/classpath/javax/sound/sampled/Clip.java b/libjava/classpath/javax/sound/sampled/Clip.java deleted file mode 100644 index 28b4979..0000000 --- a/libjava/classpath/javax/sound/sampled/Clip.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -import java.io.IOException; - -/** - * A Clip represents some pre-loaded audio data. - * @since 1.3 - */ -public interface Clip extends DataLine -{ - /** - * This can be passed to {@link #loop(int)} to indicate that looping - * should be done continuously. - */ - int LOOP_CONTINUOUSLY = -1; - - /** - * Return the frame length of this clip. - */ - int getFrameLength(); - - /** - * Return the length of the clip in microseconds. - */ - long getMicrosecondLength(); - - /** - * Start looping the clip. Looping will occur count times, or, if count - * is LOOP_CONTINUOUSLY, will be done continuously. A count of 0 indicates - * that any current looping should stop. - * @param count the number of times to loop - */ - void loop(int count); - - /** - * Open a clip, given an audio format and some data. - * @param fmt the format of the data - * @param data a byte array containing the audio data - * @param offset the offset of the first byte of data in the array - * @param len the length of the audio data in the array, in bytes - * @throws LineUnavailableException if the line cannot be opened - * @throws SecurityException if the line cannot be opened for security - * reasons - */ - void open(AudioFormat fmt, byte[] data, int offset, int len) - throws LineUnavailableException; - - /** - * Open a clip, given an audio input stream. - * @param ais the input stream - * @throws LineUnavailableException if the line cannot be opened - * @throws SecurityException if the line cannot be opened for security - * reasons - * @throws IOException if there is an I/O error while reading the stream - */ - void open(AudioInputStream ais) - throws LineUnavailableException, IOException; - - /** - * Set the position to the indicated frame. - * @param where new frame position - */ - void setFramePosition(int where); - - /** - * Set the loop begin and end points. These are used by loop(int). - * @param begin the starting point - * @param end the ending point - */ - void setLoopPoints(int begin, int end); - - /** - * Set the position to the indicated microsecond. - * @param ms the new position in microseconds - */ - void setMicrosecondPosition(long ms); -} diff --git a/libjava/classpath/javax/sound/sampled/CompoundControl.java b/libjava/classpath/javax/sound/sampled/CompoundControl.java deleted file mode 100644 index 2b8941c..0000000 --- a/libjava/classpath/javax/sound/sampled/CompoundControl.java +++ /dev/null @@ -1,104 +0,0 @@ -/* Control consisting of several other controls - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -import gnu.java.lang.CPStringBuilder; - -/** - * A compound control provides control over several other controls. - * @since 1.3 - */ -public abstract class CompoundControl extends Control -{ - /** - * This describes a single compound control. - * @since 1.3 - */ - public static class Type extends Control.Type - { - /** - * Create a new Type given its name. - * @param name the name of the type - */ - protected Type(String name) - { - super(name); - } - } - - private Control[] memberControls; - - /** - * Create a new compound control given its type and members. - * @param type the type of the compound control - * @param members the members of the compound control - */ - protected CompoundControl(Type type, Control[] members) - { - super(type); - // FIXME: clone? - this.memberControls = members; - } - - /** - * Return the members of this compound control. - */ - public Control[] getMemberControls() - { - // FIXME: clone? - return memberControls; - } - - /** - * Return a string description of this compound control. - */ - public String toString() - { - CPStringBuilder result = new CPStringBuilder(); - result.append(super.toString()); - result.append(": "); - for (int i = 0; i < memberControls.length; ++i) - { - if (i > 0) - result.append(", "); - result.append(memberControls[i].toString()); - } - return result.toString(); - } -} diff --git a/libjava/classpath/javax/sound/sampled/Control.java b/libjava/classpath/javax/sound/sampled/Control.java deleted file mode 100644 index 4759a33..0000000 --- a/libjava/classpath/javax/sound/sampled/Control.java +++ /dev/null @@ -1,111 +0,0 @@ -/* Control over an attribute of a line - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** - * A control provides the ability to affect some attribute of a line, - * for instance its volume. - * @since 1.3 - */ -public abstract class Control -{ - /** - * This describes a single control. - * @since 1.3 - */ - public static class Type - { - private String name; - - /** - * Create a new Type given its name. - * @param name the name of the type - */ - protected Type(String name) - { - this.name = name; - } - - public final boolean equals(Object o) - { - return super.equals(o); - } - - public final int hashCode() - { - return super.hashCode(); - } - - /** - * Return the name of this Type. - */ - public final String toString() - { - return name; - } - } - - private Type type; - - /** - * Create a new Control given its Type. - * @param type the type - */ - protected Control(Type type) - { - this.type = type; - } - - /** - * Return the Type of this Control. - */ - public Type getType() - { - return type; - } - - /** - * Return a String descrsibing this control. In particular the - * value will include the name of the associated Type. - */ - public String toString() - { - return type.toString(); - } -} diff --git a/libjava/classpath/javax/sound/sampled/DataLine.java b/libjava/classpath/javax/sound/sampled/DataLine.java deleted file mode 100644 index 5d88c6a..0000000 --- a/libjava/classpath/javax/sound/sampled/DataLine.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - Copyright (C) 2005-2007 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package javax.sound.sampled; - -import gnu.java.lang.CPStringBuilder; - -/** - * The DataLine interface adds data-related functionality to the Line - * interface. For example, it adds methods to start and stop the data - * on the line. - * @since 1.3 - */ -public interface DataLine extends Line -{ - /** - * This class extends Line.Info with information specific to DataLine. - * In particular it adds information about buffer sizes, and about supported - * audio formats. - * @since 1.3 - */ - class Info extends Line.Info - { - private int minBufferSize; - private int maxBufferSize; - private AudioFormat[] formats; - - /** - * Create a new Info given the line's class and a supported - * audio format. The buffer sizes default to AudioSystem.NOT_SPECIFIED. - * @param klass the class of the line - * @param fmt the supported format - */ - public Info(Class<?> klass, AudioFormat fmt) - { - super(klass); - this.minBufferSize = AudioSystem.NOT_SPECIFIED; - this.maxBufferSize = AudioSystem.NOT_SPECIFIED; - this.formats = new AudioFormat[] { fmt }; - } - - /** - * Create a new Info given the line's class, the supported audio formats, - * the minimum buffer size, and the maximum buffer size. - * @param klass the class of the linee - * @param fmts the supported audio formats - * @param minSize the minimum buffer size - * @param maxSize the maximum buffer size - */ - public Info(Class<?> klass, AudioFormat[] fmts, int minSize, int maxSize) - { - super(klass); - this.minBufferSize = minSize; - this.maxBufferSize = maxSize; - this.formats = fmts; - } - - /** - * Create a new Info given the line's class, a supported - * audio format, and a buffer size. Both the minimum and maximum - * sizes are set from this size. - * @param klass the class of the line - * @param fmt the supported format - * @param size the buffer size - */ - public Info(Class<?> klass, AudioFormat fmt, int size) - { - super(klass); - this.minBufferSize = size; - this.maxBufferSize = size; - this.formats = new AudioFormat[] { fmt }; - } - - /** - * Return the supported audio formats. - */ - public AudioFormat[] getFormats() - { - // FIXME: clone? - return formats; - } - - /** - * Return the maximum buffer size. - */ - public int getMaxBufferSize() - { - return maxBufferSize; - } - - /** - * Return the minimum buffer size. - */ - public int getMinBufferSize() - { - return minBufferSize; - } - - /** - * Return true if the indicated audio format is supported by this - * Info, false otherwise. - * @param fmt the audio format - * @return true if the format is supported - */ - public boolean isFormatSupported(AudioFormat fmt) - { - for (int i = 0; i < formats.length; ++i) - { - if (fmt.matches(formats[i])) - return true; - } - return false; - } - - /** - * Return true if this Info matches another Info object. - */ - public boolean matches(Line.Info o) - { - if (! super.matches(o) || ! (o instanceof Info)) - return false; - - Info other = (Info) o; - if (minBufferSize < other.minBufferSize || - maxBufferSize > other.maxBufferSize) - return false; - - for (int i = 0; i < formats.length; ++i) - { - boolean ok = false; - for (int j = 0; j < other.formats.length; ++j) - { - if (formats[i].matches(other.formats[j])) - { - ok = true; - break; - } - } - if (! ok) - return false; - } - - return true; - } - - /** - * Return a description of this Info object. - */ - public String toString() - { - CPStringBuilder result = new CPStringBuilder(); - result.append("formats: ["); - for (int i = 0; i < formats.length; ++i) - { - if (i > 0) - result.append(", "); - result.append(formats[i].toString()); - } - - result.append("]; minBufferSize: "); - result.append(minBufferSize); - result.append("; maxBufferSize: "); - result.append(maxBufferSize); - return result.toString(); - } - - } // end class: Info - - /** - * Return the number of bytes currently available on this DataLine. - */ - int available(); - - /** - * This method blocks until whatever data is buffered in the - * DataLine's internal buffer has been drained. - */ - void drain(); - - /** - * This flushes the DataLine by discarding any buffered data. - */ - void flush(); - - /** - * Returns the size of the DataLine's internal buffer, in bytes. - */ - int getBufferSize(); - - /** - * Return the current format of the data associated with this DataLine. - */ - AudioFormat getFormat(); - - /** - * Return the current frame position. - */ - int getFramePosition(); - - /** - * Return the volume level for this DataLine. - */ - float getLevel(); - - /** - * Return the current frame position. - * @since 1.5 - */ - long getLongFramePosition(); - - /** - * Return the number of microseconds this DataLine has been playing. - */ - long getMicrosecondPosition(); - - /** - * Return true if this line is active, meaning that it is actively - * performing audio I/O. - */ - boolean isActive(); - - /** - * Return true if this line is running, meaning that it has been - * started. When the line is stopped, this method will return false. - */ - boolean isRunning(); - - /** - * Start processing data. This will emit a START event. - */ - void start(); - - /** - * Stop processing data. This will emit a STOP event. - */ - void stop(); -} diff --git a/libjava/classpath/javax/sound/sampled/EnumControl.java b/libjava/classpath/javax/sound/sampled/EnumControl.java deleted file mode 100644 index 7a03242..0000000 --- a/libjava/classpath/javax/sound/sampled/EnumControl.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** - * An EnumControl is a Control which can take one of a specified set of - * values. - * @since 1.3 - */ -public abstract class EnumControl extends Control -{ - /** - * This Type describes an EnumControl. - * @since 1.3 - */ - public static class Type extends Control.Type - { - /** This describes an enum control used for reverb. */ - public static final Type REVERB = new Type("Reverb"); - - /** - * Create a new Type given its name. - * @param name the name of the type - */ - protected Type(String name) - { - super(name); - } - } - - private Object[] values; - private Object value; - - /** - * Create a new enumerated control given its Type, the range of valid - * values, and its initial value. - * @param type the type - * @param values the valid values - * @param val the initial value - */ - protected EnumControl(Type type, Object[] values, Object val) - { - super(type); - // FIXME: error checking: values.length>0, val in values... ? - // FIXME: clone here? - this.values = values; - this.value = val; - } - - /** - * Return the current value of this control. - */ - public Object getValue() - { - return value; - } - - /** - * Return the valid values for this control. - */ - public Object[] getValues() - { - // FIXME: clone here? - return values; - } - - /** - * Set the value of this control. If the indicated value is not among - * the valid values, this method will throw an IllegalArgumentException. - * @param value the new value - * @throws IllegalArgumentException if the new value is invalid - */ - public void setValue(Object value) - { - for (int i = 0; i < values.length; ++i) - { - if (! values[i].equals(value)) - throw new IllegalArgumentException("value not supported"); - } - this.value = value; - } - - /** - * Return a string describing this control. - */ - public String toString() - { - return super.toString() + ": " + value; - } -} diff --git a/libjava/classpath/javax/sound/sampled/FloatControl.java b/libjava/classpath/javax/sound/sampled/FloatControl.java deleted file mode 100644 index 6ae9178..0000000 --- a/libjava/classpath/javax/sound/sampled/FloatControl.java +++ /dev/null @@ -1,267 +0,0 @@ -/* Floating point control - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** @since 1.3 */ -public abstract class FloatControl extends Control -{ - /** - * An instance of this class describes a particular floating point control. - * @since 1.3 - */ - public static class Type extends Control.Type - { - /** Auxiliary return gain. */ - public static final Type AUX_RETURN = new Type("AUX return"); - - /** Auxiliary send gain. */ - public static final Type AUX_SEND = new Type("AUX send"); - - /** Balance. */ - public static final Type BALANCE = new Type("Balance"); - - /** Master gain control. */ - public static final Type MASTER_GAIN = new Type("Master gain"); - - /** Control for panning. */ - public static final Type PAN = new Type("Pan"); - - /** Post-reverb gain. */ - public static final Type REVERB_RETURN = new Type("Reverb return"); - - /** Pre-reverb gain. */ - public static final Type REVERB_SEND = new Type("Reverb send"); - - /** Control the sample rate. */ - public static final Type SAMPLE_RATE = new Type("Sample rate"); - - /** Volume control. */ - public static final Type VOLUME = new Type("Volume"); - - /** - * Create a new type given its name. - * @param name the name of the type - */ - protected Type(String name) - { - super(name); - } - } - - private float minimum; - private float maximum; - private float precision; - private int updatePeriod; - private float value; - private String units; - private String minLabel; - private String maxLabel; - private String midLabel; - - /** - * Create a new FloatControl given its type and various parameters. - * The minimum, maximum, and midpoint labels will all be the empty string. - * - * @param type the type - * @param min the minimum valuee - * @param max the maximum value - * @param prec the precision - * @param update the update period - * @param init the initial value - * @param units the description of the units - */ - protected FloatControl(Type type, float min, float max, float prec, - int update, float init, String units) - { - super(type); - this.minimum = min; - this.maximum = max; - this.precision = prec; - this.updatePeriod = update; - this.value = init; - this.units = units; - this.minLabel = ""; - this.maxLabel = ""; - this.midLabel = ""; - } - - /** - * Create a new FloatControl given its type and various parameters. - * - * @param type the type - * @param min the minimum valuee - * @param max the maximum value - * @param prec the precision - * @param update the update period - * @param init the initial value - * @param units the description of the units - * @param minLabel the label for the minimum value - * @param midLabel the label for the midpoint - * @param maxLabel the label for the maximum value - */ - protected FloatControl(Type type, float min, float max, float prec, - int update, float init, String units, - String minLabel, String midLabel, String maxLabel) - { - super(type); - this.minimum = min; - this.maximum = max; - this.precision = prec; - this.updatePeriod = update; - this.value = init; - this.units = units; - this.minLabel = minLabel; - this.maxLabel = maxLabel; - this.midLabel = midLabel; - } - - /** - * Return the maximum value of this control. - */ - public float getMaximum() - { - return maximum; - } - - /** - * Return the label for the minimum value of this control. - */ - public String getMaxLabel() - { - return maxLabel; - } - - /** - * Return the label for the midpoint of this control. - */ - public String getMidLabel() - { - return midLabel; - } - - /** - * Return the minimum value of this control. - */ - public float getMinimum() - { - return minimum; - } - - /** - * Return the label for the minimum value of this control. - */ - public String getMinLabel() - { - return minLabel; - } - - /** - * Return the precision of this control. - */ - public float getPrecision() - { - return precision; - } - - /** - * Return the name of the units for this control. - */ - public String getUnits() - { - return units; - } - - /** - * Return the update period of this control. - */ - public int getUpdatePeriod() - { - return updatePeriod; - } - - /** - * Return the current value of this control. - */ - public float getValue() - { - return value; - } - - /** - * Set the new value of this control. - * @param value the new value - * @throws IllegalArgumentException if the new value is greater than the - * maximum or less than the minimum. - */ - public void setValue(float value) - { - if (value < minimum || value > maximum) - throw new IllegalArgumentException("value out of range"); - this.value = value; - } - - /** - * This tells the control to start at the starting value - * and to shift its value incrementally to the final value - * over the given time interval, specified in microseconds. - * The default implementation does not do this, but instead - * simply sets the value to the final value immediately. - * - * @param from the starting value - * @param to the final value - * @param ms the number of microseconds - */ - public void shift(float from, float to, int ms) - { - if (from < minimum || from > maximum - || to < minimum || to > maximum - || ms < 0) - throw new IllegalArgumentException("argument out of range"); - // The default just sets the value to TO. - this.value = to; - } - - /** - * Return a string describing this control. - */ - public String toString() - { - return super.toString() + ": " + value; - } -} diff --git a/libjava/classpath/javax/sound/sampled/Line.java b/libjava/classpath/javax/sound/sampled/Line.java deleted file mode 100644 index 1e08f1a..0000000 --- a/libjava/classpath/javax/sound/sampled/Line.java +++ /dev/null @@ -1,151 +0,0 @@ -/* An input or output line - Copyright (C) 2005, 2012 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** - * A Line represents a single input or output audio line. - * @since 1.3 - */ -public interface Line - extends AutoCloseable -{ - /** - * An object of this type holds information about a Line. - * @since 1.3 - */ - class Info - { - private Class<?> klass; - - /** - * Create a new Info object. The argument is the class of the line, - * for instance TargetDataLine.class. - * @param klass the class of the line - */ - public Info(Class<?> klass) - { - this.klass = klass; - } - - /** - * Return the line's class. - */ - public Class<?> getLineClass() - { - return klass; - } - - /** - * Return true if this Info object matches the given object. - * @param other the object to match - * @return true if they match, false otherwise - */ - public boolean matches(Info other) - { - return klass.equals(other.klass); - } - - /** - * Return a description of this Info object. - */ - public String toString() - { - return klass.toString(); - } - } - - /** - * Add a listener which will be notified whenever this Line changes state. - * @param listener the listener to notify - */ - void addLineListener(LineListener listener); - - /** - * Close this line. - */ - void close(); - - /** - * Return the control associated with this Line that matches the - * argument. - * @param what the type of the control to match - * @return the associated control - * @throws IllegalArgumentException if a control of this type is not - * available for this line - */ - Control getControl(Control.Type what); - - /** - * Return an array of controls associated with this Line. Note that - * this method will not return null -- if there are no controls, it - * will return a zero-length array. - */ - Control[] getControls(); - - /** - * Return the Info object associated with this Line. - */ - Info getLineInfo(); - - /** - * Return true if a Control matching the argument is available for this - * Line, false otherwise. - * @param what the type of the control to match - */ - boolean isControlSupported(Control.Type what); - - /** - * Return true if this line is open, false otherwise. - */ - boolean isOpen(); - - /** - * Open this line. - * @throws LineUnavailableException if the line is unavailable for some - * reason - */ - void open() throws LineUnavailableException; - - /** - * Remove the listener from this Line; after this call the listener will - * no longer be notified when this Line changes state. - * @param listener the listener to remove - */ - void removeLineListener(LineListener listener); -} diff --git a/libjava/classpath/javax/sound/sampled/LineEvent.java b/libjava/classpath/javax/sound/sampled/LineEvent.java deleted file mode 100644 index 43a184c..0000000 --- a/libjava/classpath/javax/sound/sampled/LineEvent.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -import java.io.IOException; -import java.io.NotSerializableException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.util.EventObject; - -/** - * This class holds information about a state change of a Line. - * @specnote This class is not really serializable, and attempts to - * serialize it will throw {@link NotSerializableException}. - * @since 1.3 - */ -public class LineEvent extends EventObject -{ - // We define this even though this class can't be serialized, in - // order to placate the compiler. - private static final long serialVersionUID = -1274246333383880410L; - - /** - * This class represents the kinds of state changes that can occur - * to a Line. The standard states are availabe as static instances. - * @since 1.3 - */ - public static class Type - { - /** An event of this type is posted when a Line closes. */ - public static final Type CLOSE = new Type("close"); - - /** An event of this type is posted when a Line opens. */ - public static final Type OPEN = new Type("open"); - - /** An event of this type is posted when a Line starts. */ - public static final Type START = new Type("start"); - - /** An event of this type is posted when a Line stops. */ - public static final Type STOP = new Type("stop"); - - private String name; - - /** - * Create a new type with the indicated name. - * @param name the name - */ - protected Type(String name) - { - this.name = name; - } - - public final boolean equals(Object o) - { - return super.equals(o); - } - - public final int hashCode() - { - return super.hashCode(); - } - - /** - * Return the name of this Type. - */ - public String toString() - { - return name; - } - } - - private Type type; - private long framePosition; - private Line line; - - /** - * Create a new LineEvent with the indicated line, type, and frame position. - * @param line the line - * @param type the type of the event - * @param pos the frame position - */ - public LineEvent(Line line, Type type, long pos) - { - super(line); - this.line = line; - this.type = type; - this.framePosition = pos; - } - - /** - * Return the frame position associated with this event. - */ - public final long getFramePosition() - { - return framePosition; - } - - /** - * Return the Line associated with this event. - */ - public final Line getLine() - { - return line; - } - - /** - * Return the Type associated with this event. - */ - public final Type getType() - { - return type; - } - - /** - * Return a description of this event. - */ - public String toString() - { - return ("type=" + type + "; framePosition=" + framePosition - + "line=" + line); - } - - private void readObject(ObjectInputStream ois) - throws IOException - { - throw new NotSerializableException("LineEvent is not serializable"); - } - - private void writeObject(ObjectOutputStream oos) - throws IOException - { - throw new NotSerializableException("LineEvent is not serializable"); - } -} diff --git a/libjava/classpath/javax/sound/sampled/LineListener.java b/libjava/classpath/javax/sound/sampled/LineListener.java deleted file mode 100644 index 1b87c02..0000000 --- a/libjava/classpath/javax/sound/sampled/LineListener.java +++ /dev/null @@ -1,55 +0,0 @@ -/* Listener for Lines - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -import java.util.EventListener; - -/** - * This interface is used by classes which wish to be notified - * when the state of a Line changes. - * @since 1.3 - */ -public interface LineListener extends EventListener -{ - /** - * This is called when the line's status changes. - * @param ev the event describing the change - */ - void update(LineEvent ev); -} diff --git a/libjava/classpath/javax/sound/sampled/LineUnavailableException.java b/libjava/classpath/javax/sound/sampled/LineUnavailableException.java deleted file mode 100644 index a4655ff..0000000 --- a/libjava/classpath/javax/sound/sampled/LineUnavailableException.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** @since 1.3 */ -public class LineUnavailableException extends Exception -{ - private static final long serialVersionUID = -2046718279487432130L; - - /** - * Create a new LineUnavailableException. - */ - public LineUnavailableException() - { - } - - /** - * Create a new LineUnavailableException with the given message. - * @param msg the message - */ - public LineUnavailableException(String msg) - { - super(msg); - } -} diff --git a/libjava/classpath/javax/sound/sampled/Mixer.java b/libjava/classpath/javax/sound/sampled/Mixer.java deleted file mode 100644 index dd400f9..0000000 --- a/libjava/classpath/javax/sound/sampled/Mixer.java +++ /dev/null @@ -1,206 +0,0 @@ -/* Mixers - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** - * A Mixer is a Line which itself holds multiple lines. - * @since 1.3 - */ -public interface Mixer extends Line -{ - /** - * An Info object describes a mixer. - * @since 1.3 - */ - class Info - { - private String name; - private String description; - private String vendor; - private String version; - - /** - * Create a new mixer description. - * @param name the name of the mixer - * @param vendor the vendor - * @param desc a descriptive string - * @param vers the mixer's version - */ - protected Info(String name, String vendor, String desc, String vers) - { - this.name = name; - this.description = desc; - this.vendor = vendor; - this.version = vers; - } - - public final boolean equals(Object o) - { - return super.equals(o); - } - - public final int hashCode() - { - return super.hashCode(); - } - - /** - * Return the name of the mixer. - */ - public final String getName() - { - return name; - } - - /** - * Return the mixer's description. - */ - public final String getDescription() - { - return description; - } - - /** - * Return the mixer's vendor. - */ - public final String getVendor() - { - return vendor; - } - - /** - * Return the mixer's version. - */ - public final String getVersion() - { - return version; - } - - public final String toString() - { - return ("name=" + name + "; description=" + description - + "; vendor=" + vendor + "; version=" + version); - } - } - - /** - * Return a Line associated with this Mixer, given its description. - * @param info the description of the line to find - * @return the corresponding Line - * @throws LineUnavailableException if no Line matching the description - * exists in this Mixer - */ - Line getLine(Line.Info info) throws LineUnavailableException; - - /** - * Return the number of lines matching this description. - * @param info the description of the lines to find. - */ - int getMaxLines(Line.Info info); - - /** - * Return an Info object describing this Mixer. - */ - Info getMixerInfo(); - - /** - * Return an array of Info objects describing all the source lines - * available in this Mixer. - */ - Line.Info[] getSourceLineInfo(); - - /** - * Return an array of Info objects describing all the source lines - * available in this Mixer, which match the provided decsription. - * @param info the description of the source lines to find - */ - Line.Info[] getSourceLineInfo(Line.Info info); - - /** - * Return an array of all the source lines available in this Mixer. - */ - Line[] getSourceLines(); - - /** - * Return an array of Info objects describing all the target lines - * available in this Mixer. - */ - Line.Info[] getTargetLineInfo(); - - /** - * Return an array of Info objects describing all the target lines - * available in this Mixer, which match the provided decsription. - * @param info the description of the target lines to find - */ - Line.Info[] getTargetLineInfo(Line.Info info); - - /** - * Return an array of all the target lines available in this Mixer. - */ - Line[] getTargetLines(); - - /** - * Return true if a Line matching the given description is supported - * by this Mixer, false otherwise. - * @param info the description of the line to find - */ - boolean isLineSupported(Line.Info info); - - /** - * Return true if this Mixer supports synchronization of the given set - * of lines. - * @param lines the lines to check - * @param sync true if the synchronization must be accurate at all times - */ - boolean isSynchronizationSupported(Line[] lines, boolean sync); - - /** - * Start synchronization on the given set of lines. - * @param lines the lines to synchronize, or null for all the lines - * @param sync true if the synchronization must be accurate at all times - * @throws IllegalArgumentException if the lines cannot be synchronized - */ - void synchronize(Line[] lines, boolean sync); - - /** - * Stop synchronization for the given set of lines. - * @param lines the lines to unsynchronize, or null for all the lines - */ - void unsynchronize(Line[] lines); -} diff --git a/libjava/classpath/javax/sound/sampled/Port.java b/libjava/classpath/javax/sound/sampled/Port.java deleted file mode 100644 index 292e1f1..0000000 --- a/libjava/classpath/javax/sound/sampled/Port.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** - * A Port is a Line which represents an audio device, for instance - * a microphone. - * - * @since 1.3 - */ -public interface Port extends Line -{ - /** - * This describes a single port. - * @since 1.3 - */ - class Info extends Line.Info - { - // FIXME names? - - /** A CD player. */ - public static final Info COMPACT_DISC = new Info(Port.class, - "Compact Disc", - true); - - /** Headphones. */ - public static final Info HEADPHONE = new Info(Port.class, "Headphone", - false); - - /** Generic input line. */ - public static final Info LINE_IN = new Info(Port.class, "Line in", - true); - - /** Generic output line. */ - public static final Info LINE_OUT = new Info(Port.class, "Line out", - false); - - /** A microphone. */ - public static final Info MICROPHONE = new Info(Port.class, "Microphone", - true); - - /** A speaker. */ - public static final Info SPEAKER = new Info(Port.class, "Speaker", - false); - - private String name; - private boolean isSource; - - /** - * Create a new Info object, given the line's class, the name, - * and an argument indicating whether this is an input or an output. - * @param klass the class of the line - * @param name the name of the line - * @param isSource true if this is an input source - */ - public Info(Class<?> klass, String name, boolean isSource) - { - super(klass); - this.name = name; - this.isSource = isSource; - } - - public final boolean equals(Object o) - { - return super.equals(o); - } - - public final int hashCode() - { - return super.hashCode(); - } - - /** - * Return the name of this object. - */ - public String getName() - { - return name; - } - - /** - * Return true if this describes an input line. - */ - public boolean isSource() - { - return isSource; - } - - public boolean matches(Line.Info other) - { - return super.matches(other) && equals(other); - } - - public final String toString() - { - return super.toString() + "; name=" + name + "; isSource=" + isSource; - } - } -} diff --git a/libjava/classpath/javax/sound/sampled/ReverbType.java b/libjava/classpath/javax/sound/sampled/ReverbType.java deleted file mode 100644 index 79a4b49..0000000 --- a/libjava/classpath/javax/sound/sampled/ReverbType.java +++ /dev/null @@ -1,144 +0,0 @@ -/* Reverb attributes - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** - * This represents a reverb effect which can be applied to an audio signal. - * @since 1.3 - */ -public class ReverbType -{ - private String name; - private int earlyReflectionDelay; - private float earlyReflectionIntensity; - private int lateReflectionDelay; - private float lateReflectionIntensity; - private int decayTime; - - /** - * Create a new ReverbType given its attributes. - * @param name the name of this type - * @param earlyDelay the early delay time in microseconds - * @param earlyInten the early intensity in decibels - * @param lateDelay the late delay time in microseconds - * @param lateInten the late intensity in decibels - * @param decay the decay time in microseconds - */ - protected ReverbType(String name, int earlyDelay, float earlyInten, - int lateDelay, float lateInten, int decay) - { - this.name = name; - this.earlyReflectionDelay = earlyDelay; - this.earlyReflectionIntensity = earlyInten; - this.lateReflectionDelay = lateDelay; - this.lateReflectionIntensity = lateInten; - this.decayTime = decay; - } - - public final boolean equals(Object o) - { - return super.equals(o); - } - - public final int hashCode() - { - return super.hashCode(); - } - - /** - * Return the decay time. - */ - public final int getDecayTime() - { - return decayTime; - } - - /** - * Return the early reflection delay. - */ - public final int getEarlyReflectionDelay() - { - return earlyReflectionDelay; - } - - /** - * Return the early reflection intensity. - */ - public final float getEarlyReflectionIntensity() - { - return earlyReflectionIntensity; - } - - /** - * Return the late reflection delay. - */ - public final int getLateReflectionDelay() - { - return lateReflectionDelay; - } - - /** - * Return the late reflection intensity. - */ - public final float getLateReflectionIntensity() - { - return lateReflectionIntensity; - } - - /** - * Return the name of this ReverbType. - * @since 1.5 - */ - public String getName() - { - return name; - } - - /** - * Return a description of this ReverbType. - */ - public final String toString() - { - return ("name=" + name + "; earlyReflectionDelay=" + earlyReflectionDelay - + "; earlyReflectionIntensity=" + earlyReflectionIntensity - + "; lateReflectionDelay=" + lateReflectionDelay - + "; lateReflectionIntensity=" + lateReflectionIntensity - + "; decayTime=" + decayTime); - } -} diff --git a/libjava/classpath/javax/sound/sampled/SourceDataLine.java b/libjava/classpath/javax/sound/sampled/SourceDataLine.java deleted file mode 100644 index 6e73d6d..0000000 --- a/libjava/classpath/javax/sound/sampled/SourceDataLine.java +++ /dev/null @@ -1,77 +0,0 @@ -/* Output data line. - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** - * This is a DataLine to which data may be written. - * @since 1.3 - */ -public interface SourceDataLine extends DataLine -{ - /** - * Open the line, given the desired audio format. - * @param fmt the format to use - * @throws LineUnavailableException if the line is not available for - * some reason - * @throws SecurityException if this is prevented by the security manager - */ - void open(AudioFormat fmt) - throws LineUnavailableException; - - /** - * Open the line, given the desired audio format and the buffer size. - * @param fmt the format to use - * @param size the buffer size - * @throws LineUnavailableException if the line is not available for - * some reason - * @throws SecurityException if this is prevented by the security manager - */ - void open(AudioFormat fmt, int size) - throws LineUnavailableException; - - /** - * Write audio data to this line. The data must be an integral number - * of frames, as determined by the audio format. - * @param buf a byte array of audio data - * @param offset index of the first byte in the array to use - * @param length the number of bytes to write - * @return the number of bytes written - */ - int write(byte[] buf, int offset, int length); -} diff --git a/libjava/classpath/javax/sound/sampled/TargetDataLine.java b/libjava/classpath/javax/sound/sampled/TargetDataLine.java deleted file mode 100644 index 61ad344..0000000 --- a/libjava/classpath/javax/sound/sampled/TargetDataLine.java +++ /dev/null @@ -1,79 +0,0 @@ -/* Input data line. - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** - * This is a DataLine from which data may be read. - * @since 1.3 - */ -public interface TargetDataLine extends DataLine -{ - /** - * Open the line using the indicated audio format. - * @param fmt the format to use - * @throws LineUnavailableException if the line is not available for - * some reason - * @throws SecurityException if this operation is prevented by the - * security manager - */ - void open(AudioFormat fmt) - throws LineUnavailableException; - - /** - * Open the line using the indicated audio format and buffer size. - * @param fmt the format to use - * @throws LineUnavailableException if the line is not available for - * some reason - * @throws SecurityException if this operation is prevented by the - * security manager - */ - void open(AudioFormat fmt, int size) - throws LineUnavailableException; - - /** - * Read data from the line into the given buffer. The requested data - * should be an integral number of framaes, as determined by the audio - * format. - * @param buf the buffer into which the data is put - * @param offset the initial offset at which to write - * @param length the maximum number of bytes to read - * @return the actual number of bytes read - */ - int read(byte[] buf, int offset, int length); -} diff --git a/libjava/classpath/javax/sound/sampled/UnsupportedAudioFileException.java b/libjava/classpath/javax/sound/sampled/UnsupportedAudioFileException.java deleted file mode 100644 index 1399b61..0000000 --- a/libjava/classpath/javax/sound/sampled/UnsupportedAudioFileException.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled; - -/** - * An exception of this type is thrown when an operation is attempted - * on a file whose format is unrecognized. - * @since 1.3 - */ -public class UnsupportedAudioFileException extends Exception -{ - private static final long serialVersionUID = -139127412623160368L; - - /** - * Create a new UnsupportedAudioFileException. - */ - public UnsupportedAudioFileException() - { - } - - /** - * Create a new UnsupportedAudioFileException with the indicated message. - * @param msg the message - */ - public UnsupportedAudioFileException(String msg) - { - super(msg); - } -} diff --git a/libjava/classpath/javax/sound/sampled/spi/AudioFileReader.java b/libjava/classpath/javax/sound/sampled/spi/AudioFileReader.java deleted file mode 100644 index 098190f..0000000 --- a/libjava/classpath/javax/sound/sampled/spi/AudioFileReader.java +++ /dev/null @@ -1,146 +0,0 @@ -/* Audio file reader API - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled.spi; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; - -import javax.sound.sampled.AudioFileFormat; -import javax.sound.sampled.AudioInputStream; -import javax.sound.sampled.UnsupportedAudioFileException; - -/** - * This abstract class defines the interface to audio file readers. - * A concrete provider subclass will implement the methods declared - * here. These methods can be used to determine the format of - * files, and to retrieve an AudioInputStream for a file. - * @since 1.3 - */ -public abstract class AudioFileReader -{ - /** - * The default constructor. Note that this class is abstract and - * thus not directly instantiable. - */ - public AudioFileReader() - { - } - - /** - * Return the format of the given file as deduced by this provider. - * If the format of the file is not recognized, throws an exception. - * This will also throw an exception if there is an I/O error when - * reading the file. - * @param file the file to examine - * @return the audio file format - * @throws UnsupportedAudioFileException if the file's format is not - * recognized - * @throws IOException if there is an I/O error while reading the file - */ - public abstract AudioFileFormat getAudioFileFormat(File file) - throws UnsupportedAudioFileException, IOException; - - /** - * Return the format of the given input stream as deduced by this provider. - * If the format of the stream is not recognized, throws an exception. - * This will also throw an exception if there is an I/O error when - * reading the stream. Note that providers typically use mark and reset - * on the stream when examining the data, and as a result an IOException - * may be thrown if the stream does not support these. - * @param is the stream to examine - * @return the audio file format - * @throws UnsupportedAudioFileException if the stream's format is not - * recognized - * @throws IOException if there is an I/O error while reading the stream - */ - public abstract AudioFileFormat getAudioFileFormat(InputStream is) - throws UnsupportedAudioFileException, IOException; - - /** - * Return the format of the given URL as deduced by this provider. - * If the format of the URL is not recognized, throws an exception. - * This will also throw an exception if there is an I/O error when - * reading the URL. - * @param url the URL to examine - * @return the audio file format - * @throws UnsupportedAudioFileException if the URL's format is not - * recognized - * @throws IOException if there is an I/O error while reading the URL - */ - public abstract AudioFileFormat getAudioFileFormat(URL url) - throws UnsupportedAudioFileException, IOException; - - /** - * Return an AudioInputStream for the given file. The file is assumed - * to hold valid audio data. - * @param file the file to read - * @return an AudioInputStream for the file - * @throws UnsupportedAudioFileException if the file's type is not - * recognized - * @throws IOException if there is an error while reading the file - */ - public abstract AudioInputStream getAudioInputStream(File file) - throws UnsupportedAudioFileException, IOException; - - /** - * Return an AudioInputStream wrapping the given input stream. The stream - * is assumed to hold valid audio data. - * @param is the input stream to wrap - * @return an AudioInputStream for the stream - * @throws UnsupportedAudioFileException if the stream's type is not - * recognized - * @throws IOException if there is an error while reading the stream - */ - public abstract AudioInputStream getAudioInputStream(InputStream is) - throws UnsupportedAudioFileException, IOException; - - /** - * Return an AudioInputStream for the given URL. The URL is assumed - * to hold valid audio data. - * @param url the URL to read - * @return an AudioInputStream for the URL - * @throws UnsupportedAudioFileException if the URL's type is not - * recognized - * @throws IOException if there is an error while reading the URL - */ - public abstract AudioInputStream getAudioInputStream(URL url) - throws UnsupportedAudioFileException, IOException; -} diff --git a/libjava/classpath/javax/sound/sampled/spi/AudioFileWriter.java b/libjava/classpath/javax/sound/sampled/spi/AudioFileWriter.java deleted file mode 100644 index 82f9b31..0000000 --- a/libjava/classpath/javax/sound/sampled/spi/AudioFileWriter.java +++ /dev/null @@ -1,131 +0,0 @@ -/* Audio file writer API - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled.spi; - -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; - -import javax.sound.sampled.AudioFileFormat; -import javax.sound.sampled.AudioInputStream; - -/** - * This abstract class provides an API for writing audio files. Concrete - * subclasses implement the methods declared here. - * @since 1.3 - */ -public abstract class AudioFileWriter -{ - /** - * Creat a new audio file writer. - */ - public AudioFileWriter() - { - } - - /** - * Return an array of all audio file format types supported by this - * provider. - */ - public abstract AudioFileFormat.Type[] getAudioFileTypes(); - - /** - * Return an array of all the audio file format types supported by this - * provider, which can be written given the input stream. - * @param ais the audio input stream - */ - public abstract AudioFileFormat.Type[] getAudioFileTypes(AudioInputStream ais); - - /** - * Return true if the indicated type is supported by this provider. - * @param type the audio file format type - */ - public boolean isFileTypeSupported(AudioFileFormat.Type type) - { - AudioFileFormat.Type[] types = getAudioFileTypes(); - for (int i = 0; i < types.length; ++i) - { - if (type.equals(types[i])) - return true; - } - return false; - } - - /** - * Return true if the indicated type is supported by this provider, - * and can be written from the given audio input stream. - * @param type the audio file format type - * @param ais the audio input stream to write - */ - public boolean isFileTypeSupported(AudioFileFormat.Type type, - AudioInputStream ais) - { - AudioFileFormat.Type[] types = getAudioFileTypes(ais); - for (int i = 0; i < types.length; ++i) - { - if (type.equals(types[i])) - return true; - } - return false; - } - - /** - * Write audio data to a file. - * @param ais the audio input stream to write - * @param type the desired audio file format type - * @param out the file to write to - * @return the number of bytes written - * @throws IOException if an I/O error occurs when writing - */ - public abstract int write(AudioInputStream ais, AudioFileFormat.Type type, - File out) - throws IOException; - - /** - * Write audio data to an output stream. - * @param ais the audio input stream to write - * @param type the desired audio file format type - * @param os the output stream - * @return the number of bytes written - * @throws IOException if an I/O error occurs when writing - */ - public abstract int write(AudioInputStream ais, AudioFileFormat.Type type, - OutputStream os) - throws IOException; -} diff --git a/libjava/classpath/javax/sound/sampled/spi/FormatConversionProvider.java b/libjava/classpath/javax/sound/sampled/spi/FormatConversionProvider.java deleted file mode 100644 index b9d3e9d..0000000 --- a/libjava/classpath/javax/sound/sampled/spi/FormatConversionProvider.java +++ /dev/null @@ -1,179 +0,0 @@ -/* Format conversion API - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled.spi; - -import javax.sound.sampled.AudioFormat; -import javax.sound.sampled.AudioInputStream; - -/** - * A format conversion provider supplies methods for converting between - * different audio formats. This abstract class defines the interface - * to this functionality; concrete subclasses will implement the methods - * declared here. - * @since 1.3 - */ -public abstract class FormatConversionProvider -{ - /** - * Create a new format conversion provider. - */ - public FormatConversionProvider() - { - } - - /** - * Return an audio input stream given the desired target encoding and - * another audio input stream. The data in the given stream will be - * converted to the desired encoding. - * @param encoding the encoding - * @param source the source audio input stream - * @return a new audio input stream - * @throws IllegalArgumentException if the conversion is not supported - */ - public abstract AudioInputStream getAudioInputStream(AudioFormat.Encoding encoding, - AudioInputStream source); - - /** - * Return an audio input stream given the desired target format and - * another audio input stream. The data in the given stream will be - * converted to the desired format. - * @param format the format - * @param source the source audio input stream - * @return a new audio input stream - * @throws IllegalArgumentException if the conversion is not supported - */ - public abstract AudioInputStream getAudioInputStream(AudioFormat format, - AudioInputStream source); - - /** - * Return an array of all the source encodings supported by this conversion - * provider. - */ - public abstract AudioFormat.Encoding[] getSourceEncodings(); - - /** - * Return an array of all the target encodings supported by this conversion - * provider. - */ - public abstract AudioFormat.Encoding[] getTargetEncodings(); - - /** - * Return an array of all the target encodings that are available for a given - * source format. - * @param fmt the source format - * @return an array of supported target encodings - */ - public abstract AudioFormat.Encoding[] getTargetEncodings(AudioFormat fmt); - - /** - * Return a array of all the target formats that match given target encoding, - * and to which this provider can convert the source format. - * @param targ the target encoding to match - * @param src the source format - * @return an array of supported target formats - */ - public abstract AudioFormat[] getTargetFormats(AudioFormat.Encoding targ, - AudioFormat src); - - /** - * Return true if this provider supports conversion from the given - * source format to the given target encoding. - * @param targ the target encoding - * @param src the source format - * @return true if the conversion is supported - */ - public boolean isConversionSupported(AudioFormat.Encoding targ, - AudioFormat src) - { - AudioFormat.Encoding[] encodings = getTargetEncodings(src); - for (int i = 0; i < encodings.length; ++i) - { - if (targ.equals(encodings[i])) - return true; - } - return false; - } - - /** - * Return true if this provider supports conversions from the given - * source format to the given target format. - * @param targ the source format - * @param src the target format - * @return true if the conversion is supported - */ - public boolean isConversionSupported(AudioFormat targ, AudioFormat src) - { - AudioFormat[] encodings = getTargetFormats(targ.getEncoding(), src); - return encodings.length > 0; - } - - /** - * Return true if an encoding matching the argument is supported as a - * source encoding by this provider. - * @param src the source encoding - * @return true if it is supported - */ - public boolean isSourceEncodingSupported(AudioFormat.Encoding src) - { - AudioFormat.Encoding[] srcs = getSourceEncodings(); - for (int i = 0; i < srcs.length; ++i) - { - if (src.equals(srcs[i])) - return true; - } - return false; - } - - /** - * Return true if an encoding matching the argument is supported as a - * target encoding by this provider. - * @param targ the target encoding - * @return true if it is supported - */ - public boolean isTargetEncodingSupported(AudioFormat.Encoding targ) - { - AudioFormat.Encoding[] encodings = getTargetEncodings(); - for (int i = 0; i < encodings.length; ++i) - { - if (targ.equals(encodings[i])) - return true; - } - return false; - } -} diff --git a/libjava/classpath/javax/sound/sampled/spi/MixerProvider.java b/libjava/classpath/javax/sound/sampled/spi/MixerProvider.java deleted file mode 100644 index 72b9724..0000000 --- a/libjava/classpath/javax/sound/sampled/spi/MixerProvider.java +++ /dev/null @@ -1,86 +0,0 @@ -/* Mixer API - Copyright (C) 2005 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -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. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package javax.sound.sampled.spi; - -import javax.sound.sampled.Mixer; - -/** - * This abstract class defines an interface to mixer providers. - * Concrete subclasses will implement the methods in this class. - * @since 1.3 - */ -public abstract class MixerProvider -{ - /** - * Create a new mixer provider. - */ - public MixerProvider() - { - } - - /** - * Return a mixer that matches the given info object. - * @param info description of the mixer to match - * @return the mixer - * @throws IllegalArgumentException if no mixer matches the description - */ - public abstract Mixer getMixer(Mixer.Info info); - - /** - * Return an array of info objects describing all the mixers provided by - * this provider. - */ - public abstract Mixer.Info[] getMixerInfo(); - - /** - * Return true if a mixer matching the provided description is supported. - * @param info description of the mixer to match - * @return true if it is supported by this provider - */ - public boolean isMixerSupported(Mixer.Info info) - { - Mixer.Info[] infos = getMixerInfo(); - for (int i = 0; i < infos.length; ++i) - { - if (info.equals(infos[i])) - return true; - } - return false; - } -} |