Sequencerクラスのstart()メソッドを用いて、
MIDIを演奏するプログラムを組みました。
アプリケーションではMIDIファイルを演奏できるのですが、
同様のことをブラウザ上(アプレット)で行おうとすると、
エラーメッセージは出ないのですが、音が鳴りません。
アプレットビューアで実行すると音が鳴るので、
ブラウザ側に原因があると思うのですが、解決法がわかりません。
ブラウザ上でMIDIを扱う命令(JAVA2)を実行できるように、
JAVA2に対応させるためのプラグインをブラウザ(IE5,5)に組み込み、
アプレットを起動するhtmlファイルをJava2に対応するように、
Sunのホームページにあるコンバータを使ってコンバートしました。
何か解決策があったら教えてください。お願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.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();
}
}
}
以上です。お忙しい中、お手数だとはおもいますが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- アプリ 至急!有識者に聞きたいです! 2 2023/08/21 06:13
- ノートパソコン いつもありがとうございます。 MIDI端子がある電子ピアノを、Mac BookプロでMIDIを使って 1 2022/03/26 10:33
- その他(ブラウザ) ブラウザでの音量(YouTubeなどの視聴)が自動的に下がってしまう。(できれば直したいです。) 2 2023/07/15 08:52
- ノートパソコン Windows 10 動作改善方法 6 2023/04/26 22:30
- 作詞・作曲 iMacでMIDIデータを良い音で再生するための音源をインストールする方法を教えて下さい 4 2022/07/09 17:51
- C言語・C++・C# プログラム内から、MIDIファイルの一部分だけを再生する方法 1 2023/02/15 11:08
- その他(ブラウザ) ブラウザを再起動してください 1 2023/06/22 09:05
- Ameba(アメーバブログ) アメブロは、HTMLのタグの入力を許さないブログ・サイトですか? 1 2023/06/18 18:48
- ホームページ作成・プログラミング アメーバ・ブログは"HTMLタグ"を許可してないのですか? 2 2023/06/17 21:08
- 作詞・作曲 MIDIキーボード内蔵オーディオインターフェイス 1 2022/06/04 08:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
String型の日付(2005/11/25)の...
-
C# マルチスレッドにおける例外...
-
nullで、return出来るのはどん...
-
【JAVA】与えられた金額を貨幣...
-
スタックオーバーフローとは?
-
子プロセスで発生した例外を親...
-
文字列からダブルクオートの削除
-
例外ってIf文の中に入れますか...
-
VBA 400エラー 1004エラー
-
C++の例外処理について
-
Javaで文字列をゼロ埋め(ゼロパ...
-
文字列が数字のみで構成されて...
-
オープンアプリにおける、テキ...
-
0除算の例外処理ができない!!...
-
時間の取得
-
エクセルVBAで、条件に一致する...
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
c++,ある関数のクラスから別の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
【JAVA】与えられた金額を貨幣...
-
連続する「\\」をひとつの「\\...
-
文字列からダブルクオートの削除
-
VB.Net Object型 空かどうか
-
0除算の例外処理ができない!!...
-
VB.NETで16進数が正しいかどう...
-
数字か文字列かを判定する関数
-
例外ってIf文の中に入れますか...
-
C# マルチスレッドにおける例外...
-
スタックオーバーフローとは?
-
String型の日付(2005/11/25)の...
-
Timestamp型への変換について(J...
-
C# UriFormatExceptionの回避
-
VBA Evaluate関数 型が一致しま...
-
ADOによるレコードの追加/更新
-
時間の取得
-
WebClient()以外でネットにアク...
-
C#の捕捉されない例外処理の対...
-
タトゥーや墨を入れる人の共通点
おすすめ情報