Spec-Zone.ru › OpenJDK 25

Интерфейс 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 синтезатора должен получить (или ранее получить) сообщение о смене программы, выбирающее банк и номер программы этого инструмента.

См. также:
  • MidiSystem.getSynthesizer()
  • Soundbank
  • Instrument
  • MidiChannel.programChange(int, int)
  • Receiver
  • Transmitter
  • MidiDevice

Краткое описание вложенных классов

Вложенные классы и интерфейсы, объявленные в интерфейсе MidiDevice

MidiDevice.Info

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

Модификатор и тип Метод Описание
Instrument[] getAvailableInstruments()
Получает список инструментов, входящих в комплект поставки синтезатора.
MidiChannel[] getChannels()
Получает набор MIDI-каналов, управляемых этим синтезатором.
Soundbank getDefaultSoundbank()
Получает банк звуков по умолчанию для синтезатора, если он существует.
long getLatency()
Получает задержку обработки этого синтезатора в микросекундах.
Instrument[] getLoadedInstruments()
Получает список инструментов, загруженных в данный Synthesizer.
int getMaxPolyphony()
Получает максимальное количество нот, которые синтезатор может воспроизводить одновременно.
VoiceStatus[] getVoiceStatus()
Получает текущее состояние голосов, создаваемых этим синтезатором.
boolean isSoundbankSupported(Soundbank soundbank)
Сообщает вызывающему коду, может ли этот синтезатор загружать инструменты из указанного банка звуков.
boolean loadAllInstruments(Soundbank soundbank)
Загружает в Synthesizer все инструменты из указанного Soundbank.
boolean loadInstrument(Instrument instrument)
Делает определённый инструмент доступным для синтеза.
boolean loadInstruments(Soundbank soundbank, Patch[] patchList)
Загружает инструменты, указанные в заданных патчах, из указанного Soundbank.
boolean remapInstrument(Instrument from, Instrument to)
Переназначает инструмент.
void unloadAllInstruments(Soundbank soundbank)
Выгружает все инструменты из указанного Soundbank.
void unloadInstrument(Instrument instrument)
Выгружает определённый инструмент.
void unloadInstruments(Soundbank soundbank, Patch[] patchList)
Выгружает инструменты, указанные в заданных патчах, из указанного банка звуков MIDI.

Методы, объявленные в интерфейсе MidiDevice

close, getDeviceInfo, getMaxReceivers, getMaxTransmitters, getMicrosecondPosition, getReceiver, getReceivers, getTransmitter, getTransmitters, isOpen, open

Подробное описание методов

getMaxPolyphony

int getMaxPolyphony()
Получает максимальное количество нот, которые синтезатор может воспроизводить одновременно.
Возвращает:
максимальное количество одновременно звучащих нот
См. также:
  • getVoiceStatus()

getLatency

long getLatency()
Получает задержку обработки этого синтезатора в микросекундах. Эта задержка измеряет максимальную задержку между моментом передачи MIDI-сообщения синтезатору и моментом, когда синтезатор фактически выдаёт соответствующий результат.

Хотя задержка выражена в микросекундах, фактически измеренная задержка синтезатора может изменяться в более широком диапазоне, чем позволяет предположить такая точность. Например, максимальная задержка синтезатора может составлять несколько миллисекунд или более.

Возвращает:
максимальная задержка в микросекундах

getChannels

MidiChannel[] getChannels()
Получает набор MIDI-каналов, управляемых этим синтезатором. Каждый ненулевой элемент возвращённого массива представляет собой MidiChannel, получающий MIDI-сообщения, отправленные по соответствующему номеру канала.

Спецификация MIDI 1.0 предусматривает 16 каналов, поэтому этот метод возвращает массив как минимум из 16 элементов. Однако если синтезатор не использует все 16 каналов, некоторые элементы массива могут быть null, поэтому перед использованием следует проверять каждый элемент.

