|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
public interface MidiChannel
MidiChannel
객체는 단일의 MIDI 채널을 나타냅니다. 일반적으로, 각 MidiChannel
메소드는, MIDI 스펙으로 정의된 「채널 음성」, 「채널 모드」등의 MIDI 의 메세지를 처리합니다. 다만,MidiChannel
에는, 표준 MIDI 채널 메세지의 1 개에 의해 가장 최근 설정된 값을 검색하는 get 메소드도 있습니다. 같이 채널별 솔로 메소드 및 뮤트 메소드도 추가되고 있습니다.
객체에는 Synthesizer
MidiChannel
의 컬렉션이 있어, 일반적으로은 MIDI 1.0 스펙에 의해 16 채널의 각각 1 개(살)씩 규정되고 있습니다. Synthesizer
은,MidiChannel
가 noteOn
메세지를 수신했을 경우에 사운드를 생성합니다.
MIDI 채널 메세지의 규정 동작에 대해서는, 여기에서는 자세하게 말하지 않으므로, 「MIDI 1.0 Specification」를 참조해 주세요. 스펙은 「MIDI Reference:The Complete MIDI 1.0 Detailed Specification
」라고 하는 타이틀로, MIDI Manufacturer's Association ( http://www.midi.org )로부터 발행되고 있습니다.
MIDI 는 원래 키보드 뮤지션의 움직임을 전하는 프로토콜이었습니다. 그 원형은 MidiChannel
API 에 볼 수가 있습니다. API 에는 키 번호, 키 속력, 키 압력등의 MIDI 의 개념이 보관 유지되고 있습니다. MIDI 데이터는 반드시 키보드 연주자에 의해 만들어질 필요는 없는, 이라고 하는 것을 이해해 둘 필요가 있습니다 (전송원래는 다른 악기의 뮤지션이라도 소프트웨어에서도 가능). 노트가 어떻게 만들어졌는지를 관계없이, 속력과 압력에 일정한 값을 생성하는 디바이스도 있습니다. 또, MIDI 스펙에서는, 구현 측에 적합한 방법으로 신디사이저가 데이터를 사용할 수 있게 되어 있는 부분도 많이 있습니다. 예를 들어, 속력 데이터를 볼륨 또는 밝음, 혹은 그 양쪽 모두에 항상 맵 할 필요는 없습니다.
Synthesizer.getChannels()
메소드의 개요 | |
---|---|
void |
allNotesOff ()
이 채널로 현재 출력중의 노트를 모두 오프로 합니다. |
void |
allSoundOff ()
이 채널로 출력중의 노트를 모두, 곧바로 오프로 합니다. |
void |
controlChange (int controller,
int value)
지정된 콘트롤러의 값의 변화에 반응합니다. |
int |
getChannelPressure ()
채널의 키보드 압력을 가져옵니다. |
int |
getController (int controller)
지정의 콘트롤러의 현재의 값을 가져옵니다. |
boolean |
getMono ()
현재의 물건/다중 모드를 가져옵니다. |
boolean |
getMute ()
이 채널의 현재의 뮤트 상태를 가져옵니다. |
boolean |
getOmni ()
현재의 엄니 모드를 가져옵니다. |
int |
getPitchBend ()
이 채널의 정보 또는 하부 피치 오프셋(offset)를 가져옵니다. |
int |
getPolyPressure (int noteNumber)
지정된 키를 누르고 있는 압력을 가져옵니다. |
int |
getProgram ()
이 채널의 현재의 프로그램 번호를 가져옵니다. |
boolean |
getSolo ()
이 채널의 현재의 솔로 상태를 가져옵니다. |
boolean |
localControl (boolean on)
로컬 제어를 온 또는 오프로 합니다. |
void |
noteOff (int noteNumber)
지정된 노트의 소리를 오프로 합니다. |
void |
noteOff (int noteNumber,
int velocity)
지정된 노트의 소리를 오프로 합니다. |
void |
noteOn (int noteNumber,
int velocity)
지정된 노트의 소리를 내기 시작합니다. |
void |
programChange (int program)
프로그램 (패치)을 변경합니다. |
void |
programChange (int bank,
int program)
뱅크 번호 및 프로그램 (패치) 번호를 사용해 프로그램을 변경합니다. |
void |
resetAllControllers ()
전구현 콘트롤러를 디폴트 값에 리셋 합니다. |
void |
setChannelPressure (int pressure)
키보드 압력의 변화에 반응합니다. |
void |
setMono (boolean on)
물건 모드를 온 또는 오프로 합니다. |
void |
setMute (boolean mute)
이 채널의 뮤트 상태를 설정합니다. |
void |
setOmni (boolean on)
엄니 모드를 온 또는 오프로 합니다. |
void |
setPitchBend (int bend)
이 채널의 모든 노트의 피치 좌표를 변경합니다. |
void |
setPolyPressure (int noteNumber,
int pressure)
지정된 소리의 키 압력에 반응합니다. |
void |
setSolo (boolean soloState)
이 채널의 솔로 상태를 설정합니다. |
메소드의 상세 |
---|
void noteOn(int noteNumber, int velocity)
velocity
가 제로의 경우, 이 메소드는 noteOff(int)
와 같은 기능을 해, 노트를 정지시킵니다.
noteNumber
- MIDI 노트 넘버, 0 에서 127 까지 (60 = 중앙의 C 음)velocity
- 키를 누르는 속도noteOff(int, int)
void noteOff(int noteNumber, int velocity)
Instrument
의 내부에 의해 정해집니다. 호르드페달 (콘트롤러,controlChange
를 참조)을 누르고 있는 경우는, 이 메소드의 효과는 페달을 떼어 놓을 때까지 보류됩니다.
noteNumber
- MIDI 노트 넘버, 0 에서 127 까지 (60 = 중앙의 C 음)velocity
- 키를 떼어 놓는 속도noteOff(int)
,
noteOn(int, int)
,
allNotesOff()
,
allSoundOff()
void noteOff(int noteNumber)
noteNumber
- MIDI 노트 넘버, 0 에서 127 까지 (60 = 중앙의 C 음)noteOff(int, int)
void setPolyPressure(int noteNumber, int pressure)
setPolyPressure
가 성공했는지의 여부를 검증하려면 ,getPolyPressure
를 사용합니다.
noteNumber
- MIDI 노트 넘버, 0 에서 127 까지 (60 = 중앙의 C 음)pressure
- 지정된 키의 값, 0 에서 127 까지 (127 =
최대압력)getPolyPressure(int)
int getPolyPressure(int noteNumber)
noteNumber
- MIDI 노트 넘버, 0 에서 127 까지 (60 = 중앙의 C 음)
setPolyPressure
를 호출해도 무슨 효과도 없습니다.
setPolyPressure(int, int)
void setChannelPressure(int pressure)
setPolyPressure
의 설정에 의해, 키별 압력센서의 최대치 또는 평균치가 됩니다. 좀 더 일반적으로 말하면(자), 채널 압력은, 다선율 키 압력을 구현하고 있지 않는 디바이스의 단일의 센서의 측정치입니다. setPolyPressure
로 말하고 있도록(듯이), 압력을 사용해 사운드의 다양한 면을 제어할 수 있습니다.
부하의 신디사이저가 이 MIDI 메세지를 지원하지 않는 경우도 있습니다. setChannelPressure
가 성공했는지의 여부를 검증하려면 ,getChannelPressure
를 사용합니다.
pressure
- 키보드를 누르고 있는 압력,
0 에서 127 까지 (127 = 최대압력)setPolyPressure(int, int)
,
getChannelPressure()
int getChannelPressure()
setChannelPressure
를 호출해도 무슨 효과도 없습니다.
setChannelPressure(int)
void controlChange(int controller, int value)
Instrument
의 반응의 방법은, 그 Instrument
특유인 경우가 있습니다.
MIDI 1.0 스펙은 7 비트 콘트롤러와 14 비트 콘트롤러의 양쪽 모두를 정의합니다. 다이얼이나 슬라이더등의 연속형 콘트롤러는 14 비트 (2 MIDI 바이트)가 표준으로, 스윗치등의 이산 콘트롤러는 7 비트 (1 MIDI 바이트)가 표준입니다. 각 형의 제어의 예상 해상도를 알려면 , 스펙을 참조해 주세요.
콘트롤러 64 ~ 95 (0x40 - 0x5F)에서는, 7 비트의 정밀도가 가능합니다. 7 비트 콘트롤러의 값은 모두,value
인수에 의해 설정됩니다. 콘트롤러의 추가 설정에 의해, 14 비트의 정밀도가 가능하게 됩니다. 이것에는 콘트롤러 번호를 2 개 사용합니다. 1 개(살)은 최상정도 7 비트용으로, 이제(벌써) 1 개(살)은 최하정도 7 비트용입니다. 콘트롤러 번호 0 ~ 31 (0x00 - 0x1F)은, 14 비트 콘트롤러의 최상정도 7 비트를 제어해, 콘트롤러 번호 32 ~ 63 (0x20 - 0x3F)은, 14 비트 콘트롤러의 최하정도 7 비트를 제어합니다. 예를 들어, 콘트롤러 번호 7 (0x07)은 채널 음량 콘트롤러의 상위 7 비트를 제어해, 콘트롤러 번호 39 (0x27)는 하위 7 비트를 제어합니다. 14 비트 콘트롤러의 값은, 상위 7 비트와 하위 7 비트의 상호작용에 의해 정해집니다. 콘트롤러의 최상정도 7 비트가 설정되면(자) (콘트롤러 번호 0 ~ 31 을 사용), 하위의 7 비트는 자동적으로 0 으로 설정됩니다. 그 후, 하위 7 비트에 대응하는 콘트롤러 번호를 사용해 한층 더 콘트롤러의 값이 변경됩니다.
부하의 신디사이저가 특정의 콘트롤러 메세지를 지원하지 않는 경우도 있습니다. controlChange
호출에 성공했는지의 여부를 검증하려면 ,getController
를 사용합니다.
controller
- 콘트롤러 번호 (0 ~ 127,
해석에 대해서는 MIDI 1.0 스펙 참조)value
- 지정된 콘트롤러가 변경되는 값 (0 ~ 127)getController(int)
int getController(int controller)
controlChange
를 호출해도 무슨 효과도 없습니다.
controller
- 바람직한 값의 콘트롤러 번호.
가능 범위는 0 ~ 127,
해석에 대해서는 MIDI 1.0 스펙 참조
controlChange(int, int)
void programChange(int program)
MIDI 스펙은, 벌써 들리고 있는 소리를 새로운 인스트르먼트 (음색)로 전환하든가, 혹은 노트·오프에 의해 종료시킬 때까지 원래의 음색을 계속할까에 대해서는, 규정하고 있습니다.
프로그램 번호는 제로로부터 시작됩니다 (0 ~ 127 으로 나타내진다). MIDI 하드웨어 디스플레이 및 MIDI 에 관한 문서에는, 일반적으로 0 ~ 127 은 아니고 1 ~ 128 까지의 번호가 사용됩니다.
부하의 신디사이저가 특정의 프로그램을 지원하지 않는 경우도 있습니다. programChange
호출에 성공했는지의 여부를 검증하려면 ,getProgram
를 사용합니다.
program
- 바꾸는 프로그램 번호 (0 ~ 127)programChange(int, int)
,
getProgram()
void programChange(int bank, int program)
programChange
호출에 성공했는지의 여부를 검증하려면 ,getProgram
및 getController
를 사용합니다. 제어의 변경에 의해 뱅크가 변경되고 있을 가능성이 있으므로, 다음의 스테이트먼트를 사용해 현재의 뱅크를 확인합니다.
int bank = (getController(0) * 128) + getController(32);
bank
- 바꾸는 뱅크 번호 (0 ~ 16383)program
- 지정된 뱅크 (0 ~ 127)에서 사용하는 프로그램 (패치)programChange(int)
,
getProgram()
int getProgram()
Patch.getProgram()
,
Synthesizer.loadInstrument(javax.sound.midi.Instrument)
,
programChange(int)
void setPitchBend(int bend)
MIDI 스펙에서는 핏치벤드를 14 비트치에 규정해, 제로가 최대 하부 비뚤어져, 16383 이 최대 윗쪽 비뚤어져, 8192 가 중앙 (핏치벤드 없음)이다고 규정하고 있습니다. 피치 변경의 실제의 값은 지정되고 있지 않습니다. 피치는, 핏치벤드의 감도 설정에 의해 변경할 수 있습니다. 다만, 일반적인 MIDI 스펙에서는, 디폴트 범위는 중앙에서 상하 2 반음으로 되어 있습니다.
부하의 신디사이저가 이 MIDI 메세지를 지원하지 않는 경우도 있습니다. setPitchBend
가 정상적으로 실행되었는지의 여부를 검증하려면 ,getPitchBend
를 사용합니다.
bend
- 피치 변경량, 마이너스가 아닌 14 비트의 값
(8192 = 비뚤어져 없음)getPitchBend()
int getPitchBend()
setPitchBend
를 호출해도 무슨 효과도 없습니다.
setPitchBend(int)
void resetAllControllers()
controlChange(int, int)
void allNotesOff()
Instrument
의 내부에 의해 정해집니다. 호르드페다르콘트로라 (controlChange
를 참조)를 누르고 있는 경우는, 이 메소드의 효과는 페달을 떼어 놓을 때까지 보류됩니다.
allSoundOff()
,
noteOff(int)
void allSoundOff()
Instrument
의 내부 감쇠 속도는 무시합니다.
allNotesOff()
boolean localControl(boolean on)
localControl
호출에 성공했는지의 여부를 검증하려면 , 반환값을 확인합니다.
on
- 로컬 제어를 온으로 하는 경우는 true
,
오프로 하는 경우는 false
void setMono(boolean on)
「물건」은, 「모노포닉크 (단성의 것)」라고 하는 단어의 생략형으로, 이 문맥에서는 「다선율 (다성의 것)」이라고 하는 단어의 반대를 의미해, MIDI 채널별의 단일의 신디사이저음을 가리킵니다. 얼마나 많은 오디오 채널이 있는가 하는 것으로는 관계 없습니다 ( 「모노포닉크」대 「스테레오포닉크」의 녹음의 경우와 같다).
부하의 신디사이저가 물건 모드를 지원하지 않는 경우도 있습니다. setMono
호출에 성공했는지의 여부를 검증하려면 ,getMono
를 사용합니다.
on
- 물건 모드를 온으로 하는 경우는 true
,
오프 (즉 다중 모드를 온)로 하는 경우는 false
getMono()
,
VoiceStatus
boolean getMono()
setMono
호출을 고려하지 않고, 항상 같은 값을 돌려줍니다.
true
, 그 이외는
false
(즉 다중 모드가 온)setMono(boolean)
void setOmni(boolean on)
setOmni
가 정상적으로 실행되었는지의 여부를 검증하려면 ,getOmni
를 사용합니다.
on
- 엄니 모드를 온으로 하는 경우는,
오프로 하는 경우는 false
getOmni()
,
VoiceStatus
boolean getOmni()
setOmni
호출을 고려하지 않고, 항상 같은 값을 돌려줍니다.
true
, 그 이외는
false
(즉 엄니 모드가 오프)setOmni(boolean)
void setMute(boolean mute)
true
의 값은, 그 채널의 소리가 지워지고 있는 것을 의미해,false
는 그 채널로 소리가 출력되는 것을 의미합니다 (다른 채널이 솔로로 되어 있지 않은 경우).
allSoundOff()
와 달리, 이 메소드는 특정의 채널인 만큼 적용되어 전채널에는 적용되지 않습니다. 또, 이 메소드는 현재 출력되고 있는 노트 뿐만이 아니라, 그 후 수신되는 노트도 무음으로 합니다.
부하의 신디사이저가 채널 뮤트를 지원하지 않는 경우도 있습니다. setMute
호출에 성공했는지의 여부를 검증하려면 ,getMute
를 사용합니다.
mute
- 새로운 뮤트 상태getMute()
,
setSolo(boolean)
boolean getMute()
false
를 돌려줍니다.
true
,
그렇지 않은 경우는 false
setMute(boolean)
void setSolo(boolean soloState)
solo
가 true
의 경우는, 이 채널 및 다른 솔로가 되어 있는 것 외의 채널의 소리만이 들립니다. solo
가 false
의 경우는, 다른 솔로가 되어 있는 채널의 소리만이 들립니다만, 솔로가 되어 있는 채널이 없을 때는 뮤트로 되어 있지 않은 채널의 소리가 모두 들립니다.
부하의 신디사이저가 솔로 채널을 지원하지 않는 경우도 있습니다. setSolo
호출에 성공했는지의 여부를 검증하려면 ,getSolo
를 사용합니다.
soloState
- 채널의 새로운 솔로 상태getSolo()
boolean getSolo()
false
를 돌려줍니다.
true
,
그렇지 않은 경우는 false
setSolo(boolean)
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.