MidiChannel object represents a single MIDI channel. Generally,
each MidiChannel method processes a like-named MIDI "channel voice"
or "channel mode" message as defined by the MIDI specification. However,
MidiChannel adds some "get" methods that retrieve the value most
recently set by one of the standard MIDI channel messages. Similarly, methods
for per-channel solo and mute have been added.
A Synthesizer object has a collection of MidiChannels,
usually one for each of the 16 channels prescribed by the MIDI 1.0
specification. The Synthesizer generates sound when its
MidiChannels receive noteOn messages.
See the MIDI 1.0 Specification for more information about the prescribed
behavior of the MIDI channel messages, which are not exhaustively documented
here. The specification is titled
MIDI Reference: The Complete MIDI 1.0 Detailed Specification, and is
published by the MIDI Manufacturer's Association
(http://www.midi.org).
MIDI was originally a protocol for reporting the gestures of a keyboard
musician. This genesis is visible in the MidiChannel API, which
preserves such MIDI concepts as key number, key velocity, and key pressure.
It should be understood that the MIDI data does not necessarily originate
with a keyboard player (the source could be a different kind of musician, or
software). Some devices might generate constant values for velocity and
pressure, regardless of how the note was performed. Also, the MIDI
specification often leaves it up to the synthesizer to use the data in the
way the implementor sees fit. For example, velocity data need not always be
mapped to volume and/or brightness.
Synthesizer#getChannels
| Modifier and Type | Method and Description |
|---|---|
| public void | |
| public void | allSoundOff()
Immediately turns off all sounding notes on this channel, ignoring the
state of the Hold Pedal and the internal decay rate of the current
|
| public void | controlChange(int
the controller number (0 to 127; see the MIDI 1.0
Specification for the interpretation) controller, int the value to which the specified controller is changed
(0 to 127) value)Reacts to a change in the specified controller's value. |
| public int | Returns: the amount of pressure for that note, from 0 to 127 (127 = maximum pressure)Obtains the channel's keyboard pressure. |
| public int | Returns: the current value of the specified controller (0 to 127)the number of the controller whose value is desired.
The allowed range is 0-127; see the MIDI 1.0 Specification for
the interpretation. controller)Obtains the current value of the specified controller. |
| public boolean | Returns: true if mono mode is on, otherwise false (meaning
poly mode is on)Obtains the current mono/poly mode. |
| public boolean | Returns: true the channel is muted, or false if notObtains the current mute state for this channel. |
| public boolean | Returns: true if omni mode is on, otherwise false (meaning
omni mode is off)Obtains the current omni mode. |
| public int | Returns: bend amount, as a nonnegative 14-bit value (8192 = no bend)Obtains the upward or downward pitch offset for this channel. |
| public int | Returns: the amount of pressure for that note, from 0 to 127 (127 = maximum pressure)the MIDI note number, from 0 to 127 (60 = Middle C) noteNumber)Obtains the pressure with which the specified key is being depressed. |
| public int | Returns: the program number of the currently selected patchObtains the current program number for this channel. |
| public boolean | Returns: true the channel is solo, or false if notObtains the current solo state for this channel. |
| public boolean | Returns: the new local-control value, or false if local control is not supportedtrue to turn local control on, false to turn
local control offTurns local control on or off. |
| public void | noteOff(int
the MIDI note number, from 0 to 127 (60 = Middle C) noteNumber, int the speed with which the key was released velocity)Turns the specified note off. |
| public void | noteOff(int
the MIDI note number, from 0 to 127 (60 = Middle C) noteNumber)Turns the specified note off. |
| public void | noteOn(int
the MIDI note number, from 0 to 127 (60 = Middle C) noteNumber, int the speed with which the key was depressed velocity)Starts the specified note sounding. |
| public void | |
| public void | programChange(int
the bank number to switch to (0 to 16383) bank, int the program (patch) to use in the specified bank
(0 to 127) program)Changes the program using bank and program (patch) numbers. |
| public void | |
| public void | setChannelPressure(int
the pressure with which the keyboard is being depressed,
from 0 to 127 (127 = maximum pressure) pressure)Reacts to a change in the keyboard pressure. |
| public void | setMono(boolean
true to turn mono mode on, false to turn it
off (which means turning poly mode on)Turns mono mode on or off. |
| public void | |
| public void | |
| public void | setPitchBend(int
the amount of pitch change, as a nonnegative 14-bit value
(8192 = no bend) bend)Changes the pitch offset for all notes on this channel. |
| public void | setPolyPressure(int
the MIDI note number, from 0 to 127 (60 = Middle C) noteNumber, int value for the specified key, from 0 to 127
(127 = maximum pressure) pressure)Reacts to a change in the specified note's key pressure. |
| public void |
| allNotesOff | back to summary |
|---|---|
| public void allNotesOff() Turns off all notes that are currently sounding on this channel. The
notes might not die away instantaneously; their decay rate is determined
by the internals of the
| |
| allSoundOff | back to summary |
|---|---|
| public void allSoundOff() Immediately turns off all sounding notes on this channel, ignoring the
state of the Hold Pedal and the internal decay rate of the current
| |
| controlChange | back to summary |
|---|---|
| public void controlChange(int controller, int value) Reacts to a change in the specified controller's value. A controller is
some control other than a keyboard key, such as a switch, slider, pedal,
wheel, or breath-pressure sensor. The MIDI 1.0 Specification provides
standard numbers for typical controllers on MIDI devices, and describes
the intended effect for some of the controllers. The way in which an
The MIDI 1.0 Specification defines both 7-bit controllers and 14-bit controllers. Continuous controllers, such as wheels and sliders, typically have 14 bits (two MIDI bytes), while discrete controllers, such as switches, typically have 7 bits (one MIDI byte). Refer to the specification to see the expected resolution for each type of control.
Controllers 64 through 95 (0x40 - 0x5F) allow 7-bit precision. The value
of a 7-bit controller is set completely by the
It is possible that the underlying synthesizer does not support a
specific controller message. In order to verify that a call to
| |
| getChannelPressure | back to summary |
|---|---|
| public int getChannelPressure() Obtains the channel's keyboard pressure.
If the device does not support setting channel pressure, this method
always returns 0. Calling
| |
| getController | back to summary |
|---|---|
| public int getController(int controller) Obtains the current value of the specified controller. The return value is represented with 7 bits. For 14-bit controllers, the MSB and LSB controller value needs to be obtained separately. For example, the 14-bit value of the volume controller can be calculated by multiplying the value of controller 7 (0x07, channel volume MSB) with 128 and adding the value of controller 39 (0x27, channel volume LSB).
If the device does not support setting a specific controller, this method
returns 0 for that controller. Calling
| |
| getMono | back to summary |
|---|---|
| public boolean getMono() Obtains the current mono/poly mode. Synthesizers that do not allow
changing mono/poly mode will always return the same value, regardless of
calls to
| |
| getMute | back to summary |
|---|---|
| public boolean getMute() Obtains the current mute state for this channel. If the underlying
synthesizer does not support muting this channel, this method always
returns
| |
| getOmni | back to summary |
|---|---|
| public boolean getOmni() Obtains the current omni mode. Synthesizers that do not allow changing
the omni mode will always return the same value, regardless of calls to
| |
| getPitchBend | back to summary |
|---|---|
| public int getPitchBend() Obtains the upward or downward pitch offset for this channel. If the
device does not support setting pitch bend, this method always returns
8192. Calling
| |
| getPolyPressure | back to summary |
|---|---|
| public int getPolyPressure(int noteNumber) Obtains the pressure with which the specified key is being depressed.
If the device does not support setting poly pressure, this method always
returns 0. Calling
| |
| getProgram | back to summary |
|---|---|
| public int getProgram() Obtains the current program number for this channel.
| |
| getSolo | back to summary |
|---|---|
| public boolean getSolo() Obtains the current solo state for this channel. If the underlying
synthesizer does not support solo on this channel, this method always
returns
| |
| localControl | back to summary |
|---|---|
| public boolean localControl(boolean on) Turns local control on or off. The default is for local control to be on. The "on" setting means that if a device is capable of both synthesizing sound and transmitting MIDI messages, it will synthesize sound in response to the note-on and note-off messages that it itself transmits. It will also respond to messages received from other transmitting devices. The "off" setting means that the synthesizer will ignore its own transmitted MIDI messages, but not those received from other devices.
It is possible that the underlying synthesizer does not support local
control. In order to verify that a call to
| |
| noteOff | back to summary |
|---|---|
| public void noteOff(int noteNumber, int velocity) Turns the specified note off. The key-up velocity, if not ignored, can be
used to affect how quickly the note decays. In any case, the note might
not die away instantaneously; its decay rate is determined by the
internals of the
| |
| noteOff | back to summary |
|---|---|
| public void noteOff(int noteNumber) Turns the specified note off.
| |
| noteOn | back to summary |
|---|---|
| public void noteOn(int noteNumber, int velocity) Starts the specified note sounding. The key-down velocity usually
controls the note's volume and/or brightness. If
| |
| programChange | back to summary |
|---|---|
| public void programChange(int program) Changes a program (patch). This selects a specific instrument from the currently selected bank of instruments. The MIDI specification does not dictate whether notes that are already sounding should switch to the new instrument (timbre) or continue with their original timbre until terminated by a note-off. The program number is zero-based (expressed from 0 to 127). Note that MIDI hardware displays and literature about MIDI typically use the range 1 to 128 instead.
It is possible that the underlying synthesizer does not support a
specific program. In order to verify that a call to
| |
| programChange | back to summary |
|---|---|
| public void programChange(int bank, int program) Changes the program using bank and program (patch) numbers.
It is possible that the underlying synthesizer does not support a
specific bank, or program. In order to verify that a call to
int bank = (getController(0) * 128) + getController(32);
| |
| resetAllControllers | back to summary |
|---|---|
| public void resetAllControllers() Resets all the implemented controllers to their default values.
| |
| setChannelPressure | back to summary |
|---|---|
| public void setChannelPressure(int pressure) Reacts to a change in the keyboard pressure. Channel pressure indicates
how hard the keyboard player is depressing the entire keyboard. This can
be the maximum or average of the per-key pressure-sensor values, as set
by
It is possible that the underlying synthesizer does not support this MIDI
message. In order to verify that
| |
| setMono | back to summary |
|---|---|
| public void setMono(boolean on) Turns mono mode on or off. In mono mode, the channel synthesizes only one note at a time. In poly mode (identical to mono mode off), the channel can synthesize multiple notes simultaneously. The default is mono off (poly mode on). "Mono" is short for the word "monophonic," which in this context is opposed to the word "polyphonic" and refers to a single synthesizer voice per MIDI channel. It has nothing to do with how many audio channels there might be (as in "monophonic" versus "stereophonic" recordings).
It is possible that the underlying synthesizer does not support mono
mode. In order to verify that a call to
| |
| setMute | back to summary |
|---|---|
| public void setMute(boolean mute) Sets the mute state for this channel. A value of
Unlike
It is possible that the underlying synthesizer does not support muting
channels. In order to verify that a call to
| |
| setOmni | back to summary |
|---|---|
| public void setOmni(boolean on) Turns omni mode on or off. In omni mode, the channel responds to messages sent on all channels. When omni is off, the channel responds only to messages sent on its channel number. The default is omni off.
It is possible that the underlying synthesizer does not support omni
mode. In order to verify that
| |
| setPitchBend | back to summary |
|---|---|
| public void setPitchBend(int bend) Changes the pitch offset for all notes on this channel. This affects all currently sounding notes as well as subsequent ones. (For pitch bend to cease, the value needs to be reset to the center position.) The MIDI specification stipulates that pitch bend be a 14-bit value, where zero is maximum downward bend, 16383 is maximum upward bend, and 8192 is the center (no pitch bend). The actual amount of pitch change is not specified; it can be changed by a pitch-bend sensitivity setting. However, the General MIDI specification says that the default range should be two semitones up and down from center.
It is possible that the underlying synthesizer does not support this MIDI
message. In order to verify that
| |
| setPolyPressure | back to summary |
|---|---|
| public void setPolyPressure(int noteNumber, int pressure) Reacts to a change in the specified note's key pressure. Polyphonic key pressure allows a keyboard player to press multiple keys simultaneously, each with a different amount of pressure. The pressure, if not ignored, is typically used to vary such features as the volume, brightness, or vibrato of the note.
It is possible that the underlying synthesizer does not support this MIDI
message. In order to verify that
| |
| setSolo | back to summary |
|---|---|
| public void setSolo(boolean soloState) Sets the solo state for this channel. If
It is possible that the underlying synthesizer does not support solo
channels. In order to verify that a call to
| |