|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
MidiChannel
オブジェクトは単一の MIDI チャネルを表します。通常、各 MidiChannel
メソッドは、MIDI 仕様で定義された「チャネル音声」、「チャネルモード」などの MIDI のメッセージを処理します。ただし、MidiChannel
には、標準 MIDI チャネルメッセージの 1 つによってもっとも最近設定された値を検索する「取得」メソッドもあります。同様に、チャネル別ソロメソッドおよびミュートメソッドも追加されています。
オブジェクトには 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()
このチャネルの下方ピッチ座標の上方を取得します。 |
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)
このチャネルのソロ状態を設定します。 |
メソッドの詳細 |
public void noteOn(int noteNumber, int velocity)
velocity
がゼロの場合、このメソッドは noteOff(int)
のような働きをして、ノートを停止させます。
noteNumber
- MIDI ノートナンバー、0 から 127 まで (60 = 中央の C 音)velocity
- キーを押す速度noteOff(int, int)
public void noteOff(int noteNumber, int velocity)
Instrument
の内部によって決まります。ホールドペダル (コントローラ、controlChange
を参照) を押している場合は、このメソッドの効果はペダルを離すまで保留されます。
noteNumber
- MIDI ノートナンバー、0 から 127 まで (60 = 中央の C 音)velocity
- キーを離す速度noteOff(int)
,
noteOn(int, int)
,
allNotesOff()
,
allSoundOff()
public void noteOff(int noteNumber)
noteNumber
- MIDI ノートナンバー、0 から 127 まで (60 = 中央の C 音)noteOff(int, int)
public void setPolyPressure(int noteNumber, int pressure)
noteNumber
- MIDI ノートナンバー、0 から 127 まで (60 = 中央の C 音)pressure
- 指定されたキーの値、0 から 127 まで (127 = 最大圧力)getPolyPressure(int)
public int getPolyPressure(int noteNumber)
noteNumber
- MIDI ノートナンバー、0 から 127 まで (60 = 中央の C 音)
setPolyPressure(int, int)
public void setChannelPressure(int pressure)
setPolyPressure
の設定によって、キー別圧力センサーの最大値または平均値になります。もう少し一般的に言うと、チャネル圧力は、ポリフォニックキー圧力を実装していないデバイスの単一のセンサーの測定値です。setPolyPressure
で述べているように、圧力を使ってサウンドのさまざまな面を制御できます。
pressure
- キーボードを押している圧力、0 から 127 まで (127 = 最大圧力)setPolyPressure(int, int)
,
getChannelPressure()
public int getChannelPressure()
setChannelPressure(int)
public 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 ビットに対応するコントローラ番号を使ってさらにコントローラの値が変更されます。
controller
- コントローラ番号 (0 〜 127、解釈については MIDI 1.0 仕様参照)value
- 指定されたコントローラが変更される値getController(int)
public int getController(int controller)
controller
- 望ましい値のコントローラ番号。可能範囲は 0 〜 127、解釈については MIDI 1.0 仕様参照
controlChange(int, int)
public void programChange(int program)
MIDI 仕様は、すでに聞こえている音を新しいインストゥルメント (音色) に切り替えるか、あるいはノート・オフによって終了させるまでもとの音色を続けるかについては、規定していません。
プログラム番号はゼロから始まります (0 〜 127 で表わされます)。MIDI ハードウェアディスプレイおよび MIDI に関する文書には、通常 0 〜 127 ではなく 1 〜 128 までの番号が使われます。
program
- 切り替えるプログラム番号 (0 〜 127)programChange(int, int)
,
getProgram()
public void programChange(int bank, int program)
bank
- 切り替えるバンク番号 (0 〜 127)program
- 指定されたバンク (0 〜 127) で使用するプログラム (パッチ)programChange(int)
,
getProgram()
public int getProgram()
Patch.getProgram()
,
Synthesizer.loadInstrument(javax.sound.midi.Instrument)
,
programChange(int)
public void setPitchBend(int bend)
MIDI 仕様ではピッチベンドを 14 ビット値に規定し、ゼロが最大下方歪み、16383 が最大上方歪み、8192 が中央 (ピッチベンドなし) であると規定しています。ピッチ変更の実際の値は指定されていません。ピッチは、ピッチベンドの感度設定によって変更できます。ただし、一般的な MIDI 仕様では、デフォルト範囲は中央から上下 2 半音とされています。
bend
- ピッチ変更量、マイナスでない 14 ビットの値 (8192 = 歪みなし)getPitchBend()
public int getPitchBend()
setPitchBend(int)
public void resetAllControllers()
controlChange(int, int)
public void allNotesOff()
Instrument
の内部によって決まります。ホールドペダルコントローラ (controlChange
参照) を押している場合は、このメソッドの効果はペダルを離すまで保留されます。
allSoundOff()
,
noteOff(int)
public void allSoundOff()
Instrument
の内部減衰速度は無視します。
allNotesOff()
public boolean localControl(boolean on)
on
- ローカル制御をオンにする場合は true
、オフにする場合は false
public void setMono(boolean on)
「モノ」は、「モノフォニック (単声の)」という単語の省略形で、このコンテキストでは「ポリフォニック (多声の)」という単語の反対を意味し、MIDI チャネル別の単一のシンセサイザ音を指します。どれだけ多くのオーディオチャネルがあるかということとは関係ありません (「モノフォニック」対「ステレオフォニック」の録音の場合と同じ)。
on
- モノモードをオンにする場合は true
、オフ (つまり多重モードをオン) にする場合は false
getMono()
,
VoiceStatus
public boolean getMono()
true
、それ以外は false
(つまり多重モードがオン)setMono(boolean)
public void setOmni(boolean on)
on
- オムニモードをオンにする場合は true
、オフにする場合は false
getOmni()
,
VoiceStatus
public boolean getOmni()
true
、それ以外は false
setOmni(boolean)
public void setMute(boolean mute)
true
の値は、そのチャネルの音が消されていることを意味し、false
はそのチャネルで音が出力されることを意味します (他のチャネルがソロになっていない場合)。
allSoundOff()
と違って、このメソッドは特定のチャネルだけに適用され、全チャネルには適用されません。また、このメソッドは現在出力されているノートだけでなく、そのあと受信されるノートも無音にします。
mute
- 新しいミュート状態getMute()
,
setSolo(boolean)
public boolean getMute()
true
、そうでない場合は false
setMute(boolean)
public void setSolo(boolean soloState)
solo
が true
の場合は、このチャネルおよび他のソロになっている他のチャネルの音だけが聞こえます。solo
が false
の場合は、他のソロになっているチャネルの音だけが聞こえますが、ソロになっているチャネルがないときはミュートになっていないチャネルの音がすべて聞こえます。
soloState
- チャネルの新しいソロ状態getSolo()
,
setMute(boolean)
public boolean getSolo()
true
、そうでない場合は false
setSolo(boolean)
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.