Класс SysexMessage
- java.lang.Object
-
- javax.sound.midi.MidiMessage
-
- javax.sound.midi.SysexMessage
- Все реализованные интерфейсы:
- Cloneable
public class SysexMessage extends MidiMessage
Объект SysexMessage представляет сообщение MIDI системного исключения.
При чтении сообщения системного исключения из MIDI-файла его длина всегда определена. Данные из сообщения системного исключения из MIDI-файла должны храниться в массиве данных объекта SysexMessage следующим образом: байт статуса сообщения системного исключения (0xF0 или 0xF7), все байты данных сообщения и, наконец, флаг конца исключения (0xF7). Длина, отчётливо указанная объектом SysexMessage, поэтому является длиной данных системного исключения плюс два: один байт для байта статуса и один для флага конца исключения.
Как предписывает спецификация Standard MIDI Files, два значения байтов статуса являются допустимыми для SysexMessage при чтении из MIDI-файла:
- 0xF0: Сообщение системного исключения (то же, что и в MIDI-протоколе)
- 0xF7: Специальное сообщение системного исключения
При использовании Java Sound для обработки данных системного исключения, которые принимаются с помощью MIDI-протокола, данные должны размещаться в одном или нескольких SysexMessages. В этом случае длина данных системного исключения заранее неизвестна; конец данных системного исключения отмечается флагом конца исключения (0xF7) в потоке байтов MIDI-протокола.
- 0xF0: Сообщение системного исключения (то же, что и в MIDI-протоколе)
- 0xF7: Конец исключения (EOX)
SysexMessage содержащий данные для конкретного сообщения системного исключения, должен иметь значение статуса 0xF0. Если это сообщение содержит все данные системного исключения для сообщения, оно должно заканчиваться байтом статуса 0xF7 (EOX). В противном случае дополнительные данные системного исключения должны быть отправлены в одном или нескольких SysexMessages со значением статуса 0xF7. Объект SysexMessage содержащий последний фрагмент данных для сообщения системного исключения, должен заканчиваться значением 0xF7 (EOX), чтобы отметить конец сообщения системного исключения. Если данные системного исключения из объектов SysexMessages передаются с помощью MIDI-протокола, должны распространяться только начальный байт статуса 0xF0, сами данные системного исключения и конечный байт 0xF7 (EOX); любые байты статуса 0xF7, используемые для указания того, что объект SysexMessage содержит продолжение данных системного исключения, не должны распространяться по MIDI-протоколу.
Поля
| Модификатор и тип | Поле и описание |
|---|---|
static int |
SPECIAL_SYSTEM_EXCLUSIVE Байт статуса для специального сообщения системного исключения (0xF7 или 247), используемого в MIDI-файлах. |
static int |
SYSTEM_EXCLUSIVE Байт статуса для сообщения системного исключения (0xF0 или 240). |
Поля, унаследованные от класса javax.sound.midi.MidiMessage
data, length Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
SysexMessage() Создаёт новый объект | |
protected |
SysexMessage(byte[] data) Создаёт новый объект |
SysexMessage(byte[] data,
int length) Создаёт новый объект | |
SysexMessage(int status,
byte[] data,
int length) Создаёт новый объект |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
Object |
clone() Создаёт новый объект того же класса с тем же содержимым, что и этот объект. |
byte[] |
getData() Получает копию данных для сообщения системного исключения. |
void |
setMessage(byte[] data,
int length) Устанавливает данные для сообщения системного исключения. |
void |
setMessage(int status,
byte[] data,
int length) Устанавливает данные для сообщения системного исключения. |
Методы, унаследованные от класса javax.sound.midi.MidiMessage
getLength, getMessage, getStatus Методы, унаследованные от класса java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Подробное описание полей
SYSTEM_EXCLUSIVE
public static final int SYSTEM_EXCLUSIVE
Байт статуса для сообщения системного исключения (0xF0 или 240).
- См. также:
-
MidiMessage.getStatus(), Значения константных полей
SPECIAL_SYSTEM_EXCLUSIVE
public static final int SPECIAL_SYSTEM_EXCLUSIVE
Байт статуса для специального сообщения системного исключения (0xF7 или 247), используемого в MIDI-файлах. Он имеет то же значение, что и END_OF_EXCLUSIVE, используемое в реальном протоколе «MIDI-провод».
- См. также:
-
MidiMessage.getStatus(), Значения константных полей
Подробное описание конструкторов
SysexMessage
public SysexMessage()
Создаёт новый объект SysexMessage. Содержимое нового сообщения гарантированно указывает на допустимое MIDI-сообщение. Впоследствии вы можете установить содержимое сообщения, используя один из методов setMessage.
- См. также:
setMessage(byte[], int)
SysexMessage
public SysexMessage(byte[] data,
int length)
throws InvalidMidiDataException Создаёт новый объект SysexMessage и устанавливает данные для сообщения. Первый байт массива данных должен быть допустимым байтом статуса системного исключения (0xF0 или 0xF7). Содержимое сообщения может быть изменено с помощью одного из методов setMessage.
- Параметры:
-
data- данные сообщения системного исключения, включая байт статуса -
length- длина допустимых данных сообщения в массиве, включая байт статуса; она должна быть неотрицательной и меньше или равнаdata.length - Исключения:
-
InvalidMidiDataException- если значения параметров не указывают на допустимое MIDI-сообщение метаданных. - С:
- 1.7
- См. также:
-
setMessage(byte[], int),setMessage(int, byte[], int),getData()
SysexMessage
public SysexMessage(int status,
byte[] data,
int length)
throws InvalidMidiDataException Создаёт новый объект SysexMessage и устанавливает данные для сообщения. Содержимое сообщения может быть изменено с помощью одного из методов setMessage.
- Параметры:
-
status- байт статуса для сообщения; он должен быть допустимым байтом статуса системного исключения (0xF0 или 0xF7) -
data- данные сообщения системного исключения (без байта статуса) -
length- длина допустимых данных сообщения в массиве; она должна быть неотрицательной и меньше или равнаdata.length - Исключения:
-
InvalidMidiDataException- если значения параметров не указывают на допустимое MIDI-сообщение метаданных. - С:
- 1.7
- См. также:
-
setMessage(byte[], int),setMessage(int, byte[], int),getData()
SysexMessage
protected SysexMessage(byte[] data)
Создаёт новый объект SysexMessage.
- Параметры:
-
data- массив байтов, содержащий полное сообщение. Данные сообщения можно изменить с помощью методаsetMessage. - См. также:
setMessage(byte[], int)
Подробное описание методов
setMessage
public void setMessage(byte[] data,
int length)
throws InvalidMidiDataException Устанавливает данные для сообщения системного исключения. Первый байт массива данных должен быть допустимым байтом статуса системного исключения (0xF0 или 0xF7).
- Переопределяет:
-
setMessageв классеMidiMessage - Параметры:
-
data- данные сообщения системного исключения -
length- длина допустимых данных сообщения в массиве, включая байт статуса. - Исключения:
-
InvalidMidiDataException- если значения параметров не указывают на допустимое MIDI-сообщение метаданных
setMessage
public void setMessage(int status,
byte[] data,
int length)
throws InvalidMidiDataException Устанавливает данные для сообщения системного исключения.
- Параметры:
-
status- байт статуса для сообщения (0xF0 или 0xF7) -
data- данные сообщения системного исключения -
length- длина допустимых данных сообщения в массиве - Исключения:
-
InvalidMidiDataException- если байт статуса недействителен для сообщения sysex
getData
public byte[] getData()
Получает копию данных для сообщения системного исключения. Возвращаемый массив байтов не включает байт статуса.
- Возвращает:
- массив, содержащий данные сообщения системного исключения.
clone
public Object clone()
Создаёт новый объект того же класса с тем же содержимым, что и этот объект.
- Задано:
-
cloneв классеMidiMessage - Возвращает:
- клонированный экземпляр
- См. также:
Cloneable
© 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.