public interface MidiChannel
MidiChannelオブジェクトは単一のMIDIチャネルを表します。 通常、各MidiChannelメソッドは、MIDI仕様で定義された「チャネル音声」、「チャネル・モード」などのMIDIのメッセージを処理します。 ただし、MidiChannelには、標準MIDIチャネル・メッセージの1つによって最後に設定された値を検索する「get」メソッドもあります。 同様に、チャネル別ソロ・メソッドおよびミュート・メソッドも追加されています。
オブジェクトにはSynthesizerMidiChannelsのコレクションがあり、通常はMIDI 1.0仕様によって16チャネルのそれぞれに1つずつ規定されています。 Synthesizerは、MidiChannelsがnoteOnメッセージを受信した場合にサウンドを生成します。
MIDIチャネル・メッセージの規定動作については、ここでは詳しく述べませんので、MIDI 1.0仕様を参照してください。 仕様書は『MIDI Reference: The Complete MIDI 1.0 Detailed Specification』というタイトルで、MIDI Manufacturer's Association (http://www.midi.org)から発行されています。
MIDIはもともとキーボード・ミュージシャンの動きを伝えるプロトコルでした。 その原形はMidiChannel APIに見ることができます。APIにはキー番号、キー・ベロシティ、キー・プレッシャなどのMIDIの概念が保持されています。 MIDIデータは必ずしもキーボード奏者によって演奏される必要はない、ということを理解しておく必要があります(音源は他の楽器のミュージシャンでもソフトウェアでも可)。 ノートがどのように演奏されたかにかかわらず、ベロシティとプレッシャに一定の値を生成するデバイスもあります。 また、MIDI仕様では、実装側に適した方法でシンセサイザがデータを使用できるようになっている部分も多くあります。 たとえば、ベロシティ・データを音量または明るさ、あるいはその両方に常にマップする必要はありません。
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
void |
allNotesOff() |
このチャネルで現在出力中のノートをすべてオフにします。
|
void |
allSoundOff() |
このチャネルで出力中のノートをすべて、すぐにオフにします。ホールド・ペダルおよび現在の
Instrumentの内部減衰速度は無視します。 |
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) |
このチャネルのソロ状態を設定します。
|
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音)デバイスが多重の圧力の設定をサポートしない場合、このメソッドは常に0を返します。 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、オフにする場合はfalsevoid setMono(boolean on)
「モノ」は、「モノフォニック(単声の)」という単語の省略形で、このコンテキストでは「ポリフォニック(多声の)」という単語の反対を意味し、MIDIチャネル別の単一のシンセサイザ音を指します。 「モノフォニック」録音と「ステレオ・フォニック」録音の場合のようにオーディオ・チャネルがいくつあるかは関係ありません。 配下のシンセサイザがモノ・モードをサポートしない場合もあります。 setMono呼出しに成功したかどうかを検証するには、getMonoを使用します。
on - モノ・モードをオンにする場合はtrue、オフ(つまり多重モードをオン)にする場合はfalse。getMono()、VoiceStatusboolean getMono()
setMono呼出しに関係なく、常に同じ値を返します。 true、それ以外はfalse (つまり多重モードがオン)。setMono(boolean)void setOmni(boolean on)
setOmniが正常に実行されたかどうかを検証するには、getOmniを使用します。 on - オムニ・モードをオンにする場合はtrue、オフにする場合はfalse。getOmni()、VoiceStatusboolean getOmni()
setOmni呼出しに関係なく、常に同じ値を返します。 true、それ以外はfalse (つまりオムニ・モードがオフ)。setOmni(boolean)void setMute(boolean mute)
trueの値は、そのチャネルの音が消されることを意味し、falseはそのチャネルで音が出力されることを意味します(ほかのチャネルがソロになっていない場合)。
allSoundOff()と違って、このメソッドは特定のチャネルだけに適用され、全チャネルには適用されません。 また、このメソッドは現在出力されているノートだけでなく、そのあと受信されるノートも無音にします。 配下のシンセサイザがチャネルのミュートをサポートしない場合もあります。 setMute呼出しに成功したかどうかを検証するには、getMuteを使用します。
mute - 新しいミュート状態getMute(), setSolo(boolean)boolean getMute()
falseを返します。 true、そうでない場合はfalsesetMute(boolean)void setSolo(boolean soloState)
soloがtrueの場合は、このチャネルおよびほかのソロになっているチャネルの音だけが聞こえます。 soloがfalseの場合は、ほかのソロになっているチャネルの音だけが聞こえますが、ソロになっているチャネルがないときはミュートになっていないチャネルの音がすべて聞こえます。 配下のシンセサイザがソロ・チャネルをサポートしない場合もあります。 setSolo呼出しに成功したかどうかを検証するには、getSoloを使用します。 soloState - チャネルの新しいソロ状態getSolo()boolean getSolo()
falseを返します。 true、そうでない場合はfalsesetSolo(boolean) バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。