Spec-Zone.ru › OpenJDK 8

Класс 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, он считается неактивным. Голос считается неактивным, когда ему не были даны команды note-on или когда каждая команда note-on, полученная им, была завершена соответствующей командой note-off (или сообщением "выключить все ноты"). Например, это происходит, когда синтезатор, способный воспроизводить 16 одновременных нот, получает команду воспроизвести аккорд из четырёх нот; в этом случае активными будут только четыре голоса (при условии, что ранее воспроизводимые ноты по-прежнему звучат). Обычно голос, статус которого сообщается как активный, производит слышимый звук, но это не всегда так; это зависит от деталей инструмента (то есть алгоритма синтеза) и того, как долго звучит нота. Например, голос может синтезировать звук одиночного хлопка. Поскольку этот звук быстро затухает, он может стать неслышным, прежде чем будет получено сообщение note-off. В такой ситуации голос всё ещё считается активным, даже если в данный момент звук не воспроизводится.

Помимо статуса активности или неактивности, класс VoiceStatus предоставляет поля, которые раскрывают текущий MIDI-канал, банк и номер программы, номер MIDI-ноты и MIDI-громкость голоса. Все эти значения могут изменяться в процессе работы голоса. В то время как голос неактивен, каждое из этих полей имеет неопределённое значение, поэтому вы должны сначала проверить поле активность.

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

Поля

Модификатор и тип Поле и описание
boolean active

Указывает, обрабатывает ли голос в данный момент ноту MIDI.

int bank

Номер банка инструмента, который используется данным голосом в данный момент.

int channel

MIDI-канал, на котором воспроизводится данный голос.

int note

MIDI-нота, которую воспроизводит данный голос.

int program

Номер программы инструмента, который используется данным голосом в данный момент.

int volume

Текущий уровень громкости MIDI для голоса.

Конструкторы

Конструктор и описание
VoiceStatus()

Методы

Методы, унаследованные от класса java.lang.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 bank-select; оно не относится к объекту 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()

© 1993, 2020, 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