| 
 | JavaTM 2 Platform Standard Ed. 5.0 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjavax.sound.midi.MidiSystem
public class MidiSystem
The MidiSystem class provides access to the installed MIDI
 system resources, including devices such as synthesizers, sequencers, and
 MIDI input and output ports.  A typical simple MIDI application might
 begin by invoking one or more MidiSystem methods to learn
 what devices are installed and to obtain the ones needed in that
 application.
 
 The class also has methods for reading files, streams, and  URLs that
 contain standard MIDI file data or soundbanks.  You can query the
 MidiSystem for the format of a specified MIDI file.
 
 You cannot instantiate a MidiSystem; all the methods are
 static.
 
Properties can be used to specify default MIDI devices.
 Both system properties and a properties file are considered.
 The properties file is "lib/sound.properties" in the JRE
 directory. If a property exists both as a system property and in the
 properties file, the system property takes precedence. If none is
 specified, a suitable default is chosen among the available devices.
 The syntax of the properties file is specified in
 Properties.load. The
 following table lists the available property keys and which methods
 consider them:
 
| Property Key | Interface | Affected Method | 
|---|---|---|
| javax.sound.midi.Receiver | Receiver | getReceiver() | 
| javax.sound.midi.Sequencer | Sequencer | getSequencer() | 
| javax.sound.midi.Synthesizer | Synthesizer | getSynthesizer() | 
| javax.sound.midi.Transmitter | Transmitter | getTransmitter() | 
MIDI device provider class. The device name is matched against
 the String returned by the getName
 method of MidiDevice.Info.
 Either the class name, or the device name may be omitted.
 If only the class name is specified, the trailing hash mark
 is optional.
 If the provider class is specified, and it can be
 successully retrieved from the installed providers,
 the list of
 MidiDevice.Info objects is retrieved
 from the provider. Otherwise, or when these devices
 do not provide a subsequent match, the list is retrieved
 from getMidiDeviceInfo() to contain
 all available MidiDevice.Info objects.
 
If a device name is specified, the resulting list of
 MidiDevice.Info objects is searched:
 the first one with a matching name, and whose
 MidiDevice implements the
 respective interface, will be returned.
 If no matching MidiDevice.Info object
 is found, or the device name is not specified,
 the first suitable device from the resulting
 list will be returned. For Sequencer and Synthesizer,
 a device is suitable if it implements the respective
 interface; whereas for Receiver and Transmitter, a device is
 suitable if it
 implements neither Sequencer nor Synthesizer and provides
 at least one Receiver or Transmitter, respectively.
 For example, the property javax.sound.midi.Receiver
 with a value
 "com.sun.media.sound.MidiProvider#SunMIDI1"
 will have the following consequences when
 getReceiver is called:
 if the class com.sun.media.sound.MidiProvider exists
 in the list of installed MIDI device providers,
 the first Receiver device with name
 "SunMIDI1" will be returned. If it cannot
 be found, the first Receiver from that provider
 will be returned, regardless of name.
 If there is none, the first Receiver with name
 "SunMIDI1" in the list of all devices
 (as returned by getMidiDeviceInfo) will be returned,
 or, if not found, the first Receiver that can
 be found in the list of all devices is returned.
 If that fails, too, a MidiUnavailableException
 is thrown.
| Method Summary | |
|---|---|
| static MidiDevice | getMidiDevice(MidiDevice.Info info)Obtains the requested MIDI device. | 
| static MidiDevice.Info[] | getMidiDeviceInfo()Obtains an array of information objects representing the set of all MIDI devices available on the system. | 
| static MidiFileFormat | getMidiFileFormat(File file)Obtains the MIDI file format of the specified File. | 
| static MidiFileFormat | getMidiFileFormat(InputStream stream)Obtains the MIDI file format of the data in the specified input stream. | 
| static MidiFileFormat | getMidiFileFormat(URL url)Obtains the MIDI file format of the data in the specified URL. | 
| static int[] | getMidiFileTypes()Obtains the set of MIDI file types for which file writing support is provided by the system. | 
| static int[] | getMidiFileTypes(Sequence sequence)Obtains the set of MIDI file types that the system can write from the sequence specified. | 
| static Receiver | getReceiver()Obtains a MIDI receiver from an external MIDI port or other default device. | 
| static Sequence | getSequence(File file)Obtains a MIDI sequence from the specified File. | 
| static Sequence | getSequence(InputStream stream)Obtains a MIDI sequence from the specified input stream. | 
| static Sequence | getSequence(URL url)Obtains a MIDI sequence from the specified URL. | 
| static Sequencer | getSequencer()Obtains the default Sequencer, connected to
 a default device. | 
