public class VoiceStatus extends Object
VoiceStatus
对象包含有关的一个
Synthesizer
产生声音的当前状态信息。
MIDI合成器通常能产生最大数量的同时指出了一些,也被称为声音。一个声音是一股连续的单音符,和分配输入MIDI音符的过程,具体的声音,称为声音分配。然而,每个语音分配算法和内容通常是一个MIDI合成器内隐外观。一个可以,当然,从MIDI消息,笔记的合成器播放学习,和一个可以推断出一些关于笔记的声音分配。但MIDI本身并不报告指出分配给语音合成器提供的一种手段,甚至也不是报告的合成器能合成多少声音。
然而,一个java的声音,Synthesizer
类可以揭露其声音的内容通过其getVoiceStatus()
方法。这种行为被推荐但可选;合成器,不暴露自己的语音配置简单的返回一零数组长度。一个Synthesizer
,并报告其语音状态应该保持这个信息在其所有的声音,所有的时间,无论是目前探测或不。换句话说,一个给定类型的Synthesizer
总是有一个固定的一些声音,等于同时指出它能够探测的最大数量。
如果声音不目前处理MIDI音符,它被认为是无效的。一个声音是无效的,当它已被没有注意到命令,或当每一个命令接收到的指令已被终止由一个相应的音符关闭(或通过一个“所有音符关闭”的消息)。例如,这种情况发生时,一个合成器能够播放16个同时音符被告知要播放一四个音符和弦,只有四个声音是活跃在这种情况下(假设没有早期的音符仍然演奏)。通常情况下,一个声音的状态报告为积极的是产生发声的声音,但这并不总是真实的,它取决于仪器的细节(即合成算法),以及如何长的说明一直在进行。例如,一个声音可能合成一个单一的手拍的声音。因为这个声音消逝的如此之快,它可能在音符前关闭接收消息成为无声。在这种情况下,声音仍然被认为是活跃的,即使没有声音,目前正在生产。
除了它的活跃或不活跃的状态,这VoiceStatus
类提供领域揭示声音的MIDI通道,银行和项目数,MIDI音符编号,和MIDI体积。所有这些都可以在一个声音的过程中改变。当声音处于非活动状态时,这些字段中的每个字段都有一个未指定的值,所以您应该先检查活动字段。
public boolean active
public int channel
MidiChannel
,
active
public int bank
SoundBank
对象。该值范围从0到16383,如果声音是活跃的,是未指定的,如果声音是无效的。
public int program
MidiChannel.getProgram()
,
Patch
,
active
public int note
public int volume
请注意,这个值不一定反映由这个声音产生的声音的瞬时水平,该水平是许多因素的结果,包括当前的仪器和它产生的振幅包络线的形状。
active
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.