public interface MidiChannel 
      MidiChannel对象表示单个MIDI通道。 
       通常,每个MidiChannel方法处理由MIDI规范定义的类似的MIDI“通道语音”或“通道模式”消息。 
       然而, MidiChannel添加了一些“get”方法,它检索最近由一个标准MIDI通道消息设置的值。 
       类似地,已经添加了每通道独奏和静音的方法。 
        SynthesizerMidiChannels ,通常为MIDI 1.0规范规定的16个通道中的每一个。 Synthesizer的MidiChannels收到noteOn消息时会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规范通常会使合成器以实现者认为合适的方式使用数据。 例如,速度数据不一定总是映射到体积和/或亮度。 
| 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) 
           
          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)如果设备不支持设置 
            setPolyPressure压力,该方法总是返回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.0规范定义了7位控制器和14位控制器。 连续的控制器,例如轮子和滑块,通常具有14位(两个MIDI字节),而离散控制器(例如开关)通常具有7位(一个MIDI字节)。 请参阅规范以查看每种控制类型的预期分辨率。
 控制器64到95(0x40 - 0x5F)允许7位精度。 一个7位控制器的值完全由value参数设置。 另外一组控制器通过使用两个控制器编号提供14位精度,一个用于最高有效7位,另一个用于最不重要的7位。 控制器编号0到31(0x00 - 0x1F)控制最高有效位的14位控制器; 控制器编号32到63(0x20 - 0x3F)控制这些控制器的最低有效7位。 例如,控制器编号7(0x07)控制通道音量控制器的高7位,控制器编号39(0x27)控制低7位。 14位控制器的值由两半的相互作用决定。 当控制器的最高有效7位(使用控制器编号0到31)时,低7位自动设置为0.然后可以使用较低7位的相应控制器编号进一步调制控制器值。 底层合成器可能不支持特定的控制器消息。 为了验证controlChange的呼叫是否成功,请使用getController 。 
controller - 控制器号码(0〜127;请参阅MIDI 1.0规格说明) 
           value - 指定控制器更改的值(0到127) 
           getController(int) 
           int getController(int controller)
controlChange将不起作用。 
          controller - 需要其值的控制器的编号。 
            允许范围为0-127; 
            请参阅MIDI 1.0规范的解释。 
           controlChange(int, int) 
           void programChange(int program)
MIDI规范不规定已经发声的音符是否应切换到新乐器(音色)或继续其原始音色,直到由音符关闭终止。
 程序号为0(从0到127表示)。 请注意,MIDI硬件显示和关于MIDI的文献通常使用1到128的范围。 底层合成器可能不支持特定的程序。 为了验证programChange的呼叫是否成功,请使用getProgram 。 
program - 要切换到的程序号(0到127) 
           programChange(int, int) , 
            getProgram() 
           void programChange(int bank,
                   int program) 
          programChange的呼叫是否成功,请使用getProgram和getController 。 
           由于银行通过控制变更的方式进行更改,因此您可以使用以下声明验证当前银行: 
             int bank = (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则除非没有声道独奏,否则只有其他独奏声道才会发出声音,在这种情况下,所有未静音通道都会发出声音。 
           底层合成器可能不支持独奏频道。 
           为了验证对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.