Интерфейс 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 class |
MidiDevice.Info |
Объект MidiDevice.Info содержит различные данные об MidiDevice, включая его имя, название создавшей его компании и описательный текст. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
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 | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрывает устройство, указывая, что оно должно освободить все используемые системные ресурсы. |
MidiDevice.Info |
getDeviceInfo() |
Возвращает сведения об устройстве, включая его класс Java и Strings с его именем, поставщиком и описанием. |
int |
getMaxReceivers() |
Возвращает максимальное количество MIDI-входов, доступных на этом MIDI-устройстве для получения MIDI-данных. |
int |
getMaxTransmitters() |
Возвращает максимальное количество MIDI-выходов, доступных на этом MIDI-устройстве для передачи MIDI-данных. |
Receiver |
getReceiver() |
Возвращает MIDI-приемник, через который MIDI-устройство может получать MIDI-данные. |
List |
getReceivers() |
Возвращает все активные, не закрытые приемники, подключенные к этому MidiDevice. |
Transmitter |
getTransmitter() |
Возвращает MIDI-выход, через который MIDI-устройство будет передавать MIDI-данные. |
List |
getTransmitters() |
Возвращает все активные, не закрытые передатчики, подключенные к этому MidiDevice. |
boolean |
isOpen() |
Сообщает, открыто ли устройство. |
void |
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. Sequencer начинает работу при вызове start() или startRecording(). isRunning затем возвращает true, пока воспроизведение последовательности не завершится или не будет вызван stop().- Возвращает:
-
true, если Sequencer работает, иначеfalse
startRecording
void startRecording()
Обратите внимание, что по умолчанию дорожки не включены для записи. Для записи данных MIDI необходимо явно включить для записи хотя бы одну дорожку.
- Исключения:
-
IllegalStateException— еслиSequencerзакрыт - См. также:
stopRecording
void stopRecording()
- Исключения:
-
IllegalStateException— еслиSequencerзакрыт - См. также:
isRecording
boolean isRecording()
false. Sequencer начинает запись при вызове startRecording() и возвращает true, пока не будет вызван stop() или stopRecording().- Возвращает:
-
true, если Sequencer выполняет запись, иначе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.