JavaTM 2
Platform
Std. Ed. v1.4.0

javax.sound.midi
インタフェース MidiChannel


public interface MidiChannel

MidiChannel オブジェクトは単一の MIDI チャネルを表します。通常、各 MidiChannel メソッドは、MIDI 仕様で定義された「チャネル音声」、「チャネルモード」などの MIDI のメッセージを処理します。ただし、MidiChannel には、標準 MIDI チャネルメッセージの 1 つによってもっとも最近設定された値を検索する「取得」メソッドもあります。同様に、チャネル別ソロメソッドおよびミュートメソッドも追加されています。

Synthesizer オブジェクトには MidiChannel のコレクションがあり、通常は MIDI 1.0 仕様によって 16 チャンネルのそれぞれに 1 つずつ規定されています。Synthesizer は、MidiChannelnoteOn メッセージを受信した場合にサウンドを生成します。

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)
          このチャネルのソロ状態を設定します。
 

メソッドの詳細

noteOn

public void noteOn(int noteNumber,
                   int velocity)
指定されたノートの音を出し始めます。キーダウン速度は通常、そのノートのボリュームまたは明るさ、あるいはその両方を制御します。velocity がゼロの場合、このメソッドは noteOff(int) のような働きをして、ノートを停止させます。

パラメータ:
noteNumber - MIDI ノートナンバー、0 から 127 まで (60 = 中央の C 音)
velocity - キーを押す速度
関連項目:
noteOff(int, int)

noteOff

public void noteOff(int noteNumber,
                    int velocity)
指定されたノートの音をオフにします。キーアップベロシティを無視しない場合は、キーアップベロシティを使って、ノートの減衰に影響を与えることができます。いずれにしても、ノートは瞬時に消えるわけではありません。ノートの減衰速度は Instrument の内部によって決まります。ホールドペダル (コントローラ、controlChange を参照) を押している場合は、このメソッドの効果はペダルを離すまで保留されます。

パラメータ:
noteNumber - MIDI ノートナンバー、0 から 127 まで (60 = 中央の C 音)
velocity - キーを離す速度
関連項目:
noteOff(int), noteOn(int, int), allNotesOff(), allSoundOff()

noteOff

public void noteOff(int noteNumber)
指定されたノートの音をオフにします。

パラメータ:
noteNumber - MIDI ノートナンバー、0 から 127 まで (60 = 中央の C 音)
関連項目:
noteOff(int, int)

setPolyPressure

public void setPolyPressure(int noteNumber,
                            int pressure)
指定された音のキー圧力に反応します。ポリフォニックキー圧力によって、キーボード奏者は複数のキーを、それぞれ違う圧力で同時に押すことができます。圧力を無視しない場合、通常は圧力を使ってそのノートのボリューム、明るさ、ビブラートなどの特徴を変化させます。

パラメータ:
noteNumber - MIDI ノートナンバー、0 から 127 まで (60 = 中央の C 音)
pressure - 指定されたキーの値、0 から 127 まで (127 = 最大圧力)
関連項目:
getPolyPressure(int)

getPolyPressure

public int getPolyPressure(int noteNumber)
指定されたキーを押している圧力を取得します。

パラメータ:
noteNumber - MIDI ノートナンバー、0 から 127 まで (60 = 中央の C 音)
戻り値:
その音に対する圧力、0 から 127 まで (127 = 最大圧力)
関連項目:
setPolyPressure(int, int)

setChannelPressure

public void setChannelPressure(int pressure)
キーボード圧力の変化に反応します。チャネル圧力は、キーボード奏者がキーボード全体をどれだけ強く押しているかを示します。これは、setPolyPressure の設定によって、キー別圧力センサーの最大値または平均値になります。もう少し一般的に言うと、チャネル圧力は、ポリフォニックキー圧力を実装していないデバイスの単一のセンサーの測定値です。setPolyPressure で述べているように、圧力を使ってサウンドのさまざまな面を制御できます。

パラメータ:
pressure - キーボードを押している圧力、0 から 127 まで (127 = 最大圧力)
関連項目:
setPolyPressure(int, int), getChannelPressure()

