所有类


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 规范通常让合成器根据实现程序的需要来决定数据的使用方式。例如,不一定需要始终将速度数据映射到音量和/或声音的亮度。

另请参见:
Synthesizer.getChannels()

方法摘要
 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)

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部