JavaTM Platform
Standard Ed. 6

javax.sound.midi
인터페이스 MidiDevice

기존의 서브 인터페이스의 일람:
Sequencer , Synthesizer


public interface MidiDevice

MidiDevice 는, 모든 MIDI 디바이스를 위한 기저 인터페이스입니다. 자주(잘) 사용되는 디바이스에는, 신디사이저, 시퀀서, MIDI 입력 포트, MIDI 출력 포트등이 있습니다.

MidiDevice 는, MIDI 이벤트의 트랜스미터, 리시버, 또는 그 양쪽 모두가 될 수가 있으므로,Transmitter 인스턴스나 Receiver 인스턴스, 또는 그 양쪽 모두를 제공할 수 있습니다. 일반적으로, MIDI IN 포트는 트랜스미터를 제공해, MIDI OUT 포트 및 신디사이저는 리시버를 제공합니다. 일반적으로, 시퀀서는, 재생용으로 트랜스미터를 제공해, 녹음용으로 리시버를 제공합니다.

MidiDevice 의 개폐는, 명시적으로 실시하는 일도, 암묵적으로 실시할 수도 있습니다. 명시적으로 열리려면 MidiDevice 인스턴스의 open() 를 호출해, 명시적으로 닫으려면 close() 를 호출합니다. 어플리케이션으로부터 MidiDevice 를 명시적으로 열렸을 경우는, 그것을 명시적으로 닫아 system resource를 해제하지 않으면 어플리케이션을 정상적으로 종료할 수 없습니다. 암묵적으로 열려면 ,MidiSystem.getReceiverMidiSystem.getTransmitter 를 호출합니다. MidiSystem.getReceiverMidiSystem.getTransmitter 에 의해 사용되는 MidiDevice 는 구현에 의존하고 있습니다만,javax.sound.midi.Receiver 프로퍼티이나 javax.sound.midi.Transmitter 프로퍼티을 사용했을 경우는 예외입니다 (디폴트 프로바이더를 선택하는 프로퍼티에 관한 MidiSystem 의 설명을 참조). 암묵적으로 연 MidiDevice 는, 그 디바이스를 연 Receiver 또는 Transmitter 를 닫으면(자), 암묵적으로 닫혀집니다. 어플리케이션이 복수의 Receiver 또는 Transmitter 를 취득해 디바이스를 암묵적으로 열려 있는 경우는, 모든 Receiver 또는 Transmitter 가 닫혀진 시점에서, 디바이스가 암묵적으로 닫혀집니다. 한편, 디바이스 인스턴스의 getReceiver 또는 getTransmitter 를 직접 호출해도, 디바이스가 암묵적으로 열 것은 없습니다. 또, 이러한 TransmitterReceiver 를 닫아도, 디바이스가 암묵적으로 닫을 것은 없습니다. 이 방법으로 취득한 ReceiverTransmitter 로 디바이스를 사용할 때는, 디바이스를 명시적으로 개폐할 필요가 있습니다.

MidiDevice 의 동일한 인스턴스에 대해서 명시적인 개폐와 암묵적인 개폐가 혼재해 행해졌을 경우에는, 다음의 규칙이 적용됩니다.

MidiDevice 가 하드웨어 MIDI 포트를 나타내고 있는지 어떤지를 판단하려면 , 다음과 같은 프로그래밍 수법을 사용합니다.
 MidiDevice device = ...;
 if ( ! (device instanceof Sequencer) && ! (device instanceof Synthesizer)) {
   // we're now sure that device represents a MIDI port
   // ...
 }
 

MidiDevice 에는, 제조자 정보등을 제공하는 MidiDevice.Info 객체가 포함되어 있습니다.

관련 항목:
Synthesizer , Sequencer , Receiver , Transmitter

상자의 클래스의 개요
static class MidiDevice.Info
          MidiDevice.Info 객체는, 디바이스의 이름, 제작 회사명, 설명 텍스트 등,MidiDevice 에 관련하는 다양한 데이터를 포함하고 있습니다.
 
