|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.sound.midi
接口 MidiChannel
-
public interface MidiChannel
表示一个单独 MIDI 通道的 MidiChannel
对象。通常,每个 MidiChannel
方法处理由 MIDI 规范定义的名称类似 MIDI “通道声音”或“通道模式”的消息。除此之外,MidiChannel
还添加了某些 "get" 方法,可检索由某个标准 MIDI 通道消息最近设置的值。类似地,也添加了用于检索每个通道的单声和静音值的方法。
对象有一个 Synthesizer
MidiChannels
集合,通常一个 MidiChannels
对应于 MIDI 1.0 规范规定的 16 个通道中的一个。Synthesizer
在其 MidiChannels
接收到 noteOn
消息时生成声音。
有关已规定的 MIDI 通道消息行为的更多信息,请参见 MIDI 1.0 规范,在此不加赘述。此规范名称为 MIDI Reference:The Complete MIDI 1.0 Detailed Specification
,它由 MIDI 制造商协会 (http://www.midi.org) 发布。
MIDI 最初是一个用于报告键盘乐师动作的协议。在 MidiChannel
API 中可以看出该起源的痕迹, 它保留了类似键号、键速度和键力度等 MIDI 概念。我们应该理解,MIDI 数据并不一定都起源于键盘演奏者(该源可以是另一类乐师或软件)。有些设备可以生成速度和力度的常数值,而不管如何演奏音符。同时,MIDI 规范通常让合成器根据实现程序的需要来决定数据的使用方式。例如,不一定需要始终将速度数据映射到音量和/或声音的亮度。
方法摘要 | |
---|---|
void |
allNotesOff() 关闭此通道上当前发声的所有音符。 |
void |
allSoundOff() 立即关闭通道上所有发声的音符,同时忽略当前 Instrument 的 Hold Pedal 状态和内部衰减率。 |
void |
controlChange(int controller, int value) 对指定控件的值的更改作出反应。 |
int |
getChannelPressure() 获得通道的键盘力度。 |
int |
getController(int controller) 获得指定控件的当前值。 |
boolean |
getMono() 获得当前的 mono/poly 模式。 |
boolean |
getMute() 获得此通道的当前静音状态。 |
boolean |
getOmni() 获得当前的 omni 模式。 |
int |
getPitchBend() 获得此通道的向上或向下的音高偏移量。 |
int |
getPolyPressure(int noteNumber) 获得指定键被按下的力度。 |
int |
getProgram() 获得此通道的当前程序号。 |
boolean |
getSolo() 获得此通道的当前 solo 状态。 |
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) 打开或关闭 mono 模式。 |
void |
setMute(boolean mute) 设置此通道的静音状态。 |
void |
setOmni(boolean on) 打开或关闭 omni 模式。 |
void |
setPitchBend(int bend) 更改此通道上所有音符的音高偏移量。 |
void |
setPolyPressure(int noteNumber, int pressure) 对指定音符键力度的更改作出反应。 |
void |
setSolo(boolean soloState) 设置此通道的 solo 状态。 |
方法详细信息 |
---|
noteOn
void noteOn(int noteNumber, int velocity)
-
启动指定的音符发出声音。键被按下的速度通常控制着音符的音量和/或亮度。如果
velocity
为零,则此方法类似于执行noteOff(int)
,终止此音符。 -
- 参数:
-
noteNumber
- MIDI 音符号,从 0 到 127(60 = 中央 C) -
velocity
- 键被按下的速度 - 另请参见:
-
noteOff(int, int)
noteOff
void noteOff(int noteNumber, int velocity)
-
关闭指定的音符。键的弹起速度,如果不忽略此值,则它可用于影响音符衰减的速度。任何情况下,音符都不太可能立即消失;它的衰减率取决于
Instrument
的内部情况。如果按下 Hold Pedal(一种控件;请参见controlChange
),则此方法的效果要推迟到踏板释放时才能体现。 -
- 参数:
-
noteNumber
- MIDI 音符号,从 0 到 127(60 = 中央 C) -
velocity
- 键释放的速度 - 另请参见:
-
noteOff(int)
,noteOn(int, int)
,allNotesOff()
,allSoundOff()
noteOff
void noteOff(int noteNumber)
- 关闭指定的音符。
-
- 参数:
-
noteNumber
- MIDI 音符号,从 0 到 127(60 = 中央 C) - 另请参见:
-
noteOff(int, int)
setPolyPressure
void setPolyPressure(int noteNumber, int pressure)
-
对指定音符键力度的更改作出反应。复调键力度允许键盘演奏者同时按下多个键,每个键可以有不同的力度值。此力度在不忽略的情况下,通常用于改变音符的不同特性,如音量、亮度或颤音。 基础合成器可能不支持此 MIDI 消息。为了验证
setPolyPressure
设置是否成功,可使用getPolyPressure
。 -
- 参数:
-
noteNumber
- MIDI 音符号,从 0 到 127(60 = 中央 C) -
pressure
- 指定键的值,从 0 到 127(127 = 最大力度) - 另请参见:
-
getPolyPressure(int)
getPolyPressure
int getPolyPressure(int noteNumber)
- 获得指定键被按下的力度。
-
- 参数:
-
noteNumber
- MIDI 音符号,从 0 到 127(60 = 中央 C)。 如果设备不支持设置 PolyPressure,则此方法始终返回 0。这种情况下,调用setPolyPressure
没有任何作用。 - 返回:
- 该音符的力度值,从 0 到 127(127 = 最大力度)
- 另请参见:
-
setPolyPressure(int, int)
setChannelPressure
void setChannelPressure(int pressure)
-
对键盘力度的更改作出反应。通道力度指示键盘演奏者按下整个键盘的力度。此值可以是每个键的力度传感器值的最大值或平均值,它由
setPolyPressure
设置。多数情况下,它是对设备上不实现复调键力度的单一传感器的的度量。力度可用于控制声音的各个方面,如在setPolyPressure
中的描述。 基础合成器可能不支持此 MIDI 消息。为了验证setChannelPressure
设置是否成功,可使用getChannelPressure
。 -
- 参数:
-
pressure
- 键盘被按下的力度,从 0 到 127(127 = 最大力度) - 另请参见:
-
setPolyPressure(int, int)
,getChannelPressure()
getChannelPressure
int getChannelPressure()
-
获得通道的键盘力度。如果设备不支持设置 ChannelPressure,则此方法始终返回 0。这种情况下,调用
setChannelPressure
没有任何作用。 -
- 返回:
- 该音符的力度值,从 0 到 127(127 = 最大力度)
- 另请参见:
-
setChannelPressure(int)