JavaTM Platform
Standard Ed. 6

javax.sound.midi
인터페이스 Synthesizer

모든 슈퍼 인터페이스:
MidiDevice


public interface Synthesizer
extends MidiDevice

Synthesizer 는 사운드를 생성합니다. 이것은 일반적으로,Synthesizer MidiChannel 객체의 1 개가 직접, 또는 Synthesizer 객체를 개입시켜 noteOn 메세지를 받아들였을 경우에 발생합니다. 많은 Synthesizer 에서는, MIDI 이벤트를 Synthesizer 에 전달할 수 있는 Receivers 를 지원하고 있습니다. 이러한 경우,Synthesizer 은 일반적으로, 대응하는 메세지를 해당하는 MidiChannel 에 보내는지, 이벤트가 MIDI 채널 메세지가 아닌 경우에는 그 이벤트 자신을 처리합니다.

Synthesizer 인터페이스에는, 인스트르먼트를 사운드 뱅크에 로드 및 로드 해제하기 위한 메소드가 포함되어 있습니다. 인스트르먼트는, 전통적인 인스트르먼트를 에뮤레이트 한 사운드나, 어떤 종류의 사운드 효과 혹은 그 외의 상상상의 사운드 등, 일정한 타입의 사운드를 합성하기 위한 스펙이 됩니다. 사운드 뱅크는 인스트르먼트의 집합체로, 그 인스트르먼트의 Patch 객체에 의해 뱅크 번호 및 프로그램 번호에 근거해 편성되고 있습니다. 구현되고 있는 사운드 합성 기술은 Synthesizer 클래스에 의해 다를 가능성이 있습니다. 그 때문에, 일부의 인스트르먼트만이 특정의 신디사이저와의 호환성을 가지는 경우가 있습니다. 또, 신디사이저가 인스트르먼트에 대해서 할당하는 메모 리사이즈에는 제한이 있는 경우가 있기 (위해)때문에, 합성 기술이 호환의 신디사이저에서도, 사운드 뱅크나 인스트르먼트에 따라서는 사용할 수 없을 가능성이 있습니다. 특정의 사운드 뱅크에 포함되어 있는 인스트르먼트가 특정의 신디사이저로 사용할 수 있을지 어떨지를 확인하려면 ,SynthesizerisSoundbankSupported 메소드를 호출합니다.

인스트르먼트를 「로드한다」란, 노트를 합성하기 위해서 그 인스트르먼트를 사용 가능하게 하는 것입니다. 인스트르먼트는, 그 Patch 객체로 지정된 뱅크 번호 및 프로그램의 위치에 로드 됩니다. 인스트르먼트를 로드해도, 다음에 연주하는 노트에 그 인스트르먼트의 사운드가 즉시 반영되는 것은 아닙니다. 노트를 연주하는 인스트르먼트의 뱅크 번호 및 프로그램 번호를 선택하는 프로그램 체인지 메세지를, 신디사이저의 MidiChannel 객체의 1 개가 받을 (또는 벌써 받고 있을) 필요가 있습니다.

관련 항목:
MidiSystem.getSynthesizer() , Soundbank , Instrument , MidiChannel.programChange(int, int) , Receiver , Transmitter , MidiDevice

상자의 클래스의 개요
 
인터페이스 javax.sound.midi. MidiDevice 로부터 상속된 상자의 클래스/인터페이스
MidiDevice.Info
 