| static Sequencer | getSequencer(boolean connected)Obtains the default Sequencer, optionally
 connected to a default device. | 
| static Soundbank | getSoundbank(File file)Constructs a Soundbankby reading it from the specifiedFile. | 
| static Soundbank | getSoundbank(InputStream stream)Constructs a MIDI sound bank by reading it from the specified stream. | 
| static Soundbank | getSoundbank(URL url)Constructs a Soundbankby reading it from the specified URL. | 
| static Synthesizer | getSynthesizer()Obtains the default synthesizer. | 
| static Transmitter | getTransmitter()Obtains a MIDI transmitter from an external MIDI port or other default source. | 
| static boolean | isFileTypeSupported(int fileType)Indicates whether file writing support for the specified MIDI file type is provided by the system. | 
| static boolean | isFileTypeSupported(int fileType,
                    Sequence sequence)Indicates whether a MIDI file of the file type specified can be written from the sequence indicated. | 
| static int | write(Sequence in,
      int type,
      File out)Writes a stream of bytes representing a file of the MIDI file type indicated to the external file provided. | 
| static int | write(Sequence in,
      int fileType,
      OutputStream out)Writes a stream of bytes representing a file of the MIDI file type indicated to the output stream provided. | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Method Detail | 
|---|
public static MidiDevice.Info[] getMidiDeviceInfo()
getMidiDevice.
MidiDevice.Info objects, one
 for each installed MIDI device.  If no such devices are installed,
 an array of length 0 is returned.
public static MidiDevice getMidiDevice(MidiDevice.Info info)
                                throws MidiUnavailableException
info - a device information object representing the desired device.
MidiUnavailableException - if the requested device is not available
 due to resource restrictions
IllegalArgumentException - if the info object does not represent
 a MIDI device installed on the systemgetMidiDeviceInfo()
public static Receiver getReceiver()
                            throws MidiUnavailableException
If the system property
 javax.sound.midi.Receiver
 is defined or it is defined in the file "sound.properties",
 it is used to identify the device that provides the default receiver.
 For details, refer to the class description.
 If a suitable MIDI port is not available, the Receiver is
 retrieved from an installed synthesizer.
 
If this method returns successfully, the MidiDevice the
 Receiver belongs to is opened implicitly, if it is
 not already open. It is possible to close an implicitly opened
 device by calling close
 on the returned Receiver. All open Receiver
 instances have to be closed in order to release system resources
 hold by the MidiDevice. For a
 detailed description of open/close behaviour see the class
 description of MidiDevice.
MidiUnavailableException - if the default receiver is not
         available due to resource restrictions,
         or no device providing receivers is installed in the system
public static Transmitter getTransmitter()
                                  throws MidiUnavailableException
If the system property
 javax.sound.midi.Transmitter
 is defined or it is defined in the file "sound.properties",
 it is used to identify the device that provides the default transmitter.
 For details, refer to the class description.
 If this method returns successfully, the MidiDevice the
 Transmitter belongs to is opened implicitly, if it
 is not already open. It is possible to close an implicitly
 opened device by calling close on the returned
 Transmitter. All open Transmitter
 instances have to be closed in order to release system resources
 hold by the MidiDevice. For a detailed description
 of open/close behaviour see the class description of MidiDevice.
MidiUnavailableException - if the default transmitter is not
         available due to resource restrictions,
         or no device providing transmitters is installed in the system
public static Synthesizer getSynthesizer()
                                  throws MidiUnavailableException
If the system property
 javax.sound.midi.Synthesizer
 is defined or it is defined in the file "sound.properties",
 it is used to identify the default synthesizer.
 For details, refer to the class description.
MidiUnavailableException - if the synthesizer is not
         available due to resource restrictions,
         or no synthesizer is installed in the system
public static Sequencer getSequencer()
                              throws MidiUnavailableException
Sequencer, connected to
 a default device.
 The returned Sequencer instance is
 connected to the default Synthesizer,
 as returned by getSynthesizer().
 If there is no Synthesizer
 available, or the default Synthesizer
 cannot be opened, the sequencer is connected
 to the default Receiver, as returned
 by getReceiver().
 The connection is made by retrieving a Transmitter
 instance from the Sequencer and setting its
 Receiver.
 Closing and re-opening the sequencer will restore the
 connection to the default device.
 This method is equivalent to calling
 getSequencer(true).
 
If the system property
 javax.sound.midi.Sequencer
 is defined or it is defined in the file "sound.properties",
 it is used to identify the default sequencer.
 For details, refer to the class description.