getChannelPressure

public int getChannelPressure()
チャネルのキーボード圧力を取得します。

戻り値:
キーボードを押している圧力、0 から 127 まで (127 = 最大圧力)
関連項目:
setChannelPressure(int)

controlChange

public void controlChange(int controller,
                          int value)
指定されたコントローラの値の変化に反応します。コントローラはキーボードのキー以外の制御装置で、スイッチ、スライダ、ペダル、ダイヤル、息圧力センサーなどです。MIDI 1.0 仕様は、MIDI デバイスの一般的なコントローラに標準番号を与え、コントローラのいくつかについて目的を説明しています。コントローラの変化に対する 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)

getController

public int getController(int controller)
指定されたコントローラの現在の値を取得します。戻り値は 14 ビット以内で表示されます。解像度はコントローラ番号によって決まります。コントローラ 0 〜 31 の場合、解像度は常に 14 ビットです。

パラメータ:
controller - 望ましい値のコントローラ番号。可能範囲は 0 〜 127、解釈については MIDI 1.0 仕様参照
戻り値:
指定されたコントローラの現在の値
関連項目:
controlChange(int, int)

programChange

public void programChange(int program)
プログラム (パッチ) を変更します。これによって、現在選択されているインストゥルメントのバンクから特定のインストゥルメントが選択されます。

MIDI 仕様は、すでに聞こえている音を新しいインストゥルメント (音色) に切り替えるか、あるいはノート・オフによって終了させるまでもとの音色を続けるかについては、規定していません。

プログラム番号はゼロから始まります (0 〜 127 で表わされます)。MIDI ハードウェアディスプレイおよび MIDI に関する文書には、通常 0 〜 127 ではなく 1 〜 128 までの番号が使われます。

パラメータ:
program - 切り替えるプログラム番号 (0 〜 127)
関連項目:
programChange(int, int), getProgram()

programChange

public void programChange(int bank,
                          int program)
バンク番号およびプログラム (パッチ) 番号を使用してプログラムを変更します。

パラメータ:
bank - 切り替えるバンク番号 (0 〜 127)
program - 指定されたバンク (0 〜 127) で使用するプログラム (パッチ)
関連項目:
programChange(int), getProgram()

getProgram

public int getProgram()
このチャネルの現在のプログラム番号を取得します。

戻り値:
現在選択されているパッチのプログラム番号
関連項目:
Patch.getProgram(), Synthesizer.loadInstrument(javax.sound.midi.Instrument), programChange(int)

setPitchBend

public void setPitchBend(int bend)
このチャネルのすべてのノートのピッチ座標を変更します。これは現在出力中のノートすべてと後続のノートに影響します (ピッチのベンドをなくすには、値を中央の位置にリセットする必要があります)。

MIDI 仕様ではピッチベンドを 14 ビット値に規定し、ゼロが最大下方歪み、16383 が最大上方歪み、8192 が中央 (ピッチベンドなし) であると規定しています。ピッチ変更の実際の値は指定されていません。ピッチは、ピッチベンドの感度設定によって変更できます。ただし、一般的な MIDI 仕様では、デフォルト範囲は中央から上下 2 半音とされています。

パラメータ:
bend - ピッチ変更量、マイナスでない 14 ビットの値 (8192 = 歪みなし)
関連項目:
getPitchBend()

getPitchBend

public int getPitchBend()
このチャネルの下方ピッチ座標の上方を取得します。

戻り値:
歪み量、マイナスでない 14 ビットの値 (8192 = 歪みなし)
関連項目:
setPitchBend(int)

resetAllControllers

public void resetAllControllers()
全実装コントローラをデフォルト値にリセットします。

関連項目:
controlChange(int, int)

allNotesOff

public void allNotesOff()
このチャネルで現在出力中のノートをすべてオフにします。ノートは瞬時に消えるわけではありません。ノートの減衰速度は Instrument の内部によって決まります。ホールドペダルコントローラ (controlChange 参照) を押している場合は、このメソッドの効果はペダルを離すまで保留されます。