메소드의 개요
 Instrument [] getAvailableInstruments ()
          신디사이저에 부속되는 인스트르먼트의 리스트를 가져옵니다.
 MidiChannel [] getChannels ()
          이 신디사이저로 제어되는 MIDI 채널세트를 가져옵니다.
 Soundbank getDefaultSoundbank ()
          신디사이저에 디폴트의 사운드 뱅크가 있는 경우는, 그 사운드 뱅크를 가져옵니다 (일부의 신디사이저에는 디폴트 또는 편입의 사운드 뱅크가 있다).
 long getLatency ()
          이 신디사이저에서의 처리 응답 시간을 마이크로 세컨드 단위로 가져옵니다.
 Instrument [] getLoadedInstruments ()
          이 Synthesizer 에 현재 로드 되고 있는 인스트르먼트의 리스트를 가져옵니다.
 int getMaxPolyphony ()
          이 신디사이저를 동시에 출력할 수 있는 노트의 최대수를 가져옵니다.
 VoiceStatus [] getVoiceStatus ()
          이 신디사이저에 의해 생성되는 음성의 현재 상태를 가져옵니다.
 boolean isSoundbankSupported (Soundbank  soundbank)
          지정한 사운드 뱅크의 인스트르먼트를 이 신디사이저에 로드할 수 있을지 어떨지를 호출 측에 통지합니다.
 boolean loadAllInstruments (Soundbank  soundbank)
          지정한 Soundbank 에 포함할 수 있어 모든 인스트르먼트를 Synthesizer 에 로드합니다.
 boolean loadInstrument (Instrument  instrument)
          특정의 인스트르먼트를 합성에 사용할 수 있도록(듯이) 합니다.
 boolean loadInstruments (Soundbank  soundbank, Patch [] patchList)
          지정한 패치에 의해 참조되는 인스트르먼트를, 지정한 Soundbank 로부터 로드합니다.
 boolean remapInstrument (Instrument  from, Instrument  to)
          인스트르먼트를 재매핑 합니다.
 void unloadAllInstruments (Soundbank  soundbank)
          지정한 Soundbank 에 포함되는 모든 인스트르먼트를 언로드합니다.
 void unloadInstrument (Instrument  instrument)
          특정의 인스트르먼트를 언로드합니다.
 void unloadInstruments (Soundbank  soundbank, Patch [] patchList)
          지정한 패치에 의해 참조되는 인스트르먼트를, 지정한 MIDI 사운드 뱅크로부터 언로드합니다.
 
인터페이스 javax.sound.midi. MidiDevice 로부터 상속된 메소드
close , getDeviceInfo , getMaxReceivers , getMaxTransmitters , getMicrosecondPosition , getReceiver , getReceivers , getTransmitter , getTransmitters , isOpen , open
 

메소드의 상세

getMaxPolyphony

int getMaxPolyphony()
이 신디사이저를 동시에 출력할 수 있는 노트의 최대수를 가져옵니다.

반환값:
동시에 출력할 수 있는 노트의 최대수
관련 항목:
getVoiceStatus()

getLatency

long getLatency()
이 신디사이저에서의 처리 응답 시간을 마이크로 세컨드 단위로 가져옵니다. 이 응답 시간은, MIDI 메세지가 신디사이저에 전달되고 나서, 대응하는 결과가 그 신디사이저로 실제로 생성될 때까지의, 최대 지연 시간을 측정한 것입니다.

이 응답 시간은 마이크로 세컨드 단위로 나타내집니다만, 신디사이저의 지연 시간의 실측치의 격차는, 이 해상도의 정도보다 큰 경우가 있습니다. 예를 들어, 신디사이저에 따라서는 최대 지연 시간이 수밀리 세컨드를 넘는 일도 있습니다.

반환값:
마이크로 세컨드 단위에서의 최대 지연 시간

getChannels

MidiChannel [] getChannels()
이 신디사이저로 제어되는 MIDI 채널세트를 가져옵니다. 반환된 배열의 null 가 아닌 각 요소는, 그 채널 번호에 보내진 MIDI 메세지를 받아들이는 MidiChannel 입니다.

MIDI 1.0 스펙에서는 16 의 채널이 규정되고 있기 (위해)때문에, 이 메소드는 적어도 16 의 요소를 가지는 배열을 돌려줍니다. 다만, 이 신디사이저로 16 채널 가운데 몇개인가가 사용되어 있지 않은 경우는, 배열의 요소의 일부가 null 가 되는 일이 있습니다. 그 때문에, 신디사이저를 사용하기 전에는 각 요소를 확인해 주세요.

