0

Turbo C ++には、3つの関数とを公開するというヘッダーファイルがdos.hあります。これらの3つの関数を使用して、C++で初歩的なピアノプログラムを作成することができました。soundnosounddelay

Javaを使用して同じ結果を達成したかったのです。私の選択肢は、jfugueまたは。が提供するライブラリを使用することでしjavax.sound.sampledた。問題は、各ノートが事前に再生される期間がわからないことです。

ユーザーが特定のキーを押したときに特定の周波数の再生を開始し、ユーザーがそれを離したときにのみ停止したい。この問題にどのように取り組むことができますか?

4

1 に答える 1

1

Javaチュートリアルには、ブール値が最も内側のwhileループで参照され、バイトをパッケージ化してSourceDataLineに渡して再生する例があります。

したがって、このブール値を変更するために、イベント(おそらくキーオフイベント)を作成できます。サウンドの再生は独自のスレッドで行われるため、ブール値を「揮発性」にし、再生を直接制御するのではなく、このメッセージング方法を使用することをお勧めします。

チュートリアルの例を見つけることができるかどうか見てみましょう... http://docs.oracle.com/javase/tutorial/sound/playing.html

「ソースデータラインの使用」セクションの例では、条件の1つとして式「!stopped」を含むwhileループがあることに注意してください。この例の再生の基本クラスには、間違いなくブール値の「停止」があり、おそらく「揮発性」とマークされています。

于 2012-09-10T23:56:49.893 に答える