Интерфейс 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 | Модификатор и тип | Интерфейс | Описание |
|---|---|---|
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 |
Сообщает вызывающему коду, может ли этот синтезатор загружать инструменты из указанного банка звуков. |
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 | Модификатор и тип | Метод | Описание |
|---|---|---|
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 |
getReceivers() |
Возвращает все активные, незакрытые приемники, подключенные к этому MidiDevice. |
Transmitter |
getTransmitter() |
Получает выходное MIDI-подключение, через которое MIDI-устройство будет передавать MIDI-данные. |
List |
getTransmitters() |
Возвращает все активные, незакрытые передатчики, подключенные к этому MidiDevice. |
boolean |
isOpen() |
Сообщает, открыто ли устройство. |
void |
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.