Spec-Zone.ru › OpenJDK 17

Интерфейс 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 (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, MSB громкости канала) на 128 и добавив значение контроллера 39 (0x27, LSB громкости канала).

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

«Моно» — сокращенное от «монофонический», что в данном контексте противопоставляется слову «полифонический» и относится к одному голосу синтезатора на один 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 для этого канала. Если solo равно true, то будут звучать только этот канал и другие выделенные каналы. Если solo равно false, то будут звучать только другие выделенные каналы, если нет выделенных каналов, то все невыключенные каналы будут звучать.
Параметры:
soloState - новое состояние solo для канала
См. также:
  • getSolo()

getSolo

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

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

Spec-Zone.ru

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