public class MidiSystem extends Object
MidiSystem课程可以访问已安装的MIDI系统资源,包括合成器,音序器和MIDI输入和输出端口等设备。 
       典型的简单MIDI应用程序可能会首先调用一个或多个MidiSystem方法来了解哪些设备已安装并获得该应用程序中需要的设备。 
        该类还具有读取包含标准MIDI文件数据或声音库的文件,流和URL的方法。 您可以查询MidiSystem指定的MIDI文件的格式。 
 你不能实例化一个MidiSystem ; 所有的方法都是静态的。 
 属性可用于指定默认的MIDI设备。 考虑系统属性和属性文件。 该sound.properties性文件从具体实现的位置读取(通常它是lib在Java安装目录的目录)。 如果属性既作为系统属性又在属性文件中存在,则系统属性优先。 如果没有指定,则在可用设备中选择合适的默认值。 属性文件的语法在Properties.load中指定 。 下表列出了可用的属性键和哪些方法考虑: 
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类的完全限定名称。 
       设备名称与String的getName方法返回的getName进行MidiDevice.Info 。 
       类名或设备名可以省略。 
       如果仅指定了类名称,则尾部哈希标记是可选的。 
        如果指定了提供程序类,并且可以从已安装的提供程序成功检索到,那么从提供程序中MidiDevice.Info对象的列表。 否则,或者当这些设备不提供后续匹配时,该列表将从getMidiDeviceInfo()检索到包含所有可用的MidiDevice.Info对象。 
 如果指定了设备名称,则会搜索MidiDevice.Info对象的结果列表:将返回具有匹配名称的第一个对象,其MidiDevice实现相应接口。 如果没有匹配的MidiDevice.Info被发现对象,或者未指定设备名称,从结果列表中的第一个合适的设备将被返回。 对于Sequencer和Synthesizer,如果实现相应的接口,则该设备是合适的; 而对于接收机和发射机,如果一个设备既不实现定序器也不实现合成器,并且分别提供至少一个接收机或发射机,则它是适用的。 例如,财产javax.sound.midi.Receiver一个值"com.sun.media.sound.MidiProvider#SunMIDI1"将在下列后果getReceiver被称为:如果类com.sun.media.sound.MidiProvider在已安装的MIDI设备提供者列表存在,则第Receiver与名器"SunMIDI1"将被退回。 如果找不到,则该提供商的第一个Receiver将被返回,无论名称如何。 如果没有,将返回所有设备列表( getMidiDeviceInfo返回)中名称为"SunMIDI1"的第一个Receiver , "SunMIDI1"返回所有设备列表中可以找到的第一个Receiver 。 如果失败,也抛出一个MidiUnavailableException 。 
| Modifier and Type | Method and Description | 
|---|---|
| static MidiDevice | getMidiDevice(MidiDevice.Info info)
              获取所请求的MIDI设备。 
             | 
| static MidiDevice.Info[] | getMidiDeviceInfo()
              获取表示系统上可用的所有MIDI设备的集合的信息对象数组。 
             | 
| static MidiFileFormat | getMidiFileFormat(File file)
              获得指定的MIDI文件格式 
              File。 | 
| static MidiFileFormat | getMidiFileFormat(InputStream stream)
              获取指定输入流中数据的MIDI文件格式。 
             | 
| static MidiFileFormat | getMidiFileFormat(URL url)
              获取指定URL中数据的MIDI文件格式。 
             | 
| static int[] | getMidiFileTypes()
              获取系统提供文件写入支持的一组MIDI文件类型。 
             | 
| static int[] | getMidiFileTypes(Sequence sequence)
              获取系统可以从指定的顺序写入的一组MIDI文件类型。 
             | 
| static Receiver | getReceiver()
              从外部MIDI端口或其他默认设备获取MIDI接收器。 
             | 
| static Sequence | getSequence(File file)
              从指定的MIDI序列 
              File。 | 
| static Sequence | getSequence(InputStream stream)
              从指定的输入流中获取MIDI序列。 
             | 
| static Sequence | getSequence(URL url)
              从指定的URL获取MIDI序列。 
             | 
| static Sequencer | getSequencer()
              获取默认的 
              Sequencer,连接到默认设备。 | 
| static Sequencer | getSequencer(boolean connected)
              获取默认值 
              Sequencer,可选地连接到默认设备。 | 
| static Soundbank | getSoundbank(File file)
              构造一个 
              Soundbank通过从指定的阅读它File。 | 
| static Soundbank | getSoundbank(InputStream stream)
              通过从指定的流中读取来构建MIDI声音库。 
             | 
