Spec-Zone.ru › OpenJDK 25

Интерфейс 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 часто оставляет на усмотрение синтезатора способ использования этих данных. Например, данные о скорости нажатия не обязательно должны преобразовываться в громкость и/или яркость звука.

См. также:
  • Synthesizer.getChannels()

Краткое описание методов

Модификатор и тип Метод Описание
void allNotesOff()
Отключает все ноты, которые в данный момент звучат на этом канале.
void allSoundOff()
Немедленно прекращает звучание всех нот на этом канале, игнорируя состояние педали сустейна и внутреннюю скорость затухания текущего Instrument.
void controlChange(int controller, int value)
Реагирует на изменение значения указанного контроллера.
int getChannelPressure()
Возвращает давление на клавиатуру для этого канала.
int getController(int controller)
Возвращает текущее значение указанного контроллера.
boolean getMono()
Возвращает текущий моно-/полирежим.
boolean getMute()
Возвращает текущее состояние отключения звука для этого канала.
boolean getOmni()
Возвращает текущий режим omni.
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)
Включает или выключает режим omni.
void setPitchBend(int bend)
Изменяет смещение высоты тона для всех нот этого канала.
void setPolyPressure(int noteNumber, int pressure)
Реагирует на изменение давления на клавишу указанной ноты.
void setSolo(boolean soloState)
Устанавливает состояние соло-режима для этого канала.

Подробное описание методов

noteOn

void noteOn(int noteNumber, int velocity)
Запускает звучание указанной ноты. Скорость нажатия клавиши обычно управляет громкостью и/или яркостью ноты. Если velocity равно нулю, этот метод вместо этого действует как noteOff(int), прекращая звучание ноты.
Параметры:
noteNumber — номер ноты MIDI от 0 до 127 (60 = среднее до)
velocity — скорость нажатия клавиши
См. также:
  • noteOff(int, int)

noteOff

void noteOff(int noteNumber, int velocity)
Прекращает звучание указанной ноты. Скорость отпускания клавиши, если она учитывается, может влиять на скорость затухания ноты. В любом случае звучание ноты может не прекратиться мгновенно: скорость затухания определяется внутренними параметрами Instrument. Если педаль сустейна (контроллер; см. controlChange) нажата, действие этого метода откладывается до её отпускания.
Параметры:
noteNumber — номер ноты MIDI от 0 до 127 (60 = среднее до)
velocity — скорость отпускания клавиши
См. также:
  • noteOff(int)
  • noteOn(int, int)
  • allNotesOff()
  • allSoundOff()

noteOff

void noteOff(int noteNumber)
Прекращает звучание указанной ноты.
Параметры:
noteNumber — номер ноты MIDI от 0 до 127 (60 = среднее до)
См. также:
  • noteOff(int, int)

setPolyPressure

void setPolyPressure(int noteNumber, int pressure)
Реагирует на изменение давления на клавишу указанной ноты. Полифоническое давление на клавиши позволяет клавишнику одновременно нажимать несколько клавиш с разной силой. Давление, если оно учитывается, обычно используется для изменения таких характеристик ноты, как громкость, яркость или вибрато.

Возможно, используемый синтезатор не поддерживает это сообщение MIDI. Чтобы проверить, успешно ли выполнен вызов setPolyPressure, используйте getPolyPressure.

Параметры:
noteNumber — номер ноты MIDI от 0 до 127 (60 = среднее до)
pressure — значение для указанной клавиши от 0 до 127 (127 = максимальное давление)
См. также:
  • getPolyPressure(int)

getPolyPressure

int getPolyPressure(int noteNumber)
Возвращает силу нажатия указанной клавиши.

Если устройство не поддерживает установку полифонического давления, этот метод всегда возвращает 0. В этом случае вызов setPolyPressure не будет иметь эффекта.

Параметры:
noteNumber — номер ноты MIDI от 0 до 127 (60 = среднее до)
Возвращает:
величину давления для этой ноты от 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()
Возвращает давление на клавиатуру для этого канала.

Если устройство не поддерживает установку давления канала, этот метод всегда возвращает 0. В этом случае вызов setChannelPressure не будет иметь эффекта.

Возвращает:
величину давления для этой ноты от 0 до 127 (127 = максимальное давление)
См. также:
  • setChannelPressure(int)

controlChange

