public interface MidiDevice extends AutoCloseable
MidiDevice is the base interface for all MIDI devices.
 Common devices include synthesizers, sequencers, MIDI input ports, and MIDI
 output ports.
 A MidiDevice can be a transmitter or a receiver of
 MIDI events, or both. Therefore, it can provide Transmitter
 or Receiver instances (or both). Typically, MIDI IN ports
 provide transmitters, MIDI OUT ports and synthesizers provide
 receivers. A Sequencer typically provides transmitters for playback
 and receivers for recording.
 
A MidiDevice can be opened and closed explicitly as
 well as implicitly. Explicit opening is accomplished by calling
 open(), explicit closing is done by calling close() on the MidiDevice instance.
 If an application opens a MidiDevice
 explicitly, it has to close it explicitly to free system resources
 and enable the application to exit cleanly. Implicit opening is
 done by calling MidiSystem.getReceiver and MidiSystem.getTransmitter. The MidiDevice used by
 MidiSystem.getReceiver and
 MidiSystem.getTransmitter is implementation-dependant
 unless the properties javax.sound.midi.Receiver
 and javax.sound.midi.Transmitter are used (see the
 description of properties to select default providers in
 MidiSystem). A MidiDevice
 that was opened implicitly, is closed implicitly by closing the
 Receiver or Transmitter that resulted in
 opening it. If more than one implicitly opening
 Receiver or Transmitter were obtained by
 the application, the device is closed after the last
 Receiver or Transmitter has been
 closed. On the other hand, calling getReceiver or
 getTransmitter on the device instance directly does
 not open the device implicitly. Closing these
 Transmitters and Receivers does not close
 the device implicitly. To use a device with Receivers
 or Transmitters obtained this way, the device has to
 be opened and closed explicitly.
 
If implicit and explicit opening and closing are mixed on the
 same MidiDevice instance, the following rules apply:
 
 MidiDevice device = ...;
 if ( ! (device instanceof Sequencer) && ! (device instanceof Synthesizer)) {
   // we're now sure that device represents a MIDI port
   // ...
 }
 
 A MidiDevice includes a MidiDevice.Info
Synthesizer, 
Sequencer, 
Receiver, 
Transmitter| Modifier and Type | Interface | Description | 
|---|---|---|
| static class  | MidiDevice.Info | A  MidiDevice.Infoobject contains assorted
 data about a, including its
 name, the company who created it, and descriptive text. | 
| Modifier and Type | Method | Description | 
|---|---|---|
| void | close() | Closes the device, indicating that the device should now release
 any system resources it is using. | 
| MidiDevice.Info | getDeviceInfo() | Obtains information about the device, including its Java class and
  Stringscontaining its name, vendor, and description. | 
| int | getMaxReceivers() | Obtains the maximum number of MIDI IN connections available on this
 MIDI device for receiving MIDI data. | 
| int | getMaxTransmitters() | Obtains the maximum number of MIDI OUT connections available on this
 MIDI device for transmitting MIDI data. | 
| long | getMicrosecondPosition() | Obtains the current time-stamp of the device, in microseconds. | 
| Receiver | getReceiver() | Obtains a MIDI IN receiver through which the MIDI device may receive
 MIDI data. | 
| List<Receiver> | getReceivers() | Returns all currently active, non-closed receivers
 connected with this MidiDevice. | 
| Transmitter | getTransmitter() | Obtains a MIDI OUT connection from which the MIDI device will transmit
 MIDI data  The returned transmitter must be closed when the application
 has finished using it. | 
| List<Transmitter> | getTransmitters() | Returns all currently active, non-closed transmitters
 connected with this MidiDevice. | 
| boolean | isOpen() | Reports whether the device is open. | 
| void | open() | Opens the device, indicating that it should now acquire any
 system resources it requires and become operational. | 
MidiDevice.Info getDeviceInfo()
Strings containing its name, vendor, and description.void open() throws MidiUnavailableException
An application opening a device explicitly with this call
 has to close the device by calling close(). This is
 necessary to release system resources and allow applications to
 exit cleanly.
 
Note that some devices, once closed, cannot be reopened. Attempts to reopen such a device will always result in a MidiUnavailableException.
MidiUnavailableException - thrown if the device cannot be
 opened due to resource restrictions.SecurityException - thrown if the device cannot be
 opened due to security restrictions.close(), 
isOpen()void close()
All Receiver and Transmitter instances
 open from this device are closed. This includes instances retrieved
 via MidiSystem.
close in interface AutoCloseableopen(), 
isOpen()boolean isOpen()
long getMicrosecondPosition()
int getMaxReceivers()
int getMaxTransmitters()
Receiver getReceiver() throws MidiUnavailableException
Usually the returned receiver implements
 the MidiDeviceReceiver interface.
 
Obtaining a Receiver with this method does not
 open the device. To be able to use the device, it has to be
 opened explicitly by calling open(). Also, closing the
 Receiver does not close the device. It has to be
 closed explicitly by calling close().
MidiUnavailableException - thrown if a receiver is not available
 due to resource restrictionsReceiver.close()List<Receiver> getReceivers()
Usually the returned receivers implement
 the MidiDeviceReceiver interface.
Transmitter getTransmitter() throws MidiUnavailableException
Usually the returned transmitter implements
 the MidiDeviceTransmitter interface.
 
Obtaining a Transmitter with this method does not
 open the device. To be able to use the device, it has to be
 opened explicitly by calling open(). Also, closing the
 Transmitter does not close the device. It has to be
 closed explicitly by calling close().
MidiUnavailableException - thrown if a transmitter is not available
 due to resource restrictionsTransmitter.close()List<Transmitter> getTransmitters()
Usually the returned transmitters implement
 the MidiDeviceTransmitter interface.
 Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.