Интерфейс Synthesizer
- Все суперинтерфейсы:
AutoCloseable, MidiDevice
public interface Synthesizer extends MidiDevice
Synthesizer генерирует звук. Обычно это происходит, когда один из объектов MidiChannel интерфейса Synthesizer получает сообщение noteOn напрямую или через объект Synthesizer. Многие Synthesizer поддерживают Receivers, через которые MIDI-события могут передаваться в Synthesizer. В таких случаях Synthesizer обычно отвечает отправкой соответствующего сообщения в нужный MidiChannel или обрабатывает событие самостоятельно, если оно не относится к сообщениям MIDI-канала. Интерфейс Synthesizer содержит методы для загрузки и выгрузки инструментов из банков звуков. Инструмент — это спецификация синтеза определённого типа звука, имитирующего традиционный музыкальный инструмент либо представляющего собой звуковой эффект или другой воображаемый звук. Банк звуков — это набор инструментов, упорядоченных по номеру банка и программы (с помощью объекта Patch инструмента). Разные классы Synthesizer могут реализовывать различные методы синтеза звука, поэтому некоторые инструменты могут быть совместимы с данным синтезатором, а другие — нет. Кроме того, объём памяти синтезатора для инструментов может быть ограничен, поэтому не каждый банк звуков и инструмент можно использовать с любым синтезатором, даже если метод синтеза совместим. Чтобы узнать, можно ли воспроизводить инструменты из определённого банка звуков на данном синтезаторе, вызовите метод isSoundbankSupported интерфейса Synthesizer.
«Загрузка» инструмента означает, что он становится доступен для синтеза нот. Инструмент загружается в расположение банка и программы, указанное его объектом Patch. Загрузка не обязательно означает, что последующие ноты сразу будут звучать как новый инструмент. Чтобы инструмент воспроизводил ноты, один из объектов MidiChannel синтезатора должен получить (или ранее получить) сообщение о смене программы, выбирающее банк и номер программы этого инструмента.
- См. также:
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в интерфейсе MidiDevice
MidiDevice.Info
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Instrument[] |
getAvailableInstruments() |
Получает список инструментов, входящих в комплект поставки синтезатора. |
MidiChannel[] |
getChannels() |
Получает набор MIDI-каналов, управляемых этим синтезатором. |
Soundbank |
getDefaultSoundbank() |
Получает банк звуков по умолчанию для синтезатора, если он существует. |
long |
getLatency() |
Получает задержку обработки этого синтезатора в микросекундах. |
Instrument[] |
getLoadedInstruments() |
Получает список инструментов, загруженных в данный Synthesizer. |
int |
getMaxPolyphony() |
Получает максимальное количество нот, которые синтезатор может воспроизводить одновременно. |
VoiceStatus[] |
getVoiceStatus() |
Получает текущее состояние голосов, создаваемых этим синтезатором. |
boolean |
isSoundbankSupported |
Сообщает вызывающему коду, может ли этот синтезатор загружать инструменты из указанного банка звуков. |
boolean |
loadAllInstruments |
Загружает в Synthesizer все инструменты из указанного Soundbank. |
boolean |
loadInstrument |
Делает определённый инструмент доступным для синтеза. |
boolean |
loadInstruments |
Загружает инструменты, указанные в заданных патчах, из указанного Soundbank. |
boolean |
remapInstrument |
Переназначает инструмент. |
void |
unloadAllInstruments |
Выгружает все инструменты из указанного Soundbank. |
void |
unloadInstrument |
Выгружает определённый инструмент. |
void |
unloadInstruments |
Выгружает инструменты, указанные в заданных патчах, из указанного банка звуков MIDI. |
Методы, объявленные в интерфейсе MidiDevice
close, getDeviceInfo, getMaxReceivers, getMaxTransmitters, getMicrosecondPosition, getReceiver, getReceivers, getTransmitter, getTransmitters, isOpen, open
Подробное описание методов
getMaxPolyphony
int getMaxPolyphony()
- Возвращает:
- максимальное количество одновременно звучащих нот
- См. также:
getLatency
long getLatency()
Хотя задержка выражена в микросекундах, фактически измеренная задержка синтезатора может изменяться в более широком диапазоне, чем позволяет предположить такая точность. Например, максимальная задержка синтезатора может составлять несколько миллисекунд или более.
- Возвращает:
- максимальная задержка в микросекундах
getChannels
MidiChannel[] getChannels()
MidiChannel, получающий MIDI-сообщения, отправленные по соответствующему номеру канала. Спецификация MIDI 1.0 предусматривает 16 каналов, поэтому этот метод возвращает массив как минимум из 16 элементов. Однако если синтезатор не использует все 16 каналов, некоторые элементы массива могут быть null, поэтому перед использованием следует проверять каждый элемент.
- Возвращает:
- массив объектов
MidiChannel, управляемых этимSynthesizer. Некоторые элементы массива могут бытьnull.
getVoiceStatus
VoiceStatus[] getVoiceStatus()
Synthesizer не предоставляет информацию о голосах, возвращаемый массив всегда будет иметь длину 0. В противном случае его длина всегда равна общему количеству голосов, возвращаемому методом getMaxPolyphony(). (Объяснение голосов синтезатора см. в описании класса VoiceStatus.)- Возвращает:
- массив объектов
VoiceStatus, предоставляющих информацию о соответствующих голосах синтезатора - См. также:
isSoundbankSupported
boolean isSoundbankSupported(Soundbank soundbank)
IllegalArgumentException.- Параметры:
-
soundbank— банк звуков, поддержку которого требуется проверить - Возвращает:
-
true, если банк звуков поддерживается, иначеfalse - См. также:
loadInstrument
boolean loadInstrument(Instrument instrument)
Patch, чтобы после получения (или ранее полученного) сообщения о смене программы, выбирающего этот патч, последующие ноты воспроизводились со звучанием instrument. Если указанный инструмент уже загружен, этот метод ничего не делает и возвращает true. Инструмент должен входить в банк звуков, поддерживаемый этим Synthesizer. (Для проверки можно использовать метод getSoundbank интерфейса Instrument и метод isSoundbankSupported интерфейса Synthesizer.)
- Параметры:
-
instrument— инструмент для загрузки - Возвращает:
-
true, если инструмент успешно загружен (или уже был загружен),false, если инструмент не удалось загрузить (например, если в синтезаторе недостаточно памяти) - Выбрасывает:
-
IllegalArgumentException— если этотSynthesizerне поддерживает банк звуков указанного инструмента - См. также:
unloadInstrument
void unloadInstrument(Instrument instrument)
- Параметры:
-
instrument— инструмент для выгрузки - Выбрасывает:
-
IllegalArgumentException— если этотSynthesizerне поддерживает банк звуков указанного инструмента - См. также:
remapInstrument
boolean remapInstrument(Instrument from, Instrument to)
to занимает место инструмента from. Например, если
from находился в банке с номером 2 и программе с номером 11, после переназначения это расположение банка и программы будет занято инструментом to. В случае успеха инструмент
from выгружается. Чтобы отменить переназначение, загрузите инструмент from, вызвав один из методов loadInstrument(Instrument), loadInstruments(Soundbank, Patch[]) или loadAllInstruments(Soundbank).
- Параметры:
-
from— заменяемый объектInstrument -
to— объектInstrument, который будет использоваться вместо старого инструмента; он должен быть загружен в синтезатор - Возвращает:
-
true, если инструмент успешно переназначен,false, если синтезатор не поддерживает эту функцию - Выбрасывает:
-
IllegalArgumentException— если инструментfromили инструментtoне поддерживается синтезатором либо инструментtoне загружен -
NullPointerException— если параметрfromилиtoимеет значение null - См. также:
getDefaultSoundbank
Soundbank getDefaultSoundbank()
- Возвращает:
- банк звуков по умолчанию или
null, если он отсутствует - См. также:
getAvailableInstruments
Instrument[] getAvailableInstruments()
Обратите внимание: этот метод не предназначен для определения того, какие инструменты в данный момент загружены в синтезатор; для этого используется getLoadedInstruments(). Метод также не указывает все инструменты, которые можно загрузить в синтезатор; он перечисляет только подмножество инструментов, входящих в комплект поставки. Чтобы узнать, можно ли загрузить другой инструмент, вызовите isSoundbankSupported(); если его Soundbank поддерживается, можно попробовать загрузить инструмент.
- Возвращает:
- список доступных инструментов. Если в комплект синтезатора не входят инструменты, возвращается массив длины 0.
- См. также:
getLoadedInstruments
Instrument[] getLoadedInstruments()
Synthesizer.- Возвращает:
- список загруженных в данный момент инструментов
- См. также:
loadAllInstruments
boolean loadAllInstruments(Soundbank soundbank)
Synthesizer все инструменты из указанного Soundbank.- Параметры:
-
soundbank—Soundbank, инструменты из которого требуется загрузить - Возвращает:
-
true, если все инструменты успешно загружены (или уже были загружены),false, если не удалось загрузить хотя бы один инструмент (например, если вSynthesizerнедостаточно памяти) - Выбрасывает:
-
IllegalArgumentException— если запрошенный банк звуков несовместим с этим синтезатором - См. также:
unloadAllInstruments
void unloadAllInstruments(Soundbank soundbank)
Soundbank.- Параметры:
-
soundbank— банк звуков, содержащий инструменты для выгрузки - Выбрасывает:
-
IllegalArgumentException— если банк звуков не поддерживается - См. также:
loadInstruments
boolean loadInstruments(Soundbank soundbank, Patch[] patchList)
Soundbank. Каждый объект Patch указывает номер банка и программы; Instrument, у которого совпадает Patch, загружается в указанное расположение банка и программы.- Параметры:
-
soundbank—Soundbank, содержащий инструменты для загрузки -
patchList— список патчей, для которых следует загрузить инструменты - Возвращает:
-
true, если все инструменты успешно загружены (или уже были загружены),false, если не удалось загрузить хотя бы один инструмент (например, если вSynthesizerнедостаточно памяти) - Выбрасывает:
-
IllegalArgumentException— если банк звуков не поддерживается - См. также:
unloadInstruments
void unloadInstruments(Soundbank soundbank, Patch[] patchList)
- Параметры:
-
soundbank— банк звуков, содержащий инструменты для выгрузки -
patchList— список патчей, инструменты для которых следует выгрузить - Выбрасывает:
-
IllegalArgumentException— если банк звуков не поддерживается - См. также:
© 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/Synthesizer.html