Интерфейс MidiChannel
public interface MidiChannel
MidiChannel представляет собой отдельный MIDI-канал. Как правило, каждый метод MidiChannel обрабатывает сообщение MIDI с аналогичным именем («голос канала» или «режим канала») в соответствии со спецификацией MIDI. Однако, MidiChannel добавляет некоторые методы «get», которые извлекают значение, которое было установлено последним одним из стандартных сообщений MIDI-канала. Аналогично, добавлены методы для включения/выключения соло и звука для каждого канала. Объект Synthesizer содержит набор MidiChannels, обычно по одному на каждый из 16 каналов, предписанных спецификацией MIDI 1.0. Synthesizer генерирует звук, когда его MidiChannels получают сообщения noteOn.
Подробнее о предписанном поведении сообщений MIDI-канала см. в спецификации MIDI 1.0. Спецификация названа MIDI Reference: The Complete MIDI 1.0 Detailed Specification и опубликована MIDI Manufacturer's Association (http://www.midi.org).
MIDI изначально был протоколом для отслеживания жестов пианиста. Это отражено в API MidiChannel, который сохраняет такие MIDI-концепции, как номер клавиши, скорость нажатия клавиши и давление на клавишу. Следует понимать, что MIDI-данные не обязательно происходят от пианиста (источником может быть другой музыкант или программное обеспечение). Некоторые устройства могут генерировать постоянные значения скорости и давления независимо от того, как была сыграна нота. Кроме того, спецификация MIDI часто оставляет за синтезатором право использовать данные по своему усмотрению. Например, данные скорости не всегда должны отображаться в громкости и/или яркости.
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
allNotesOff() |
Отключает все звучащие ноты на этом канале. |
void |
allSoundOff() |
Немедленно отключает все звучащие ноты на этом канале, игнорируя состояние педали Sustain и внутреннюю скорость затухания текущего Instrument. |
void |
controlChange |
Реагирует на изменение значения указанного контроллера. |
int |
getChannelPressure() |
Получает давление на клавиши канала. |
int |
getController |
Получает текущее значение указанного контроллера. |
boolean |
getMono() |
Получает текущий режим моно/поли. |
boolean |
getMute() |
Получает текущее состояние выключения звука для этого канала. |
boolean |
getOmni() |
Получает текущий режим омини. |
int |
getPitchBend() |
Получает смещение высоты тона для этого канала вверх или вниз. |
int |
getPolyPressure |
Получает давление, с которым нажата указанная клавиша. |
int |
getProgram() |
Получает текущий номер программы для этого канала. |
boolean |
getSolo() |
Получает текущее состояние сольного режима для этого канала. |
boolean |
localControl |
Включает или выключает локальный контроль. |
void |
noteOff |
Отключает указанную ноту. |
void |
noteOff |
Отключает указанную ноту. |
void |
noteOn |
Запускает звучание указанной ноты. |
void |
programChange |
Изменяет программу (патч). |
void |
programChange |
Изменяет программу, используя номера банка и программы (патча). |
void |
resetAllControllers() |
Сбрасывает все реализованные контроллеры до их значений по умолчанию. |
void |
setChannelPressure |
Реагирует на изменение давления на клавиши. |
void |
setMono |
Включает или выключает режим моно. |
void |
setMute |
Устанавливает состояние выключения звука для этого канала. |
void |
setOmni |
Включает или выключает режим омини. |
void |
setPitchBend |
Изменяет смещение высоты тона для всех нот на этом канале. |
void |
setPolyPressure |
Реагирует на изменение давления на клавиши указанной ноты. |
void |
setSolo |
Устанавливает состояние сольного режима для этого канала. |
Подробности методов
noteOn
void noteOn(int noteNumber, int velocity)
velocity равно нулю, этот метод действует как noteOff(int), завершая ноту.- Параметры:
-
noteNumber- номер ноты MIDI, от 0 до 127 (60 = Средний До) -
velocity- скорость нажатия клавиши - См. также:
noteOff
void noteOff(int noteNumber, int velocity)
Instrument. Если педаль Sustain (контроллер; см. controlChange) нажата, эффект этого метода откладывается до отпускания педали.- Параметры:
-
noteNumber- номер ноты MIDI, от 0 до 127 (60 = Средний До) -
velocity- скорость отпускания клавиши - См. также:
noteOff
void noteOff(int noteNumber)
- Параметры:
-
noteNumber- номер ноты MIDI, от 0 до 127 (60 = Средний До) - См. также:
setPolyPressure
void setPolyPressure(int noteNumber, int pressure)
Возможно, что базовый синтезатор не поддерживает это сообщение MIDI. Для проверки успешности setPolyPressure используйте getPolyPressure.
- Параметры:
-
noteNumber- номер ноты MIDI, от 0 до 127 (60 = Средний До) -
pressure- значение для указанной клавиши, от 0 до 127 (127 = максимальное давление) - См. также:
getPolyPressure
int getPolyPressure(int noteNumber)
Если устройство не поддерживает установку полифонического давления, этот метод всегда возвращает 0. Вызов setPolyPressure в таком случае не окажет никакого влияния.
- Параметры:
-
noteNumber- номер ноты MIDI, от 0 до 127 (60 = Средний До) - Возвращает:
- величину давления для этой ноты, от 0 до 127 (127 = максимальное давление)
- См. также:
setChannelPressure
void setChannelPressure(int pressure)
setPolyPressure. Чаще всего это измерение одного датчика на устройстве, которое не реализует полифоническое давление клавиш. Давление может использоваться для управления различными аспектами звука, как описано в setPolyPressure. Возможно, что базовый синтезатор не поддерживает это сообщение MIDI. Для проверки успешности setChannelPressure используйте getChannelPressure.
- Параметры:
-
pressure- давление нажатия на клавиатуру, от 0 до 127 (127 = максимальное давление) - См. также:
getChannelPressure
int getChannelPressure()
Если устройство не поддерживает настройку давления канала, этот метод всегда возвращает 0. Вызов setChannelPressure в таком случае не окажет никакого влияния.
- Возвращает:
- величину давления, от 0 до 127 (127 = максимальное давление)
- См. также:
controlChange
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) управляют старшими 7 битами 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 getController(int controller)
Если устройство не поддерживает установку определённого контроллера, этот метод возвращает 0 для этого контроллера. Вызов controlChange в таком случае не окажет никакого влияния.
- Параметры:
-
controller- номер контроллера, значение которого нужно получить. Допустимый диапазон — 0-127; см. спецификацию MIDI 1.0 для интерпретации. - Возвращает:
- текущее значение указанного контроллера (от 0 до 127)
- См. также:
programChange
void programChange(int program)
Спецификация MIDI не диктует, должны ли звучащие ноты переключиться на новый инструмент (тембр) или продолжать использовать свой исходный тембр до завершения с помощью команды note-off.
Номер программы нулевой (выражается от 0 до 127). Обратите внимание, что на MIDI-оборудовании и в литературе о MIDI обычно используется диапазон от 1 до 128.
Возможно, что базовый синтезатор не поддерживает определённую программу. Чтобы проверить успешность вызова programChange, используйте getProgram.
- Параметры:
-
program- номер программы для переключения (от 0 до 127) - См. также:
programChange
void programChange(int bank, int program)
Возможна ситуация, когда базовый синтезатор не поддерживает определённый банк или программу. Для проверки успешного выполнения вызова programChange, используйте getProgram и getController. Поскольку банки изменяются путём изменения управления, вы можете проверить текущий банк с помощью следующего оператора:
int bank = (getController(0) * 128) + getController(32);
- Параметры:
-
bank— номер банка для переключения (от 0 до 16383) -
program— программа (патч) для использования в указанном банке (от 0 до 127) - См. также:
getProgram
int getProgram()
- Возвращает:
- номер программы текуще выбранного патча
- См. также:
setPitchBend
void setPitchBend(int bend)
Спецификация MIDI предусматривает, что изменение высоты тона должно быть 14-битным значением, где ноль — максимальное понижение, 16383 — максимальное повышение, а 8192 — центр (без изменения высоты тона). Фактическая величина изменения высоты тона не указана; она может быть изменена настройкой чувствительности к изменению высоты тона. Однако спецификация General MIDI гласит, что диапазон по умолчанию должен составлять две полутона вверх и вниз от центра.
Возможна ситуация, когда базовый синтезатор не поддерживает этот MIDI-сообщение. Для проверки успешности выполнения setPitchBend, используйте getPitchBend.
- Параметры:
-
bend— величина изменения высоты тона, как положительное 14-битное значение (8192 = без изменения) - См. также:
getPitchBend
int getPitchBend()
setPitchBend тогда не окажет никакого влияния.- Возвращает:
- величину изменения, как положительное 14-битное значение (8192 = без изменения)
- См. также:
resetAllControllers
void resetAllControllers()
- См. также:
allNotesOff
void allNotesOff()
Instrument. Если контроллер педали Sustain (см. controlChange) нажат, эффект этого метода откладывается до отпускания педали.- См. также:
allSoundOff
void allSoundOff()
Instrument.- См. также:
localControl
boolean localControl(boolean on)
Возможна ситуация, когда базовый синтезатор не поддерживает локальный контроль. Для проверки успешного выполнения вызова localControl, проверьте возвращаемое значение.
- Параметры:
-
on—trueдля включения локального контроля,falseдля выключения локального контроля - Возвращает:
- новое значение локального контроля или false, если локальный контроль не поддерживается
setMono
void setMono(boolean on)
«Моно» — сокращение от слова «монофонический», которое в данном контексте противопоставляется слову «полифонический» и относится к одному голосу синтезатора на один MIDI-канал. Оно не имеет отношения к количеству аудиоканалов (как в записи «монофоническая» против «стереофонической»).
Возможна ситуация, когда базовый синтезатор не поддерживает моно-режим. Для проверки успешности вызова setMono, используйте getMono.
- Параметры:
-
on—trueдля включения моно-режима,falseдля выключения (что означает включение полифонического режима) - См. также:
getMono
boolean getMono()
setMono.- Возвращает:
-
true, если моно-режим включен, иначеfalse(что означает включение полифонического режима) - См. также:
setOmni
void setOmni(boolean on)
Возможна ситуация, когда базовый синтезатор не поддерживает режим omni. Для проверки успешности вызова setOmni, используйте getOmni.
- Параметры:
-
on—trueдля включения omni-режима,falseдля его выключения - См. также:
getOmni
boolean getOmni()
setOmni.- Возвращает:
-
true, если omni-режим включен, иначеfalse(что означает выключение omni-режима) - См. также:
setMute
void setMute(boolean mute)
true означает, что канал должен быть выключен, false означает, что канал может звучать (если другие каналы не выделены). В отличие от allSoundOff(), этот метод применяется только к конкретному каналу, а не ко всем каналам. Кроме того, он не только выключает текущие звучащие ноты, но и последующие полученные ноты.
Возможна ситуация, когда базовый синтезатор не поддерживает выключение звука каналов. Для проверки успешности вызова setMute, используйте getMute.
- Параметры:
-
mute— новое состояние выключения звука - См. также:
getMute
boolean getMute()
false.- Возвращает:
-
true— канал выключен, илиfalse— нет - См. также:
setSolo
void setSolo(boolean soloState)
solo равно true, то звучать будет только этот канал и другие каналы, помеченные как соло. Если solo равно false, то звучать будут только другие каналы, помеченные как соло, если нет каналов в режиме соло, тогда звучать будут все невыключенные каналы. Возможно, что базовый синтезатор не поддерживает каналы соло. Для проверки успешного вызова setSolo, используйте getSolo.
- Parameters:
-
soloState- новое состояние соло для канала - See Also:
getSolo
boolean getSolo()
false.- Returns:
-
trueесли канал в режиме соло, илиfalseесли нет - See Also:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/sound/midi/MidiChannel.html