public interface Synthesizer extends MidiDevice
Synthesizer
产生声音。这通常发生在其中的
Synthesizer
的
MidiChannel
对象接收到一个
noteOn
消息,直接或通过
Synthesizer
对象。许多
Synthesizer
s支持
Receivers
MIDI事件,通过它可以传递到
Synthesizer
。在这种情况下,通常的反应的
Synthesizer
发送相应的信息到相应的
MidiChannel
,或通过处理事件本身,如果没有一个MIDI通道的信息。
的Synthesizer
接口包括加载和卸载工具soundbanks方法。仪器是合成某种声音的规范,无论声音模拟传统仪器或是某种声音效果或其他虚构的声音。一个声音库是一个集仪器,由银行和计划数(通过仪器的Patch
对象)。不同的Synthesizer
类可能会实现不同的声音合成技术,这意味着一些乐器,没有人会与一个给定的合成器兼容。另外,合成器可能有一个有限的内存工具,意味着不是每个声音库和工具可以由每个合成器使用,即使合成技术是兼容的。是否从某个声音库中的工具可以通过一个给定的合成器演奏,调用的方法Synthesizer
isSoundbankSupported
。
“加载”一个仪器意味着该仪器成为可用于合成纸币。该仪器是加载到库和程序的Patch
对象指定的位置。加载并不一定意味着随后播放的笔记将立即有这个新加载的乐器的声音。为发挥笔记的工具,一个合成器的MidiChannel
对象必须接受(或接收)程序更改消息导致特定的仪器库和程序号被选中。
MidiDevice.Info
Modifier and Type | Method and Description |
---|---|
Instrument[] |
getAvailableInstruments()
获得与合成器的仪器的列表。
|
MidiChannel[] |
getChannels()
得到控制的合成器MIDI通道的设置。
|
Soundbank |
getDefaultSoundbank()
得到的合成器默认声音库中,如果存在。
|
long |
getLatency()
该合成器所得到的处理延迟,表示在微秒。
|
Instrument[] |
getLoadedInstruments()
获取列表正在加载到这个
Synthesizer 仪器。
|
int |
getMaxPolyphony()
获得该合成器可以同时发出的最大数量的音符。
|
VoiceStatus[] |
getVoiceStatus()
获得由该合成器产生的声音的当前状态。
|
boolean |
isSoundbankSupported(Soundbank soundbank)
通知是否该合成器可从指定的声音库中加载工具的来电。
|
boolean |
loadAllInstruments(Soundbank soundbank)
加载到该
Synthesizer 所有工具包含在指定
Soundbank 。
|
boolean |
loadInstrument(Instrument instrument)
使一个特定的仪器可用于合成。
|
boolean |
loadInstruments(Soundbank soundbank, Patch[] patchList)
负载的仪器由指定的块引用,从指定的
Soundbank 。
|
boolean |
remapInstrument(Instrument from, Instrument to)
变换工具。
|
void |
unloadAllInstruments(Soundbank soundbank)
卸载包含在指定
Soundbank 所有仪器。
|
void |
unloadInstrument(Instrument instrument)
卸载特定工具。
|
void |
unloadInstruments(Soundbank soundbank, Patch[] patchList)
卸载工具指定的块引用,从MIDI声音银行规定。
|
close, getDeviceInfo, getMaxReceivers, getMaxTransmitters, getMicrosecondPosition, getReceiver, getReceivers, getTransmitter, getTransmitters, isOpen, open
int getMaxPolyphony()
getVoiceStatus()
long getLatency()
虽然延迟表示为微秒,合成器的实际测量的延迟可能在更广泛的范围比这个分辨率显示。例如,一个合成器可能有一个最坏情况下的延迟几毫秒或更多。
MidiChannel[] getChannels()
MidiChannel
接收发送,信道数的MIDI消息。
MIDI 1规范提供了16个频道,所以此方法返回至少16个元素的数组。然而,如果这个合成器不使用所有16个通道,一些元素的数组可能null
,所以你应该使用前必须检查每个元素。
Synthesizer
管理
MidiChannel
对象数组。某些数组元素可以
null
。
VoiceStatus[] getVoiceStatus()
Synthesizer
不提供语音信息,返回的数组将总长度为0。否则,它的长度等于声音的总数量,返回的
getMaxPolyphony()
。(见的合成器的声音,一个解释的
VoiceStatus
类描述)
VoiceStatus
对象相应的合成器的声音提供信息的数组
getMaxPolyphony()
,
VoiceStatus
boolean isSoundbankSupported(Soundbank soundbank)
IllegalArgumentException
载仪器。
soundbank
-声音库支持的查询
true
如果声音库的支持,否则
false
loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
,
loadAllInstruments(javax.sound.midi.Soundbank)
,
unloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
,
unloadAllInstruments(javax.sound.midi.Soundbank)
,
getDefaultSoundbank()
boolean loadInstrument(Instrument instrument)
Patch
对象指定的补丁的位置,所以如果一个程序改变信息的接收(或已收到),导致斑块被选中,随后的笔记将在使用
instrument
声。如果指定的仪器已经加载,该方法不返回
true
。
仪器必须是一个声音库中,这Synthesizer
支持部分。(确保,你可以使用的方法和Instrument
getSoundbank
Synthesizer
,isSoundbankSupported
法)
instrument
仪表负载
true
如果仪器成功加载(或已经),
false
如果仪器不能加载(例如,如果合成器内存不足来加载它)
IllegalArgumentException
-如果这
Synthesizer
不支持指定的仪器的声音库
unloadInstrument(javax.sound.midi.Instrument)
,
loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
,
loadAllInstruments(javax.sound.midi.Soundbank)
,
remapInstrument(javax.sound.midi.Instrument, javax.sound.midi.Instrument)
,
SoundbankResource.getSoundbank()
,
MidiChannel.programChange(int, int)
void unloadInstrument(Instrument instrument)
instrument
工具卸载
IllegalArgumentException
-如果这
Synthesizer
不支持指定的仪器的声音库
loadInstrument(javax.sound.midi.Instrument)
,
unloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
,
unloadAllInstruments(javax.sound.midi.Soundbank)
,
getLoadedInstruments()
,
remapInstrument(javax.sound.midi.Instrument, javax.sound.midi.Instrument)
boolean remapInstrument(Instrument from, Instrument to)
from
to
需要的地方。
from
位于2号银行,计划数的11,导致银行和映射程序的位置是相反的
to
占领。
from
卸载工具。
取消映射加载仪from
通过调用一loadInstrument(javax.sound.midi.Instrument)
,loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
或loadAllInstruments(javax.sound.midi.Soundbank)
。
from
-被取代的
Instrument
对象
to
-用于旧仪器的地方
Instrument
对象,它应该载入合成器
true
如果仪器成功地重新映射,
false
如果功能未实现的合成器
IllegalArgumentException
如果仪器或仪器
from
to
不是由合成器或者仪器
to
装不支持
NullPointerException
-如果
from
或
to
参数为空值
loadInstrument(javax.sound.midi.Instrument)
,
loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
,
loadAllInstruments(javax.sound.midi.Soundbank)
Soundbank getDefaultSoundbank()
null
如果不存在。
isSoundbankSupported(javax.sound.midi.Soundbank)
Instrument[] getAvailableInstruments()
注意,你不要用这种方法来找出哪些工具正在加载到合成器;为此,你用getLoadedInstruments()
。该方法也不表示可以加载到合成器上的所有的工具,它只表示带有合成器的子集。学习的另一个工具是否可以被加载,你可以调用isSoundbankSupported()
,如果仪器的Soundbank
支持,您可以尝试加载仪。
getLoadedInstruments()
,
isSoundbankSupported(Soundbank)
,
loadInstrument(javax.sound.midi.Instrument)
Instrument[] getLoadedInstruments()
Synthesizer
仪器。
boolean loadAllInstruments(Soundbank soundbank)
Synthesizer
所有工具包含在指定
Soundbank
。
soundbank
仪器是谁的都要加载的
Soundbank
true
如果仪器都成功加载(或已经),
false
如果任何仪器无法加载(例如,如果
Synthesizer
有内存不足)
IllegalArgumentException
如果请求的声音库与合成器不相容。
isSoundbankSupported(javax.sound.midi.Soundbank)
,
loadInstrument(javax.sound.midi.Instrument)
,
loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
void unloadAllInstruments(Soundbank soundbank)
Soundbank
所有仪器。
boolean loadInstruments(Soundbank soundbank, Patch[] patchList)
Soundbank
。每个对象的
Patch
表明银行和项目数;的
Instrument
具有匹配
Patch
加载到库和程序的位置。
soundbank
含仪器负载
Soundbank
patchList
名单补丁,仪器应装
true
如果仪器都成功加载(或已经),
false
如果任何仪器无法加载(例如,如果
Synthesizer
有内存不足)
IllegalArgumentException
如果声音库不支持扔。
isSoundbankSupported(javax.sound.midi.Soundbank)
,
Instrument.getPatch()
,
loadAllInstruments(javax.sound.midi.Soundbank)
,
loadInstrument(javax.sound.midi.Instrument)
,
Soundbank.getInstrument(Patch)
,
Sequence.getPatchList()
void unloadInstruments(Soundbank soundbank, Patch[] patchList)
soundbank
含工具卸载声音库
patchList
名单补丁,仪器应卸下
IllegalArgumentException
如果声音库不支持扔。
unloadInstrument(javax.sound.midi.Instrument)
,
unloadAllInstruments(javax.sound.midi.Soundbank)
,
isSoundbankSupported(javax.sound.midi.Soundbank)
,
Instrument.getPatch()
,
loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
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.