Spec-Zone.ru › OpenJDK 27

Класс VoiceStatus

java.lang.Object
javax.sound.midi.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.

См. также:
  • Synthesizer.getMaxPolyphony()
  • Synthesizer.getVoiceStatus()

Краткое описание полей

Модификатор и тип Поле Описание
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(Object obj)
Указывает, «равен» ли этот объект другому объекту.
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(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание полей

active

public boolean active
Указывает, обрабатывает ли голос в данный момент MIDI-ноту. См. описание активных и неактивных голосов.

channel

public int channel
MIDI-канал, на котором воспроизводится этот голос. Если голос активен, значение представляет собой номер канала, отсчитываемый от нуля; если голос неактивен, значение не определено.
См. также:
  • MidiChannel
  • active

bank

public int bank
Номер банка инструмента, который в данный момент использует этот голос. Это значение задаётся MIDI-сообщением выбора банка; оно не относится к объекту SoundBank. Если голос активен, значение находится в диапазоне от 0 до 16383; если голос неактивен, значение не определено.
См. также:
  • Patch
  • Soundbank
  • active
  • MidiChannel.programChange(int, int)

program

public int program
Номер программы инструмента, который в данный момент использует этот голос. Если голос активен, значение находится в диапазоне от 0 до 127; если голос неактивен, значение не определено.
См. также:
  • MidiChannel.getProgram()
  • Patch
  • active

note

public int note
MIDI-нота, которую воспроизводит этот голос. Для активного голоса диапазон составляет от 0 до 127 полутонов, причём 60 соответствует ноте до первой октавы. Если голос неактивен, значение не определено.
См. также:
  • MidiChannel.noteOn(int, int)
  • active

volume

public int volume
Текущий уровень громкости MIDI для этого голоса. Если голос активен, значение находится в диапазоне от 0 до 127; если голос неактивен, значение не определено.

Обратите внимание, что это значение не обязательно отражает мгновенный уровень звука, создаваемого этим голосом: на этот уровень влияет множество факторов, включая используемый в данный момент инструмент и форму создаваемой им амплитудной огибающей.

См. также:
  • active

Подробное описание конструкторов

VoiceStatus

public VoiceStatus()
Создаёт объект VoiceStatus.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе документации Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API