MidiUnavailableException - if the sequencer is not
         available due to resource restrictions,
         or there is no Receiver available by any
         installed MidiDevice,
         or no sequencer is installed in the system.getSequencer(boolean), 
getSynthesizer(), 
getReceiver()
public static Sequencer getSequencer(boolean connected)
                              throws MidiUnavailableException
Sequencer, optionally
 connected to a default device.
 If connected is true, the returned
 Sequencer instance is
 connected to the default Synthesizer,
 as returned by getSynthesizer().
 If there is no Synthesizer
 available, or the default Synthesizer
 cannot be opened, the sequencer is connected
 to the default Receiver, as returned
 by getReceiver().
 The connection is made by retrieving a Transmitter
 instance from the Sequencer and setting its
 Receiver.
 Closing and re-opening the sequencer will restore the
 connection to the default device.
 
If connected is false, the returned
 Sequencer instance is not connected, it
 has no open Transmitters. In order to
 play the sequencer on a MIDI device, or a Synthesizer,
 it is necessary to get a Transmitter and set its
 Receiver.
 
If the system property
 javax.sound.midi.Sequencer
 is defined or it is defined in the file "sound.properties",
 it is used to identify the default sequencer.
 For details, refer to the class description.
MidiUnavailableException - if the sequencer is not
         available due to resource restrictions,
         or no sequencer is installed in the system,
         or if connected is true, and there is
         no Receiver available by any installed
         MidiDevicegetSynthesizer(), 
getReceiver()
public static Soundbank getSoundbank(InputStream stream)
                              throws InvalidMidiDataException,
                                     IOException
stream - the source of the sound bank data.
InvalidMidiDataException - if the stream does not point to
 valid MIDI soundbank data recognized by the system
IOException - if an I/O error occurred when loading the soundbankInputStream.markSupported(), 
InputStream.mark(int)
public static Soundbank getSoundbank(URL url)
                              throws InvalidMidiDataException,
                                     IOException
Soundbank by reading it from the specified URL.
 The URL must point to a valid MIDI soundbank file.
url - the source of the sound bank data
InvalidMidiDataException - if the URL does not point to valid MIDI
 soundbank data recognized by the system
IOException - if an I/O error occurred when loading the soundbank
public static Soundbank getSoundbank(File file)
                              throws InvalidMidiDataException,
                                     IOException
Soundbank by reading it from the specified
 File.
 The File must point to a valid MIDI soundbank file.
file - the source of the sound bank data
InvalidMidiDataException - if the File does not
 point to valid MIDI soundbank data recognized by the system
IOException - if an I/O error occurred when loading the soundbank
public static MidiFileFormat getMidiFileFormat(InputStream stream)
                                        throws InvalidMidiDataException,
                                               IOException
 This method and/or the code it invokes may need to read some data from
 the stream to determine whether its data format is supported.  The
 implementation may therefore
 need to mark the stream, read enough data to determine whether it is in
 a supported format, and reset the stream's read pointer to its original
 position.  If the input stream does not permit this set of operations,
 this method may fail with an IOException.
 
This operation can only succeed for files of a type which can be parsed by an installed file reader. It may fail with an InvalidMidiDataException even for valid files if no compatible file reader is installed. It will also fail with an InvalidMidiDataException if a compatible file reader is installed, but encounters errors while determining the file format.
stream - the input stream from which file format information
 should be extracted
MidiFileFormat object describing the MIDI file
 format
InvalidMidiDataException - if the stream does not point to valid
 MIDI file data recognized by the system
IOException - if an I/O exception occurs while accessing the
 streamgetMidiFileFormat(URL), 
getMidiFileFormat(File), 
InputStream.markSupported(), 
InputStream.mark(int)
public static MidiFileFormat getMidiFileFormat(URL url)
                                        throws InvalidMidiDataException,
                                               IOException
This operation can only succeed for files of a type which can be parsed by an installed file reader. It may fail with an InvalidMidiDataException even for valid files if no compatible file reader is installed. It will also fail with an InvalidMidiDataException if a compatible file reader is installed, but encounters errors while determining the file format.
url - the URL from which file format information should be
 extracted
MidiFileFormat object describing the MIDI file
 format
InvalidMidiDataException - if the URL does not point to valid MIDI
 file data recognized by the system
IOException - if an I/O exception occurs while accessing the URLgetMidiFileFormat(InputStream), 
getMidiFileFormat(File)
public static MidiFileFormat getMidiFileFormat(File file)
                                        throws InvalidMidiDataException,
                                               IOException
