Spec-Zone.ru › OpenJDK 24

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

См. также:
  • 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 «выбор банка»; оно не относится к объекту 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, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/sound/midi/VoiceStatus.html

Spec-Zone.ru

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