메소드의 개요
 void close ()
          디바이스를 닫아 사용하고 있던 system resource를 디바이스가 해제하는 것을 나타냅니다.
 MidiDevice.Info getDeviceInfo ()
          Java 클래스와 이름, 벤더 및 설명등의 Strings 를 포함한, 디바이스에 관한 정보를 가져옵니다.
 int getMaxReceivers ()
          이 MIDI 디바이스로 MIDI 데이터를 수신하는데 사용 가능한 MIDI IN 접속의 최대수를 가져옵니다.
 int getMaxTransmitters ()
          이 MIDI 디바이스로 MIDI 데이터를 전송 하는데 사용 가능한 MIDI OUT 접속의 최대수를 가져옵니다.
 long getMicrosecondPosition ()
          디바이스의 현재의 시각표시를 마이크로 세컨드 단위로 가져옵니다.
 Receiver getReceiver ()
          MIDI 디바이스가 MIDI 데이터를 수신하는데 경유하는 MIDI IN 리시버를 가져옵니다.
 List <Receiver > getReceivers ()
          이 MidiDevice 에 접속되고 있는 리시버 가운데, 현재 액티브해 열려 있는 것을 모두 돌려줍니다.
 Transmitter getTransmitter ()
          MIDI 디바이스가 MIDI 데이터를 전송 하는 MIDI OUT 접속을 가져옵니다.
 List <Transmitter > getTransmitters ()
          이 MidiDevice 에 접속되고 있는 트랜스미터 가운데, 현재 액티브해 닫혀지지 않은 것을 모두 돌려줍니다.
 boolean isOpen ()
          디바이스가 열려 있을지 어떨지를 판단합니다.
 void open ()
          디바이스를 열어, 필요한 system resource를 디바이스가 획득해 조작 가능하게 되어 있는 것을 나타냅니다.
 

메소드의 상세

getDeviceInfo

MidiDevice.Info  getDeviceInfo()
Java 클래스와 이름, 벤더 및 설명등의 Strings 를 포함한, 디바이스에 관한 정보를 가져옵니다.

반환값:
디바이스 정보

open

void open()
          throws MidiUnavailableException 
디바이스를 열어, 필요한 system resource를 디바이스가 획득해 조작 가능하게 되어 있는 것을 나타냅니다.

이 메소드를 호출해 디바이스를 명시적으로 열린 어플리케이션에서는,close() 를 호출해 그 디바이스를 닫을 필요가 있습니다. 이 조작은, system resource를 해제해, 어플리케이션이 정상적으로 종료하기 위해서 필요합니다.

디바이스에 따라서는, 한 번 닫으면(자) 다시 열지 못하는 것에 주의해 주세요. 이러한 디바이스를 재차 열려고 하면(자), 항상 MidiUnavailableException 가 됩니다.

예외:
MidiUnavailableException - 자원의 제약을 위해서(때문에) 디바이스를 열지 않는다 경우에 throw 된다
SecurityException - 시큐리티의 제약을 위해서(때문에) 디바이스를 열지 않는다 경우에 throw 되는
관련 항목:
close() , isOpen()

close

void close()
디바이스를 닫아 사용하고 있던 system resource를 디바이스가 해제하는 것을 나타냅니다.

이 디바이스로부터 연 Receiver 인스턴스와 Transmitter 인스턴스는 모두 닫혀집니다. MidiSystem 를 개입시켜 취득한 인스턴스도 이와 같이 닫혀집니다.

관련 항목:
open() , isOpen()

isOpen

boolean isOpen()
디바이스가 열려 있을지 어떨지를 판단합니다.

반환값:
디바이스가 열려 있는 경우는 true, 그렇지 않은 경우는 false
관련 항목:
open() , close()

getMicrosecondPosition

