Класс VoiceStatus
public class VoiceStatus extends Object
VoiceStatus содержит информацию о текущем состоянии одного из голосов, создаваемых Synthesizer. Синтезаторы MIDI обычно способны генерировать максимальное количество одновременных нот, также называемых голосами. Голос представляет собой поток последовательных отдельных нот, а процесс назначения входящих нот MIDI определённым голосам называется распределением голосов. Однако алгоритм распределения голосов и содержимое каждого голоса обычно являются внутренними для синтезатора MIDI и скрыты от внешнего доступа. Конечно, можно узнать из сообщений MIDI, какие ноты играет синтезатор, и, возможно, сделать вывод о назначении нот голосам. Но сам MIDI не предоставляет средства для отслеживания того, какие ноты синтезатор назначил какому голосу, а также не сообщает, сколько голосов способен синтезировать синтезатор.
Однако в Java Sound класс Synthesizer может раскрыть содержимое своих голосов через метод getVoiceStatus(). Это поведение рекомендуется, но является необязательным; синтезаторы, которые не раскрывают распределение своих голосов, просто возвращают массив нулевой длины. Класс Synthesizer , который сообщает о состоянии своих голосов, должен поддерживать эту информацию в любое время для всех своих голосов, независимо от того, звучат они в данный момент или нет. Другими словами, у данного типа Synthesizer всегда есть фиксированное количество голосов, равное максимальному количеству одновременных нот, которые он способен воспроизводить.
Если голос в данный момент не обрабатывает ноту MIDI, он считается неактивным. Голос неактивен, когда ему не были отправлены команды "нота включена" или когда все полученные команды "нота включена" были завершены соответствующей командой "нота выключена" (или сообщением "выключить все ноты"). Например, это происходит, когда синтезатор, способный воспроизводить 16 одновременных нот, получает команду воспроизвести аккорд из четырёх нот; в этом случае активны только четыре голоса (при условии, что ранее играемые ноты ещё не закончились). Обычно голос, статус которого указан как активный, воспроизводит слышимый звук, но это не всегда так; это зависит от деталей инструмента (то есть алгоритма синтеза) и того, как долго длится нота. Например, голос может синтезировать звук одного хлопка. Поскольку этот звук быстро затухает, он может стать неслышимым до получения сообщения "нота выключена". В такой ситуации голос по-прежнему считается активным, даже если в данный момент не воспроизводится звук.
Помимо статуса активности или неактивности, класс VoiceStatus предоставляет поля, которые раскрывают текущий MIDI-канал, банк и номер программы голоса, номер MIDI-ноты и MIDI-громкость. Все эти значения могут меняться в процессе работы голоса. В то время как голос неактивен, каждое из этих полей имеет неопределённое значение, поэтому сначала необходимо проверить поле активность.
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
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, 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/VoiceStatus.html