Интерфейс MidiChannel

public interface MidiChannel

Объект MidiChannel представляет собой отдельный MIDI-канал. Как правило, каждый метод MidiChannel обрабатывает сообщение MIDI «голос канала» или «режим канала» с тем же именем, как определено спецификацией MIDI. Однако, MidiChannel добавляет некоторые методы «получения», которые извлекают значение, которое было установлено последним сообщением стандартного канала 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()

Получает текущий режим 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. Если педаль 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. Если контроллер педали поддержания (см. 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)

Включает или выключает режим овер. В режиме овер канал реагирует на сообщения, отправленные на всех каналах. Когда овер выключен, канал реагирует только на сообщения, отправленные на его номер канала. По умолчанию режим овер выключен.

Возможна ситуация, когда базовый синтезатор не поддерживает режим овер. Для проверки успешности setOmni используйте getOmni.

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

getOmni

boolean getOmni()

Получает текущий режим овер. Синтезаторы, которые не позволяют изменять режим овер, всегда возвращают одно и то же значение независимо от вызовов setOmni.

Возвращает:
true если режим овер включен, в противном случае false (что означает выключен режим овер)
См. также:
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)

© 1993, 2020, 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/11/docs/api/java.desktop/javax/sound/midi/MidiChannel.html

Spec-Zone .ru
спецификации, руководства, описания, API