Класс VoiceStatus
public class VoiceStatus extends Object
VoiceStatus содержит информацию о текущем состоянии одного из голосов, создаваемых Synthesizer. MIDI-синтезаторы, как правило, способны воспроизводить некоторое максимальное количество одновременных нот, также называемых голосами. Голос представляет собой последовательность следующих друг за другом одиночных нот, а процесс назначения входящих MIDI-нот определённым голосам называется распределением голосов. Однако алгоритм распределения голосов и содержимое каждого голоса обычно являются внутренними деталями MIDI-синтезатора и недоступны извне. Разумеется, по MIDI-сообщениям можно узнать, какие ноты воспроизводит синтезатор, и, возможно, сделать вывод о распределении нот по голосам. Но сам MIDI не предоставляет средств сообщить, каким голосам синтезатор назначил те или иные ноты, и даже не позволяет узнать, сколько голосов способен синтезировать синтезатор.
Однако в Java Sound класс Synthesizer может предоставлять содержимое своих голосов через метод getVoiceStatus(). Такое поведение рекомендуется, но не является обязательным; синтезаторы, не предоставляющие информацию о распределении голосов, возвращают массив нулевой длины. Synthesizer, сообщающий состояние своих голосов, должен постоянно поддерживать эту информацию для всех голосов, независимо от того, звучат они в данный момент или нет. Иными словами, заданный тип Synthesizer всегда имеет фиксированное количество голосов, равное максимальному количеству одновременных нот, которые он способен воспроизводить.
Если голос в данный момент не обрабатывает MIDI-ноту, он считается неактивным. Голос неактивен, если ему не поступало команд включения ноты либо если каждая полученная команда включения ноты была завершена соответствующей командой выключения ноты (или сообщением «выключить все ноты»). Например, так происходит, когда синтезатор, способный воспроизводить 16 одновременных нот, получает команду сыграть аккорд из четырёх нот; в этом случае активны только четыре голоса (при условии, что предыдущие ноты уже не звучат). Обычно голос, состояние которого указано как активное, производит слышимый звук, но это происходит не всегда; всё зависит от особенностей инструмента (то есть алгоритма синтеза) и от того, как долго звучит нота. Например, голос может синтезировать звук одиночного хлопка в ладоши. Поскольку этот звук быстро затихает, он может стать неслышным ещё до получения сообщения о выключении ноты. В такой ситуации голос по-прежнему считается активным, хотя в данный момент звук не производится.
Помимо сведений об активности, класс VoiceStatus содержит поля, раскрывающие текущие MIDI-канал, номер банка и программы, номер MIDI-ноты и громкость голоса. Все эти значения могут изменяться в течение работы голоса. Пока голос неактивен, значения этих полей не определены, поэтому сначала следует проверить поле active.
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
boolean |
active |
Указывает, обрабатывает ли голос в данный момент MIDI-ноту. |
int |
bank |
Номер банка инструмента, который в данный момент использует этот голос. |
int |
channel |
MIDI-канал, на котором звучит этот голос. |
int |
note |
MIDI-нота, которую воспроизводит этот голос. |
int |
program |
Номер программы инструмента, который в данный момент использует этот голос. |
int |
volume |
Текущий уровень громкости MIDI для этого голоса. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
VoiceStatus() |
Создаёт VoiceStatus. |
Краткое описание методов
Подробное описание полей
active
public boolean active
channel
public int channel
- См. также:
bank
public int bank
SoundBank. Если голос активен, значение находится в диапазоне от 0 до 16383; если голос неактивен, значение не определено.- См. также:
program
public int program
- См. также:
note
public int note
- См. также:
volume
public int volume
Обратите внимание, что это значение не обязательно отражает мгновенный уровень звука, производимого этим голосом; на этот уровень влияет множество факторов, включая текущий инструмент и форму создаваемой им огибающей амплитуды.
- См. также:
Подробное описание конструкторов
VoiceStatus
public VoiceStatus()
VoiceStatus.
© 1993, 2025, 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/25/docs/api/java.desktop/javax/sound/midi/VoiceStatus.html