Класс MidiSystem
public class MidiSystem extends Object
MidiSystem предоставляет доступ к установленным ресурсам MIDI-системы, включая такие устройства, как синтезаторы, секвенсоры и порты ввода и вывода MIDI. Типичное простое MIDI-приложение может начинаться с вызова одного или нескольких методов MidiSystem, чтобы узнать, какие устройства установлены, и получить нужные для приложения устройства. В классе также есть методы для чтения файлов, потоков и URL-адресов, содержащих данные стандартных MIDI-файлов или банки звуков. Можно запросить у MidiSystem формат указанного MIDI-файла.
Нельзя создать экземпляр MidiSystem; все методы являются статическими.
Для указания MIDI-устройств по умолчанию можно использовать свойства. Учитываются как системные свойства, так и файл свойств. Файл свойств "sound.properties" считывается из расположения, зависящего от реализации (обычно это каталог conf в каталоге установки Java). Необязательное системное свойство "javax.sound.config.file" можно использовать для указания файла свойств, который будет считан в качестве начальной конфигурации. Если свойство задано и как системное свойство, и в файле свойств, приоритет имеет системное свойство. Если ничего не указано, подходящее устройство выбирается из доступных. Синтаксис файла свойств описан в Properties.load. В следующей таблице перечислены доступные ключи свойств и методы, которые их учитывают:
| Ключ свойства | Интерфейс | Затрагиваемый метод |
|---|---|---|
javax.sound.midi.Receiver |
Receiver |
getReceiver() |
javax.sound.midi.Sequencer |
Sequencer |
getSequencer() |
javax.sound.midi.Synthesizer |
Synthesizer |
getSynthesizer() |
javax.sound.midi.Transmitter |
Transmitter |
getTransmitter() |
MIDI device provider. Имя устройства сопоставляется с String, возвращаемым методом getName класса MidiDevice.Info. Можно не указывать имя класса или имя устройства. Если указано только имя класса, завершающий знак решётки необязателен. Если указан класс поставщика и его можно успешно получить среди установленных поставщиков, список объектов MidiDevice.Info извлекается у поставщика. В противном случае, а также если ни одно из этих устройств не соответствует дальнейшим условиям поиска, список извлекается из getMidiDeviceInfo() и содержит все доступные объекты MidiDevice.Info.
Если указано имя устройства, выполняется поиск в полученном списке объектов MidiDevice.Info: будет возвращён первый объект с соответствующим именем, чей MidiDevice реализует соответствующий интерфейс. Если соответствующий объект MidiDevice.Info не найден или имя устройства не указано, будет возвращено первое подходящее устройство из полученного списка. Для Sequencer и Synthesizer устройство подходит, если оно реализует соответствующий интерфейс; для Receiver и Transmitter устройство подходит, если оно не реализует ни Sequencer, ни Synthesizer и предоставляет как минимум один Receiver или Transmitter соответственно.
Например, свойство javax.sound.midi.Receiver со значением "com.sun.media.sound.MidiProvider#SunMIDI1" приведёт к следующим результатам при вызове getReceiver: если класс com.sun.media.sound.MidiProvider присутствует в списке установленных поставщиков MIDI-устройств, будет возвращено первое устройство Receiver с именем "SunMIDI1". Если оно не найдено, будет возвращено первое устройство Receiver этого поставщика независимо от имени. Если такого устройства нет, будет возвращено первое устройство Receiver с именем "SunMIDI1" из списка всех устройств (возвращаемого методом getMidiDeviceInfo), а если оно не найдено — первое устройство Receiver, которое можно найти в списке всех устройств. Если и это не удастся, будет выброшено исключение MidiUnavailableException.
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static MidiDevice |
getMidiDevice |
Получает запрошенное MIDI-устройство. |
static MidiDevice.Info[] |
getMidiDeviceInfo() |
Получает массив информационных объектов, представляющих набор всех MIDI-устройств, доступных в системе. |
static MidiFileFormat |
getMidiFileFormat |
Получает формат MIDI-файла указанного File. |
static MidiFileFormat |
getMidiFileFormat |
Получает формат MIDI-файла данных в указанном входном потоке. |
static MidiFileFormat |
getMidiFileFormat |
Получает формат MIDI-файла данных по указанному URL-адресу. |
static int[] |
getMidiFileTypes() |
Получает набор типов MIDI-файлов, для которых система поддерживает запись файлов. |
static int[] |
getMidiFileTypes |
Получает набор типов MIDI-файлов, которые система может записать из указанной последовательности. |
static Receiver |
getReceiver() |
Получает MIDI-приёмник от внешнего MIDI-порта или другого устройства по умолчанию. |
static Sequence |
getSequence |
Получает MIDI-последовательность из указанного File. |
static Sequence |
getSequence |
Получает MIDI-последовательность из указанного входного потока. |
static Sequence |
getSequence |
Получает MIDI-последовательность по указанному URL-адресу. |
static Sequencer |
getSequencer() |
Получает Sequencer по умолчанию, подключённый к устройству по умолчанию. |
static Sequencer |
getSequencer |
Получает Sequencer по умолчанию, при необходимости подключённый к устройству по умолчанию. |
static Soundbank |
getSoundbank |
Создаёт Soundbank, считывая его из указанного File. |
static Soundbank |
getSoundbank |
Создаёт банк звуков MIDI, считывая его из указанного потока. |
static Soundbank |
getSoundbank |
Создаёт Soundbank, считывая его из указанного URL-адреса. |
static Synthesizer |
getSynthesizer() |
Получает синтезатор по умолчанию. |
static Transmitter |
getTransmitter() |
Получает MIDI-передатчик от внешнего MIDI-порта или другого источника по умолчанию. |
static boolean |
isFileTypeSupported |
Показывает, поддерживает ли система запись файлов указанного типа MIDI-файла. |
static boolean |
isFileTypeSupported |
Показывает, можно ли записать MIDI-файл указанного типа из заданной последовательности. |
static int |
write |
Записывает во внешний файл поток байтов, представляющий файл указанного типа MIDI-файла. |
static int |
write |
Записывает в выходной поток поток байтов, представляющий файл указанного типа MIDI-файла. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли этот объект какому-либо другому. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание методов
getMidiDeviceInfo
public static MidiDevice.Info[] getMidiDeviceInfo()
getMidiDevice.- Возвращает:
- массив объектов
MidiDevice.Info, по одному для каждого установленного MIDI-устройства. Если такие устройства не установлены, возвращается массив длины 0.
getMidiDevice
public static MidiDevice getMidiDevice(MidiDevice.Info info) throws MidiUnavailableException
- Параметры:
-
info— информационный объект устройства, представляющий нужное устройство - Возвращает:
- запрошенное устройство
- Выбрасывает:
-
MidiUnavailableException— если запрошенное устройство недоступно из-за ограничений ресурсов -
IllegalArgumentException— если объект info не представляет MIDI-устройство, установленное в системе -
NullPointerException— еслиinfoимеет значениеnull - См. также:
getReceiver
public static Receiver getReceiver() throws MidiUnavailableException
MidiDeviceReceiver. Если задано системное свойство javax.sound.midi.Receiver или оно задано в файле "sound.properties", оно используется для определения устройства, предоставляющего приёмник по умолчанию. Подробности см. в class description.
Если подходящий MIDI-порт недоступен, приёмник получается из установленного синтезатора.
Если собственный приёмник, предоставляемый устройством по умолчанию, не реализует интерфейс MidiDeviceReceiver, он будет обёрнут в класс-обёртку, реализующий интерфейс MidiDeviceReceiver. Соответствующие вызовы методов Receiver будут перенаправляться собственному приёмнику.
Если этот метод завершается успешно, MidiDevice, которому принадлежит Receiver, открывается неявно, если он ещё не открыт. Неявно открытое устройство можно закрыть, вызвав close для возвращённого Receiver. Чтобы освободить системные ресурсы, удерживаемые MidiDevice, необходимо закрыть все открытые экземпляры Receiver. Подробное описание поведения методов открытия и закрытия см. в описании класса MidiDevice.
- Возвращает:
- приёмник MIDI по умолчанию
- Выбрасывает:
-
MidiUnavailableException— если приёмник по умолчанию недоступен из-за ограничений ресурсов или в системе не установлено устройство, предоставляющее приёмники
getTransmitter
public static Transmitter getTransmitter() throws MidiUnavailableException
MidiDeviceTransmitter. Если задано системное свойство javax.sound.midi.Transmitter или оно задано в файле "sound.properties", оно используется для определения устройства, предоставляющего передатчик по умолчанию. Подробности см. в class description.
Если собственный передатчик, предоставляемый устройством по умолчанию, не реализует интерфейс MidiDeviceTransmitter, он будет обёрнут в класс-обёртку, реализующий интерфейс MidiDeviceTransmitter. Соответствующие вызовы методов Transmitter будут перенаправляться собственному передатчику.
Если этот метод завершается успешно, MidiDevice, которому принадлежит Transmitter, открывается неявно, если он ещё не открыт. Неявно открытое устройство можно закрыть, вызвав close для возвращённого Transmitter. Чтобы освободить системные ресурсы, удерживаемые MidiDevice, необходимо закрыть все открытые экземпляры Transmitter. Подробное описание поведения методов открытия и закрытия см. в описании класса MidiDevice.
- Возвращает:
- передатчик MIDI по умолчанию
- Выбрасывает:
-
MidiUnavailableException— если передатчик по умолчанию недоступен из-за ограничений ресурсов или в системе не установлено устройство, предоставляющее передатчики
getSynthesizer
public static Synthesizer getSynthesizer() throws MidiUnavailableException
Если задано системное свойство javax.sound.midi.Synthesizer или оно задано в файле "sound.properties", оно используется для определения синтезатора по умолчанию. Подробности см. в class description.
- Возвращает:
- синтезатор по умолчанию
- Выбрасывает:
-
MidiUnavailableException— если синтезатор недоступен из-за ограничений ресурсов или в системе не установлен синтезатор
getSequencer
public static Sequencer getSequencer() throws MidiUnavailableException
Sequencer по умолчанию, подключённый к устройству по умолчанию. Возвращённый экземпляр Sequencer подключён к Synthesizer по умолчанию, возвращаемому методом getSynthesizer(). Если Synthesizer недоступен или Synthesizer по умолчанию не удаётся открыть, sequencer подключается к Receiver по умолчанию, возвращаемому методом getReceiver(). Подключение выполняется путём получения экземпляра Transmitter из Sequencer и задания его Receiver. Закрытие и повторное открытие секвенсора восстанавливает подключение к устройству по умолчанию. Этот метод эквивалентен вызову getSequencer(true).
Если задано системное свойство javax.sound.midi.Sequencer или оно задано в файле "sound.properties", оно используется для определения секвенсора по умолчанию. Подробности см. в class description.
- Возвращает:
- секвенсор по умолчанию, подключённый к приёмнику по умолчанию
- Выбрасывает:
-
MidiUnavailableException— если секвенсор недоступен из-за ограничений ресурсов, если ни один установленныйMidiDeviceне предоставляет доступныйReceiverили если в системе не установлен секвенсор - См. также:
getSequencer
public static Sequencer getSequencer(boolean connected) throws MidiUnavailableException
Sequencer по умолчанию, при необходимости подключённый к устройству по умолчанию. Если connected имеет значение true, возвращённый экземпляр Sequencer подключается к Synthesizer по умолчанию, возвращаемому методом getSynthesizer(). Если Synthesizer недоступен или Synthesizer по умолчанию не удаётся открыть, sequencer подключается к Receiver по умолчанию, возвращаемому методом getReceiver(). Подключение выполняется путём получения экземпляра Transmitter из Sequencer и задания его Receiver. Закрытие и повторное открытие секвенсора восстанавливает подключение к устройству по умолчанию.
Если connected имеет значение false, возвращённый экземпляр Sequencer не подключён и не имеет открытого Transmitters. Чтобы воспроизвести секвенсор на MIDI-устройстве или Synthesizer, необходимо получить Transmitter и задать его Receiver.
Если задано системное свойство javax.sound.midi.Sequencer или оно задано в файле "sound.properties", оно используется для определения секвенсора по умолчанию. Подробности см. в class description.
- Параметры:
-
connected— указывает, подключён ли возвращаемыйSequencerкSynthesizerпо умолчанию - Возвращает:
- секвенсор по умолчанию
- Выбрасывает:
-
MidiUnavailableException— если секвенсор недоступен из-за ограничений ресурсов, если в системе не установлен секвенсор или еслиconnectedимеет значение true и ни один установленныйMidiDeviceне предоставляет доступныйReceiver - Начиная с:
- 1.5
- См. также:
getSoundbank
public static Soundbank getSoundbank(InputStream stream) throws InvalidMidiDataException, IOException
IOException.- Параметры:
-
stream— источник данных банка звуков - Возвращает:
- банк звуков
- Выбрасывает:
-
InvalidMidiDataException— если поток не указывает на допустимые данные банка звуков MIDI, распознаваемые системой -
IOException— если при загрузке банка звуков произошла ошибка ввода-вывода -
NullPointerException— еслиstreamимеет значениеnull - См. также:
getSoundbank
public static Soundbank getSoundbank(URL url) throws InvalidMidiDataException, IOException
Soundbank, считывая его по указанному URL. URL должен указывать на допустимый файл банка звуков MIDI.- Параметры:
-
url— источник данных банка звуков - Возвращает:
- банк звуков
- Выбрасывает:
-
InvalidMidiDataException— если URL не указывает на допустимые данные банка звуков MIDI, распознаваемые системой -
IOException— если при загрузке банка звуков произошла ошибка ввода-вывода -
NullPointerException— еслиurlимеет значениеnull
getSoundbank
public static Soundbank getSoundbank(File file) throws InvalidMidiDataException, IOException
Soundbank, считывая его из указанного File. File должен указывать на допустимый файл банка звуков MIDI.- Параметры:
-
file— источник данных банка звуков - Возвращает:
- банк звуков
- Выбрасывает:
-
InvalidMidiDataException— еслиFileне указывает на допустимые данные банка звуков MIDI, распознаваемые системой -
IOException— если при загрузке банка звуков произошла ошибка ввода-вывода -
NullPointerException— еслиfileимеет значениеnull
getMidiFileFormat
public static MidiFileFormat getMidiFileFormat(InputStream stream) throws InvalidMidiDataException, IOException
Этому методу и/или вызываемому им коду может потребоваться считать часть данных из потока, чтобы определить, поддерживается ли их формат. Поэтому реализации может потребоваться установить отметку в потоке, считать достаточно данных, чтобы определить, имеет ли поток поддерживаемый формат, и восстановить указатель чтения потока в исходное положение. Если входной поток не позволяет выполнить эту последовательность операций, этот метод может завершиться ошибкой IOException.
Эта операция может быть выполнена успешно только для файлов типов, которые может анализировать установленный модуль чтения файлов. Она может завершиться ошибкой InvalidMidiDataException даже для допустимых файлов, если совместимый модуль чтения файлов не установлен. Она также завершится ошибкой InvalidMidiDataException, если совместимый модуль чтения файлов установлен, но при определении формата файла возникает ошибка.
- Параметры:
-
stream— входной поток, из которого следует извлечь сведения о формате файла - Возвращает:
- объект
MidiFileFormat, описывающий формат MIDI-файла - Выбрасывает:
-
InvalidMidiDataException— если поток не указывает на допустимые данные MIDI-файла, распознаваемые системой -
IOException— если при обращении к потоку возникает исключение ввода-вывода -
NullPointerException— еслиstreamимеет значениеnull - См. также:
getMidiFileFormat
public static MidiFileFormat getMidiFileFormat(URL url) throws InvalidMidiDataException, IOException
Эта операция может быть выполнена успешно только для файлов типов, которые может анализировать установленный модуль чтения файлов. Она может завершиться ошибкой InvalidMidiDataException даже для допустимых файлов, если совместимый модуль чтения файлов не установлен. Она также завершится ошибкой InvalidMidiDataException, если совместимый модуль чтения файлов установлен, но при определении формата файла возникает ошибка.
- Параметры:
-
url— URL, из которого следует извлечь сведения о формате файла - Возвращает:
- объект
MidiFileFormat, описывающий формат MIDI-файла - Выбрасывает:
-
InvalidMidiDataException— если URL не указывает на допустимые данные MIDI-файла, распознаваемые системой -
IOException— если при обращении к URL возникает исключение ввода-вывода -
NullPointerException— еслиurlимеет значениеnull - См. также:
getMidiFileFormat
public static MidiFileFormat getMidiFileFormat(File file) throws InvalidMidiDataException, IOException
File. File должен указывать на допустимые данные MIDI-файла типа, распознаваемого системой. Эта операция может быть выполнена успешно только для файлов типов, которые может анализировать установленный модуль чтения файлов. Она может завершиться ошибкой InvalidMidiDataException даже для допустимых файлов, если совместимый модуль чтения файлов не установлен. Она также завершится ошибкой InvalidMidiDataException, если совместимый модуль чтения файлов установлен, но при определении формата файла возникает ошибка.
- Параметры:
-
file—File, из которого следует извлечь сведения о формате файла - Возвращает:
- объект
MidiFileFormat, описывающий формат MIDI-файла - Выбрасывает:
-
InvalidMidiDataException— еслиFileне указывает на допустимые данные MIDI-файла, распознаваемые системой -
IOException— если при обращении к файлу возникает исключение ввода-вывода -
NullPointerException— еслиfileимеет значениеnull - См. также:
getSequence
public static Sequence getSequence(InputStream stream) throws InvalidMidiDataException, IOException
Этому методу и/или вызываемому им коду может потребоваться считать часть данных из потока, чтобы определить, поддерживается ли их формат. Поэтому реализации может потребоваться установить отметку в потоке, считать достаточно данных, чтобы определить, имеет ли поток поддерживаемый формат, и восстановить указатель чтения потока в исходное положение. Если входной поток не позволяет выполнить эту последовательность операций, этот метод может завершиться ошибкой IOException.
Эта операция может быть выполнена успешно только для файлов типов, которые может анализировать установленный модуль чтения файлов. Она может завершиться ошибкой InvalidMidiDataException даже для допустимых файлов, если совместимый модуль чтения файлов не установлен. Она также завершится ошибкой InvalidMidiDataException, если совместимый модуль чтения файлов установлен, но при создании объекта Sequence из данных файла возникает ошибка.
- Параметры:
-
stream— входной поток, из которого следует создатьSequence - Возвращает:
- объект
Sequence, созданный на основе данных MIDI-файла, содержащихся во входном потоке - Выбрасывает:
-
InvalidMidiDataException— если поток не указывает на допустимые данные MIDI-файла, распознаваемые системой -
IOException— если при обращении к потоку возникает исключение ввода-вывода -
NullPointerException— еслиstreamимеет значениеnull - См. также:
getSequence
public static Sequence getSequence(URL url) throws InvalidMidiDataException, IOException
Эта операция может быть выполнена успешно только для файлов типов, которые может анализировать установленный модуль чтения файлов. Она может завершиться ошибкой InvalidMidiDataException даже для допустимых файлов, если совместимый модуль чтения файлов не установлен. Она также завершится ошибкой InvalidMidiDataException, если совместимый модуль чтения файлов установлен, но при создании объекта Sequence из данных файла возникает ошибка.
- Параметры:
-
url— URL, из которого следует создатьSequence - Возвращает:
- объект
Sequence, созданный на основе данных MIDI-файла, на который указывает URL - Выбрасывает:
-
InvalidMidiDataException— если URL не указывает на допустимые данные MIDI-файла, распознаваемые системой -
IOException— если при обращении к URL возникает исключение ввода-вывода -
NullPointerException— еслиurlимеет значениеnull
getSequence
public static Sequence getSequence(File file) throws InvalidMidiDataException, IOException
File. File должен указывать на допустимые данные MIDI-файла типа, распознаваемого системой. Эта операция может быть выполнена успешно только для файлов типов, которые может анализировать установленный модуль чтения файлов. Она может завершиться ошибкой InvalidMidiDataException даже для допустимых файлов, если совместимый модуль чтения файлов не установлен. Она также завершится ошибкой InvalidMidiDataException, если совместимый модуль чтения файлов установлен, но при создании объекта Sequence из данных файла возникает ошибка.
- Параметры:
-
file—File, из которого следует создатьSequence - Возвращает:
- объект
Sequence, созданный на основе данных MIDI-файла, на который указывает файл - Выбрасывает:
-
InvalidMidiDataException— если файл не указывает на допустимые данные MIDI-файла, распознаваемые системой -
IOException— если возникает исключение ввода-вывода -
NullPointerException— еслиfileимеет значениеnull
getMidiFileTypes
public static int[] getMidiFileTypes()
- Возвращает:
- массив уникальных типов файлов. Если типы файлов не поддерживаются, возвращается массив длины 0.
isFileTypeSupported
public static boolean isFileTypeSupported(int fileType)
- Параметры:
-
fileType— тип файла, для которого проверяется возможность записи - Возвращает:
-
true, если тип файла поддерживается, иначеfalse
getMidiFileTypes
public static int[] getMidiFileTypes(Sequence sequence)
- Параметры:
-
sequence— последовательность, для которой проверяется поддержка типов MIDI-файлов - Возвращает:
- набор уникальных поддерживаемых типов файлов. Если типы файлов не поддерживаются, возвращается массив длины 0.
- Выбрасывает:
-
NullPointerException— еслиsequenceимеет значениеnull
isFileTypeSupported
public static boolean isFileTypeSupported(int fileType, Sequence sequence)
- Параметры:
-
fileType— тип файла, для которого проверяется возможность записи -
sequence— последовательность, для которой проверяется поддержка записи файлов - Возвращает:
-
true, если тип файла поддерживается для этой последовательности, иначеfalse - Выбрасывает:
-
NullPointerException— еслиsequenceимеет значениеnull
write
public static int write(Sequence in, int fileType, OutputStream out) throws IOException
- Параметры:
-
in— последовательность, содержащая данные MIDI для записи в файл -
fileType— тип файла, который нужно записать в выходной поток -
out— поток, в который следует записать данные файла - Возвращает:
- количество байтов, записанных в выходной поток
- Выбрасывает:
-
IOException— если возникает исключение ввода-вывода -
IllegalArgumentException— если формат файла не поддерживается системой -
NullPointerException— еслиinилиoutимеют значениеnull - См. также:
write
public static int write(Sequence in, int type, File out) throws IOException
- Параметры:
-
in— последовательность, содержащая данные MIDI для записи в файл -
type— тип файла, который нужно записать в выходной поток -
out— внешний файл, в который следует записать данные файла - Возвращает:
- количество байтов, записанных в файл
- Выбрасывает:
-
IOException— если возникает исключение ввода-вывода -
IllegalArgumentException— если тип файла не поддерживается системой -
NullPointerException— еслиinилиoutимеют значениеnull - См. также:
© 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.