Sequencer

Sequencer

MIDI 시퀀스의 재생을 제어하는 하드웨어나 소프트웨어 장치를 나타내는 인터페이스예요. 시퀀서는 시퀀스를 재생하고, 데이터를 보내는 장치로 MIDI 데이터를 신디사이저나 다른 장치로 전송해요.

출처: Java API Reference

본문

javax.sound.midi 패키지에 속하는 인터페이스로, MidiDevice를 상속해요. 시퀀서는 MIDI 시퀀스를 재생하고, 재생 위치를 제어하고, 템포를 설정하고, 트랙을 뮤트·솔로하는 기능을 제공해요.

public interface Sequencer extends MidiDevice

상수

  • LOOP_CONTINUOUSLY: 라운딩하지 않고 무한 루프를 나타내는 루프 지정 값(-1)
  • PPQ: tempo-based timing type
  • SMPTE_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 이벤트를 처리할 때마다 통지해요.

더 알아보기