Frames | No Frames |
1: /* MidiDevice.java -- Interface for MIDI devices 2: Copyright (C) 2005 Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 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. 10: 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. 15: 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. 20: 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. 25: 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. */ 37: 38: 39: package javax.sound.midi; 40: 41: /** 42: * Interface for all MIDI devices. 43: * 44: * @author Anthony Green (green@redhat.com) 45: * @since 1.3 46: * 47: */ 48: public interface MidiDevice 49: extends AutoCloseable 50: { 51: /** 52: * Get the Info object describing this device. 53: * @return the Info object describing this device 54: */ 55: public Info getDeviceInfo(); 56: 57: /** 58: * Open this MIDI device and allocate any system resource we need. 59: * 60: * @throws MidiUnavailableException if we're not able to open for some reason 61: */ 62: public void open() throws MidiUnavailableException; 63: 64: /** 65: * Close this MIDI device, and release any system resources we're using. 66: */ 67: public void close(); 68: 69: /** 70: * Returns true if this MIDI device is open and false otherwise. 71: * 72: * @return true if this is open, false otherwise 73: */ 74: public boolean isOpen(); 75: 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. 79: * 80: * @return -1 or the number of microseconds since this was opened 81: */ 82: public long getMicrosecondPosition(); 83: 84: /** 85: * The maximum number of MIDI IN connections we can get as Receivers, 86: * or -1 if there is no maximum. 87: * 88: * @return -1 or the maximum number of Receivers we can get 89: */ 90: public int getMaxReceivers(); 91: 92: /** 93: * The maximum number of MIDI OUT connections we can get as Transmitters, 94: * or -1 if there is no maximum. 95: * 96: * @return -1 or the maximum number of Transmitters we can get 97: */ 98: public int getMaxTransmitters(); 99: 100: /** 101: * Get a MIDI IN Receiver for this device. 102: * 103: * @return a MIDI IN Receiver for this device 104: * @throws MidiUnavailableException if we can't get a Receiver 105: */ 106: public Receiver getReceiver() throws MidiUnavailableException; 107: 108: /** 109: * Get a MIDI OUT Transmitter for this device. 110: * 111: * @return a MIDI OUT Transmitter for this device 112: * @throws MidiUnavailableException if we can't get a Transmitter 113: */ 114: public Transmitter getTransmitter() throws MidiUnavailableException; 115: 116: /** 117: * A MIDI device descriptor object. 118: * 119: * @author green@redhat.com 120: * 121: */ 122: public static class Info 123: { 124: // Private data describing this device 125: private String name; 126: private String vendor; 127: private String description; 128: private String version; 129: 130: /** 131: * Create an Info object for a MIDI device 132: * 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 137: */ 138: protected Info(String name, String vendor, String description, String version) 139: { 140: this.name = name; 141: this.vendor = vendor; 142: this.description = description; 143: this.version = version; 144: } 145: 146: /** 147: * This equals method only returns true if this object 148: * is the same as obj. 149: * 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) 153: */ 154: public final boolean equals(Object obj) 155: { 156: return super.equals(obj); 157: } 158: 159: /** 160: * A hash code for this object. 161: * 162: * @return the hash code for this object 163: * @see java.lang.Object#hashCode() 164: */ 165: public final int hashCode() 166: { 167: return super.hashCode(); 168: } 169: 170: /** 171: * Get the device name. 172: * 173: * @return the device name 174: */ 175: public final String getName() 176: { 177: return name; 178: } 179: 180: /** 181: * Get the device vendor. 182: * 183: * @return the device vendor 184: */ 185: public final String getVendor() 186: { 187: return vendor; 188: } 189: 190: /** 191: * Get the device description 192: * 193: * @return the device description 194: */ 195: public final String getDescription() 196: { 197: return description; 198: } 199: 200: /** 201: * get the device version 202: * 203: * @return the device version 204: */ 205: public final String getVersion() 206: { 207: return version; 208: } 209: 210: /** 211: * Simple return the name of the device. 212: * 213: * @return the device name 214: * @see java.lang.Object#toString() 215: */ 216: public final String toString() 217: { 218: return name; 219: } 220: } 221: }