반환값:
Synthesizer 으로 관리되는 MidiChannel 객체의 배열. 배열 요소에는 null 가 포함될 가능성이 있다

getVoiceStatus

VoiceStatus [] getVoiceStatus()
이 신디사이저에 의해 생성되는 음성의 현재 상태를 가져옵니다. Synthesizer 의 이 클래스로부터 음성 정보를 취득할 수 없는 경우, 반환되는 배열의 길이는 언제라도 0 이 됩니다. 취득할 수 있었을 경우에는, 반환되는 배열의 길이는 getMaxPolyphony() 가 돌려주는 음성의 합계수 물어 개에서도 동일해집니다 (신디사이저 음성의 설명은,VoiceStatus 클래스의 기술을 참조).

반환값:
대응하는 신디사이저 음성에 관한 정보를 제공한다 VoiceStatus 객체의 배열
관련 항목:
getMaxPolyphony() , VoiceStatus

isSoundbankSupported

boolean isSoundbankSupported(Soundbank  soundbank)
지정한 사운드 뱅크의 인스트르먼트를 이 신디사이저에 로드할 수 있을지 어떨지를 호출 측에 통지합니다. 사운드 뱅크가 지원되어 있지 않은 경우, 그 사운드 뱅크로부터 인스트르먼트를 로드하려고 하면(자),IllegalArgumentException 가 발생합니다.

파라미터:
soundbank - 지원의 유무에 대해 조회하는 사운드 뱅크
반환값:
지원되고 있는 경우는 true, 그렇지 않은 경우는 false
관련 항목:
loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]) , loadAllInstruments(javax.sound.midi.Soundbank) , unloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]) , unloadAllInstruments(javax.sound.midi.Soundbank) , getDefaultSoundbank()

loadInstrument

boolean loadInstrument(Instrument  instrument)
특정의 인스트르먼트를 합성에 사용할 수 있도록(듯이) 합니다. 이 인스트르먼트는 그 Patch 객체로 지정된 패치 위치에 로드 되기 (위해)때문에, 프로그램 체인지 메세지가 받아 들여지는 (또는 벌써 수취되고 있다)와 그 패치가 선택되어 그것 이후의 노트는 instrument 의 사운드로 연주됩니다. 지정한 인스트르먼트가 벌써 로드 되고 있는 경우에는, 이 메소드는 아무것도 실행하지 않고 true 를 돌려줍니다.

인스트르먼트는, 이 Synthesizer 로 지원되는 사운드 뱅크에 포함되지 않으면 안됩니다 (확인하려면 ,InstrumentgetSoundbank 메소드와 SynthesizerisSoundbankSupported 메소드를 사용).

파라미터:
instrument - 로드궥귡인스트르먼트
반환값:
인스트르먼트가 정상적으로 로드 되었을 (또는 벌써 로드 되고 있다) 경우는 true, 인스트르먼트를 로드할 수 없었던 경우 (예를 들어 신디사이저의 메모리 부족하고 로드할 수 없었을 때)(은)는 false
예외:
IllegalArgumentException - 지정한 인스트르먼트의 사운드 뱅크가 이 Synthesizer 로 지원 되지 않는 경우
관련 항목:
unloadInstrument(javax.sound.midi.Instrument) , loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]) , loadAllInstruments(javax.sound.midi.Soundbank) , remapInstrument(javax.sound.midi.Instrument, javax.sound.midi.Instrument) , SoundbankResource.getSoundbank() , MidiChannel.programChange(int, int)

unloadInstrument

void unloadInstrument(Instrument  instrument)
특정의 인스트르먼트를 언로드합니다.

파라미터:
instrument - 언로드하는 인스트르먼트
예외:
IllegalArgumentException - 지정한 인스트르먼트의 사운드 뱅크가 이 Synthesizer 로 지원 되지 않는 경우
관련 항목:
loadInstrument(javax.sound.midi.Instrument) , unloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]) , unloadAllInstruments(javax.sound.midi.Soundbank) , getLoadedInstruments() , remapInstrument(javax.sound.midi.Instrument, javax.sound.midi.Instrument)

