Интерфейс секвенсора
- Все суперинтерфейсы:
-
AutoCloseable,MidiDevice
public interface Sequencer extends MidiDevice
Интерфейс Sequencer включает методы для следующих основных операций секвенсора MIDI:
- получение последовательности из данных MIDI-файла
- старт и стоп воспроизведения
- переход к произвольной позиции в последовательности
- изменение темпа (скорости) воспроизведения
- синхронизация воспроизведения с внутренними часами или с полученными MIDI-сообщениями
- управление временем работы другого устройства
Sequencer есть доступ: - редактирование данных путём добавления или удаления отдельных MIDI-событий или целых дорожек
- выключение или активация отдельных дорожек в последовательности
- уведомление объектов-слушателей о любых метасобытиях или событиях изменения управления, встречающихся при воспроизведении последовательности
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static class |
Sequencer.SyncMode |
Объект SyncMode представляет один из способов синхронизации понятия времени MIDI-секвенсора с устройством-мастером или устройством-рабом. |
Вложенные классы/интерфейсы, объявленные в интерфейсе javax.sound.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.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
- Since:
- 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.
- Parameters:
-
factor- запрашиваемый множитель темпа - See Also:
getTempoFactor
float getTempoFactor()
- Returns:
- фактор темпа
- See Also:
getTickLength
long getTickLength()
- Returns:
- длительность секвенции в тиках
getTickPosition
long getTickPosition()
Sequence).- Returns:
- текущий тик
- See Also:
setTickPosition
void setTickPosition(long tick)
- Parameters:
-
tick- желаемая позиция в тиках - See Also:
getMicrosecondLength
long getMicrosecondLength()
- Returns:
- длительность секвенции в микросекундах
getMicrosecondPosition
long getMicrosecondPosition()
- Specified by:
-
getMicrosecondPositionв интерфейсеMidiDevice - Returns:
- текущая позиция в микросекундах
- See Also:
setMicrosecondPosition
void setMicrosecondPosition(long microseconds)
- Parameters:
-
microseconds- желаемая позиция в микросекундах - See Also:
setMasterSyncMode
void setMasterSyncMode(Sequencer.SyncMode sync)
sync. Аргумент sync должен быть одним из поддерживаемых режимов, возвращаемых getMasterSyncModes().- Parameters:
-
sync- желаемый режим синхронизации с мастером - See Also:
getMasterSyncMode
Sequencer.SyncMode getMasterSyncMode()
- Returns:
- текущий режим синхронизации с мастером
- See Also:
getMasterSyncModes
Sequencer.SyncMode[] getMasterSyncModes()
- Returns:
- доступные режимы синхронизации с мастером
- See Also:
setSlaveSyncMode
void setSlaveSyncMode(Sequencer.SyncMode sync)
sync должен быть одним из поддерживаемых режимов, возвращаемых getSlaveSyncModes().- Parameters:
-
sync- желаемый режим синхронизации ведомого - See Also:
getSlaveSyncMode
Sequencer.SyncMode getSlaveSyncMode()
- Returns:
- текущий режим синхронизации ведомого
- See Also:
getSlaveSyncModes
Sequencer.SyncMode[] getSlaveSyncModes()
- Returns:
- доступные режимы синхронизации ведомого
- See Also:
setTrackMute
void setTrackMute(int track, boolean mute)
getTrackMute(int).- Parameters:
-
track- номер дорожки. Дорожки в текущей секвенции пронумерованы от 0 до количества дорожек в секвенции минус 1. -
mute- новое состояние приглушения для дорожки.trueозначает, что дорожка должна быть приглушена,falseозначает, что дорожка должна быть разприглушена. - See Also:
getTrackMute
boolean getTrackMute(int track)
- Parameters:
-
track- номер дорожки. Дорожки в текущей секвенции пронумерованы от 0 до количества дорожек в секвенции минус 1. - Returns:
-
trueесли приглушена,falseесли нет
setTrackSolo
void setTrackSolo(int track, boolean solo)
solo имеет значение true, то звучать будут только эта дорожка и другие дорожки в состоянии соло. Если solo имеет значение false, то звучать будут только другие дорожки в состоянии соло, за исключением случаев, когда нет ни одной дорожки в состоянии соло, в таком случае будут звучать все невыключенные дорожки. Этот метод может завершиться неудачей по ряду причин. Например, указанный номер дорожки может быть недействительным для текущей последовательности, или секвенсор может не поддерживать эту функциональность. Приложение, которому необходимо проверить, был ли этот процесс успешен, должно выполнить вызов getTrackSolo(int) после этого вызова.
- Parameters:
-
track- номер дорожки. Дорожки в текущей последовательности пронумерованы от 0 до количества дорожек в последовательности минус 1. -
solo- новое состояние соло для дорожки.trueозначает, что дорожка должна быть в состоянии соло,falseозначает, что дорожка не должна быть в состоянии соло. - See Also:
getTrackSolo
boolean getTrackSolo(int track)
- Parameters:
-
track- номер дорожки. Дорожки в текущей последовательности пронумерованы от 0 до количества дорожек в последовательности минус 1. - Returns:
-
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, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/sound/midi/Sequencer.html