質問
bpm、音量などを設定できるJavaを使用して、独自のメトロノーム(木製ブロック楽器)を作成する予定です。また、 getChannels()から取得した16チャンネル(MIDI 1.0仕様)を試しました。 code>ただし、木版はまったく聞こえません。
/*
* Turn the note on on MIDI channel 1.
* (Index zero means MIDI channel 1)
*/
MidiChannel[] channels = synth.getChannels();
channels[0].noteOn(nNoteNumber, nVelocity);
/*
* Wait for the specified amount of time
* (the duration of the note).
*/
try
{
Thread.sleep(nDuration);
}
catch (InterruptedException e)
{
}
/*
* Turn the note off.
*/
channels[0].noteOff(nNoteNumber);
これについて何か知りましたか?ありがとう。
解決
シンセサイザーによって、パーカッションサウンドはチャンネル10またはチャンネル16(アレイのインデックス9または15)にあります。木版の音はノート番号76と77であり、おそらく最大音速の128のノートベロシティ値を使用する必要があります。
使用しているコードを見ていませんが、何かを再生する前にシンセサイザーをオンにするメソッドを呼び出す必要があるかもしれません。また、パーカッションノートを演奏しているので、ノートオンメッセージの直後に対応するノートオフメッセージを送信できる場合があります(したがって、固定音の長さを把握する必要はありません)パーカッションノート)。私が使用したほとんどのMIDIシンセは、ノートオフメッセージを受信した後でも、パーカッションサウンド全体を再生します。
他のヒント
木版は打楽器です。ドラムまたはパーカッションパッチが割り当てられているチャンネルで適切な音を演奏すると、聞こえます。 (パーカッションまたはドラムパッチでは、各音は異なるブロックを演奏します。ウッドブロック、スネアドラム、ハイトム、クラベなど)
(例)このGeneral MIDI(GM)リファレンスを使用してパッチを検索します。 GMパーカッションにはチャンネル10、ハイウッドブロックには76番、ローウッドブロックには77番が必要です。
また、楽器116はフルキーボード(1〜128の任意のピッチ)木版です。これは、パーカッション以外の(つまり、10、または16ではない)チャンネルで動作するはずです。
注:GMは1ベースであるように見えますが、APIは0ベースであるように見えるため、これらの値のいくつかから1を差し引く必要がある場合があります。