Класс MidiSystem
public class MidiSystem extends Object
MidiSystem предоставляет доступ к ресурсам установленной MIDI-системы, включая устройства, такие как синтезаторы, секвенсоры и порты MIDI-ввода и -вывода. Типичное простое MIDI-приложение может начинаться с вызова одного или нескольких методов MidiSystem, чтобы узнать, какие устройства установлены, и получить необходимые для этого приложения. Класс также содержит методы для чтения файлов, потоков и URL-адресов, содержащих стандартные данные MIDI-файлов или звуковые банки. Вы можете запросить формат указанного MIDI-файла у класса MidiSystem.
Вы не можете создать экземпляр 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 не найден или имя устройства не указано, будет возвращено первое подходящее устройство из полученного списка. Для секвенсора и синтезатора устройство подходит, если оно реализует соответствующий интерфейс; для получателя и передатчика устройство подходит, если оно не реализует ни секвенсор, ни синтезатор и предоставляет по крайней мере одного получателя или передатчика соответственно.
Например, свойство 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-файла, в предоставленный поток вывода. |
Подробное описание методов
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. Все открытые экземпляры Receiver должны быть закрыты, чтобы освободить системные ресурсы, удерживаемые MidiDevice. Подробное описание поведения open/close см. в описании класса 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. Все открытые экземпляры Transmitter должны быть закрыты, чтобы освободить системные ресурсы, удерживаемые MidiDevice. Подробное описание поведения open/close см. в описании класса 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.
- Возвращает:
- секвенсор по умолчанию, подключенный к по умолчанию Receiver
- Исключение:
-
MidiUnavailableException- если секвенсор недоступен из-за ограничений ресурсов, или нетReceiverдоступно ни одним установленнымMidiDevice, или секвенсор не установлен в системе - См. также:
getSequencer
public static Sequencer getSequencer(boolean connected) throws MidiUnavailableException
Если 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, и нетReceiverдоступно ни одним установленнымMidiDevice - С:
- 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-звуковой банк.- Parameters:
-
url- источник данных звукового банка - Returns:
- звуковой банк
- Throws:
-
InvalidMidiDataException- если URL не указывает на допустимые MIDI-данные звукового банка, распознаваемые системой -
IOException- если произошла ошибка ввода-вывода при загрузке звукового банка -
NullPointerException- еслиurlимеет значениеnull
getSoundbank
public static Soundbank getSoundbank(File file) throws InvalidMidiDataException, IOException
Soundbank , считывая его из указанного File. File должен указывать на допустимый MIDI-звуковой банк.- Parameters:
-
file- источник данных звукового банка - Returns:
- звуковой банк
- Throws:
-
InvalidMidiDataException- еслиFileне указывает на допустимые MIDI-данные звукового банка, распознаваемые системой -
IOException- если произошла ошибка ввода-вывода при загрузке звукового банка -
NullPointerException- еслиfileимеет значениеnull
getMidiFileFormat
public static MidiFileFormat getMidiFileFormat(InputStream stream) throws InvalidMidiDataException, IOException
Этот метод и/или код, который он вызывает, могут потребовать чтения некоторых данных из потока для определения того, поддерживается ли его формат данных. Поэтому реализация может потребовать отметить поток, прочитать достаточно данных, чтобы определить, соответствует ли он поддерживаемому формату, и сбросить указатель чтения потока в исходное положение. Если поток ввода не допускает этого набора операций, этот метод может завершиться ошибкой с IOException.
Эта операция может быть успешной только для файлов типа, который может быть проанализирован установленным файловым читателем. Она может завершиться ошибкой с InvalidMidiDataException даже для допустимых файлов, если не установлен совместимый файловый читатель. Она также завершится ошибкой с InvalidMidiDataException , если совместимый файловый читатель установлен, но возникают ошибки при определении формата файла.
- Parameters:
-
stream- поток ввода, из которого должна быть извлечена информация о формате файла - Returns:
- объект
MidiFileFormat, описывающий формат MIDI-файла - Throws:
-
InvalidMidiDataException- если поток не указывает на допустимые MIDI-данные файла, распознаваемые системой -
IOException- если при доступе к потоку произошла ошибка ввода-вывода -
NullPointerException- еслиstreamимеет значениеnull - See Also:
getMidiFileFormat
public static MidiFileFormat getMidiFileFormat(URL url) throws InvalidMidiDataException, IOException
Эта операция может быть успешной только для файлов типа, который может быть проанализирован установленным файловым читателем. Она может завершиться ошибкой с InvalidMidiDataException даже для допустимых файлов, если не установлен совместимый файловый читатель. Она также завершится ошибкой с InvalidMidiDataException , если совместимый файловый читатель установлен, но возникают ошибки при определении формата файла.
- Parameters:
-
url- URL, из которого должна быть извлечена информация о формате файла - Returns:
- объект
MidiFileFormat, описывающий формат MIDI-файла - Throws:
-
InvalidMidiDataException- если URL не указывает на допустимые MIDI-данные файла, распознаваемые системой -
IOException- если при доступе к URL произошла ошибка ввода-вывода -
NullPointerException- еслиurlимеет значениеnull - See Also:
getMidiFileFormat
public static MidiFileFormat getMidiFileFormat(File file) throws InvalidMidiDataException, IOException
File. File должен указывать на допустимые MIDI-данные файла для типа файла, распознаваемого системой. Эта операция может быть успешной только для файлов типа, который может быть проанализирован установленным файловым читателем. Она может завершиться ошибкой с InvalidMidiDataException даже для допустимых файлов, если не установлен совместимый файловый читатель. Она также завершится ошибкой с InvalidMidiDataException , если совместимый файловый читатель установлен, но возникают ошибки при определении формата файла.
- Parameters:
-
file-File, из которого должна быть извлечена информация о формате файла - Returns:
- объект
MidiFileFormat, описывающий формат MIDI-файла - Throws:
-
InvalidMidiDataException- еслиFileне указывает на допустимые MIDI-данные файла, распознаваемые системой -
IOException- если при доступе к файлу произошла ошибка ввода-вывода -
NullPointerException- еслиfileимеет значениеnull - See Also:
getSequence
public static Sequence getSequence(InputStream stream) throws InvalidMidiDataException, IOException
Этот метод и/или код, который он вызывает, могут потребовать чтения некоторых данных из потока для определения того, поддерживается ли его формат данных. Поэтому реализация может потребовать отметить поток, прочитать достаточно данных, чтобы определить, соответствует ли он поддерживаемому формату, и сбросить указатель чтения потока в исходное положение. Если поток ввода не допускает этого набора операций, этот метод может завершиться ошибкой с IOException.
Эта операция может быть успешной только для файлов типа, который может быть проанализирован установленным файловым читателем. Она может завершиться ошибкой с InvalidMidiDataException даже для допустимых файлов, если не установлен совместимый файловый читатель. Она также завершится ошибкой с InvalidMidiDataException , если совместимый файловый читатель установлен, но возникают ошибки при построении объекта Sequence из данных файла.
- Parameters:
-
stream- поток ввода, из которого должна быть построенаSequence - Returns:
- объект
Sequence, основанный на MIDI-данных файла, содержащихся в потоке ввода - Throws:
-
InvalidMidiDataException- если поток не указывает на допустимые MIDI-данные файла, распознаваемые системой -
IOException- если при доступе к потоку произошла ошибка ввода-вывода -
NullPointerException- еслиstreamимеет значениеnull - See Also:
getSequence
public static Sequence getSequence(URL url) throws InvalidMidiDataException, IOException
Эта операция может быть успешной только для файлов типа, который может быть проанализирован установленным файловым читателем. Она может завершиться ошибкой с InvalidMidiDataException даже для допустимых файлов, если не установлен совместимый файловый читатель. Она также завершится ошибкой с InvalidMidiDataException , если совместимый файловый читатель установлен, но возникают ошибки при построении объекта Sequence из данных файла.
- Parameters:
-
url- URL, из которого должна быть построенаSequence - Returns:
- объект
Sequence, основанный на MIDI-данных файла, на который указывает URL - Throws:
-
InvalidMidiDataException- если URL не указывает на допустимые MIDI-данные файла, распознаваемые системой -
IOException- если при доступе к URL произошла ошибка ввода-вывода -
NullPointerException- еслиurlимеет значениеnull
getSequence
public static Sequence getSequence(File file) throws InvalidMidiDataException, IOException
File. File должен указывать на допустимые MIDI-данные файла для типа файла, распознаваемого системой. Эта операция может быть успешной только для файлов типа, который может быть проанализирован установленным файловым читателем. Она может завершиться ошибкой с InvalidMidiDataException даже для допустимых файлов, если не установлен совместимый файловый читатель. Она также завершится ошибкой с InvalidMidiDataException , если совместимый файловый читатель установлен, но возникают ошибки при построении объекта Sequence из данных файла.
- Parameters:
-
file-File, из которого должна быть построенаSequence - Returns:
- объект
Sequence, основанный на MIDI-данных файла, на который указывает File - Throws:
-
InvalidMidiDataException- если File не указывает на допустимые MIDI-данные файла, распознаваемые системой -
IOException- если произошла ошибка ввода-вывода -
NullPointerException- еслиfileимеет значениеnull
getMidiFileTypes
public static int[] getMidiFileTypes()
- Returns:
- массив уникальных типов файлов. Если типы файлов не поддерживаются, возвращается массив длиной 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, 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/MidiSystem.html