Интерфейс 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 часто оставляет за синтезатором право использования данных так, как сочтет нужным разработчик. Например, данные скорости не всегда должны соответствовать громкости и/или яркости.
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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)
«Моно» — сокращенное от «монофонический», что в данном контексте противопоставляется слову «полифонический» и относится к одному голосу синтезатора на один 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 означает, что канал может звучать (если другие каналы не выделены). В отличие от allSoundOff(), этот метод применяется только к конкретному каналу, а не ко всем каналам. Кроме того, он выключает не только текущие звучащие ноты, но и ноты, полученные впоследствии.
Возможно, базовый синтезатор не поддерживает глушение каналов. Для проверки того, что вызов setMute выполнился успешно, используйте getMute.
- Параметры:
-
mute- новое состояние глушения - См. также:
getMute
boolean getMute()
false. - Возвращает:
-
trueканал глушен, илиfalseесли нет - См. также:
setSolo
void setSolo(boolean soloState)
solo равно true, то будут звучать только этот канал и другие выделенные каналы. Если solo равно false, то будут звучать только другие выделенные каналы, если нет выделенных каналов, то все невыключенные каналы будут звучать.- Параметры:
-
soloState- новое состояние solo для канала - См. также:
getSolo
boolean getSolo()
false. - Возвращает:
-
trueканал выделен, илиfalseесли нет - См. также:
© 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