Spec-Zone.ru › OpenJDK 17

Класс 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-громкости голоса. Все эти значения могут изменяться в процессе работы голоса. В то время как голос неактивен, каждое из этих полей имеет неопределенное значение, поэтому сначала необходимо проверить поле active.

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

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

Модификатор и тип Поле Описание
boolean active
Указывает, обрабатывает ли голос в данный момент MIDI-ноту.
int bank
Номер банка инструмента, который в данный момент используется этим голосом.
int channel
MIDI-канал, на котором играет этот голос.
int note
MIDI-нота, которую играет этот голос.
int program
Номер программы инструмента, который в данный момент используется этим голосом.
int volume
Текущий уровень громкости MIDI для голоса.

Краткое описание конструкторов

Конструктор Описание
VoiceStatus()
Создаёт 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()
Создаёт VoiceStatus.

© 1993, 2021, 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/17/docs/api/java.desktop/javax/sound/midi/VoiceStatus.html

Spec-Zone.ru

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