Import GNU Classpath (20121202).
[official-gcc.git] / libjava / classpath / javax / sound / midi / MidiDevice.java
blob7ce22caedfc2751f52aaf867c7fc023f654adffe
1 /* MidiDevice.java -- Interface for MIDI devices
2 Copyright (C) 2005 Free Software Foundation, Inc.
4 This file is part of GNU Classpath.
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 02110-1301 USA.
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
39 package javax.sound.midi;
41 /**
42 * Interface for all MIDI devices.
44 * @author Anthony Green (green@redhat.com)
45 * @since 1.3
48 public interface MidiDevice
49 extends AutoCloseable
51 /**
52 * Get the Info object describing this device.
53 * @return the Info object describing this device
55 public Info getDeviceInfo();
57 /**
58 * Open this MIDI device and allocate any system resource we need.
60 * @throws MidiUnavailableException if we're not able to open for some reason
62 public void open() throws MidiUnavailableException;
64 /**
65 * Close this MIDI device, and release any system resources we're using.
67 public void close();
69 /**
70 * Returns true if this MIDI device is open and false otherwise.
72 * @return true if this is open, false otherwise
74 public boolean isOpen();
76 /**
77 * If this device supports time-stamps, then it will return the number
78 * of microseconds since this device has been open, and -1 otherwise.
80 * @return -1 or the number of microseconds since this was opened
82 public long getMicrosecondPosition();
84 /**
85 * The maximum number of MIDI IN connections we can get as Receivers,
86 * or -1 if there is no maximum.
88 * @return -1 or the maximum number of Receivers we can get
90 public int getMaxReceivers();
92 /**
93 * The maximum number of MIDI OUT connections we can get as Transmitters,
94 * or -1 if there is no maximum.
96 * @return -1 or the maximum number of Transmitters we can get
98 public int getMaxTransmitters();
101 * Get a MIDI IN Receiver for this device.
103 * @return a MIDI IN Receiver for this device
104 * @throws MidiUnavailableException if we can't get a Receiver
106 public Receiver getReceiver() throws MidiUnavailableException;
109 * Get a MIDI OUT Transmitter for this device.
111 * @return a MIDI OUT Transmitter for this device
112 * @throws MidiUnavailableException if we can't get a Transmitter
114 public Transmitter getTransmitter() throws MidiUnavailableException;
117 * A MIDI device descriptor object.
119 * @author green@redhat.com
122 public static class Info
124 // Private data describing this device
125 private String name;
126 private String vendor;
127 private String description;
128 private String version;
131 * Create an Info object for a MIDI device
133 * @param name the device name
134 * @param vendor the vendor name
135 * @param description the device description
136 * @param version the device version string
138 protected Info(String name, String vendor, String description, String version)
140 this.name = name;
141 this.vendor = vendor;
142 this.description = description;
143 this.version = version;
147 * This equals method only returns true if this object
148 * is the same as obj.
150 * @param obj the object we're comparing to
151 * @return true if this is the same object
152 * @see java.lang.Object#equals(java.lang.Object)
154 public final boolean equals(Object obj)
156 return super.equals(obj);
160 * A hash code for this object.
162 * @return the hash code for this object
163 * @see java.lang.Object#hashCode()
165 public final int hashCode()
167 return super.hashCode();
171 * Get the device name.
173 * @return the device name
175 public final String getName()
177 return name;
181 * Get the device vendor.
183 * @return the device vendor
185 public final String getVendor()
187 return vendor;
191 * Get the device description
193 * @return the device description
195 public final String getDescription()
197 return description;
201 * get the device version
203 * @return the device version
205 public final String getVersion()
207 return version;
211 * Simple return the name of the device.
213 * @return the device name
214 * @see java.lang.Object#toString()
216 public final String toString()
218 return name;