Класс 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. |
Краткое описание методов
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, «равен» ли этот объект другому объекту. |
protected void |
finalize() |
Устарел, будет удалён: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого объекта Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова метода notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
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.