void controlChange(int controller, int value)
Реагирует на изменение значения указанного контроллера. Контроллер — это любой элемент управления, кроме клавиши клавиатуры: например, переключатель, ползунок, педаль, колесо или датчик давления дыхания. Спецификация MIDI 1.0 задаёт стандартные номера типичных контроллеров MIDI-устройств и описывает предполагаемый эффект некоторых из них. Реакция 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 getController(int controller)
Возвращает текущее значение указанного контроллера. Возвращаемое значение представлено 7 битами. Для 14-битных контроллеров значения контроллеров MSB и LSB необходимо получать отдельно. Например, 14-битное значение контроллера громкости можно вычислить, умножив значение контроллера 7 (0x07, старший байт громкости канала) на 128 и прибавив значение контроллера 39 (0x27, младший байт громкости канала).

Если устройство не поддерживает установку определённого контроллера, этот метод возвращает для него 0. В этом случае вызов controlChange не будет иметь эффекта.

Параметры:
controller — номер контроллера, значение которого требуется получить. Допустимый диапазон — 0–127; интерпретацию см. в спецификации MIDI 1.0.
Возвращает:
текущее значение указанного контроллера (от 0 до 127)
См. также:
  • controlChange(int, int)

programChange

void programChange(int program)
Изменяет программу (тембр). Выбирает определённый инструмент из текущего банка инструментов.

Спецификация MIDI не устанавливает, должны ли уже звучащие ноты переключаться на новый инструмент (тембр) или продолжать звучать с исходным тембром до завершения ноты.

Номер программы начинается с нуля (диапазон от 0 до 127). Обратите внимание: в документации и на оборудовании MIDI обычно используется диапазон от 1 до 128.

Возможно, используемый синтезатор не поддерживает определённую программу. Чтобы проверить, успешно ли выполнен вызов programChange, используйте getProgram.

Параметры:
program — номер программы для переключения (от 0 до 127)
См. также:
  • programChange(int, int)
  • getProgram()

programChange

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()

getProgram

int getProgram()
Возвращает текущий номер программы для этого канала.
Возвращает:
номер программы текущего выбранного тембра
См. также:
  • Patch.getProgram()
  • Synthesizer.loadInstrument(Instrument)
  • programChange(int)

setPitchBend

void setPitchBend(int bend)
Изменяет смещение высоты тона для всех нот этого канала. Это влияет как на уже звучащие ноты, так и на последующие. (Чтобы отменить изгиб высоты тона, необходимо вернуть значение в центральное положение.)

Спецификация MIDI определяет изгиб высоты тона как 14-битное значение: 0 — максимальное понижение, 16383 — максимальное повышение, а 8192 — центральное положение (без изменения высоты тона). Фактическая величина изменения высоты тона не определена; её можно менять с помощью настройки чувствительности изгиба высоты тона. Однако спецификация General MIDI указывает, что диапазон по умолчанию должен составлять два полутона вверх и вниз от центра.

Возможно, используемый синтезатор не поддерживает это сообщение MIDI. Чтобы проверить, успешно ли выполнен вызов setPitchBend, используйте getPitchBend.

Параметры:
bend — величина изменения высоты тона в виде неотрицательного 14-битного значения (8192 = без изгиба)
См. также:
  • getPitchBend()

getPitchBend

int getPitchBend()
Возвращает величину повышения или понижения высоты тона для этого канала. Если устройство не поддерживает установку изгиба высоты тона, этот метод всегда возвращает 8192. В этом случае вызов setPitchBend не будет иметь эффекта.
Возвращает:
величину изгиба в виде неотрицательного 14-битного значения (8192 = без изгиба)
См. также:
  • setPitchBend(int)

resetAllControllers

void resetAllControllers()
Сбрасывает все реализованные контроллеры к значениям по умолчанию.
См. также:
  • controlChange(int, int)

allNotesOff

void allNotesOff()
Отключает все ноты, которые в данный момент звучат на этом канале. Звучание нот может не прекратиться мгновенно: скорость их затухания определяется внутренними параметрами Instrument. Если нажата педаль сустейна (контроллер; см. controlChange), действие этого метода откладывается до отпускания педали.
См. также:
  • allSoundOff()
  • noteOff(int)

allSoundOff

void allSoundOff()
Немедленно прекращает звучание всех нот на этом канале, игнорируя состояние педали сустейна и внутреннюю скорость затухания текущего Instrument.
См. также:
  • allNotesOff()

localControl

