Spec-Zone.ru › OpenJDK 25

Класс 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

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

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/sound/midi/VoiceStatus.html

Spec-Zone.ru

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