Интерфейс 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 часто оставляет за синтезатором право использовать данные по своему усмотрению. Например, данные о скорости не всегда должны отображаться в громкости и/или яркости.
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
allNotesOff() |
Отключает все звучащие ноты на этом канале. |
void |
allSoundOff() |
Немедленно отключает все звучащие ноты на этом канале, игнорируя состояние педали Sustain и внутреннюю скорость затухания текущего Instrument. |
void |
controlChange |
Реагирует на изменение значения указанного контроллера. |
int |
getChannelPressure() |
Получает давление на клавиатуре канала. |
int |
getController |
Получает текущее значение указанного контроллера. |
boolean |
getMono() |
Получает текущий режим моно/поли. |
boolean |
getMute() |
Получает текущий режим выключения звука для этого канала. |
boolean |
getOmni() |
Получает текущий режим «omni». |
int |
getPitchBend() |
Получает смещение высоты тона вверх или вниз для этого канала. |
int |
getPolyPressure |
Получает давление, с которым нажата указанная клавиша. |
int |
getProgram() |
Получает текущий номер программы для этого канала. |
boolean |
getSolo() |
Получает текущий режим соло для этого канала. |
boolean |
localControl |
Включает или выключает локальный контроль. |
void |
noteOff |
Отключает указанную ноту. |
void |
noteOff |
Отключает указанную ноту. |
void |
noteOn |
Запускает звучание указанной ноты. |
void |
programChange |
Изменяет программу (патч). |
void |
programChange |
Изменяет программу с помощью номеров банка и программы (патча). |
void |
resetAllControllers() |
Сбрасывает все реализованные контроллеры до их значений по умолчанию. |
void |
setChannelPressure |
Реагирует на изменение давления на клавиатуру. |
void |
setMono |
Включает или выключает режим моно. |
void |
setMute |
Устанавливает режим выключения звука для этого канала. |
void |
setOmni |
Включает или выключает режим «omni». |
void |
setPitchBend |
Изменяет смещение высоты тона для всех нот на этом канале. |
void |
setPolyPressure |
Реагирует на изменение давления на указанную клавишу. |
void |
setSolo |
Устанавливает режим сола для этого канала. |
Подробное описание методов
noteOn
void noteOn(int noteNumber, int velocity)
velocity равно нулю, этот метод действует как noteOff(int), завершая звучание ноты.- Параметры:
-
noteNumber- номер MIDI-ноты, от 0 до 127 (60 = Средний До) -
velocity- скорость нажатия клавиши - См. также:
noteOff
void noteOff(int noteNumber, int velocity)
Instrument. Если педаль Sustain (контроллер; см. controlChange) нажата, действие этого метода откладывается до момента отпускания педали.- Параметры:
-
noteNumber- номер MIDI-ноты, от 0 до 127 (60 = Средний До) -
velocity- скорость отпускания клавиши - См. также:
noteOff
void noteOff(int noteNumber)
- Параметры:
-
noteNumber- номер MIDI-ноты, от 0 до 127 (60 = Средний До) - См. также:
setPolyPressure
void setPolyPressure(int noteNumber, int pressure)
Возможно, что используемый синтезатор не поддерживает этот MIDI-сообщение. Для проверки успешного выполнения setPolyPressure, используйте getPolyPressure.
- Параметры:
-
noteNumber- номер MIDI-ноты, от 0 до 127 (60 = Средний До) -
pressure- значение для указанной клавиши, от 0 до 127 (127 = максимальное давление) - См. также:
getPolyPressure
int getPolyPressure(int noteNumber)
Если устройство не поддерживает полифоническое давление, этот метод всегда возвращает 0. Вызов setPolyPressure не окажет никакого влияния.
- Параметры:
-
noteNumber- номер MIDI-ноты, от 0 до 127 (60 = Средний До) - Возвращает:
- значение давления на ноту, от 0 до 127 (127 = максимальное давление)
- См. также:
setChannelPressure
void setChannelPressure(int pressure)
setPolyPressure. Чаще всего это измерение одного датчика на устройстве, которое не реализует полифоническое давление на клавишу. Давление может использоваться для управления различными аспектами звука, как описано в setPolyPressure. Возможно, что используемый синтезатор не поддерживает это MIDI-сообщение. Для проверки успешного выполнения setChannelPressure, используйте getChannelPressure.
- Параметры:
-
pressure- давление на клавиатуру, от 0 до 127 (127 = максимальное давление) - См. также:
getChannelPressure
int getChannelPressure()
Если устройство не поддерживает установку давления на канал, этот метод всегда возвращает 0. Вызов setChannelPressure не окажет никакого влияния.
- Возвращает:
- значение давления на ноту, от 0 до 127 (127 = максимальное давление)
- См. также:
controlChange
void controlChange(int controller, int value)
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 controller)
Если устройство не поддерживает установку конкретного контроллера, этот метод возвращает 0 для этого контроллера. Вызов controlChange не окажет никакого влияния.
- Параметры:
-
controller- номер контроллера, значение которого требуется получить. Допустимый диапазон - 0-127; см. спецификацию MIDI 1.0 для интерпретации. - Возвращает:
- текущее значение указанного контроллера (0-127)
- См. также:
programChange
void programChange(int program)
Спецификация MIDI не диктует, должны ли уже звучащие ноты переключиться на новый инструмент (тембр) или продолжать звучать своим оригинальным тембром до момента их выключения.
Номер программы является нулевым (выражен от 0 до 127). Обратите внимание, что MIDI-оборудование и литература о MIDI обычно используют диапазон от 1 до 128.
Возможно, что используемый синтезатор не поддерживает определённую программу. Чтобы проверить успешность вызова programChange, используйте getProgram.
- Параметры:
-
program- номер программы для переключения (0-127) - См. также:
programChange
void programChange(int bank, int program)
Возможно, что используемый синтезатор не поддерживает определённый банк или программу. Чтобы проверить успешность вызова programChange, используйте getProgram и getController. Поскольку банки изменяются посредством изменений управления, вы можете проверить текущий банк с помощью следующей инструкции:
int bank = (getController(0) * 128) + getController(32);
- Параметры:
-
bank- номер банка для переключения (0-16383) -
program- программа (паттерн) для использования в указанном банке (0-127) - См. также:
getProgram
int getProgram()
- Возвращает:
- номер программы текущего выбранного паттерна
- См. также:
setPitchBend
void setPitchBend(int bend)
Спецификация MIDI предусматривает, что изменение высоты тона представляет собой 14-битовое значение, где ноль — максимальное понижение, 16383 — максимальное повышение, а 8192 — центр (без изменения высоты тона). Фактическая величина изменения высоты тона не указана; она может быть изменена настройкой чувствительности к изменению высоты тона. Однако спецификация General MIDI гласит, что диапазон по умолчанию должен составлять две полутона вверх и вниз от центра.
Возможно, что базовый синтезатор не поддерживает этот MIDI-сообщение. Для проверки того, что setPitchBend выполнено успешно, используйте getPitchBend.
- Параметры:
-
bend— величина изменения высоты тона, как положительное 14-битовое значение (8192 = без изменения) - См. также:
getPitchBend
int getPitchBend()
setPitchBend в этом случае не окажет никакого влияния.- Возвращает:
- величина изменения, как положительное 14-битовое значение (8192 = без изменения)
- См. также:
resetAllControllers
void resetAllControllers()
- См. также:
allNotesOff
void allNotesOff()
Instrument. Если контроллер педали Sustain (см. controlChange) нажат, эффект этого метода откладывается до момента отпускания педали.- См. также:
allSoundOff
void allSoundOff()
Instrument. - См. также:
localControl
boolean localControl(boolean on)
Возможно, что базовый синтезатор не поддерживает локальный контроль. Для проверки того, что вызов localControl был успешным, проверьте возвращаемое значение.
- Параметры:
-
on—trueдля включения локального контроля,falseдля выключения локального контроля - Возвращает:
- новое значение локального контроля или false, если локальный контроль не поддерживается
setMono
void setMono(boolean on)
"Mono" — сокращение от слова "monophonic", которое в данном контексте противопоставляется слову "polyphonic" и относится к одному голосу синтезатора на MIDI-канале. Это не имеет отношения к количеству аудиоканалов (как в "монофонических" и "стереофонических" записях).
Возможно, что базовый синтезатор не поддерживает режим моно. Чтобы убедиться, что вызов setMono был успешен, используйте getMono.
- Параметры:
-
on—trueдля включения режима моно,falseдля его выключения (что означает включение режима полифонии) - См. также:
getMono
boolean getMono()
setMono. - Возвращает:
-
trueесли режим моно включен, иначеfalse(что означает включение режима полифонии) - См. также:
setOmni
void setOmni(boolean on)
Возможно, что базовый синтезатор не поддерживает режим omni. Для проверки того, что setOmni было успешным, используйте getOmni.
- Параметры:
-
on—trueдля включения режима omni,falseдля его выключения - См. также:
getOmni
boolean getOmni()
setOmni. - Возвращает:
-
trueесли режим omni включен, иначеfalse(что означает выключенный режим omni) - См. также:
setMute
void setMute(boolean mute)
true означает, что канал должен быть отключен, значение false означает, что канал может звучать (если другие каналы не включены в режиме solo). В отличие от allSoundOff(), этот метод применяется только к определённому каналу, а не ко всем каналам. Кроме того, он не только выключает текущие звучащие ноты, но и последующие принимаемые ноты.
Возможно, что базовый синтезатор не поддерживает отключение звука каналов. Чтобы проверить, что вызов setMute был успешен, используйте getMute.
- Параметры:
-
mute— новое состояние отключения звука - См. также:
getMute
boolean getMute()
false. - Возвращает:
-
trueканал отключен, илиfalseесли нет - См. также:
setSolo
void setSolo(boolean soloState)
solo равно true, то будут звучать только этот канал и другие каналы в режиме solo. Если solo равно false, то будут звучать только другие каналы в режиме solo, если нет каналов в режиме solo, то все не выключенные каналы будут звучать.- Параметры:
-
soloState— новое состояние solo для канала - См. также:
getSolo
boolean getSolo()
false. - Возвращает:
-
trueканал в режиме solo, илиfalseесли нет - См. также:
© 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