-PR-
締切り
済み

ブラウザ上でMIDIを演奏したいのですが。

  • すぐに回答を!
  • 質問No.55185
  • 閲覧数224
  • ありがとう数5
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 0% (0/1)

Sequencerクラスのstart()メソッドを用いて、
MIDIを演奏するプログラムを組みました。
アプリケーションではMIDIファイルを演奏できるのですが、
同様のことをブラウザ上(アプレット)で行おうとすると、
エラーメッセージは出ないのですが、音が鳴りません。
アプレットビューアで実行すると音が鳴るので、
ブラウザ側に原因があると思うのですが、解決法がわかりません。

ブラウザ上でMIDIを扱う命令(JAVA2)を実行できるように、
JAVA2に対応させるためのプラグインをブラウザ(IE5,5)に組み込み、
アプレットを起動するhtmlファイルをJava2に対応するように、
Sunのホームページにあるコンバータを使ってコンバートしました。

何か解決策があったら教えてください。お願いします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1

コンソールにはエラーや例外が吐かれていますか? 吐かれているならそれを教えてください。 プラグインを入れたのなら、 ブラウザのJavaコンソールには出力されません。 プラグインのコンソールのほうに例外やエラーや System.out.println("hogehoge"); の結果がでます。 プラグインのコンソールの出し方--- Windowsなら(他のOSなら ...続きを読む
コンソールにはエラーや例外が吐かれていますか?
吐かれているならそれを教えてください。

プラグインを入れたのなら、
ブラウザのJavaコンソールには出力されません。
プラグインのコンソールのほうに例外やエラーや
System.out.println("hogehoge");
の結果がでます。

プラグインのコンソールの出し方---
Windowsなら(他のOSならそれなりの設定するところがあるでしょうから適当に探してみてください)
スタート-設定-コントロールパネルを開いてみてください。
Java Pluginという項目が既に入ってるはずです。
それを開くと「基本」タグに「Javaコンソールの表示」というチェックボックスがあるのでそれにチェックを入れます。

もうひとつの方法
Win98だけ?なのかも知れませんが、Plugin使ってるとタスクバーにDuke(さんかく頭のJavaのマスコット)君の
アイコンが出てきます。そいつからコンソール表示させることもできます。
補足コメント
tocchi2000

お礼率 0% (0/1)

質問へのお返事ありがとうございます。
まず始めにコンソールに表示された全文を載せます。

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();
  }
 }
}

以上です。お忙しい中、お手数だとはおもいますが、よろしくお願いします。
投稿日時 - 2001-03-26 19:10:09


このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