Класс 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() |
Методы
Методы, объявленные в классе 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/sound/midi/VoiceStatus.html