| static Soundbank | getSoundbank(URL url)
              通过从指定的URL读取它构建一个 
              Soundbank。 | 
| static Synthesizer | getSynthesizer()
              获取默认合成器。 
             | 
| static Transmitter | getTransmitter()
              从外部MIDI端口或其他默认来源获取MIDI发送器。 
             | 
| static boolean | isFileTypeSupported(int fileType)
              指示文件是否支持指定的MIDI文件类型由系统提供。 
             | 
| static boolean | isFileTypeSupported(int fileType, Sequence sequence)
              指示是否可以从指定的顺序写入指定的文件类型的MIDI文件。 
             | 
| static int | write(Sequence in, int type, File out)
              写入表示所提供外部文件的MIDI文件类型的文件的字节流。 
             | 
| static int | write(Sequence in, int fileType, OutputStream out)
              写入表示所提供的输出流的MIDI文件类型的文件的字节流。 
             | 
public static MidiDevice.Info[] getMidiDeviceInfo()
getMidiDevice 。 
          MidiDevice.Info对象,每个安装的MIDI设备一个。 
            如果没有安装这样的设备,则返回长度为0的数组。 
           public static MidiDevice getMidiDevice(MidiDevice.Info info) throws MidiUnavailableException
info - 表示所需设备的设备信息对象。 
           MidiUnavailableException - 如果请求的设备由于资源限制而不可用 
           IllegalArgumentException - 如果信息对象不表示系统上安装的MIDI设备 
           getMidiDeviceInfo() 
           public static Receiver getReceiver() throws MidiUnavailableException
MidiDeviceReceiver接口。 
            如果系统属性javax.sound.midi.Receiver已被定义或在文件“sound.properties”中定义,则用于标识提供默认接收器的设备。 详情请参阅class description 。 如果一个合适的MIDI端口不可用,则从安装的合成器中检索接收器。 
 如果由默认设备提供的本机接收器未实现MidiDeviceReceiver接口,则它将被包装在实现MidiDeviceReceiver接口的包装器类中。 相应的Receiver方法调用将被转发到本地接收器。 
 如果此方法成功返回,则属性的Receiver将被隐式打开,如果尚未打开。 可以通过在返回的Receiver上调用close来关闭隐式打开的设备。 所有打开的Receiver实例必须关闭以释放由MidiDevice保留的系统MidiDevice 。 有关开/关行为的详细说明,请参阅MidiDevice的类描述 。 
MidiUnavailableException - 如果默认接收器由于资源限制而不可用,或者系统中没有安装设备接收器 
           public static Transmitter getTransmitter() throws MidiUnavailableException
MidiDeviceTransmitter接口。 
            如果系统属性javax.sound.midi.Transmitter被定义或者在文件“sound.properties”中被定义,则用于识别提供默认发射机的设备。 详情请参阅class description 。 
 如果由默认设备提供的本地发送器未实现MidiDeviceTransmitter接口,则它将被包装在实现MidiDeviceTransmitter接口的包装器类中。 对应的Transmitter方法调用将被转发到本地发送器。 
 如果此方法成功返回,那么属性的Transmitter将被隐式打开,如果尚未打开。 可以通过在返回的Transmitter上调用close来关闭隐式打开的设备。 所有打开的Transmitter实例必须关闭以释放由MidiDevice保留的系统MidiDevice 。 有关开/关行为的详细说明,请参阅MidiDevice的类描述 。 
MidiUnavailableException - 如果默认发射机由于资源限制而不可用,或者系统中没有安装设备发射机 
           public static Synthesizer getSynthesizer() throws MidiUnavailableException
 如果定义了系统属性javax.sound.midi.Synthesizer或者在文件“sound.properties”中定义了该属性,则用于标识默认合成器。 详情请参阅class description 。 
MidiUnavailableException - 如果合成器由于资源限制而不可用,或者系统中没有安装合成器 
           public static Sequencer getSequencer() throws MidiUnavailableException
Sequencer ,连接到默认设备。 
           返回的Sequencer实例连接到默认的Synthesizer ,如getSynthesizer()所示 。 
           如果没有Synthesizer可用,或默认Synthesizer无法打开,则sequencer连接到默认值Receiver ,由getReceiver()返回。 
           连接是通过检索取得Transmitter从实例Sequencer并设置其Receiver 。 
           关闭并重新打开音序器将恢复与默认设备的连接。 
            此方法相当于调用getSequencer(true) 。 
 如果系统属性javax.sound.midi.Sequencer已被定义或在文件“sound.properties”中定义,则用于标识默认的音序器。 详情请参考class description 。 
