Track
Track
표준 MIDI 파일에서 다른 트랙과 함께 저장할 수 있는, MIDI 이벤트(타임스탬프가 찍힌 MIDI 데이터)의 독립적인 스트림인 MIDI 트랙을 나타내는 final 클래스예요.
본문
javax.sound.midi 패키지에 속하는 final 클래스로, java.lang.Object를 상속해요.
MIDI 명세는 MIDI 데이터의 16개 채널만 허용하지만, 트랙은 이 제한을 우회하는 방법이에요. MIDI 파일은 임의의 수의 트랙을 담을 수 있고, 각 트랙은 최대 16개 채널의 MIDI 데이터 스트림을 담아요.
Track은 Sequencer가 재생하는 데이터 계층에서 중간 수준을 차지해요. 시퀀서는 시퀀스를 재생하고, 시퀀스는 트랙을 포함하며, 트랙은 MIDI 이벤트를 포함해요. 시퀀서는 개별 트랙을 뮤트하거나 솔로하는 제어를 제공할 수 있어요.
트랙의 타이밍 정보와 해상도는 트랙을 포함하는 시퀀스에 의해 제어되고 저장돼요. 주어진 Track은 자신의 타이밍을 유지하는 특정 Sequence에 속하는 것으로 간주돼요. 그래서 새(빈) 트랙은 Track 생성자를 직접 호출하는 대신 Sequence.createTrack() 메서드를 호출해 생성해요.
Track 클래스는 MidiEvent 객체를 추가하거나 제거함으로써 트랙을 편집하는 메서드를 제공해요. 이런 작업은 이벤트 목록을 올바른 시간 순서로 유지해요. 트랙의 크기는 포함된 이벤트 수 또는 틱 단위 길이로 얻을 수 있어요.
public final class Track extends Object
add
public boolean add(MidiEvent event)
트랙에 새 이벤트를 추가해요. 이벤트가 이미 트랙에 포함되어 있으면 다시 추가되지 않아요. 이벤트 목록은 시간 순서로 유지되므로, 이 이벤트는 반드시 끝이 아니라 목록의 적절한 위치에 삽입돼요.
- 파라미터
event: 추가할 이벤트 - 반환값: 이벤트가 트랙에 없어서 추가됐으면
true, 그렇지 않으면false
remove
public boolean remove(MidiEvent event)
트랙에서 지정된 이벤트를 제거해요.
- 파라미터
event: 제거할 이벤트 - 반환값: 이벤트가 트랙에 있어서 제거됐으면
true, 그렇지 않으면false
get
public MidiEvent get(int index) throws ArrayIndexOutOfBoundsException
지정된 인덱스의 이벤트를 얻어요.
- 파라미터
index: 이벤트 벡터에서 원하는 이벤트의 위치 - 반환값: 지정된 인덱스의 이벤트
- 예외
ArrayIndexOutOfBoundsException: 지정된 인덱스가 음수이거나 이 트랙의 현재 크기보다 작지 않은 경우
size
public int size()
이 트랙의 이벤트 수를 얻어요.
- 반환값: 트랙의 이벤트 벡터 크기
ticks
public long ticks()
MIDI 틱으로 표현한 트랙의 길이를 얻어요. (초 단위 틱 지속 시간은 이 트랙을 포함하는 Sequence의 타이밍 해상도와 시퀀서가 설정한 음악 템포에 의해 결정돼요.)
- 반환값: 틱 단위의 지속 시간