Интерфейс MidiDevice
- Все суперинтерфейсы:
AutoCloseable
- Все известные подинтерфейсы:
-
Sequencer,Synthesizer
public interface MidiDevice extends AutoCloseable
MidiDevice является базовым интерфейсом для всех устройств MIDI. К распространённым устройствам относятся синтезаторы, секвенсоры, порты ввода MIDI и порты вывода MIDI. Устройство MidiDevice может быть передатчиком или приёмником событий MIDI, или тем и другим. Поэтому оно может предоставлять экземпляры Transmitter или Receiver (или то и другое). Обычно порты MIDI ВХОД предоставляют передатчики, порты MIDI ВЫХОД и синтезаторы предоставляют приёмники. Секвенсор обычно предоставляет передатчики для воспроизведения и приёмники для записи.
Устройство MidiDevice может открываться и закрываться явно, а также неявно. Явное открытие достигается вызовом open(), явное закрытие выполняется вызовом close() для экземпляра MidiDevice. Если приложение открывает устройство MidiDevice явно, оно должно закрыть его явно, чтобы освободить системные ресурсы и позволить приложению корректно завершиться. Неявное открытие выполняется путём вызова MidiSystem.getReceiver() и MidiSystem.getTransmitter(). Устройство MidiDevice используемое MidiSystem.getReceiver и MidiSystem.getTransmitter зависит от реализации, если не используются свойства javax.sound.midi.Receiver и javax.sound.midi.Transmitter (см. описание свойств для выбора поставщиков по умолчанию в MidiSystem). Устройство MidiDevice которое было открыто неявно, закрывается неявно при закрытии Receiver или Transmitter которые привели к его открытию. Если приложение получило более одного неявно открывающего Receiver или Transmitter, устройство закрывается после закрытия последнего Receiver или Transmitter. С другой стороны, вызов getReceiver или getTransmitter для экземпляра устройства напрямую не открывает устройство неявно. Закрытие этих Transmitter и Receiver не закрывает устройство неявно. Чтобы использовать устройство с Receiver или Transmitter полученными таким образом, устройство должно быть открыто и закрыто явно.
Если явное и неявное открытие и закрытие смешаны для одного и того же экземпляра MidiDevice, применяются следующие правила:
- После явного открытия (до или после неявного открытия) устройство не будет закрыто неявным закрытием. Единственный способ закрыть явно открытое устройство – явное закрытие.
- Явное закрытие всегда закрывает устройство, даже если оно также было открыто неявно. Последующее неявное закрытие не оказывает никакого дополнительного эффекта.
MidiDevice device = ...;
if (!(device instanceof Sequencer) && !(device instanceof Synthesizer)) {
// we're now sure that device represents a MIDI port
// ...
}
Устройство MidiDevice включает объект MidiDevice.Info для предоставления информации о производителе и т. д.
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static class |
MidiDevice.Info |
Объект MidiDevice.Info содержит различные данные о MidiDevice, включая его имя, компанию-разработчика и описательный текст. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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() |
Открывает устройство, указывая, что оно должно теперь получить необходимые системные ресурсы и стать работоспособным. |
Подробное описание методов
getDeviceInfo
MidiDevice.Info getDeviceInfo()
Strings содержащий его имя, производителя и описание.- Возвращает:
- информацию о устройстве
open
void open() throws MidiUnavailableException
Приложение, явно открывающее устройство с помощью этого вызова, должно закрыть устройство, вызвав close(). Это необходимо для освобождения системных ресурсов и для возможности приложения корректно завершить работу.
Обратите внимание, что некоторые устройства, после закрытия, нельзя открыть повторно. Попытки открыть такое устройство всегда приведут к MidiUnavailableException.
- Выбрасывает:
-
MidiUnavailableException- выбрасывается, если устройство не может быть открыто из-за ограничений ресурсов -
SecurityException- выбрасывается, если устройство не может быть открыто из-за ограничений безопасности - См. также:
close
void close()
Все Receiver и Transmitter экземпляры, открытые из этого устройства, закрываются. Это включает экземпляры, полученные с помощью MidiSystem.
- Определяется в:
-
closeв интерфейсеAutoCloseable - См. также:
isOpen
boolean isOpen()
- Возвращает:
-
trueесли устройство открыто, иначеfalse - См. также:
getMicrosecondPosition
long getMicrosecondPosition()
- Возвращает:
- текущую метку времени устройства в микросекундах или -1, если устройство не поддерживает метки времени
getMaxReceivers
int getMaxReceivers()
- Возвращает:
- максимальное количество подключений MIDI IN или -1, если количество подключений не ограничено
getMaxTransmitters
int getMaxTransmitters()
- Возвращает:
- максимальное количество подключений MIDI OUT или -1, если количество подключений не ограничено
getReceiver
Receiver getReceiver() throws MidiUnavailableException
Обычно возвращаемый приемник реализует интерфейс MidiDeviceReceiver.
Получение Receiver с помощью этого метода не открывает устройство. Для использования устройства его необходимо явно открыть, вызвав open(). Также закрытие Receiver не закрывает устройство. Его необходимо явно закрыть, вызвав close().
- Возвращает:
- приемник для устройства
- Выбрасывает:
-
MidiUnavailableException- выбрасывается, если приемник недоступен из-за ограничений ресурсов - См. также:
getReceivers
List<Receiver> getReceivers()
MidiDevice. Приемник может быть удален из устройства путем его закрытия. Обычно возвращаемые приемники реализуют интерфейс MidiDeviceReceiver.
- Возвращает:
- неизменяемый список открытых приемников
- С тех пор:
- 1.5
getTransmitter
Transmitter getTransmitter() throws MidiUnavailableException
Обычно возвращаемый передатчик реализует интерфейс MidiDeviceTransmitter.
Получение Transmitter с помощью этого метода не открывает устройство. Для использования устройства его необходимо явно открыть, вызвав open(). Также закрытие Transmitter не закрывает устройство. Его необходимо явно закрыть, вызвав close().
- Возвращает:
- передатчик MIDI OUT для устройства
- Выбрасывает:
-
MidiUnavailableException- выбрасывается, если передатчик недоступен из-за ограничений ресурсов - См. также:
getTransmitters
List<Transmitter> getTransmitters()
MidiDevice. Передатчик может быть удален из устройства путем его закрытия. Обычно возвращаемые передатчики реализуют интерфейс MidiDeviceTransmitter.
- Возвращает:
- неизменяемый список открытых передатчиков
- С тех пор:
- 1.5
© 1993, 2023, 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/21/docs/api/java.desktop/javax/sound/midi/MidiDevice.html