File.  The
 File must point to valid MIDI file data for a file type
 recognized by the system.
 This operation can only succeed for files of a type which can be parsed by an installed file reader. It may fail with an InvalidMidiDataException even for valid files if no compatible file reader is installed. It will also fail with an InvalidMidiDataException if a compatible file reader is installed, but encounters errors while determining the file format.
file - the File from which file format information
 should be extracted
MidiFileFormat object describing the MIDI file
 format
InvalidMidiDataException - if the File does not point
  to valid MIDI file data recognized by the system
IOException - if an I/O exception occurs while accessing the filegetMidiFileFormat(InputStream), 
getMidiFileFormat(URL)
public static Sequence getSequence(InputStream stream)
                            throws InvalidMidiDataException,
                                   IOException
 This method and/or the code it invokes may need to read some data
 from the stream to determine whether
 its data format is supported.  The implementation may therefore
 need to mark the stream, read enough data to determine whether it is in
 a supported format, and reset the stream's read pointer to its original
 position.  If the input stream does not permit this set of operations,
 this method may fail with an IOException.
 
 This operation can only succeed for files of a type which can be parsed
 by an installed file reader.  It may fail with an InvalidMidiDataException
 even for valid files if no compatible file reader is installed.  It
 will also fail with an InvalidMidiDataException if a compatible file reader
 is installed, but encounters errors while constructing the Sequence
 object from the file data.
stream - the input stream from which the Sequence
 should be constructed
Sequence object based on the MIDI file data
 contained in the input stream
InvalidMidiDataException - if the stream does not point to
 valid MIDI file data recognized by the system
IOException - if an I/O exception occurs while accessing the
 streamInputStream.markSupported(), 
InputStream.mark(int)
public static Sequence getSequence(URL url)
                            throws InvalidMidiDataException,
                                   IOException
 This operation can only succeed for files of a type which can be parsed
 by an installed file reader.  It may fail with an InvalidMidiDataException
 even for valid files if no compatible file reader is installed.  It
 will also fail with an InvalidMidiDataException if a compatible file reader
 is installed, but encounters errors while constructing the Sequence
 object from the file data.
url - the URL from which the Sequence should be
 constructed
Sequence object based on the MIDI file data
 pointed to by the URL
InvalidMidiDataException - if the URL does not point to valid MIDI
 file data recognized by the system
IOException - if an I/O exception occurs while accessing the URL
public static Sequence getSequence(File file)
                            throws InvalidMidiDataException,
                                   IOException
File.
 The File must point to valid MIDI file data
 for a file type recognized by the system.
 
 This operation can only succeed for files of a type which can be parsed
 by an installed file reader.  It may fail with an InvalidMidiDataException
 even for valid files if no compatible file reader is installed.  It
 will also fail with an InvalidMidiDataException if a compatible file reader
 is installed, but encounters errors while constructing the Sequence
 object from the file data.
file - the File from which the Sequence
 should be constructed
Sequence object based on the MIDI file data
 pointed to by the File
InvalidMidiDataException - if the File does not point to valid MIDI
 file data recognized by the system
IOException - if an I/O exception occurspublic static int[] getMidiFileTypes()
public static boolean isFileTypeSupported(int fileType)
fileType - the file type for which write capabilities are queried
true if the file type is supported,
 otherwise falsepublic static int[] getMidiFileTypes(Sequence sequence)
sequence - the sequence for which MIDI file type support
 is queried
public static boolean isFileTypeSupported(int fileType,
                                          Sequence sequence)
fileType - the file type for which write capabilities
 are queriedsequence - the sequence for which file writing support is queried
true if the file type is supported for this
 sequence, otherwise false
public static int write(Sequence in,
                        int fileType,
                        OutputStream out)
                 throws IOException
in - sequence containing MIDI data to be written to the filefileType - the file type of the file to be written to the output streamout - stream to which the file data should be written
IOException - if an I/O exception occurs
IllegalArgumentException - if the file format is not supported by
 the systemisFileTypeSupported(int, Sequence), 
getMidiFileTypes(Sequence)
public static int write(Sequence in,
                        int type,
                        File out)
                 throws IOException
in - sequence containing MIDI data to be written to the filetype - the file type of the file to be written to the output streamout - external file to which the file data should be written
IOException - if an I/O exception occurs
IllegalArgumentException - if the file type is not supported by
 the systemisFileTypeSupported(int, Sequence), 
getMidiFileTypes(Sequence)| 
 | JavaTM 2 Platform Standard Ed. 5.0 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.