MidiUnavailableException -如果序不可由于资源限制,或者没有 
            Receiver可通过任何安装 
            MidiDevice ,或无定序器安装在系统中。 
           getSequencer(boolean) , 
            getSynthesizer() , 
            getReceiver() 
           public static Sequencer getSequencer(boolean connected) throws MidiUnavailableException
Sequencer ,可选地连接到默认设备。 
            如果connected为真,返回的Sequencer实例连接到Synthesizer返回的默认值Synthesizer 。 如果没有Synthesizer可用,或默认Synthesizer无法打开,则sequencer连接到默认值Receiver ,如getReceiver()所示 。 连接是通过检索取得Transmitter从实例Sequencer并设置其Receiver 。 关闭并重新打开音序器将恢复与默认设备的连接。 
 如果connected为false,返回的Sequencer实例未连接,则没有打开Transmitters 。 为了在MIDI设备上播放音序器或Synthesizer ,有必要获得Transmitter并设置其Receiver 。 
 如果系统属性javax.sound.midi.Sequencer被定义或者在文件“sound.properties”中定义,则用于标识默认的音序器。 详情请参考class description 。 
connected - 返回的 
            Sequencer是否连接到默认值 
            Synthesizer 
           MidiUnavailableException - 如果定序器由于资源限制而不可用,或者系统中未安装定序器,或者如果 
            connected为真,并且没有 
            Receiver可用,任何已 
            MidiDevice 
           getSynthesizer() , 
            getReceiver() 
           public static Soundbank getSoundbank(InputStream stream) throws InvalidMidiDataException, IOException
stream - 声音库数据的来源。 
           InvalidMidiDataException - 如果流不指向系统识别的有效的MIDI声音库数据 
           IOException - 如果在加载soundbank时发生I / O错误 
           InputStream.markSupported() , 
            InputStream.mark(int) 
           public static Soundbank getSoundbank(URL url) throws InvalidMidiDataException, IOException
Soundbank 。 
           该URL必须指向一个有效的MIDI声音库文件。 
          url - 声音库数据的来源 
           InvalidMidiDataException - 如果URL不指向系统识别的有效的MIDI声音库数据 
           IOException - 如果在加载soundbank时发生I / O错误 
           public static Soundbank getSoundbank(File file) throws InvalidMidiDataException, IOException
Soundbank通过从指定的阅读它File 。 
           File必须指向一个有效的MIDI声音库文件。 
          file - 声音库数据的来源 
           InvalidMidiDataException - 如果 
            File没有指向系统识别的有效的MIDI声音库数据 
           IOException - 如果在加载soundbank时发生I / O错误 
           public static MidiFileFormat getMidiFileFormat(InputStream stream) throws InvalidMidiDataException, IOException
 该方法和/或其调用的代码可能需要从流中读取一些数据,以确定其数据格式是否受支持。 因此,实现可能需要标记流,读取足够的数据以确定其是否处于受支持的格式,并将流的读取指针重置为其原始位置。 如果输入流不允许此组操作,则此方法可能会失败,并带有IOException 。 
此操作只能对于可以由安装的文件读取器解析的类型的文件而成功。 如果没有安装兼容的文件阅读器,即使对于有效文件,也可能会出现InvalidMidiDataException异常。 如果安装了兼容的文件读取器,则在InvalidMidiDataException中也会失败,但在确定文件格式时遇到错误。
stream - 应提取文件格式信息的输入流 
           MidiFileFormat MIDI文件格式的 
            MidiFileFormat对象 
           InvalidMidiDataException - 如果流不指向系统识别的有效MIDI文件数据 
           IOException - 如果在访问流时发生I / O异常 
           getMidiFileFormat(URL) , 
            getMidiFileFormat(File) , 
            InputStream.markSupported() , 
            InputStream.mark(int) 
           public static MidiFileFormat getMidiFileFormat(URL url) throws InvalidMidiDataException, IOException
此操作只能对于可以由安装的文件读取器解析的类型的文件而成功。 如果没有安装兼容的文件阅读器,即使对于有效文件,也可能会出现InvalidMidiDataException异常。 如果安装了兼容的文件读取器,则在InvalidMidiDataException中也会失败,但在确定文件格式时遇到错误。
url - 应提取文件格式信息的URL 
           MidiFileFormat MIDI文件格式的 
            MidiFileFormat对象 
           InvalidMidiDataException - 如果URL不指向系统识别的有效的MIDI文件数据 
           IOException - 如果在访问URL时发生I / O异常 
           getMidiFileFormat(InputStream) , 
            getMidiFileFormat(File) 
           public static MidiFileFormat getMidiFileFormat(File file) throws InvalidMidiDataException, IOException
