Интерфейс Sequencer
- Все суперинтерфейсы:
AutoCloseable, MidiDevice
public interface Sequencer extends MidiDevice
sequence, называется секвенсором. MIDI-последовательность содержит списки данных MIDI с временными метками, например данные, считываемые из стандартного MIDI-файла. Большинство секвенсоров также предоставляют функции для создания и редактирования последовательностей. Интерфейс Sequencer включает методы для выполнения следующих основных операций MIDI-секвенсора:
- получение последовательности из данных MIDI-файла
- запуск и остановка воспроизведения
- переход к произвольной позиции в последовательности
- изменение темпа (скорости) воспроизведения
- синхронизация воспроизведения с внутренними часами или получаемыми сообщениями MIDI
- управление синхронизацией другого устройства
Sequencer: - редактирование данных путем добавления или удаления отдельных событий MIDI или целых дорожек
- отключение звука отдельных дорожек последовательности или их воспроизведение в режиме соло
- уведомление объектов-слушателей о любых метасобытиях или событиях изменения контроллера, встреченных при воспроизведении последовательности
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static class |
Sequencer.SyncMode |
Объект SyncMode представляет один из способов синхронизации представления времени MIDI-секвенсора с ведущим или ведомым устройством. |
Вложенные классы/интерфейсы, объявленные в интерфейсе MidiDevice
MidiDevice.Info
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
LOOP_CONTINUOUSLY |
Значение, указывающее, что цикл должен повторяться бесконечно, а не завершаться после заданного числа повторений. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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. |
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() |
Указывает, выполняет ли Sequencer в данный момент запись. |
boolean |
isRunning() |
Указывает, выполняется ли в данный момент Sequencer. |
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() |
Останавливает запись, если она выполняется. |
Методы, объявленные в интерфейсе 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)
- Параметры:
-
listener— добавляемый прослушиватель - Возвращает:
-
true, если прослушиватель успешно добавлен, иначеfalse - См. также:
removeMetaEventListener
void removeMetaEventListener(MetaEventListener listener)
- Параметры:
-
listener— удаляемый прослушиватель метасобытий - См. также:
addControllerEventListener
int[] addControllerEventListener(ControllerEventListener listener, int[] controllers)
controllers, который должен содержать массив номеров контроллеров MIDI. (Каждый номер должен находиться в диапазоне от 0 до 127 включительно. Номера, соответствующие различным типам контроллеров, см. в спецификации MIDI 1.0.) Возвращаемый массив содержит номера контроллеров MIDI, события которых теперь будет получать прослушиватель. Некоторые секвенсоры могут не поддерживать уведомления о событиях контроллеров; в этом случае длина массива равна 0. Другие секвенсоры могут поддерживать уведомления для некоторых, но не для всех контроллеров. Этот метод можно вызывать несколько раз. Каждый раз возвращаемый массив указывает все контроллеры, об изменениях которых прослушиватель будет получать уведомления, а не только контроллеры, запрошенные при данном вызове.
- Параметры:
-
listener— прослушиватель событий контроллера, добавляемый в список зарегистрированных прослушивателей -
controllers— номера контроллеров MIDI, об изменениях которых требуется получать уведомления - Возвращает:
- номера всех контроллеров MIDI, об изменениях которых теперь будет сообщаться указанному прослушивателю
- См. также:
removeControllerEventListener
int[] removeControllerEventListener(ControllerEventListener listener, int[] controllers)
controllers представляет собой массив номеров MIDI, соответствующих контроллерам, об изменениях которых прослушиватель больше не должен получать уведомления. Чтобы полностью удалить прослушиватель из списка зарегистрированных прослушивателей, передайте null в качестве значения controllers. Возвращаемый массив содержит номера контроллеров MIDI, события которых теперь будет получать прослушиватель. Длина массива равна 0, если прослушиватель не будет получать уведомления об изменениях ни одного контроллера.- Параметры:
-
listener— прежний прослушиватель -
controllers— номера контроллеров MIDI, уведомления об изменениях которых следует отменить, илиnull, чтобы отменить уведомления для всех контроллеров - Возвращает:
- номера всех контроллеров MIDI, об изменениях которых теперь будет сообщаться указанному прослушивателю
- См. также:
setLoopStartPoint
void setLoopStartPoint(long tick)
Значение 0 для начальной точки означает начало загруженной последовательности. Начальная точка должна быть меньше конечной или равна ей и находиться в пределах длины загруженной последовательности.
По умолчанию начальная точка цикла секвенсора совпадает с началом последовательности.
- Параметры:
-
tick— начальная позиция цикла в MIDI-тиках (нумерация начинается с нуля) - Исключения:
-
IllegalArgumentException— если не удаётся задать требуемую начальную точку цикла, обычно потому, что она находится за пределами длительности последовательности или расположена после конечной точки - Начиная с версии:
- 1.5
- См. также:
getLoopStartPoint
long getLoopStartPoint()
- Возвращает:
- начальную позицию цикла в MIDI-тиках (нумерация начинается с нуля)
- Начиная с версии:
- 1.5
- См. также:
setLoopEndPoint
void setLoopEndPoint(long tick)
Значение -1 для конечной точки указывает на последний тик последовательности. В противном случае конечная точка должна быть больше или равна начальной точке и находиться в пределах размера загруженной последовательности.
По умолчанию конечная точка цикла секвенсора равна -1, что означает конец последовательности.
- Параметры:
-
tick— конечная позиция цикла в MIDI-тиках (отсчет начинается с нуля) или -1, обозначающее последний тик - Исключения:
-
IllegalArgumentException— если запрошенную точку цикла не удается задать, обычно потому, что она находится за пределами длительности последовательности или конечная точка предшествует начальной - Начиная с версии:
- 1.5
- См. также:
getLoopEndPoint
long getLoopEndPoint()
- Возвращает:
- конечную позицию цикла в MIDI-тиках (отсчет начинается с нуля) или -1, обозначающее конец последовательности
- Начиная с версии:
- 1.5
- См. также:
setLoopCount
void setLoopCount(int count)
count раз, после чего продолжается до конца последовательности. Если на момент вызова этого метода текущая позиция находится за конечной точкой цикла, воспроизведение продолжается до конца последовательности без повторения цикла, если впоследствии конечная точка цикла не будет изменена.
Значение count 0 отключает повторение цикла: воспроизведение продолжается от конечной точки цикла и не возвращается к начальной точке цикла. Это значение используется по умолчанию для секвенсора.
Если воспроизведение остановлено во время повторения цикла, текущее состояние цикла сбрасывается; последующие запросы на запуск не зависят от прерванного повторения цикла.
- Параметры:
-
count— число возвратов воспроизведения от конечной позиции цикла к начальной позиции цикла илиLOOP_CONTINUOUSLY, если повторение цикла должно продолжаться до прерывания - Исключения:
-
IllegalArgumentException— еслиcountотрицательно и не равноLOOP_CONTINUOUSLY - Начиная с версии:
- 1.5
- См. также:
getLoopCount
int getLoopCount()
- Возвращает:
- число повторов цикла, после которых воспроизведение продолжается до конца последовательности
- Начиная с версии:
- 1.5
- См. также:
© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/sound/midi/Sequencer.html