remapInstrument

boolean remapInstrument(Instrument  from,
                        Instrument  to)
인스트르먼트를 재매핑 합니다. 인스트르먼트 from 가 인스트르먼트 to 로 치환됩니다. 예를 들어,from 가 뱅크 번호 2, 프로그램 번호 11 에 있는 경우, 재매핑에 의해 그 뱅크 번호 및 프로그램 번호에는 대신에 to 를 할당할 수 있습니다.
성공했을 경우, 인스트르먼트 from 는 언로드됩니다.

재매핑을 취소하려면 ,loadInstrument(javax.sound.midi.Instrument) ,loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]) , 또는 loadAllInstruments(javax.sound.midi.Soundbank) 의 어느쪽이든을 호출해, 인스트르먼트 from 를 재로드합니다.

파라미터:
from - 옮겨놓을 수 있는 Instrument 객체
to - 낡은 인스트르먼트 대신에 사용하는 Instrument 객체. 신디사이저에 로드 된다.
반환값:
인스트르먼트의 재매핑에 성공했을 경우,true 기능이 신디사이저에 의해 구현되어 있지 않은 경우,false
예외:
IllegalArgumentException - 신디사이저가 인스트르먼트 from 또는 인스트르먼트 to 를 지원하고 있지 않는 경우, 또는 인스트르먼트 to 가 로드 되지 않는 경우
NullPointerException - from 또는 to 파라미터가 null 치의 경우
관련 항목:
loadInstrument(javax.sound.midi.Instrument) , loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]) , loadAllInstruments(javax.sound.midi.Soundbank)

getDefaultSoundbank

Soundbank  getDefaultSoundbank()
신디사이저에 디폴트의 사운드 뱅크가 있는 경우는, 그 사운드 뱅크를 가져옵니다 (일부의 신디사이저에는 디폴트 또는 편입의 사운드 뱅크가 있다). 신디사이저에 디폴트의 사운드 뱅크가 없는 경우에는, 인스트르먼트를 외부의 사운드 뱅크로부터 명시적으로 로드할 필요가 있습니다.

반환값:
디폴트의 사운드 뱅크. 디폴트의 사운드 뱅크가 없는 경우는 null
관련 항목:
isSoundbankSupported(javax.sound.midi.Soundbank)

getAvailableInstruments

Instrument [] getAvailableInstruments()
신디사이저에 부속되는 인스트르먼트의 리스트를 가져옵니다. 이러한 인스트르먼트에는, 신디사이저에 짜넣어져 있거나, 신디사이저에 부속의 디폴트의 사운드 뱅크에 포함되어 있거나 하는 것등이 있습니다.

이 메소드는, 신디사이저에 현재 로드 되고 있는 인스트르먼트를 검색하기 위해서는 사용할 수 없는 것에 주의해 주세요. 그러한 인스트르먼트를 검색하려면 ,getLoadedInstruments() 를 사용합니다. 또 이 메소드에서는, 신디사이저에 로드할 수 있는 모든 인스트르먼트를 나타낼 수도 있습니다. 이 메소드로 나타나는 것은, 신디사이저에 부속되는 인스트르먼트의 부분집합 뿐입니다. 다른 인스트르먼트를 로드할 수 있을지 어떨지를 조사하려면 isSoundbankSupported() 를 호출합니다. 그 인스트르먼트의 Soundbank 가 지원되고 있으면, 그 인스트르먼트의 로드를 실시할 수가 있습니다.

반환값:
사용할 수 있는 인스트르먼트의 리스트
관련 항목:
getLoadedInstruments() , isSoundbankSupported(Soundbank) , loadInstrument(javax.sound.midi.Instrument)

getLoadedInstruments

