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.