long getMicrosecondPosition()
디바이스의 현재의 시각표시를 마이크로 세컨드 단위로 가져옵니다. 디바이스가 시각표시를 지원하고 있는 경우는, 디바이스가 열렸을 때에 0 으로부터 카운트하기 시작해 디바이스가 닫혀질 때까지 마이크로 세컨드 단위로 카운트 계속 합니다. 디바이스가 시각표시를 지원하고 있지 않는 경우는, 항상 -1 에 돌아옵니다.

반환값:
마이크로 세컨드 단위에서의 디바이스의 현재의 시각표시, 또는 디바이스가 시각표시를 지원하고 있지 않는 경우는 -1

getMaxReceivers

int getMaxReceivers()
이 MIDI 디바이스로 MIDI 데이터를 수신하는데 사용 가능한 MIDI IN 접속의 최대수를 가져옵니다.

반환값:
MIDI IN 접속의 최대수 또는 이용 가능한 접속수에 제한이 없는 경우는 -1

getMaxTransmitters

int getMaxTransmitters()
이 MIDI 디바이스로 MIDI 데이터를 전송 하는데 사용 가능한 MIDI OUT 접속의 최대수를 가져옵니다.

반환값:
MIDI IN 접속의 최대수, 또는 이용 가능한 접속수에 제한이 없는 경우는 -1

getReceiver

Receiver  getReceiver()
                     throws MidiUnavailableException 
MIDI 디바이스가 MIDI 데이터를 수신하는데 경유하는 MIDI IN 리시버를 가져옵니다. 반환된 리시버는, 어플리케이션이 그 리시버의 사용을 끝냈을 때에 닫을 필요가 있습니다.

이 메소드로 Receiver 를 취득해도, 디바이스는 열지 않습니다. 디바이스를 사용하려면 ,open() 를 호출해 명시적으로 열릴 필요가 있습니다. 또,Receiver 를 닫아도, 디바이스는 닫혀지지 않기 때문에,close() 를 호출해 디바이스를 명시적으로 닫을 필요가 있습니다.

반환값:
디바이스의 리시버
예외:
MidiUnavailableException - 자원의 제약을 위해서(때문에) 리시버를 사용할 수 없다 경우에 throw 되는
관련 항목:
Receiver.close()

getReceivers

List <Receiver > getReceivers()
이 MidiDevice 에 접속되고 있는 리시버 가운데, 현재 액티브해 열려 있는 것을 모두 돌려줍니다. 디바이스로부터 리시버를 삭제하려면 , 그 리시버를 닫습니다.

반환값:
열려 있는 리시버의 리스트 (변경 불가)
도입된 버젼:
1.5

getTransmitter

Transmitter  getTransmitter()
                           throws MidiUnavailableException 
MIDI 디바이스가 MIDI 데이터를 전송 하는 MIDI OUT 접속을 가져옵니다. 반환된 트랜스미터는, 어플리케이션이 그 트랜스미터의 사용을 끝냈을 때에 닫을 필요가 있습니다.

이 메소드로 Transmitter 를 취득해도, 디바이스는 열지 않습니다. 디바이스를 사용하려면 ,open() 를 호출해 명시적으로 열릴 필요가 있습니다. 또,Transmitter 를 닫아도, 디바이스는 닫혀지지 않기 때문에,close() 를 호출해 디바이스를 명시적으로 닫을 필요가 있습니다.

반환값:
디바이스의 MIDI OUT 트랜스미터
예외:
MidiUnavailableException - 자원의 제약을 위해서(때문에) 트랜스미터를 사용할 수 없다 경우에 throw 되는
관련 항목:
Transmitter.close()

getTransmitters

List <Transmitter > getTransmitters()
이 MidiDevice 에 접속되고 있는 트랜스미터 가운데, 현재 액티브해 닫혀지지 않은 것을 모두 돌려줍니다. 디바이스로부터 트랜스미터를 삭제하려면 , 그 트랜스미터를 닫습니다.

반환값:
열려 있는 트랜스미터의 리스트 (변경 불가)
도입된 버젼:
1.5

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.