Spec-Zone.ru › OpenJDK 21

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

Номер программы является нулевым (выражен от 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)
Включает или выключает режим моно. В режиме моно канал синтезирует только одну ноту за раз. В режиме полифонии (эквивалентен режиму моно выключен) канал может синтезировать несколько нот одновременно. По умолчанию режим моно выключен (режим полифонии включен).

"Mono" — сокращение от слова "monophonic", которое в данном контексте противопоставляется слову "polyphonic" и относится к одному голосу синтезатора на 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 означает, что канал может звучать (если другие каналы не включены в режиме solo).

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

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

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

getMute

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

setSolo

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

getSolo

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

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

Spec-Zone.ru

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