Возвращает:
массив объектов MidiChannel, управляемых этим Synthesizer. Некоторые элементы массива могут быть null.

getVoiceStatus

VoiceStatus[] getVoiceStatus()
Получает текущее состояние голосов, создаваемых этим синтезатором. Если этот класс Synthesizer не предоставляет информацию о голосах, возвращаемый массив всегда будет иметь длину 0. В противном случае его длина всегда равна общему количеству голосов, возвращаемому методом getMaxPolyphony(). (Объяснение голосов синтезатора см. в описании класса VoiceStatus.)
Возвращает:
массив объектов VoiceStatus, предоставляющих информацию о соответствующих голосах синтезатора
См. также:
  • getMaxPolyphony()
  • VoiceStatus

isSoundbankSupported

boolean isSoundbankSupported(Soundbank soundbank)
Сообщает вызывающему коду, может ли этот синтезатор загружать инструменты из указанного банка звуков. Если банк звуков не поддерживается, любая попытка загрузить из него инструменты приведёт к IllegalArgumentException.
Параметры:
soundbank — банк звуков, поддержку которого требуется проверить
Возвращает:
true, если банк звуков поддерживается, иначе false
См. также:
  • loadInstruments(Soundbank, Patch[])
  • loadAllInstruments(Soundbank)
  • unloadInstruments(Soundbank, Patch[])
  • unloadAllInstruments(Soundbank)
  • getDefaultSoundbank()

loadInstrument

boolean loadInstrument(Instrument instrument)
Делает определённый инструмент доступным для синтеза. Инструмент загружается в расположение патча, указанное его объектом Patch, чтобы после получения (или ранее полученного) сообщения о смене программы, выбирающего этот патч, последующие ноты воспроизводились со звучанием instrument. Если указанный инструмент уже загружен, этот метод ничего не делает и возвращает true.

Инструмент должен входить в банк звуков, поддерживаемый этим Synthesizer. (Для проверки можно использовать метод getSoundbank интерфейса Instrument и метод isSoundbankSupported интерфейса Synthesizer.)

Параметры:
instrument — инструмент для загрузки
Возвращает:
true, если инструмент успешно загружен (или уже был загружен), false, если инструмент не удалось загрузить (например, если в синтезаторе недостаточно памяти)
Выбрасывает:
IllegalArgumentException — если этот Synthesizer не поддерживает банк звуков указанного инструмента
См. также:
  • unloadInstrument(Instrument)
  • loadInstruments(Soundbank, Patch[])
  • loadAllInstruments(Soundbank)
  • remapInstrument(Instrument, Instrument)
  • SoundbankResource.getSoundbank()
  • MidiChannel.programChange(int, int)

unloadInstrument

void unloadInstrument(Instrument instrument)
Выгружает определённый инструмент.
Параметры:
instrument — инструмент для выгрузки
Выбрасывает:
IllegalArgumentException — если этот Synthesizer не поддерживает банк звуков указанного инструмента
См. также:
  • loadInstrument(Instrument)
  • unloadInstruments(Soundbank, Patch[])
  • unloadAllInstruments(Soundbank)
  • getLoadedInstruments()
  • remapInstrument(Instrument, Instrument)

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
См. также:
  • loadInstrument(Instrument)
  • loadInstruments(Soundbank, Patch[])
  • loadAllInstruments(Soundbank)

getDefaultSoundbank

Soundbank getDefaultSoundbank()
Получает банк звуков по умолчанию для синтезатора, если он существует. (Некоторые синтезаторы имеют банк звуков по умолчанию или встроенный банк.) Если у синтезатора нет банка звуков по умолчанию, инструменты необходимо явно загружать из внешнего банка звуков.
Возвращает:
банк звуков по умолчанию или null, если он отсутствует
См. также:
  • isSoundbankSupported(Soundbank)

getAvailableInstruments

