Интерфейс 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 (MIDI Manufacturer's Association, http://www.midi.org).
Изначально MIDI был протоколом для передачи жестов музыканта, играющего на клавишном инструменте. Это происхождение заметно в API MidiChannel, где сохранены такие понятия MIDI, как номер клавиши, скорость нажатия клавиши и давление на клавишу. Следует понимать, что данные MIDI не обязательно поступают от клавишника (источником может быть другой музыкант или программное обеспечение). Некоторые устройства могут генерировать постоянные значения скорости и давления независимо от того, как была исполнена нота. Кроме того, спецификация MIDI часто оставляет на усмотрение синтезатора способ использования этих данных. Например, данные о скорости нажатия не обязательно должны преобразовываться в громкость и/или яркость звука.
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
allNotesOff() |
Отключает все ноты, которые в данный момент звучат на этом канале. |
void |
allSoundOff() |
Немедленно прекращает звучание всех нот на этом канале, игнорируя состояние педали сустейна и внутреннюю скорость затухания текущего Instrument. |
void |
controlChange |
Реагирует на изменение значения указанного контроллера. |
int |
getChannelPressure() |
Возвращает давление на клавиатуру для этого канала. |
int |
getController |
Возвращает текущее значение указанного контроллера. |
boolean |
getMono() |
Возвращает текущий моно-/полирежим. |
boolean |
getMute() |
Возвращает текущее состояние отключения звука для этого канала. |
boolean |
getOmni() |
Возвращает текущий режим omni. |
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 |
Включает или выключает режим omni. |
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. Если педаль сустейна (контроллер; см. 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 не устанавливает, должны ли уже звучащие ноты переключаться на новый инструмент (тембр) или продолжать звучать с исходным тембром до завершения ноты.
Номер программы начинается с нуля (диапазон от 0 до 127). Обратите внимание: в документации и на оборудовании 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-битное значение: 0 — максимальное понижение, 16383 — максимальное повышение, а 8192 — центральное положение (без изменения высоты тона). Фактическая величина изменения высоты тона не определена; её можно менять с помощью настройки чувствительности изгиба высоты тона. Однако спецификация General MIDI указывает, что диапазон по умолчанию должен составлять два полутона вверх и вниз от центра.
Возможно, используемый синтезатор не поддерживает это сообщение MIDI. Чтобы проверить, успешно ли выполнен вызов setPitchBend, используйте getPitchBend.
- Параметры:
-
bend— величина изменения высоты тона в виде неотрицательного 14-битного значения (8192 = без изгиба) - См. также:
getPitchBend
int getPitchBend()
setPitchBend не будет иметь эффекта.- Возвращает:
- величину изгиба в виде неотрицательного 14-битного значения (8192 = без изгиба)
- См. также:
resetAllControllers
void resetAllControllers()
- См. также:
allNotesOff
void allNotesOff()
Instrument. Если нажата педаль сустейна (контроллер; см. 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.
- Параметры:
-
soloState— новое состояние соло-режима канала - См. также:
getSolo
boolean getSolo()
false.- Возвращает:
-
true, если канал находится в соло-режиме, илиfalse, если нет - См. также:
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/sound/midi/MidiChannel.html