File 。 
           File必须指向系统识别的文件类型的有效MIDI文件数据。 
           此操作只能对于可以由安装的文件读取器解析的类型的文件而成功。 如果没有安装兼容的文件阅读器,即使对于有效文件,也可能会出现InvalidMidiDataException异常。 如果安装了兼容的文件读取器,则在InvalidMidiDataException中也会失败,但在确定文件格式时遇到错误。
file - 应 
            File文件格式信息的File 
           MidiFileFormat MIDI文件格式的一个 
            MidiFileFormat对象 
           InvalidMidiDataException - 如果 
            File没有指向系统识别的有效MIDI文件数据 
           IOException - 如果在访问文件时发生I / O异常 
           getMidiFileFormat(InputStream) , 
            getMidiFileFormat(URL) 
           public static Sequence getSequence(InputStream stream) throws InvalidMidiDataException, IOException
 该方法和/或其调用的代码可能需要从流中读取一些数据,以确定其数据格式是否受支持。 因此,实现可能需要标记流,读取足够的数据以确定其是否处于受支持的格式,并将流的读取指针重置为其原始位置。 如果输入流不允许此组操作,则此方法可能会失败,并带有IOException 。 
 此操作只能对于可以由安装的文件读取器解析的类型的文件而成功。 如果没有安装兼容的文件阅读器,即使对于有效文件,也可能会出现InvalidMidiDataException异常。 如果安装了兼容的文件阅读器,则它也将失败,并且InvalidMidiDataException在文件数据Sequence对象时遇到错误。 
stream -从该输入流 
            Sequence应当被构造 
           Sequence对象 
           InvalidMidiDataException - 如果流不指向系统识别的有效MIDI文件数据 
           IOException - 如果在访问流时发生I / O异常 
           InputStream.markSupported() , 
            InputStream.mark(int) 
           public static Sequence getSequence(URL url) throws InvalidMidiDataException, IOException
 此操作只能对于可以由安装的文件读取器解析的类型的文件而成功。 如果没有安装兼容的文件阅读器,即使对于有效文件,也可能会出现InvalidMidiDataException异常。 如果安装了兼容的文件阅读器,则它也将失败,并显示InvalidMidiDataException,但在从文件数据Sequence对象时遇到错误。 
url -从该网址 
            Sequence应当建立 
           Sequence对象基于由URL指向的MIDI文件数据 
           InvalidMidiDataException - 如果URL不指向系统识别的有效的MIDI文件数据 
           IOException - 如果在访问URL时发生I / O异常 
           public static Sequence getSequence(File file) throws InvalidMidiDataException, IOException
File 。 
           File必须指向系统识别的文件类型的有效MIDI文件数据。 
            此操作只能对于可以由安装的文件读取器解析的类型的文件而成功。 如果没有安装兼容的文件阅读器,即使对于有效文件,也可能会出现InvalidMidiDataException异常。 如果安装了兼容的文件读取器,则它也将失败,并显示InvalidMidiDataException,但在从文件数据Sequence对象时遇到错误。 
file - 
            File应从其中 
            Sequence Sequence 
           Sequence对象 
           InvalidMidiDataException - 如果文件没有指向系统识别的有效的MIDI文件数据 
           IOException - 如果发生I / O异常 
           public static int[] getMidiFileTypes()
public static boolean isFileTypeSupported(int fileType)
fileType - 查询写入功能的文件类型 
           true如果文件类型是支持,否则 
            false 
           public static int[] getMidiFileTypes(Sequence sequence)
sequence - 查询MIDI文件类型支持的顺序 
           public static boolean isFileTypeSupported(int fileType,
                                          Sequence sequence) 
          fileType - 查询写入功能的文件类型 
           sequence - 查询文件写入支持的顺序 
           true如果该序列支持文件类型,否则为 
            false 
           public static int write(Sequence in, int fileType, OutputStream out) throws IOException
in - 包含要写入文件的MIDI数据的序列 
           fileType - 要写入输出流的文件的文件类型 
           out - 应写入文件数据的流 
           IOException - 如果发生I / O异常 
           IllegalArgumentException - 如果系统不支持文件格式 
           isFileTypeSupported(int, Sequence) , 
            getMidiFileTypes(Sequence) 
           public static int write(Sequence in, int type, File out) throws IOException
in - 包含要写入文件的MIDI数据的序列 
           type - 要写入输出流的文件的文件类型 
           out - 应写入文件数据的外部文件 
           IOException - 如果发生I / O异常 
           IllegalArgumentException - 如果系统不支持文件类型 
           isFileTypeSupported(int, Sequence) , 
            getMidiFileTypes(Sequence) 
            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, 2014, Oracle and/or its affiliates. All rights reserved.