Интерфейс Синтезатора
- Все суперинтерфейсы:
-
AutoCloseable,MidiDevice
public interface Synthesizer extends MidiDevice
Синтезатор генерирует звук. Это обычно происходит, когда один из объектов канала MIDI получает сообщение включения ноты, напрямую или через объект приёмника. Многие синтезаторы поддерживают передатчик, через который события MIDI могут быть переданы синтезатору. В таких случаях синтезатор обычно отвечает, отправив соответствующее сообщение в соответствующий приёмник, или обработав событие сам, если это не сообщение для канала MIDI.
Интерфейс синтезатора включает методы для загрузки и выгрузки инструментов из звуковых банков. Инструмент – это описание для синтезирования определенного типа звука, будь то эмуляция традиционного инструмента, какой-то звуковой эффект или другой воображаемый звук. Звуковой банк – это коллекция инструментов, организованная по номеру банка и программы (через объект инструмента инструмента). Разные классы синтезаторов могут использовать разные методы синтеза звука, что означает, что некоторые инструменты могут быть совместимы с данным синтезатором, а другие – нет. Кроме того, у синтезаторов может быть ограниченный объём памяти для инструментов, что означает, что не каждый звуковой банк и инструмент может быть использован каждым синтезатором, даже если метод синтеза совместим. Чтобы проверить, можно ли воспроизвести инструменты из определённого звукового банка на данном синтезаторе, вызовите метод isSoundbankSupported синтезатора.
«Загрузка» инструмента означает, что этот инструмент становится доступным для синтезирования нот. Инструмент загружается в указанное им место в банке и программе. Загрузка не обязательно означает, что впоследствии воспроизведённые ноты немедленно будут звучать как этот только что загруженный инструмент. Для того, чтобы инструмент воспроизвёл ноты, один из объектов синтезатора должен получить (или получить) сообщение изменения программы, которое вызывает выбор банка и номера программы данного инструмента.
- См. также:
-
MidiSystem.getSynthesizer(),Soundbank,Instrument,MidiChannel.programChange(int, int),Receiver,Transmitter,MidiDevice
Вложенные классы
Вложенные классы/интерфейсы, объявленные в интерфейсе javax.sound.midi.MidiDevice
MidiDevice.Info Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
Instrument[] | getAvailableInstruments() | Получает список инструментов, поставляемых вместе с синтезатором. |
MidiChannel[] | getChannels() | Получает набор каналов MIDI, управляемых этим синтезатором. |
Soundbank | getDefaultSoundbank() | Получает стандартный звуковой банк для синтезатора, если он существует. |
long | getLatency() | Получает задержку обработки, вносимую этим синтезатором, выраженную в микросекундах. |
Instrument[] | getLoadedInstruments() | Получает список инструментов, которые в данный момент загружены на этот синтезатор. |
int | getMaxPolyphony() | Получает максимальное количество нот, которые этот синтезатор может воспроизводить одновременно. |
VoiceStatus[] | getVoiceStatus() | Получает текущий статус голосов, генерируемых этим синтезатором. |
boolean | isSoundbankSupported(Soundbank soundbank) | Уведомляет вызывающую сторону, способен ли данный синтезатор загружать инструменты из указанного звукового банка. |
boolean | loadAllInstruments(Soundbank soundbank) | Загружает на синтезатор все инструменты, содержащиеся в указанном звуковом банке. |
boolean | loadInstrument(Instrument instrument) | Делает определённый инструмент доступным для синтеза. |
boolean | loadInstruments(Soundbank soundbank,
Patch[] patchList) | Загружает инструменты, на которые ссылаются указанные патчи, из указанного звукового банка. |
boolean | remapInstrument(Instrument from,
Instrument to) | Переназначение инструмента. |
void | unloadAllInstruments(Soundbank soundbank) | Выгружает все инструменты, содержащиеся в указанном звуковом банке. |
void | unloadInstrument(Instrument instrument) | Выгружает конкретный инструмент. |
void | unloadInstruments(Soundbank soundbank,
Patch[] patchList) | Выгружает инструменты, на которые ссылаются указанные патчи, из указанного банка MIDI. |
Методы, объявленные в интерфейсе javax.sound.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(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]),loadAllInstruments(javax.sound.midi.Soundbank),unloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]),unloadAllInstruments(javax.sound.midi.Soundbank),getDefaultSoundbank()
loadInstrument
boolean loadInstrument(Instrument instrument)
Делает определённый инструмент доступным для синтеза. Этот инструмент загружается в расположение патча, указанное его объектом Patch, так что если получено сообщение о смене программы (или оно уже было получено), которое вызывает выбор этого патча, последующие ноты будут воспроизводиться с помощью звука инструмента instrument. Если указанный инструмент уже загружен, этот метод ничего не делает и возвращает true.
Инструмент должен быть частью звукового банка, который поддерживается этим Synthesizer. (Чтобы убедиться, можно использовать метод getSoundbank класса Instrument и метод isSoundbankSupported класса Synthesizer.)
- Параметры:
-
instrument- загружаемый инструмент - Возвращает:
-
trueесли инструмент успешно загружен (или уже был загружен),falseесли инструмент не может быть загружен (например, если у синтезатора недостаточно памяти для его загрузки) - Выбрасывает:
-
IllegalArgumentException- если этотSynthesizerне поддерживает звуковой банк указанного инструмента - См. также:
-
unloadInstrument(javax.sound.midi.Instrument),loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]),loadAllInstruments(javax.sound.midi.Soundbank),remapInstrument(javax.sound.midi.Instrument, javax.sound.midi.Instrument),SoundbankResource.getSoundbank(),MidiChannel.programChange(int, int)
unloadInstrument
void unloadInstrument(Instrument instrument)
Выгружает определенный инструмент.
- Параметры:
-
instrument- инструмент для выгрузки - Выбрасывает:
-
IllegalArgumentException- если этотSynthesizerне поддерживает звуковой банк указанного инструмента - См. также:
-
loadInstrument(javax.sound.midi.Instrument),unloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]),unloadAllInstruments(javax.sound.midi.Soundbank),getLoadedInstruments(),remapInstrument(javax.sound.midi.Instrument, javax.sound.midi.Instrument)
remapInstrument
boolean remapInstrument(Instrument from,
Instrument to) Переназначение инструмента. Инструмент to занимает место инструмента from.
Например, если from был расположен в банке № 2, программе № 11, переназначение приводит к тому, что это место в банке и программе будет занимать to.
Если функция выполнена успешно, инструмент from выгружается.
Чтобы отменить переназначение, загрузите инструмент from, вызвав один из методов loadInstrument(javax.sound.midi.Instrument), loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]) или loadAllInstruments(javax.sound.midi.Soundbank).
- Параметры:
-
from- заменяемый объектInstrument -
to- объектInstrument, который будет использован вместо старого инструмента; он должен быть загружен в синтезатор - Возвращает:
-
trueесли инструмент успешно переназначен,falseесли функция не реализована синтезатором - Выбрасывает:
-
IllegalArgumentException- если инструментfromили инструментtoне поддерживается синтезатором или если инструментtoне загружен -
NullPointerException- если параметрыfromилиtoимеют значение null - См. также:
-
loadInstrument(javax.sound.midi.Instrument),loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]),loadAllInstruments(javax.sound.midi.Soundbank)
getDefaultSoundbank
Soundbank getDefaultSoundbank()
Получает стандартный звуковой банк для синтезатора, если он существует. (Некоторые синтезаторы предоставляют стандартный или встроенный звуковой банк.) Если у синтезатора нет стандартного звукового банка, инструменты необходимо загружать явно из внешнего звукового банка.
- Возвращает:
- стандартный звуковой банк или
null, если он не существует - См. также:
isSoundbankSupported(javax.sound.midi.Soundbank)
getAvailableInstruments
Instrument[] getAvailableInstruments()
Получает список инструментов, поставляемых вместе с синтезатором. Эти инструменты могут быть встроены в синтезатор, или они могут быть частью стандартного звукового банка, предоставляемого вместе с синтезатором и т. д.
Обратите внимание, что этот метод не используется для того, чтобы узнать, какие инструменты в настоящее время загружены на синтезатор; для этого используется метод getLoadedInstruments(). Метод также не показывает все инструменты, которые можно загрузить в синтезатор; он отображает только подмножество, поставляемое вместе с синтезатором. Чтобы узнать, можно ли загрузить другой инструмент, можно вызвать метод isSoundbankSupported(), и если звуковой банк инструмента поддерживается, можно попытаться загрузить инструмент.
- Возвращает:
- список доступных инструментов. Если синтезатор не поставляет никаких инструментов, возвращается массив длиной 0.
- См. также:
-
getLoadedInstruments(),isSoundbankSupported(Soundbank),loadInstrument(javax.sound.midi.Instrument)
getLoadedInstruments
Instrument[] getLoadedInstruments()
Получает список инструментов, которые в настоящее время загружены в этот Synthesizer.
- Возвращает:
- список загруженных инструментов
- См. также:
-
loadInstrument(javax.sound.midi.Instrument),getAvailableInstruments(),Soundbank.getInstruments()
loadAllInstruments
boolean loadAllInstruments(Soundbank soundbank)
Загружает в Synthesizer все инструменты, содержащиеся в указанном Soundbank.
- Параметры:
-
soundbank-Soundbankдля загрузки инструментов - Возвращает:
-
true, если все инструменты успешно загружены (или уже были загружены),false, если какой-либо инструмент не удалось загрузить (например, если уSynthesizerнедостаточно памяти) - Выбрасывает:
-
IllegalArgumentException- если запрошенный звуковой банк несовместим с этим синтезатором - См. также:
-
isSoundbankSupported(javax.sound.midi.Soundbank),loadInstrument(javax.sound.midi.Instrument),loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
unloadAllInstruments
void unloadAllInstruments(Soundbank soundbank)
Выгружает все инструменты, содержащиеся в указанном Soundbank.
- Параметры:
-
soundbank- звуковой банк, содержащий инструменты для выгрузки - Выбрасывает:
-
IllegalArgumentException- выбрасывается, если звуковой банк не поддерживается - См. также:
-
isSoundbankSupported(javax.sound.midi.Soundbank),unloadInstrument(javax.sound.midi.Instrument),unloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
loadInstruments
boolean loadInstruments(Soundbank soundbank,
Patch[] patchList) Загружает инструменты, на которые ссылаются указанные патчи, из указанного Soundbank. Каждый из Patch объектов указывает номер банка и программы; Instrument с соответствующим Patch загружается в это местоположение банка и программы.
- Параметры:
-
soundbank-Soundbank, содержащий инструменты для загрузки -
patchList- список патчей, для которых следует загрузить инструменты - Возвращает:
-
true, если все инструменты успешно загружены (или уже были загружены),false, если какой-либо инструмент не удалось загрузить (например, если уSynthesizerнедостаточно памяти) - Выбрасывает:
-
IllegalArgumentException- выбрасывается, если звуковой банк не поддерживается - См. также:
-
isSoundbankSupported(javax.sound.midi.Soundbank),Instrument.getPatch(),loadAllInstruments(javax.sound.midi.Soundbank),loadInstrument(javax.sound.midi.Instrument),Soundbank.getInstrument(Patch),Sequence.getPatchList()
unloadInstruments
void unloadInstruments(Soundbank soundbank,
Patch[] patchList) Выгружает инструменты, на которые ссылаются указанные патчи, из указанного звукового банка MIDI.
- Параметры:
-
soundbank- звуковой банк, содержащий инструменты для выгрузки -
patchList- список патчей, для которых следует выгрузить инструменты - Выбрасывает:
-
IllegalArgumentException- выбрасывается, если звуковой банк не поддерживается - См. также:
-
unloadInstrument(javax.sound.midi.Instrument),unloadAllInstruments(javax.sound.midi.Soundbank),isSoundbankSupported(javax.sound.midi.Soundbank),Instrument.getPatch(),loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
© 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/Synthesizer.html