Instrument [] getLoadedInstruments()
Synthesizer 에 현재 로드 되고 있는 인스트르먼트의 리스트를 가져옵니다.

반환값:
현재 로드 되고 있는 인스트르먼트의 리스트
관련 항목:
loadInstrument(javax.sound.midi.Instrument) , getAvailableInstruments() , Soundbank.getInstruments()

loadAllInstruments

boolean loadAllInstruments(Soundbank  soundbank)
지정한 Soundbank 에 포함할 수 있어 모든 인스트르먼트를 Synthesizer 에 로드합니다.

파라미터:
soundbank - 로드궥귡인스트르먼트를 포함하고 있는 Soundbank
반환값:
모든 인스트르먼트가 정상적으로 로드 되었을 (또는 벌써 로드 되고 있다) 경우는 true, true, 로드 되지 않았던 인스트르먼트가 있는 경우 (예를 들어 Synthesizer 의 메모리가 부족했을 때)(은)는 false
예외:
IllegalArgumentException - 요구한 사운드 뱅크가 이 신디사이저와 호환이 아닌 경우
관련 항목:
isSoundbankSupported(javax.sound.midi.Soundbank) , loadInstrument(javax.sound.midi.Instrument) , loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])

unloadAllInstruments

void unloadAllInstruments(Soundbank  soundbank)
지정한 Soundbank 에 포함되는 모든 인스트르먼트를 언로드합니다.

파라미터:
soundbank - 언로드하는 인스트르먼트를 포함하고 있는 사운드 뱅크
예외:
IllegalArgumentException - 그 사운드 뱅크가 지원되어 있지 않은 경우에 throw 되는
관련 항목:
isSoundbankSupported(javax.sound.midi.Soundbank) , unloadInstrument(javax.sound.midi.Instrument) , unloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])

loadInstruments

boolean loadInstruments(Soundbank  soundbank,
                        Patch [] patchList)
지정한 패치에 의해 참조되는 인스트르먼트를, 지정한 Soundbank 로부터 로드합니다. 각각의 Patch 객체는, 뱅크 번호 및 프로그램 번호를 나타냅니다. 일치하는 Patch 를 가지는 Instrument 가, 그 뱅크 번호 및 프로그램 위치에 로드 됩니다.

파라미터:
soundbank - 로드궥귡인스트르먼트를 포함하고 있는 Soundbank
patchList - 거기에 대응하는 인스트르먼트가 로드 되는 패치의 리스트
반환값:
모든 인스트르먼트가 정상적으로 로드 되었을 (또는 벌써 로드 되고 있다) 경우는 true, 로드 되지 않았던 인스트르먼트가 있는 경우 (예를 들어 Synthesizer 의 메모리가 부족했을 때)(은)는 false
예외:
IllegalArgumentException - 그 사운드 뱅크가 지원되어 있지 않은 경우에 throw 되는
관련 항목:
isSoundbankSupported(javax.sound.midi.Soundbank) , Instrument.getPatch() , loadAllInstruments(javax.sound.midi.Soundbank) , loadInstrument(javax.sound.midi.Instrument) , Soundbank.getInstrument(Patch) , Sequence.getPatchList()

unloadInstruments

void unloadInstruments(Soundbank  soundbank,
                       Patch [] patchList)
지정한 패치에 의해 참조되는 인스트르먼트를, 지정한 MIDI 사운드 뱅크로부터 언로드합니다.

파라미터:
soundbank - 언로드하는 인스트르먼트를 포함하고 있는 사운드 뱅크
patchList - 거기에 대응하는 인스트르먼트가 언로드되는 패치의 리스트
예외:
IllegalArgumentException - 그 사운드 뱅크가 지원되어 있지 않은 경우에 throw 되는
관련 항목:
unloadInstrument(javax.sound.midi.Instrument) , unloadAllInstruments(javax.sound.midi.Soundbank) , isSoundbankSupported(javax.sound.midi.Soundbank) , Instrument.getPatch() , loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])

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 도 참조해 주세요.