JavaTM Platform
Standard Ed. 6

javax.sound.midi
클래스 VoiceStatus

java.lang.Object 
  상위를 확장 javax.sound.midi.VoiceStatus


public class VoiceStatus
extends Object

VoiceStatus 객체에는,Synthesizer 로 생성되는 음성 가운데 1 개에 대해, 현재 상태에 관한 정보가 포함됩니다.

일반적으로 MIDI 신디사이저는, 결정할 수 있던 최대수의 범위에서 복수의 노트를 생성할 수 있습니다. 이러한 노트는 음성이라고도 불립니다. 음성은 연속한 단음의 스트림로, 수신되는 MIDI 노트를 특정의 음성에 할당하는 프로세스는 음성 어로케이션으로 불립니다. 다만, 음성 어로케이션 알고리즘이나 각 음성의 내용은, 일반적으로은 MIDI 신디사이저 내부에 있어, 밖으로부터 볼 수 없습니다. 물론, 신디사이저가 연주하고 있는 노트를 MIDI 메세지로 조사해 한층 더 거기로부터 음성에 대한 노트의 할당에 대해 무엇인가를 추론할 수도 있습니다. 그러나 MIDI 자신에게는, 신디사이저에 의해 할당할 수 있었던 노트와 음성과의 대응 관계 뿐만이 아니라, 신디사이저로 합성할 수 있는 음성수마저도 리포트하는 수단은 없습니다.

그에 대한 Java Sound 의 경우,Synthesizer 클래스는 그 getVoiceStatus() 메소드에 의해 음성의 내용을 명시할 수 있습니다. 이 동작은 추천 되고 있습니다만, 필수는 아니기 때문에, 음성 어로케이션을 명시하지 않는 신디사이저는 길이 0 의 배열만을 돌려줍니다. 음성 상태를 리포트하는 Synthesizer 에서는, 그 음성이 현재 출력되고 있는지 어떤지에 관계없이, 항상 모든 음성에 대해 음성 어로케이션 정보를 유지하고 있습니다. 바꾸어 말하면(자), 특정의 타입의 Synthesizer 는 언제라도, 동시에 출력할 수 있는 노트의 최대수에 동일한 고정한 수의 음성을 갖추고 있습니다.

현재 MIDI 노트를 처리하고 있지 않는 음성은 액티브하지 않다고 보여집니다. 음성은, 노트 온 커멘드가 주어지지 않은지, 혹은 수신한 모든 노트 온 커멘드가 거기에 대응하는 노트 오프 커멘드 (또는 「전노트 오프」메세지)에 의해 종료되었을 경우에 액티브하지 않게 됩니다. 이것은 예를 들어, 16 까지의 노트를 동시에 출력할 수 있는 신디사이저가 4 음으로부터 되는 화음을 연주하도록(듯이) 지시받았을 경우에 일어납니다. 즉, 이 경우에 액티브한 것은 4 개의 음성 뿐입니다 (그 이전에 출력된 소리는 벌써 모두 멈추어 있으면(자) 상정). 일반적으로, 그 상태가 액티브와 리포트된 음성은 들리는 사운드를 생성하고 있습니다만, 그렇지 않은 경우도 있습니다. 이것은 인스트르먼트의 상세 (즉 합성 알고리즘)와 그 노트의 지속 시간에 의해 정해집니다. 예를 들어, 어느 음성으로 1 회 손뼉을 치는 소리를 합성하고 있다고 합니다. 이 소리는 매우 빠르게 감쇠하기 위해(때문에), 노트 오프 메세지가 수신되기 전으로 들리지 않게 되어 버릴 가능성이 있습니다. 이러한 상황에서는, 현재 사운드가 생성되어 있지 않은 경우에서도, 이 음성은 액티브라고 보여집니다.

VoiceStatus 클래스에서는, 액티브 또는 액티브하지 않은 상태 외에, 그 음성의 현재의 MIDI 채널, 뱅크 번호 및 프로그램 번호, MIDI 노트 번호, 및 MIDI 볼륨을 분명히 하는 필드가 제공됩니다. 이것들은 모두, 음성을 사용해 나가는 동안에 변화할 가능성이 있습니다. 음성이 액티브하지 않은 동안은, 이러한 필드에는 각각 지정되어 있지 않은 값이 표시됩니다. 그 때문에, 액티브한 필드로부터 먼저 확인할 필요가 있습니다.

관련 항목:
Synthesizer.getMaxPolyphony() , Synthesizer.getVoiceStatus()

필드의 개요
 boolean active
          그 음성이 현재 MIDI 노트를 처리하고 있을지 어떨지를 나타냅니다.
 int bank
          이 음성이 현재 사용하고 있는 인스트르먼트의 뱅크 번호입니다.
 int channel
          이 음성이 연주되고 있는 MIDI 채널입니다.
 int note
          이 음성이 연주하고 있는 MIDI 노트입니다.
 int program
          이 음성이 현재 사용하고 있는 인스트르먼트의 프로그램 번호입니다.
 int volume
          이 음성의 현재의 MIDI 볼륨 레벨입니다.
 
생성자 의 개요
VoiceStatus ()
           
 
메소드의 개요
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

필드의 상세

active

public boolean active
그 음성이 현재 MIDI 노트를 처리하고 있을지 어떨지를 나타냅니다. 「액티브 및 액티브하지 않은 음성」의 설명을 참조해 주세요.


channel

public int channel
이 음성이 연주되고 있는 MIDI 채널입니다. 이 값은, 그 음성이 액티브한 경우는 0 으로부터 시작되는 채널 번호, 액티브하지 않은 경우는 지정되어 있지 않은 값이 됩니다.

관련 항목:
MidiChannel , active

bank

public int bank
이 음성이 현재 사용하고 있는 인스트르먼트의 뱅크 번호입니다. 이것은 MIDI 뱅크 선택 메세지에 의해 지정된 번호로,SoundBank 객체에 대해서는 참조하지 않습니다. 값의 범위는, 이 음성이 액티브한 경우는 0 ~ 16383, 액티브하지 않은 경우는 지정되어 있지 않은 값이 됩니다.

관련 항목:
Patch , Soundbank , active , MidiChannel.programChange(int, int)

program

public int program
이 음성이 현재 사용하고 있는 인스트르먼트의 프로그램 번호입니다. 값의 범위는, 이 음성이 액티브한 경우는 0 ~ 127, 액티브하지 않은 경우는 지정되어 있지 않은 값이 됩니다.

관련 항목:
MidiChannel.getProgram() , Patch , active

note

public int note
이 음성이 연주하고 있는 MIDI 노트입니다. 액티브한 음성에 대한 값의 범위는, 중앙의 C 음을 60 으로서 0 ~ 127 입니다. 음성이 액티브하지 않은 경우는 지정되어 있지 않은 값이 됩니다.

관련 항목:
MidiChannel.noteOn(int, int) , active

volume

public int volume
이 음성의 현재의 MIDI 볼륨 레벨입니다. 값의 범위는, 이 음성이 액티브한 경우는 0 ~ 127, 액티브하지 않은 경우는 지정되어 있지 않은 값이 됩니다.

이 값은, 그 음성이 생성하는 사운드의 순간적인 레벨을 반드시 반영하지 않는 것에 주의해 주세요. 사운드의 순간적인 레벨은, 현재의 인스트르먼트나 그 인스트르먼트가 생성하는 진폭의 포락선의 형상을 포함해, 다양한 요인에 의해 결정됩니다.

관련 항목:
active
생성자 의 상세

VoiceStatus

public VoiceStatus()

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