MidiDevice

MidiDevice

MIDI 장치를 나타내는 인터페이스예요. 장치에는 신디사이저, 시퀀서, MIDI 입력 포트, MIDI 출력 포트가 있어요.

출처: Java API Reference

본문

javax.sound.midi 패키지에 속하는 인터페이스예요.

MIDI 장치는 복잡한 개체이며, 보통 ReceiverTransmitter를 통해 그것과 통신한다. 즉, 다양한 역할을 나타내는 여러 개체를 통해 장치의 입출력에 접근한다. MidiDevice 자체는 장치 의존적인 질문에 대한 루트(예: 장치 이름, 장치가 제공하는 receiver/transmitter의 수)를 제공해요.

public interface MidiDevice

getDeviceInfo

Info getDeviceInfo()

장치를 설명하는 정보 객체를 얻어요. 이 객체는 요청된 장치를 참조하는 데 사용돼요. 제공된 Info 객체에 대한 참조를 사용해 장치에 대한 정보를 얻을 수 있어요. Info 객체에 대한 자세한 사항은 클래스 설명을 참고해요.

  • 반환값: 이 장치를 설명하는 장치 정보 객체

open

void open() throws MidiUnavailableException

장치를 열어서 대기시켜요. receiver/transmitter를 만들기 전이나 장치 상태를 질의하기 전에 호출해야 해요. 장치가 이미 열려 있으면 다시 열지 않아요. (예: open() 후에 또 open()을 호출해도 아무 일도 일어나지 않아요.)

  • 예외 MidiUnavailableException: 이미 다른 응용 프로그램에서 사용 중이라 장치를 열 수 없는 경우

close

void close()

장치를 닫아요. 닫힌 장치는 시스템 리소스를 계속 사용하지 않아요. close()는 언제든 호출할 수 있지만, 어떤 경우에는 다른 장치의 열기/닫기 동작에 영향을 미칠 수 있어요(아래 참고). 닫힘 상태나 다른 이유로 장치에서 얻은 Transmitter/Receiver 인스턴스는 java.lang.IllegalStateException으로 처리해요. 닫힌 후에는 장치를 질의하거나 receiver/transmitter를 만들 수 없어요.

isOpen

boolean isOpen()

장치가 열려 있는지 나타내요. 장치가 열려 있으면 true, 그렇지 않으면 false를 반환해요.

getMaxReceivers

int getMaxReceivers()

이 장치가 동시에 열어둘 수 있는 MIDI Receiver의 최대 수를 얻어요. getReceiver()를 호출해 장치에 대한 Receiver를 얻을 수 있지만, 어떤 장치에서는 여러 receiver를 열 수 없어요. 이 메서드는 열 수 있는 receiver의 수(전체 또는 활성 상태)가 있는지, 아니면 무한한지 알려줘요.

  • 반환값: 최대 receiver 수. 무한이면 -1
  • 예외 MidiUnavailableException: 장치가 열려 있지 않은 경우

getMaxTransmitters

int getMaxTransmitters()

이 장치가 동시에 열어둘 수 있는 MIDI Transmitter의 최대 수를 얻어요. getTransmitter()를 호출해 장치에 대한 Transmitter를 얻을 수 있지만, 어떤 장치에서는 여러 transmitter를 열 수 없어요. 이 메서드는 열 수 있는 transmitter의 수(전체 또는 활성 상태)가 있는지, 아니면 무한한지 알려줘요.

  • 반환값: 최대 transmitter 수. 무한이면 -1
  • 예외 MidiUnavailableException: 장치가 열려 있지 않은 경우

getReceiver

Receiver getReceiver() throws MidiUnavailableException

이 장치에 연결된 MIDI Receiver를 얻어요. 반환된 receiver를 사용해 MIDI 메시지를 장치로 보낼 수 있어요. 이 메서드를 성공적으로 호출할 수 있을 때마다 receiver를 만들 수 있어요. 같은 receiver가 반복해서 반환될 수도 있고, 새 receiver가 만들어질 수도 있어요. 사용이 끝나면 receiver를 닫아야 해요.

  • 예외 MidiUnavailableException: 다른 방식으로는 얻을 수 없는 경우, receiver를 만들 수 없는 경우(장치가 이미 열려 있고 최대 receiver 수에 도달한 경우 포함)

getTransmitter

Transmitter getTransmitter() throws MidiUnavailableException

이 장치에 연결된 MIDI Transmitter를 얻어요. 반환된 transmitter를 사용해 장치에서 MIDI 메시지를 보낼 수 있어요. getTransmitter()를 성공적으로 호출할 수 있을 때마다 transmitter를 만들 수 있어요. 같은 transmitter가 반복해서 반환될 수도 있고, 새 transmitter가 만들어질 수도 있어요. 사용이 끝나면 transmitter를 닫아야 해요.

  • 예외 MidiUnavailableException: transmitter를 만들 수 없는 경우(장치가 이미 열려 있고 최대 transmitter 수에 도달한 경우 포함)

getReceivers

List<Receiver> getReceivers()

이 장치에서 얻을 수 있는 모든 Receiver를 포함하는 리스트를 얻어요. getReceiver()를 여러 번 호출했다면 이 메서드는 같은 receiver 객체를 여러 번 포함할 수 있어요.

  • 반환값: 열려 있는 모든 receiver의 리스트

getTransmitters

List<Transmitter> getTransmitters()

이 장치에서 얻을 수 있는 모든 Transmitter를 포함하는 리스트를 얻어요. getTransmitter()를 여러 번 호출했다면 이 메서드는 같은 transmitter 객체를 여러 번 포함할 수 있어요.

  • 반환값: 열려 있는 모든 transmitter의 리스트

중첩 클래스 Info

MidiDevice.Info는 MIDI 장치에 대한 데이터(설명자)를 담는 중첩 클래스예요. MidiSystem.getMidiDeviceInfo()가 반환하는 모든 장치 설명자는 대응하는 MIDI 장치를 얻는 데 사용할 수 있어요.

더 알아보기