関連項目:
allSoundOff(), noteOff(int)

allSoundOff

public void allSoundOff()
このチャネルで出力中のノートをすべて、すぐにオフにします。ホールドペダルおよび現在の Instrument の内部減衰速度は無視します。

関連項目:
allNotesOff()

localControl

public boolean localControl(boolean on)
ローカル制御をオンまたはオフにします。ローカル制御のデフォルトはオンです。「オン」に設定されていると、デバイスがサウンドの合成および MIDI メッセージの転送もできる場合、デバイスがノート・オンおよびノート・オフメッセージに応答してサウンドを合成し、デバイス自体が転送します。「オフ」に設定されると、シンセサイザはシンセサイザ自体の転送された MIDI メッセージは無視するが他のデバイスから受信したメッセージは無視しません。

パラメータ:
on - ローカル制御をオンにする場合は true、オフにする場合は false
戻り値:
新しいローカル制御値

setMono

public void setMono(boolean on)
モノモードをオンまたはオフにします。モノモードでは、チャネルは 1 度に 1 つのノートだけを合成します。多重モード (モノモードオフと同じ) では、チャネルは同時に複数のノートを合成できます。デフォルトはモノオフ (多重モードオン) です。

「モノ」は、「モノフォニック (単声の)」という単語の省略形で、このコンテキストでは「ポリフォニック (多声の)」という単語の反対を意味し、MIDI チャネル別の単一のシンセサイザ音を指します。どれだけ多くのオーディオチャネルがあるかということとは関係ありません (「モノフォニック」対「ステレオフォニック」の録音の場合と同じ)。

パラメータ:
on - モノモードをオンにする場合は true、オフ (つまり多重モードをオン) にする場合は false
関連項目:
getMono(), VoiceStatus

getMono

public boolean getMono()
現在のモノ/多重モードを取得します。

戻り値:
モノモードがオンの場合は true、それ以外は false (つまり多重モードがオン)
関連項目:
setMono(boolean)

setOmni

public void setOmni(boolean on)
オムニモードをオンまたはオフにします。オムニモードでは、チャネルは全チャネルに送信されたメッセージに応答します。オムニがオフの場合は、チャネルはそのチャネル番号に送信されたメッセージにだけ応答します。デフォルトはオムニオフです。

パラメータ:
on - オムニモードをオンにする場合は true、オフにする場合は false
関連項目:
getOmni(), VoiceStatus

getOmni

public boolean getOmni()
現在のオムニモードステータスを取得します。

戻り値:
オムニモードがオンの場合は true、それ以外は false
関連項目:
setOmni(boolean)

setMute

public void setMute(boolean mute)
このチャネルのミュート状態を設定します。true の値は、そのチャネルの音が消されていることを意味し、false はそのチャネルで音が出力されることを意味します (他のチャネルがソロになっていない場合)。

allSoundOff() と違って、このメソッドは特定のチャネルだけに適用され、全チャネルには適用されません。また、このメソッドは現在出力されているノートだけでなく、そのあと受信されるノートも無音にします。

パラメータ:
mute - 新しいミュート状態
関連項目:
getMute(), setSolo(boolean)

getMute

public boolean getMute()
このチャネルの現在のミュート状態を取得します。

戻り値:
チャネルの音が消されている場合は true、そうでない場合は false
関連項目:
setMute(boolean)

setSolo

public void setSolo(boolean soloState)
このチャネルのソロ状態を設定します。solotrue の場合は、このチャネルおよび他のソロになっている他のチャネルの音だけが聞こえます。solofalse の場合は、他のソロになっているチャネルの音だけが聞こえますが、ソロになっているチャネルがないときはミュートになっていないチャネルの音がすべて聞こえます。

パラメータ:
soloState - チャネルの新しいソロ状態
関連項目:
getSolo(), setMute(boolean)

getSolo

public boolean getSolo()
このチャネルの現在のソロ状態を取得します。

戻り値:
ソロの場合は true、そうでない場合は false
関連項目:
setSolo(boolean)

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

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.