public class MidiSystem extends Object
MidiSystem类提供了访问安装的MIDI系统资源,包括设备如合成器,音序器,MIDI输入和输出端口。一个典型的简单的MIDI应用可以通过调用一个或多个
MidiSystem方法了解设备安装和获得该应用程序所需的。
类也有阅读文件流的方法,和包含标准MIDI文件数据或soundbanks网址。你可以查询一个指定的MIDI文件格式MidiSystem。
你不能实例化一个MidiSystem;所有的方法都是静态的。
属性可用于指定默认的MIDI设备。被认为是两个系统的属性和一个属性文件。的sound.properties属性文件是从实施的具体位置读取(通常是在java的安装目录lib目录)。如果一个属性作为一个系统属性和属性文件存在,则系统属性优先。如果没有指定,在可用设备中选择一个合适的默认值。在属性文件中指定Properties.load语法。下表列出了可用的属性键,并列出了它们的方法:
| Property Key | 接口 | 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类的完全限定名。设备名称是对
String匹配的
MidiDevice.Info的
getName方法返回。无论是类名称,或设备名称可能被省略。如果只有指定的类名称,则尾随的哈希标记是可选的。
如果提供程序类是指定的,它可以从安装商成功检索的对象列表,MidiDevice.Info从提供者检索。否则,当这些设备不提供后续的比赛名单是从getMidiDeviceInfo()包含所有可用的MidiDevice.Info对象。
如果指定的设备名,由此产生MidiDevice.Info对象列表搜索:第一个匹配的名字,和其MidiDevice实现相应的接口,将返回。如果没有匹配的MidiDevice.Info找到对象,或设备名称没有指定,从结果列表中的第一个合适的设备将返回。对于音序器和合成器,如果它实现了相应的接口设备是适合的;而对接收机和发射机,如果它实现了既不合成器和音序器提供至少一个接收机或发射机设备是适合的,分别。例如,一个价值"com.sun.media.sound.MidiProvider#SunMIDI1"物业javax.sound.midi.Receiver将有以下的后果时,getReceiver称:如果类com.sun.media.sound.MidiProvider存在于安装的MIDI设备提供商列表,名称"SunMIDI1"第一Receiver装置将返回。如果它不能被发现,从第一Receiver提供者将返回,无论名称。如果没有,在所有设备列表名称"SunMIDI1"第一Receiver(返回的getMidiDeviceInfo)将被退回,或者,如果没有找到,第一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)
获取指定的
File MIDI文件格式。
|
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)
从指定的
File MIDI序列。
|
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)
通过阅读它从指定的
File构建
Soundbank。
|
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定义或是文件中的“声音定义。属性”,它是用来识别装置,提供了默认的接收器。有关详细信息,请参阅class description。如果一个合适的端口不可用,接收从安装合成器检索。
如果本地接收机默认设备提供的未实现MidiDeviceReceiver界面,它将被包裹在一个实现了MidiDeviceReceiver接口封装类。相应的Receiver方法调用将被转发到本地接收机。
如果这个方法返回成功,这Receiver属于MidiDevice打开含蓄,如果尚未打开。它可以通过对返回的Receiver调用close近隐式开启装置。所有打开的Receiver实例必须关闭以释放系统资源占有的MidiDevice。详细描述了打开/关闭的行为看MidiDevice类的描述。
MidiUnavailableException如果默认接收不可用,由于资源的限制,或没有设备提供接收器安装在系统
public static Transmitter getTransmitter() throws MidiUnavailableException
MidiDeviceTransmitter接口。
如果系统性能javax.sound.midi.Transmitter定义或是文件中的“声音定义。属性”,它是用来识别装置,提供了默认的发射器。有关详细信息,请参阅class description。
如果本地发射机默认设备提供的未实现MidiDeviceTransmitter界面,它将被包裹在一个实现了MidiDeviceTransmitter接口封装类。相应的Transmitter方法调用将被转发到本地发射机。
如果这个方法返回成功,这Transmitter属于MidiDevice打开含蓄,如果尚未打开。它可以通过对返回的Transmitter调用close近隐式开启装置。所有打开的Transmitter实例必须关闭以释放系统资源占有的MidiDevice。详细描述了打开/关闭的行为看MidiDevice类的描述。
MidiUnavailableException -如果默认发射器不可用,由于资源的限制,或没有设备提供发射机安装在系统
public static Synthesizer getSynthesizer() throws MidiUnavailableException
如果系统性能javax.sound.midi.Synthesizer定义或是文件中的“声音定义属性”,它是用来标识默认频率合成器。有关详细信息,请参阅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定义或是文件中的“声音定义属性”,它是用来确定默认的音序器。有关详细信息,请参阅class description。
MidiUnavailableException如果音序器不可用,由于资源的限制,或是没有
Receiver可被任何安装或没有
MidiDevice,音序器是安装在系统。
getSequencer(boolean),
getSynthesizer(),
getReceiver()
public static Sequencer getSequencer(boolean connected) throws MidiUnavailableException
Sequencer,随意连接到默认设备。
如果connected是真实的,返回的Sequencer实例连接到默认的Synthesizer,返回的getSynthesizer()。如果没有Synthesizer可用,或默认Synthesizer无法打开的sequencer连接到默认的Receiver,返回的getReceiver()。连接是通过检索Transmitter实例从Sequencer和设置Receiver了。关闭并重新打开音序器将恢复连接的默认设备。
如果connected是假的,返回的Sequencer实例不连接,没有打开的Transmitters。为了在MIDI设备播放音序器,或Synthesizer,要得到一个Transmitter并设置其Receiver。
如果系统性能javax.sound.midi.Sequencer定义或是文件中的“声音定义属性”,它是用来确定默认的音序器。有关详细信息,请参阅class description。
connected是否返回的
Sequencer连接到默认的
Synthesizer
MidiUnavailableException如果音序器不可用,由于资源的限制,或没有音序器是安装在系统中,如果
connected是真实的,并没有
Receiver可安装任何
MidiDevice
getSynthesizer(),
getReceiver()
public static Soundbank getSoundbank(InputStream stream) throws InvalidMidiDataException, IOException
stream -声音的银行数据源。
InvalidMidiDataException如果流不指向有效的MIDI声音库中的数据被系统识别
IOException如果I/O错误发生时加载声音库
InputStream.markSupported(),
InputStream.mark(int)
public static Soundbank getSoundbank(URL url) throws InvalidMidiDataException, IOException
Soundbank。URL必须指向一个有效的MIDI声音库文件。
url -声音的银行数据源
InvalidMidiDataException -如果URL没有指向有效的MIDI声音库中的数据被系统识别
IOException如果I/O错误发生时加载声音库
public static Soundbank getSoundbank(File file) throws InvalidMidiDataException, IOException
File构建
Soundbank。的
File必须指向一个有效的MIDI声音库文件。
file -声音的银行数据源
InvalidMidiDataException -如果
File没有指向有效的MIDI声音库中的数据被系统识别
IOException如果I/O错误发生时加载声音库
public static MidiFileFormat getMidiFileFormat(InputStream stream) throws InvalidMidiDataException, IOException
此方法和/或它调用的代码可能需要从流中读取一些数据,以确定它的数据格式是否被支持。因此,实现可能需要标记流,读取足够的数据,以确定它是否是在一个支持的格式,并重置流的读指针到其原来的位置。如果输入流不允许这样的操作,这种方法可能会失败,一个IOException。
此操作只能成功为一个类型的文件,该文件可以由已安装的文件阅读器解析。它可能会失败,一个invalidmididataexception即使有效的文件,如果没有安装兼容的文件阅读器。它也会失败的一个invalidmididataexception如果安装一个兼容的文件阅读器,但遇到错误的文件格式,确定。
stream -输入流从文件格式信息应提取
MidiFileFormat对象描述MIDI文件格式
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文件格式
InvalidMidiDataException -如果URL没有指向有效的MIDI文件数据被系统识别
IOException如果发生I/O访问URL时例外
getMidiFileFormat(InputStream),
getMidiFileFormat(File)
public static MidiFileFormat getMidiFileFormat(File file) throws InvalidMidiDataException, IOException
File MIDI文件格式,
File必须指向一个文件类型被系统识别有效的MIDI文件中的数据。
此操作只能成功为一个类型的文件,该文件可以由已安装的文件阅读器解析。它可能会失败,一个invalidmididataexception即使有效的文件,如果没有安装兼容的文件阅读器。它也会失败的一个invalidmididataexception如果安装一个兼容的文件阅读器,但遇到错误的文件格式,确定。
file -
File从文件格式信息应提取
MidiFileFormat对象描述MIDI文件格式
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的URL,
Sequence应构建
Sequence对象
InvalidMidiDataException -如果URL没有指向有效的MIDI文件数据被系统识别
IOException如果发生I/O访问URL时例外
public static Sequence getSequence(File file) throws InvalidMidiDataException, IOException
File MIDI序列。的
File必须指向一个文件类型被系统识别有效的MIDI文件中的数据。
此操作只能成功为一个类型的文件,该文件可以由已安装的文件阅读器解析。它可能会失败,一个invalidmididataexception即使有效的文件,如果没有安装兼容的文件阅读器。它也会失败的一个invalidmididataexception如果安装一个兼容的文件阅读器,但遇到错误而从文件数据构建Sequence对象。
file -
File,
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.