javax.sound.midi (Java SE 17 & JDK 17)
Description: declaration: module: java.desktop, package: javax.sound.midi
Keywords: javax.sound.midi package

Module java.desktop

# Package javax.sound.midi

package javax.sound.midi
Provides interfaces and classes for I/O, sequencing, and synthesis of MIDI (Musical Instrument Digital Interface) data.

## Related Documentation

For more information on using Java Sound see:

- The Java Sound Tutorial

Please note: In the `javax.sound.midi` APIs, a `null` reference parameter to methods is incorrect unless explicitly documented on the method as having a meaningful interpretation. Usage to the contrary is incorrect coding and may result in a run time exception either immediately or at some later time. `NullPointerException` is an example of typical and acceptable run time exception for such cases.

Since:
  1.3

- Related Packages
  Package
  Description
  javax.sound.midi.spi
  Supplies interfaces for service providers to implement when offering new MIDI devices, MIDI file readers and writers, or sound bank readers.
- Class
  Description
  ControllerEventListener
  The `ControllerEventListener` interface should be implemented by classes whose instances need to be notified when a `Sequencer` has processed a requested type of MIDI control-change event.
  Instrument
  An instrument is a sound-synthesis algorithm with certain parameter settings, usually designed to emulate a specific real-world musical instrument or to achieve a specific sort of sound effect.
  InvalidMidiDataException
  An `InvalidMidiDataException` indicates that inappropriate MIDI data was encountered.
  MetaEventListener
  The `MetaEventListener` interface should be implemented by classes whose instances need to be notified when a `Sequencer` has processed a `MetaMessage`.
  MetaMessage
  A `MetaMessage` is a `MidiMessage` that is not meaningful to synthesizers, but that can be stored in a MIDI file and interpreted by a sequencer program.
  MidiChannel
  A `MidiChannel` object represents a single MIDI channel.
  MidiDevice
  `MidiDevice` is the base interface for all MIDI devices.
  MidiDevice.Info
  A `MidiDevice.Info` object contains assorted data about a `MidiDevice`, including its name, the company who created it, and descriptive text.
  MidiDeviceReceiver
  `MidiDeviceReceiver` is a `Receiver` which represents a MIDI input connector of a `MidiDevice` (see `MidiDevice.getReceiver()`).
  MidiDeviceTransmitter
  `MidiDeviceTransmitter` is a `Transmitter` which represents a MIDI input connector of a `MidiDevice` (see `MidiDevice.getTransmitter()`).
  MidiEvent
  MIDI events contain a MIDI message and a corresponding time-stamp expressed in ticks, and can represent the MIDI event information stored in a MIDI file or a `Sequence` object.
  MidiFileFormat
  A `MidiFileFormat` object encapsulates a MIDI file's type, as well as its length and timing information.
  MidiMessage
  `MidiMessage` is the base class for MIDI messages.
  MidiSystem
  The `MidiSystem` class provides access to the installed MIDI system resources, including devices such as synthesizers, sequencers, and MIDI input and output ports.
  MidiUnavailableException
  A `MidiUnavailableException` is thrown when a requested MIDI component cannot be opened or created because it is unavailable.
  Patch
  A `Patch` object represents a location, on a MIDI synthesizer, into which a single instrument is stored (loaded).
  Receiver
  A `Receiver` receives `MidiEvent` objects and typically does something useful in response, such as interpreting them to generate sound or raw MIDI output.
  Sequence
  A `Sequence` is a data structure containing musical information (often an entire song or composition) that can be played back by a `Sequencer` object.
  Sequencer
  A hardware or software device that plays back a MIDI `sequence` is known as a sequencer.
  Sequencer.SyncMode
  A `SyncMode` object represents one of the ways in which a MIDI sequencer's notion of time can be synchronized with a master or slave device.
  ShortMessage
  A `ShortMessage` contains a MIDI message that has at most two data bytes following its status byte.
  Soundbank
  A `Soundbank` contains a set of `Instruments` that can be loaded into a `Synthesizer`.
  SoundbankResource
  A `SoundbankResource` represents any audio resource stored in a `Soundbank`.
  Synthesizer
  A `Synthesizer` generates sound.
  SysexMessage
  A `SysexMessage` object represents a MIDI system exclusive message.
  Track
  A MIDI track is an independent stream of MIDI events (time-stamped MIDI data) that can be stored along with other tracks in a standard MIDI file.
  Transmitter
  A `Transmitter` sends `MidiEvent` objects to one or more `Receivers`.
  VoiceStatus
  A `VoiceStatus` object contains information about the current status of one of the voices produced by a `Synthesizer`.