Интерфейс секвенсора
- Все суперинтерфейсы:
-
AutoCloseable,MidiDevice
public interface Sequencer extends MidiDevice
Интерфейс 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
- 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- если при чтении потока возникает исключение I/O -
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, 2023, 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/21/docs/api/java.desktop/javax/sound/midi/Sequencer.html