public interface MidiChannel
MidiChannel
对象代表一个MIDI通道。一般来说,每个
MidiChannel
方法处理像叫MIDI”频道的声音”或“渠道模式”消息由MIDI规范定义。然而,
MidiChannel
增加了一些“得到”的方法来获取价值的一个标准的MIDI通道的信息最近设置。同样,每个通道的单独和静音的方法已被添加。
一个
对象集合Synthesizer
MidiChannels
,通常为每一个的16通道的MIDI 1规范规定。的Synthesizer
时产生声音的noteOn
MidiChannels
收到消息。
看到MIDI 1规范有关规定的行为的MIDI通道消息的更多信息,而不是详尽的记录在这里。规范的标题是MIDI Reference: The Complete MIDI 1.0 Detailed Specification
,并由MIDI制造商协会出版( http://www.midi.org)。
MIDI原本协议报告键盘音乐家的手势。这发生在MidiChannel
API可见,保留关键数、速度等关键概念和关键压力MIDI。应该了解,MIDI数据并不一定是一个键盘手(源可能是一种不同的音乐家,或软件)。一些设备可能会产生恒定的值的速度和压力,无论如何进行说明。同时,MIDI规范往往留给合成器的实现者认为合适的方式使用数据。例如,速度数据不需要总是被映射到体积和/或亮度。
Modifier and Type | Method and Description |
---|---|
void |
allNotesOff()
关闭当前在这个通道上的所有的注释。
|
void |
allSoundOff()
立即关闭所有声音笔记这个渠道,忽视保持踏板的状态和当前的
Instrument 内部衰减率。
|
void |
controlChange(int controller, int value)
在指定的控制器的值的变化作出反应。
|
int |
getChannelPressure()
获取通道的键盘压力。
|
int |
getController(int controller)
获取指定控制器的当前值。
|
boolean |
getMono()
获得当前的单/多模式。
|
boolean |
getMute()
获取此通道的当前静音状态。
|
boolean |
getOmni()
获得当前的全方位模式。
|
int |
getPitchBend()
获取此通道的向上或向下的偏移量偏移量。
|
int |
getPolyPressure(int noteNumber)
获取指定键被压下的压力。
|
int |
getProgram()
获取此通道的当前程序号。
|
boolean |
getSolo()
获得此通道的当前状态。
|
boolean |
localControl(boolean on)
关闭或关闭本地控制。
|
void |
noteOff(int noteNumber)
将指定的注释关闭。
|
void |
noteOff(int noteNumber, int velocity)
将指定的注释关闭。
|
void |
noteOn(int noteNumber, int velocity)
开始指定的注释发声。
|
void |
programChange(int program)
更改程序(补丁)。
|
void |
programChange(int bank, int program)
更改程序使用银行和程序(补丁)号码。
|
void |
resetAllControllers()
重置所有实现控制器的默认值。
|
void |
setChannelPressure(int pressure)
对键盘压力的变化作出反应。
|
void |
setMono(boolean on)
关闭或关闭单模式。
|
void |
setMute(boolean mute)
设置此通道的静音状态。
|
void |
setOmni(boolean on)
关闭或关闭全方位模式。
|
void |
setPitchBend(int bend)
更改此通道上的所有注释的音高偏移量。
|
void |
setPolyPressure(int noteNumber, int pressure)
在指定的说明的键压力的变化作出反应。
|
void |
setSolo(boolean soloState)
设置此通道的独奏状态。
|
void noteOn(int noteNumber, int velocity)
velocity
是零,这种方法而不是像
noteOff(int)
,终止注。
noteNumber
的MIDI音符编号,从0到127(60 =中央C)
velocity
-速度,关键是郁闷
noteOff(int, int)
void noteOff(int noteNumber, int velocity)
Instrument
。如果保持踏板(控制器;看到
controlChange
)下降,这种方法的效果是推迟到松开踏板。
noteNumber
的MIDI音符编号,从0到127(60 =中央C)
velocity
-速度,关键是释放
noteOff(int)
,
noteOn(int, int)
,
allNotesOff()
,
allSoundOff()
void noteOff(int noteNumber)
noteNumber
的MIDI音符编号,从0到127(60 =中央C)
noteOff(int, int)
void setPolyPressure(int noteNumber, int pressure)
setPolyPressure
是成功的,使用
getPolyPressure
。
noteNumber
的MIDI音符编号,从0到127(60 =中央C)
pressure
-指定键的值,从0到127(127 =最大压力)
getPolyPressure(int)
int getPolyPressure(int noteNumber)
noteNumber
的MIDI音符编号,从0到127(60 =中C)如果设备不支持设置多压力,该方法总是返回0。打电话
setPolyPressure
将没有效果。
setPolyPressure(int, int)
void setChannelPressure(int pressure)
setPolyPressure
。更常见的是,它是测量一个不落实的关键压力装置的单传感器的复调。压力可以用来控制声音的各个方面,如在
setPolyPressure
。这是可能的,潜在的合成器不支持MIDI消息。为了验证
setChannelPressure
是成功的,使用
getChannelPressure
。
pressure
与键盘被压抑的压力,从0到127(127 =最大压力)
setPolyPressure(int, int)
,
getChannelPressure()
int getChannelPressure()
setChannelPressure
将没有效果。
setChannelPressure(int)
void controlChange(int controller, int value)
Instrument
反应控制器方式的改变可能是特定的
Instrument
。
MIDI 1规范定义了两位控制器和14位微控制器。连续控制器,如车轮和滑块,通常有14位(两MIDI字节),而离散控制器,如开关,通常有7位(一个MIDI字节)。参照规范,查看每种类型的控件的预期分辨率。
控制器64通过95(0x40 - 0x5f)允许7位精度。一位控制器的值是由value
论点完全建立。一组额外的控制器提供14位精度,通过使用两个控制器的数字,一个最重要的7位和另一个至少显着的7位。控制器的数字0到31(0x00 - 0x1F)控制的14位微控制器最重要的7位;控制器的数字32到63(0x20 - 0x3f)控制这些控制器的最小的7位。例如,控制器7号(0x07)控制上7位通道音量控制器,与控制器39号(0x27)控制的低7位。一个14位控制器的值是由两个半的相互作用决定的。当最重要的7位的控制器设置(使用控制器数字31到0),较低的7位自动设置为0。可以使用较低的7位的相应的控制器号,以进一步调节控制器的值。这是可能的,底层的合成器不支持一个特定的控制器消息。为了验证电话controlChange
是成功的,使用getController
。
controller
-控制器的数量(0至127;看到MIDI 1规范的解释)
value
到指定的控制器变化值(0到127)
getController(int)
int getController(int controller)
controlChange
将没有效果。
controller
-控制器的值为所需的数量。允许的范围是0-127;看到MIDI 1规范的解释。
controlChange(int, int)
void programChange(int program)
MIDI规范没有规定是否注意到已经探测应该切换到新的乐器(音色)或继续原来的音色直到终止的注意了。
该程序数为零的基础(从0到127表示)。注意,MIDI硬件显示和文学对MIDI通常使用范围1到128而不是。这是可能的,底层的合成器不支持一个特定的程序。为了验证电话programChange
是成功的,使用getProgram
。
program
-程序号切换到(0到127)
programChange(int, int)
,
getProgram()
void programChange(int bank, int program)
programChange
是成功的,使用
getProgram
和
getController
。由于银行通过控制方式的变化,你可以验证当前银行声明如下:
国际银行(getcontroller(0)* 128)+ getcontroller(32);
bank
-银行数字开关(0到16383)
program
-程序(补丁)使用指定的银行(0到127)
programChange(int)
,
getProgram()
int getProgram()
Patch.getProgram()
,
Synthesizer.loadInstrument(javax.sound.midi.Instrument)
,
programChange(int)
void setPitchBend(int bend)
MIDI规范规定,弯是一个14位的值,在零是最大向下弯曲,16383是最大的向上弯曲,8192是中心(不弯)。指定的音高变化的实际量,它可以改变由一个音高弯曲灵敏度设置。然而,通用MIDI规范说的默认范围应该是两个半音上下从中心。这是可能的,潜在的合成器不支持MIDI消息。为了验证setPitchBend
是成功的,使用getPitchBend
。
bend
-音高变化量,作为一个非负的14位的值(8192 =无弯曲)
getPitchBend()
int getPitchBend()
setPitchBend
将没有效果。
setPitchBend(int)
void resetAllControllers()
controlChange(int, int)
void allNotesOff()
Instrument
。如果把脚踏控制器(见
controlChange
)下降,这种方法的效果是推迟到松开踏板。
allSoundOff()
,
noteOff(int)
void allSoundOff()
Instrument
内部衰减率。
allNotesOff()
boolean localControl(boolean on)
localControl
成功,检查返回值。
on
-
true
把局部控制,
false
把局部控制
void setMono(boolean on)
“单”,“单是短暂的,“在这种情况下是不是“复调”,指的是一个单一的合成器声音/ MIDI通道。我没有多少音频通道可能有(如“单声道”和“立体声”的录音)。这是可能的,底层的合成器不支持单模式。为了验证电话setMono
是成功的,使用getMono
。
on
-
true
转单模式,
false
关掉它(这意味着多模式)。
getMono()
,
VoiceStatus
boolean getMono()
setMono
。
true
如果单模式,否则
false
(意思是聚模式)。
setMono(boolean)
void setOmni(boolean on)
setOmni
是成功的,使用
getOmni
。
on
-
true
转全模式,
false
关掉它。
getOmni()
,
VoiceStatus
boolean getOmni()
setOmni
。
true
如果全模式打开,否则
false
(意思是全模式关闭)。
setOmni(boolean)
void setMute(boolean mute)
true
渠道是温和的,
false
渠道的声音(如果其他渠道不是独奏)。
不像allSoundOff()
,这种方法只适用于一个特定的渠道,而不是所有的通道。此外,它的沉默不仅目前冠冕堂皇的笔记,而且随后收到的票据。这是可能的,潜在的合成器不支持路由通道。为了验证电话setMute
是成功的,使用getMute
。
mute
-新的静音状态
getMute()
,
setSolo(boolean)
boolean getMute()
false
。
true
通道静音,或
false
如果不
setMute(boolean)
void setSolo(boolean soloState)
solo
是
true
只有这个渠道和其他渠道的声音会单飞。如果
solo
是
false
只有其他独立渠道将声音,除非没有渠道是独奏,在这种情况下,所有的通道将声音unmuted。这是可能的,潜在的合成器不支持独奏频道。为了验证电话
setSolo
是成功的,使用
getSolo
。
soloState
-渠道的新独奏状态
getSolo()
boolean getSolo()
false
。
true
信道是独奏,或
false
如果不
setSolo(boolean)
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.