Интерфейс Sequencer
- Все суперинтерфейсы:
-
AutoCloseable,MidiDevice
public interface Sequencer extends MidiDevice
sequence, называется секвенсором. MIDI-последовательность содержит списки временных меток MIDI-данных, например, таких, которые могут быть прочитаны из стандартного MIDI-файла. Большинство секвенсоров также предоставляют функции для создания и редактирования последовательностей. Интерфейс Sequencer включает методы для следующих основных операций MIDI-секвенсора:
- получение последовательности из данных MIDI-файла
- старт и остановка воспроизведения
- переход к произвольной позиции в последовательности
- изменение темпа (скорости) воспроизведения
- синхронизация воспроизведения с внутренним таймером или с полученными MIDI-сообщениями
- управление временем работы другого устройства
Sequencer есть доступ: - редактирование данных путем добавления или удаления отдельных MIDI-событий или целых дорожек
- выключение или активация отдельных дорожек в последовательности
- уведомление объектов-слушателей о любых мета-событиях или событиях изменения управления, встреченных во время воспроизведения последовательности
Краткое описание вложенных классов
| Modifier and Type | Interface | Description |
|---|---|---|
static class |
Sequencer.SyncMode |
Объект SyncMode представляет один из способов синхронизации понятия времени MIDI-секвенсора с устройством-мастером или устройством-рабочим. |
Вложенные классы/интерфейсы, объявленные в интерфейсе javax.sound.midi.MidiDevice
MidiDevice.Info
Краткое описание полей
| Modifier and Type | Field | Description |
|---|---|---|
static final int |
LOOP_CONTINUOUSLY |
Значение, указывающее, что циклическое воспроизведение должно продолжаться неограниченно, а не завершиться после определенного количества циклов. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
int[] |
addControllerEventListener |
Регистрирует слушателя событий управления, чтобы получать уведомления всякий раз, когда секвенсор обрабатывает событие изменения управления заданного или нескольких заданных типов. |
boolean |
addMetaEventListener |
Регистрирует слушателя событий метаданных, чтобы получать уведомления всякий раз, когда в последовательности встречается событие метаданных и обрабатывается секвенсором. |
int |
getLoopCount() |
Получает количество повторений для воспроизведения. |
long |
getLoopEndPoint() |
Получает конечную позицию цикла в тиках MIDI. |
long |
getLoopStartPoint() |
Получает начальную позицию цикла в тиках MIDI. |
Sequencer.SyncMode |
getMasterSyncMode() |
Получает текущий режим синхронизации ведущего для этого секвенсора. |
Sequencer.SyncMode[] |
getMasterSyncModes() |
Получает набор режимов синхронизации ведущего, поддерживаемых этим секвенсором. |
long |
getMicrosecondLength() |
Получает длину текущей последовательности в микросекундах или 0, если последовательность не установлена. |
long |
getMicrosecondPosition() |
Получает текущую позицию в последовательности в микросекундах. |
Sequence |
getSequence() |
Получает последовательность, на которой в настоящее время работает секвенсор. |
Sequencer.SyncMode |
getSlaveSyncMode() |
Получает текущий режим синхронизации ведомого для этого секвенсора. |
Sequencer.SyncMode[] |
getSlaveSyncModes() |
Получает набор режимов синхронизации ведомого, поддерживаемых секвенсором. |
float |
getTempoFactor() |
Возвращает текущий коэффициент темпа для секвенсора. |
float |
getTempoInBPM() |
Получает текущий темп в ударах в минуту. |
float |
getTempoInMPQ() |
Получает текущий темп в микросекундах на четверть ноты. |
long |
getTickLength() |
Получает длину текущей последовательности в тиках MIDI или 0, если последовательность не установлена. |
long |
getTickPosition() |
Получает текущую позицию в последовательности в тиках MIDI. |
boolean |
getTrackMute |
Получает текущий режим приглушения для дорожки. |
boolean |
getTrackSolo |
Получает текущий режим сольного воспроизведения для дорожки. |
boolean |
isRecording() |
Указывает, записывает ли в данный момент секвенсор. |
boolean |
isRunning() |
Указывает, работает ли в данный момент секвенсор. |
void |
recordDisable |
Отключает запись на указанную дорожку. |
void |
recordEnable |
Подготавливает указанную дорожку для записи событий, полученных на определенном канале. |
int[] |
removeControllerEventListener |
Удаляет интерес слушателя событий управления к одному или нескольким типам событий управления. |
void |
removeMetaEventListener |
Удаляет указанного слушателя событий метаданных из списка зарегистрированных слушателей этого секвенсора, если слушатель зарегистрирован. |
void |
setLoopCount |
Устанавливает количество повторений цикла для воспроизведения. |
void |
setLoopEndPoint |
Устанавливает последнюю метку MIDI, которая будет воспроизводиться в цикле. |
void |
setLoopStartPoint |
Устанавливает первую метку MIDI, которая будет воспроизводиться в цикле. |
void |
setMasterSyncMode |
Устанавливает источник временной информации, используемый этим секвенсором. |
void |
setMicrosecondPosition |
Устанавливает текущую позицию в последовательности в микросекундах. |
void |
setSequence |
Устанавливает текущую последовательность, на которой работает секвенсор. |
void |
setSequence |
Устанавливает текущую последовательность, на которой работает секвенсор. |
void |
setSlaveSyncMode |
Устанавливает режим синхронизации ведомого для секвенсора. |
void |
setTempoFactor |
Масштабирует фактический темп воспроизведения секвенсора на заданный коэффициент. |
void |
setTempoInBPM |
Устанавливает темп в ударах в минуту. |
void |
setTempoInMPQ |
Устанавливает темп в микросекундах на четверть ноты. |
void |
setTickPosition |
Устанавливает текущую позицию секвенсора в тиках MIDI. |
void |
setTrackMute |
Устанавливает режим приглушения для дорожки. |
void |
setTrackSolo |
Устанавливает режим сольного воспроизведения для дорожки. |
void |
start() |
Начинает воспроизведение MIDI-данных в текущей загруженной последовательности. |
void |
startRecording() |
Начинает запись и воспроизведение MIDI-данных. |
void |
stop() |
Останавливает запись, если она активна, и воспроизведение текущей загруженной последовательности, если она есть. |
void |
stopRecording() |
Останавливает запись, если она активна. |
Методы, объявленные в интерфейсе javax.sound.midi.MidiDevice
close, getDeviceInfo, getMaxReceivers, getMaxTransmitters, getReceiver, getReceivers, getTransmitter, getTransmitters, isOpen, open
Подробное описание полей
LOOP_CONTINUOUSLY
static final int LOOP_CONTINUOUSLY
- С момента:
- 1.5
- См. также:
Подробное описание методов
setSequence
void setSequence(Sequence sequence) throws InvalidMidiDataException
Этот метод можно вызывать даже если Sequencer закрыт.
- Параметры:
-
sequence- последовательность, которую нужно загрузить - Исключения:
-
InvalidMidiDataException- если последовательность содержит неверные данные MIDI или не поддерживается
setSequence
void setSequence(InputStream stream) throws IOException, InvalidMidiDataException
Этот метод можно вызывать даже если Sequencer закрыт.
- Параметры:
-
stream- поток, содержащий данные файла MIDI - Исключения:
-
IOException- если при чтении потока произошла ошибка ввода-вывода -
InvalidMidiDataException- если в потоке обнаружены неверные данные или поток не поддерживается
getSequence
Sequence getSequence()
Этот метод можно вызывать даже если Sequencer закрыт.
- Возвращает:
- текущую последовательность или
nullесли последовательность не задана
start
void start()
setLoopCount. После этого или если счетчик циклов равен 0, воспроизведение продолжится до конца последовательности. Реализация гарантирует, что синтезатор перейдет в согласованное состояние при переходе к началу цикла, отправив соответствующие события управления, сдвига высоты тона и изменения программы.
- Исключения:
-
IllegalStateException- еслиSequencerзакрыт - См. также:
stop
void stop()
- Исключения:
-
IllegalStateException- еслиSequencerзакрыт - См. также:
isRunning
boolean isRunning()
false. Секвенсор начинает работу, когда вызывается либо start(), либо startRecording(). isRunning затем возвращает true до завершения воспроизведения последовательности или вызова stop().- Возвращает:
-
trueесли секвенсор запущен, в противном случаеfalse
startRecording
void startRecording()
Обратите внимание, что дорожки по умолчанию не включены для записи. Для записи данных MIDI необходимо, чтобы хотя бы одна дорожка была специально включена для записи.
- Исключения:
-
IllegalStateException- еслиSequencerзакрыт - См. также:
stopRecording
void stopRecording()
- Исключения:
-
IllegalStateException- еслиSequencerзакрыт - См. также:
isRecording
boolean isRecording()
false. Секвенсор начинает запись, когда вызывается startRecording(), а затем возвращает true до тех пор, пока не будет вызван stop() или stopRecording().- Возвращает:
-
trueесли секвенсор записывает, в противном случаеfalse
recordEnable
void recordEnable(Track track, int channel)
- Параметры:
-
track- дорожка, в которую будут записываться события -
channel- канал, на котором будут приниматься события. Если для значения канала указано -1, дорожка будет получать данные со всех каналов. - Исключения:
-
IllegalArgumentException- выбрасывается, если дорожка не является частью текущей последовательности
recordDisable
void recordDisable(Track track)
- Параметры:
-
track- дорожка, которую нужно отключить для записи, илиnullдля отключения записи для всех дорожек
getTempoInBPM
float getTempoInBPM()
- Возвращает:
- текущее темпо в ударах в минуту
- См. также:
setTempoInBPM
void setTempoInBPM(float bpm)
- Параметры:
-
bpm- желаемое новое темпо в ударах в минуту - См. также:
getTempoInMPQ
float getTempoInMPQ()
- Возвращает:
- текущее темпо в микросекундах на четверть ноты
- См. также:
setTempoInMPQ
void setTempoInMPQ(float mpq)
- Параметры:
-
mpq- желаемое новое темпо в микросекундах на четверть ноты - См. также:
setTempoFactor
void setTempoFactor(float factor)
getTempoInMPQ() и getTempoInBPM(). Эти значения указывают темпо до масштабирования. Обратите внимание, что множитель темпо нельзя изменять при использовании внешней синхронизации. В этой ситуации setTempoFactor всегда устанавливает множитель темпо в 1,0.
- Параметры:
-
factor- запрашиваемый множитель темпо - См. также:
getTempoFactor
float getTempoFactor()
- Возвращает:
- коэффициент темпа
- См. также:
getTickLength
long getTickLength()
- Возвращает:
- длительность последовательности в тиках
getTickPosition
long getTickPosition()
Sequence.)- Возвращает:
- текущий тик
- См. также:
setTickPosition
void setTickPosition(long tick)
- Параметры:
-
tick- желаемая позиция в тиках - См. также:
getMicrosecondLength
long getMicrosecondLength()
- Возвращает:
- длительность последовательности в микросекундах
getMicrosecondPosition
long getMicrosecondPosition()
- Определяется в:
-
getMicrosecondPositionв интерфейсеMidiDevice - Возвращает:
- текущая позиция в микросекундах
- См. также:
setMicrosecondPosition
void setMicrosecondPosition(long microseconds)
- Параметры:
-
microseconds- желаемая позиция в микросекундах - См. также:
setMasterSyncMode
void setMasterSyncMode(Sequencer.SyncMode sync)
sync. Аргумент sync должен быть одним из поддерживаемых режимов, как возвращается getMasterSyncModes().- Параметры:
-
sync- желаемый режим синхронизации с мастером - См. также:
getMasterSyncMode
Sequencer.SyncMode getMasterSyncMode()
- Возвращает:
- текущий режим синхронизации с мастером
- См. также:
getMasterSyncModes
Sequencer.SyncMode[] getMasterSyncModes()
- Возвращает:
- доступные режимы синхронизации с мастером
- См. также:
setSlaveSyncMode
void setSlaveSyncMode(Sequencer.SyncMode sync)
sync должен быть одним из поддерживаемых режимов, как возвращается getSlaveSyncModes().- Параметры:
-
sync- желаемый режим синхронизации ведомого - См. также:
getSlaveSyncMode
Sequencer.SyncMode getSlaveSyncMode()
- Возвращает:
- текущий режим синхронизации ведомого
- См. также:
getSlaveSyncModes
Sequencer.SyncMode[] getSlaveSyncModes()
- Возвращает:
- доступные режимы синхронизации ведомого
- См. также:
setTrackMute
void setTrackMute(int track, boolean mute)
getTrackMute(int).- Параметры:
-
track- номер дорожки. Дорожки в текущей последовательности пронумерованы от 0 до числа дорожек в последовательности минус 1. -
mute- новое состояние отключения для дорожки.trueподразумевает, что дорожка должна быть отключена,falseподразумевает, что дорожка должна быть включена. - См. также:
getTrackMute
boolean getTrackMute(int track)
- Параметры:
-
track- номер дорожки. Дорожки в текущей последовательности пронумерованы от 0 до числа дорожек в последовательности минус 1. - Возвращает:
-
trueесли отключено,falseесли нет
setTrackSolo
void setTrackSolo(int track, boolean solo)
solo равно true, то звучать будут только эта дорожка и другие дорожки в режиме "только одна дорожка". Если solo равно false, то будут звучать только другие дорожки в режиме "только одна дорожка", если нет дорожек в режиме "только одна дорожка", то будут звучать все неотключенные дорожки. Этот метод может завершиться неудачей по ряду причин. Например, указанный номер дорожки может быть неверным для текущей последовательности, или секвенсор может не поддерживать эту функцию. Приложение, которому необходимо проверить, была ли эта операция успешной, должно последовать за этим вызовом вызовом getTrackSolo(int).
- Параметры:
-
track- номер дорожки. Дорожки в текущей последовательности пронумерованы от 0 до числа дорожек в последовательности минус 1. -
solo- новое состояние "только одна дорожка" для дорожки.trueподразумевает, что дорожка должна быть в режиме "только одна дорожка",falseподразумевает, что дорожка не должна быть в режиме "только одна дорожка". - См. также:
getTrackSolo
boolean getTrackSolo(int track)
- Параметры:
-
track- номер дорожки. Дорожки в текущей последовательности пронумерованы от 0 до числа дорожек в последовательности минус 1. - Возвращает:
-
trueесли в режиме "только одна дорожка",falseесли нет
addMetaEventListener
boolean addMetaEventListener(MetaEventListener listener)
- Parameters:
-
listener- слушатель для добавления - Returns:
-
trueесли слушатель был успешно добавлен, в противном случаеfalse - See Also:
removeMetaEventListener
void removeMetaEventListener(MetaEventListener listener)
- Parameters:
-
listener- слушатель мета-событий для удаления - See Also:
addControllerEventListener
int[] addControllerEventListener(ControllerEventListener listener, int[] controllers)
controllers, который должен содержать массив номеров MIDI-контроллеров. (Каждое число должно быть от 0 до 127 включительно. Обратитесь к спецификации MIDI 1.0 для получения номеров, соответствующих различным типам контроллеров.) Возвращаемый массив содержит номера MIDI-контроллеров, для которых слушатель теперь будет получать события. Некоторые секвенсоры могут не поддерживать уведомления о событиях контроллеров, в этом случае массив имеет длину 0. Другие секвенсоры могут поддерживать уведомления для некоторых контроллеров, но не для всех. Данный метод можно вызывать многократно. Каждый раз возвращаемый массив указывает все контроллеры, о которых слушатель будет уведомлен, а не только те, которые были запрошены в конкретном вызове.
- Parameters:
-
listener- слушатель событий контроллера для добавления в список зарегистрированных слушателей -
controllers- номера MIDI-контроллеров, для которых запрашивается уведомление об изменении - Returns:
- номера всех MIDI-контроллеров, изменения которых теперь будут сообщаться указанному слушателю
- See Also:
removeControllerEventListener
int[] removeControllerEventListener(ControllerEventListener listener, int[] controllers)
controllers — массив MIDI-номеров, соответствующих контроллерам, для которых слушатель больше не должен получать уведомления об изменениях. Для полного удаления этого слушателя из списка зарегистрированных слушателей передайте null для controllers. Возвращаемый массив содержит номера MIDI-контроллеров, для которых слушатель теперь будет получать события. Длина массива равна 0, если слушатель не будет получать уведомления об изменениях ни для каких контроллеров.- Parameters:
-
listener- старый слушатель -
controllers- номера MIDI-контроллеров, для которых уведомления об изменениях должны быть отменены, илиnullдля отмены для всех контроллеров - Returns:
- номера всех MIDI-контроллеров, изменения которых теперь будут сообщаться указанному слушателю
- See Also:
setLoopStartPoint
void setLoopStartPoint(long tick)
Значение 0 для начальной точки означает начало загруженной последовательности. Начальная точка должна быть меньше или равна конечной точке, и она должна находиться в пределах размера загруженной последовательности.
Начальная точка цикла секвенсора по умолчанию - начало последовательности.
- Parameters:
-
tick- начальная позиция цикла в метках MIDI (нумерация с нуля) - Throws:
-
IllegalArgumentException- если заданную начальную точку цикла нельзя установить, обычно потому, что она выходит за пределы продолжительности последовательности или потому, что начальная точка стоит после конечной точки - Since:
- 1.5
- See Also:
getLoopStartPoint
long getLoopStartPoint()
- Returns:
- начальная позиция цикла в метках MIDI (нумерация с нуля)
- Since:
- 1.5
- See Also:
setLoopEndPoint
void setLoopEndPoint(long tick)
Значение -1 для конечной точки указывает на последнюю метку последовательности. В противном случае конечная точка должна быть больше или равна начальной точке, и она должна находиться в пределах размера загруженной последовательности.
Конечная точка цикла секвенсора по умолчанию равна -1, что означает конец последовательности.
- Parameters:
-
tick- конечная позиция цикла в метках MIDI (нумерация с нуля), или -1 для обозначения последней метки - Throws:
-
IllegalArgumentException- если заданную конечную точку цикла нельзя установить, обычно потому, что она выходит за пределы продолжительности последовательности или потому, что конечная точка стоит перед начальной точкой - Since:
- 1.5
- See Also:
getLoopEndPoint
long getLoopEndPoint()
- Returns:
- конечная позиция цикла в метках MIDI (нумерация с нуля), или -1 для обозначения конца последовательности
- Since:
- 1.5
- See Also:
setLoopCount
void setLoopCount(int count)
count раз, после чего воспроизведение продолжится до конца последовательности. Если текущая позиция в момент вызова этого метода больше конечной точки цикла, воспроизведение продолжится до конца последовательности без циклирования, если не будет изменена конечная точка цикла позже.
Значение count 0 отключает циклирование: воспроизведение продолжится в конечной точке цикла, и оно не вернется к начальной точке цикла. Это значение по умолчанию для секвенсора.
Если воспроизведение приостановлено во время циклирования, текущий статус цикла сброшен; последующие запросы запуска не будут затронуты прерванной циклической операцией.
- Parameters:
-
count- количество раз, когда воспроизведение должно вернуться из конечной позиции цикла в начальную позицию цикла, илиLOOP_CONTINUOUSLYдля указания, что циклирование должно продолжаться до прерывания - Throws:
-
IllegalArgumentException- еслиcountотрицательное и не равноLOOP_CONTINUOUSLY - Since:
- 1.5
- See Also:
getLoopCount
int getLoopCount()
- Returns:
- количество циклов после которого воспроизведение доходит до конца последовательности
- Since:
- 1.5
- See Also:
© 1993, 2021, 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/17/docs/api/java.desktop/javax/sound/midi/Sequencer.html