Интерфейс Синтезатор
- Все суперинтерфейсы:
- AutoCloseable, MidiDevice
public interface Synthesizer extends MidiDevice
A Synthesizer генерирует звук. Это обычно происходит, когда один из Synthesizer's MidiChannel объектов получает сообщение 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
Вложенные классы
Вложенные классы/интерфейсы унаследованные от интерфейса 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, так что если получено (или получено ранее) сообщение program-change, которое приводит к выбору этого патча, последующие ноты будут воспроизводиться с помощью звука 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(), и если звуковой банк инструмента Soundbank поддерживается, вы можете попробовать загрузить инструмент.
- Возвращает:
- список доступных инструментов. Если синтезатор не поставляется с инструментами, возвращается массив длины 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.