Spec-Zone.ru › OpenJDK 24

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

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

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

Модификатор и тип Метод Описание
void allNotesOff()
Отключает все звучащие ноты на этом канале.
void allSoundOff()
Немедленно отключает все звучащие ноты на этом канале, игнорируя состояние педали Sustain и внутреннюю скорость затухания текущего 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)
Устанавливает состояние сольного режима для этого канала.

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

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. Если педаль Sustain (контроллер; см. 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, старшие 7 бит громкости канала) на 128 и добавив значение контроллера 39 (0x27, младшие 7 бит громкости канала).

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

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

programChange

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

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

Номер программы нулевой (выражается от 0 до 127). Обратите внимание, что на MIDI-оборудовании и в литературе о 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(javax.sound.midi.Instrument)
  • programChange(int)

setPitchBend

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

Спецификация MIDI предусматривает, что изменение высоты тона должно быть 14-битным значением, где ноль — максимальное понижение, 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. Если контроллер педали Sustain (см. controlChange) нажат, эффект этого метода откладывается до отпускания педали.
См. также:
  • allSoundOff()
  • noteOff(int)

allSoundOff

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

localControl

boolean localControl(boolean on)
Включает или выключает локальный контроль. По умолчанию локальный контроль включен. Включение означает, что если устройство способно как синтезировать звук, так и передавать MIDI-сообщения, оно будет синтезировать звук в ответ на сообщения note-on и note-off, которые оно само передает. Оно также будет реагировать на сообщения, полученные от других передающих устройств. Выключение означает, что синтезатор будет игнорировать свои собственные переданные 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.

Parameters:
soloState - новое состояние соло для канала
See Also:
  • getSolo()

getSolo

boolean getSolo()
Получает текущее состояние соло для этого канала. Если базовый синтезатор не поддерживает соло для этого канала, этот метод всегда возвращает false.
Returns:
true если канал в режиме соло, или false если нет
See Also:
  • setSolo(boolean)

© 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

Spec-Zone.ru

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