- 締切済み
ブラウザ上でMIDIを演奏したいのですが。
Sequencerクラスのstart()メソッドを用いて、 MIDIを演奏するプログラムを組みました。 アプリケーションではMIDIファイルを演奏できるのですが、 同様のことをブラウザ上(アプレット)で行おうとすると、 エラーメッセージは出ないのですが、音が鳴りません。 アプレットビューアで実行すると音が鳴るので、 ブラウザ側に原因があると思うのですが、解決法がわかりません。 ブラウザ上でMIDIを扱う命令(JAVA2)を実行できるように、 JAVA2に対応させるためのプラグインをブラウザ(IE5,5)に組み込み、 アプレットを起動するhtmlファイルをJava2に対応するように、 Sunのホームページにあるコンバータを使ってコンバートしました。 何か解決策があったら教えてください。お願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
コンソールにはエラーや例外が吐かれていますか? 吐かれているならそれを教えてください。 プラグインを入れたのなら、 ブラウザのJavaコンソールには出力されません。 プラグインのコンソールのほうに例外やエラーや System.out.println("hogehoge"); の結果がでます。 プラグインのコンソールの出し方--- Windowsなら(他のOSならそれなりの設定するところがあるでしょうから適当に探してみてください) スタート-設定-コントロールパネルを開いてみてください。 Java Pluginという項目が既に入ってるはずです。 それを開くと「基本」タグに「Javaコンソールの表示」というチェックボックスがあるのでそれにチェックを入れます。 もうひとつの方法 Win98だけ?なのかも知れませんが、Plugin使ってるとタスクバーにDuke(さんかく頭のJavaのマスコット)君の アイコンが出てきます。そいつからコンソール表示させることもできます。
補足
質問へのお返事ありがとうございます。 まず始めにコンソールに表示された全文を載せます。 Java(TM) Plug-in: バージョン 1.3.0-C 使用中の JRE のバージョン 1.3.0 Java HotSpot(TM) Client VM ユーザのホームディレクトリ = C:\WINDOWS プロキシの設定: プロキシなし JAR cache enabled. 以上です。多分エラーメッセージらしいものは無いと思います。 説明が不十分な点があったので、現在の動作についてもう少し細かく説明します。 私の作成したプログラムは、いわゆる自動作曲ソフトというもので、 ボタンを押すたびに、MIDIファイルを作成し、楽譜の表示&MIDIファイルの演奏をするというものです。 現在の問題は、「MIDIファイルを実行しても音が鳴らない」という点です。 ボタンを押すたびに、(音は鳴りませんが)新しい楽譜が表示されるので、 「プログラムの実行が途中で止まっている」ということや 「作成されたMIDIファイルがおかしい」ということは無いと思います。 また前述のとおり、アプレットビューアでは音が鳴るので、 「プログラム自体は正常」だと思っています。 そのため私は、 「ブラウザの設定」や、 「ブラウザを経由してJAVAを実行したときに増えてしまう制約」が、 原因だと思っています。 念のためMIDIファイルを実行するために使用しているプログラムを載せます。 実際にはこのプログラムのクラスをインスタンス化して実行しています。 import javax.sound.midi.*; class MusicPlayer{ Sequencer sequencer; Sequence squence; //MIDIシーケンサーを準備する(コンストラクタ) public MusicPlayer(){ try{ sequencer = MidiSystem.getSequencer(); if(sequencer!=null){ sequencer.open(); } } catch(MidiUnavailableException e){ System.out.println("*** "+e+" ***"); } } //MIDIミュージックデータをセットする public void setMusic(Sequence sq){ squence=sq; try{ sequencer.setSequence(squence); } catch(InvalidMidiDataException e){ System.out.println("*** "+e+" ***"); } } //MIDIミュージックデータを再生 public void playMusic(){ sequencer.start(); } //MIDIミュージックデータを一時停止 public void stopMusic(){ if(sequencer.isRunning()){ sequencer.stop(); } } } 以上です。お忙しい中、お手数だとはおもいますが、よろしくお願いします。