Instrument[] getAvailableInstruments()
Получает список инструментов, входящих в комплект поставки синтезатора. Эти инструменты могут быть встроены в синтезатор или входить в банк звуков по умолчанию, поставляемый с синтезатором, и т. д.

Обратите внимание: этот метод не предназначен для определения того, какие инструменты в данный момент загружены в синтезатор; для этого используется getLoadedInstruments(). Метод также не указывает все инструменты, которые можно загрузить в синтезатор; он перечисляет только подмножество инструментов, входящих в комплект поставки. Чтобы узнать, можно ли загрузить другой инструмент, вызовите isSoundbankSupported(); если его Soundbank поддерживается, можно попробовать загрузить инструмент.

Возвращает:
список доступных инструментов. Если в комплект синтезатора не входят инструменты, возвращается массив длины 0.
См. также:
  • getLoadedInstruments()
  • isSoundbankSupported(Soundbank)
  • loadInstrument(Instrument)

getLoadedInstruments

Instrument[] getLoadedInstruments()
Получает список инструментов, загруженных в данный Synthesizer.
Возвращает:
список загруженных в данный момент инструментов
См. также:
  • loadInstrument(Instrument)
  • getAvailableInstruments()
  • Soundbank.getInstruments()

loadAllInstruments

boolean loadAllInstruments(Soundbank soundbank)
Загружает в Synthesizer все инструменты из указанного Soundbank.
Параметры:
soundbank — Soundbank, инструменты из которого требуется загрузить
Возвращает:
true, если все инструменты успешно загружены (или уже были загружены), false, если не удалось загрузить хотя бы один инструмент (например, если в Synthesizer недостаточно памяти)
Выбрасывает:
IllegalArgumentException — если запрошенный банк звуков несовместим с этим синтезатором
См. также:
  • isSoundbankSupported(Soundbank)
  • loadInstrument(Instrument)
  • loadInstruments(Soundbank, Patch[])

unloadAllInstruments

void unloadAllInstruments(Soundbank soundbank)
Выгружает все инструменты из указанного Soundbank.
Параметры:
soundbank — банк звуков, содержащий инструменты для выгрузки
Выбрасывает:
IllegalArgumentException — если банк звуков не поддерживается
См. также:
  • isSoundbankSupported(Soundbank)
  • unloadInstrument(Instrument)
  • unloadInstruments(Soundbank, Patch[])

loadInstruments

boolean loadInstruments(Soundbank soundbank, Patch[] patchList)
Загружает инструменты, указанные в заданных патчах, из указанного Soundbank. Каждый объект Patch указывает номер банка и программы; Instrument, у которого совпадает Patch, загружается в указанное расположение банка и программы.
Параметры:
soundbank — Soundbank, содержащий инструменты для загрузки
patchList — список патчей, для которых следует загрузить инструменты
Возвращает:
true, если все инструменты успешно загружены (или уже были загружены), false, если не удалось загрузить хотя бы один инструмент (например, если в Synthesizer недостаточно памяти)
Выбрасывает:
IllegalArgumentException — если банк звуков не поддерживается
См. также:
  • isSoundbankSupported(Soundbank)
  • Instrument.getPatch()
  • loadAllInstruments(Soundbank)
  • loadInstrument(Instrument)
  • Soundbank.getInstrument(Patch)
  • Sequence.getPatchList()

unloadInstruments

void unloadInstruments(Soundbank soundbank, Patch[] patchList)
Выгружает инструменты, указанные в заданных патчах, из указанного банка звуков MIDI.
Параметры:
soundbank — банк звуков, содержащий инструменты для выгрузки
patchList — список патчей, инструменты для которых следует выгрузить
Выбрасывает:
IllegalArgumentException — если банк звуков не поддерживается
См. также:
  • unloadInstrument(Instrument)
  • unloadAllInstruments(Soundbank)
  • isSoundbankSupported(Soundbank)
  • Instrument.getPatch()
  • loadInstruments(Soundbank, Patch[])

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

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