Spec-Zone.ru › OpenJDK 27

Интерфейс 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
Модификатор и тип Интерфейс Описание
static class  MidiDevice.Info
Объект MidiDevice.Info содержит различные сведения об объекте MidiDevice, включая его название, создавшую его компанию и описательный текст.

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

Модификатор и тип Метод Описание
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
Модификатор и тип Метод Описание
void close()
Закрывает устройство, указывая, что теперь оно должно освободить используемые системные ресурсы.
MidiDevice.Info getDeviceInfo()
Получает сведения об устройстве, включая его класс Java и Strings с названием, производителем и описанием устройства.
int getMaxReceivers()
Получает максимальное количество входных MIDI-подключений, доступных на этом MIDI-устройстве для приема MIDI-данных.
int getMaxTransmitters()
Получает максимальное количество выходных MIDI-подключений, доступных на этом MIDI-устройстве для передачи MIDI-данных.
long getMicrosecondPosition()
Получает текущую временную метку устройства в микросекундах.
Receiver getReceiver()
Получает входной MIDI-приемник, через который MIDI-устройство может принимать MIDI-данные.
List<Receiver> getReceivers()
Возвращает все активные, незакрытые приемники, подключенные к этому MidiDevice.
Transmitter getTransmitter()
Получает выходное MIDI-подключение, через которое MIDI-устройство будет передавать MIDI-данные.
List<Transmitter> getTransmitters()
Возвращает все активные, незакрытые передатчики, подключенные к этому MidiDevice.
boolean isOpen()
Сообщает, открыто ли устройство.
void 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, 2026, 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.

Spec-Zone.ru

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