boolean localControl(boolean on)
Включает или выключает локальное управление. По умолчанию локальное управление включено. Значение «включено» означает, что устройство, способное одновременно синтезировать звук и передавать сообщения MIDI, будет синтезировать звук в ответ на передаваемые им самим сообщения включения и выключения ноты. Оно также будет реагировать на сообщения, полученные от других передающих устройств. Значение «выключено» означает, что синтезатор будет игнорировать собственные сообщения MIDI, но продолжит реагировать на сообщения от других устройств.

Возможно, используемый синтезатор не поддерживает локальное управление. Чтобы проверить, успешно ли выполнен вызов localControl, проверьте возвращаемое значение.

Параметры:
on — true для включения локального управления, false для его выключения
Возвращает:
новое значение локального управления или false, если локальное управление не поддерживается

setMono

void setMono(boolean on)
Включает или выключает монофонический режим. В монофоническом режиме канал синтезирует только одну ноту одновременно. В полифоническом режиме (то есть при выключенном монофоническом режиме) канал может одновременно синтезировать несколько нот. По умолчанию монофонический режим выключен (полифонический режим включён).

«Моно» — сокращение от «монофонический»; в данном контексте это противопоставление термину «полифонический» и означает один голос синтезатора на канал MIDI. Это не относится к количеству аудиоканалов (как в понятиях «монофоническая» и «стереофоническая» запись).

Возможно, используемый синтезатор не поддерживает монофонический режим. Чтобы проверить, успешно ли выполнен вызов setMono, используйте getMono.

Параметры:
on — true для включения монофонического режима, false для его выключения (то есть для включения полифонического режима)
См. также:
  • getMono()
  • VoiceStatus

getMono

boolean getMono()
Возвращает текущий моно-/полирежим. Синтезаторы, не позволяющие менять моно-/полирежим, всегда возвращают одно и то же значение независимо от вызовов setMono.
Возвращает:
true, если монофонический режим включён; в противном случае — false (то есть включён полифонический режим)
См. также:
  • setMono(boolean)

setOmni

void setOmni(boolean on)
Включает или выключает режим omni. В режиме omni канал реагирует на сообщения, переданные по всем каналам. Если режим omni выключен, канал реагирует только на сообщения, переданные по его номеру канала. По умолчанию режим omni выключен.

Возможно, используемый синтезатор не поддерживает режим omni. Чтобы проверить, успешно ли выполнен вызов setOmni, используйте getOmni.

Параметры:
on — true для включения режима omni, false для его выключения
См. также:
  • getOmni()
  • VoiceStatus

getOmni

boolean getOmni()
Возвращает текущий режим omni. Синтезаторы, не позволяющие менять режим omni, всегда возвращают одно и то же значение независимо от вызовов setOmni.
Возвращает:
true, если режим omni включён; в противном случае — false (то есть режим omni выключен)
См. также:
  • setOmni(boolean)

setMute

void setMute(boolean mute)
Устанавливает состояние отключения звука для этого канала. Значение true означает, что звук канала следует отключить; false означает, что канал может звучать (если другие каналы не переведены в соло-режим).

В отличие от allSoundOff(), этот метод применяется только к указанному каналу, а не ко всем каналам. Кроме того, он отключает не только уже звучащие ноты, но и ноты, полученные впоследствии.

Возможно, используемый синтезатор не поддерживает отключение звука каналов. Чтобы проверить, успешно ли выполнен вызов setMute, используйте getMute.

Параметры:
mute — новое состояние отключения звука
См. также:
  • getMute()
  • setSolo(boolean)

getMute

boolean getMute()
Возвращает текущее состояние отключения звука для этого канала. Если используемый синтезатор не поддерживает отключение звука этого канала, метод всегда возвращает false.
Возвращает:
true, если звук канала отключён, или false, если нет
См. также:
  • setMute(boolean)

setSolo

void setSolo(boolean soloState)
Устанавливает состояние соло-режима для этого канала. Если solo равно true, звучать будут только этот канал и другие каналы в соло-режиме. Если solo равно false, будут звучать только другие каналы в соло-режиме, а если таких каналов нет — все каналы, звук которых не отключён.

Возможно, используемый синтезатор не поддерживает соло-режим для каналов. Чтобы проверить, успешно ли выполнен вызов setSolo, используйте getSolo.

Параметры:
soloState — новое состояние соло-режима канала
См. также:
  • getSolo()

getSolo

boolean getSolo()
Возвращает текущее состояние соло-режима для этого канала. Если используемый синтезатор не поддерживает соло-режим для этого канала, метод всегда возвращает false.
Возвращает:
true, если канал находится в соло-режиме, или false, если нет
См. также:
  • setSolo(boolean)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры основных понятий, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065, США.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API