Sequencer
Sequencer
MIDI 시퀀스의 재생을 제어하는 하드웨어나 소프트웨어 장치를 나타내는 인터페이스예요. 시퀀서는 시퀀스를 재생하고, 데이터를 보내는 장치로 MIDI 데이터를 신디사이저나 다른 장치로 전송해요.
본문
javax.sound.midi 패키지에 속하는 인터페이스로, MidiDevice를 상속해요. 시퀀서는 MIDI 시퀀스를 재생하고, 재생 위치를 제어하고, 템포를 설정하고, 트랙을 뮤트·솔로하는 기능을 제공해요.
public interface Sequencer extends MidiDevice
상수
LOOP_CONTINUOUSLY: 라운딩하지 않고 무한 루프를 나타내는 루프 지정 값(-1)PPQ: tempo-based timing typeSMPTE_24: 24프레임/초 SMPTE 타이밍
setSequence
void setSequence(Sequence sequence) throws InvalidMidiDataException
이 Sequencer가 재생할 시퀀스를 설정해요. 시퀀스가 NULL이면 현재 시퀀스를 해제해요.
- 파라미터
sequence: 재생할 시퀀스 - 예외
InvalidMidiDataException: 시퀀스가 타이밍 분할 유형 같은 잘못된 데이터를 포함하는 경우
getSequence
Sequence getSequence()
이 Sequencer가 재생 중인 시퀀스를 얻어요. 설정된 시퀀스가 없으면 null을 반환해요.
- 반환값: 재생 중인 시퀀스
start
void start()
시퀀스 재생을 시작해요. 재생은 현재 tick 위치부터 시작하고, stop()을 호출할 때까지 트랙을 통해 진행해요. 시퀀서가 재생 중이지 않을 때 start()를 호출하면 재생을 시작해요.
stop
void stop()
현재 시퀀서의 재생을 중지해요. 재생을 시작한 시퀀스가 남아 있는 위치에서 다시 시작할 수 있게 해요.
isRunning
boolean isRunning()
시퀀서가 재생 중인지 나타내요.
- 반환값: 재생 중이면
true, 그렇지 않으면false
getTickPosition
long getTickPosition()
시퀀서의 현재 tick 위치를 얻어요. tick은 MIDI 시퀀스의 시간 단위예요.
- 반환값: 현재 tick 위치
setTickPosition
void setTickPosition(long tick)
시퀀서의 재생 위치를 설정해요.
- 파라미터
tick: 설정할 tick 위치
getTempoInBPM
float getTempoInBPM()
분당 비트(BPM)로 시퀀서의 현재 템포를 얻어요. 시퀀스가 PPQ 타이밍을 사용할 때 유효해요.
- 반환값: BPM 단위 템포
setTempoInBPM
void setTempoInBPM(float bpm)
시퀀서의 템포를 분당 비트(BPM)로 설정해요. 이 메서드는 PPQ 타이밍에 적용돼요.
- 파라미터
bpm: 설정할 템포(BPM)
setTrackMute
void setTrackMute(int track, boolean mute)
지정된 트랙의 뮤트 상태를 설정해요. 뮤트된 트랙은 재생할 때 음을 내지 않아요.
- 파라미터
track: 대상 트랙 인덱스 - 파라미터
mute: 뮤트 여부
setTrackSolo
void setTrackSolo(int track, boolean solo)
지정된 트랙의 솔로 상태를 설정해요. 솔로된 트랙이 있으면 다른 트랙은 뮤트된 것처럼 재생돼요.
- 파라미터
track: 대상 트랙 인덱스 - 파라미터
solo: 솔로 여부
setLoopStartPoint / setLoopEndPoint
void setLoopStartPoint(long tick)
void setLoopEndPoint(long tick)
루프의 시작/종료 tick 위치를 설정해요. 재생이 루프 끝에 도달하면 루프 시작으로 돌아가요.
addMetaEventListener
void addMetaEventListener(MetaEventListener listener)
메타 이벤트 통지를 받기 위해 MetaEventListener를 등록해요. 시퀀스에서 MetaMessage가 처리될 때마다 등록된 리스너에 통지해요.
- 파라미터
listener: 등록할 리스너
addControllerEventListener
void addControllerEventListener(ControllerEventListener listener, int[] controllers)
컨트롤 변경 통지를 받기 위해 ControllerEventListener를 등록해요. 시퀀서가 등록된 컨트롤러 유형의 control-change 이벤트를 처리할 때마다 통지해요.