問題タブ [javax.sound.midi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
204 参照

java - .jar ファイルにエクスポートすると MIDI 楽器のサウンドが異なる

Java サウンド API の MIDI パッケージを使用してサウンドを合成する Java プログラムを作成しましたが、それを .jar ファイルにエクスポートすると、再生されるサウンドが Eclipse で実行したときとはかなり異なります。なぜこれを行っているのか、この問題を解決する方法を知っている人はいますか?

楽器のリストはここにあります: http://www.hittrax.com.au/images/artists/gmgs.pdf

以下は私のコードのセクションです

下の画像は、私が録音したときの音声を示しています。最初の画像は、Eclipse でのサウンドの状態です。2 番目の画像は、.jar にエクスポートしたときのサウンドです。

音波

0 投票する
1 に答える
974 参照

java - シンプルなサウンドが Java midi テスト コードで再生されない

単純なサウンドを生成するコードの機能を確立しようとしてjavax.sound.midiいます。これにより、より複雑な MIDI コードの作業を開始できるようになります。しかし、以下のコードは音を出していません。コード サンプルはわずか約 50 行で、すぐに使用できる Web サンプルからのものです。しかし、代わりに、プログラムを実行すると、コンソールに次のエラー メッセージが表示されます。

また、音が出ません。 それが重要な場合、OSはWindows 8.1です。

このエラーの原因は何ですか? 以下の小さなコード セクションを変更して、単純なサウンドを再生するにはどうすればよいですか?

上記の出力をスローしている完全な〜50行のコードは次のとおりです。

0 投票する
2 に答える
654 参照

java - Java MIDI シーケンサ SyncMode

こんにちは: MIDI シーケンサーのインスタンスを外部クロックに同期させようとしています。やった:

しかし

戻り値

つまり、これは役に立たなくなります。

私は何を間違っていますか?もちろん、D2 から送信されて、system.out に通知するようにカスタム作成された別のレシーバーに送信されるメッセージの確認があり、シーケンサーは正常に再生されますが、SyncModes ドキュメントをサポートしていないようです。具体的には、このフレーズは私を混乱させます(MIDI_SYNCから:「このモードは、MIDIレシーバーでもあるシーケンサーのマスター同期モードとしてのみ適用されます。」

シーケンサーが受信機であることの意味は何ですか。getReceiver() の私のアプローチで十分だと思いました

よろしくお願いします!

0 投票する
1 に答える
328 参照

java - フラッシュせずにMIDIシーケンサーを停止

私が取り組んでいるプロジェクトでは、MIDI シーケンサーを一時停止する必要があり、すべての音符を持続させて、それらの音符をエンドレスにしたいと考えています。私が直面している問題は、sequencer.stop()明らかに再生を停止するだけでなく、MIDI ノート オフ メッセージをすべてのサウンド ノートに送信し、すべてのサウンド ノートを終了させることです (一部の文献ではフラッシュと呼ばれます)。

私は使用しようとしましsequencer.setTempoInBPM(0)たが、それは仕事を成し遂げますが、私のプロジェクトに特有の他の望ましくない副作用があります.

最も明白な解決策はオーバーライドSequencer.stop()のようですが、どうすればよいですか? そして、そのオーバーライドされたメソッドはどのように見えるのでしょうか?

編集: gpasch のコメントに応じて質問を編集したいと思います。

再生を停止するだけでなく、MIDI ノート オフ メッセージをすべての音符に送信しますこれって同じじゃないですか??

これはオーディオには当てはまりますが、MIDI には当てはまりません。MIDI プロトコルは、それ自体でオーディオ データを指定しません。楽器に何を演奏するかを指示するだけです。楽器は MIDI メッセージを解釈し、最終的な音を出します。

楽器に 1 秒間の音を再生させるには、次のアクションを実行します。

  1. [Sequencer] MIDI Message Out:ノートオン
  2. [Instrument] MIDI Message In:ノートオン
  3. [楽器]音符の解釈を開始: 音を出し始めます
  4. 【シーケンサー】 1秒待つ
  5. [Sequencer] MIDI Message Out:ノートオフ
  6. [Instrument] MIDI Message In:ノートオフ
  7. [Instrument]ノートオフの解釈を開始: 音の発生を停止

したがって、このプロセスがステップ 4 で中断されると、「エンドレス ノート」が作成されます。MIDI 楽器は、特定の音符の再生を開始する命令を受け取りましたが、その音符の再生を停止する命令を受け取っていないためです。[*]

私の質問に戻ります。ノートの途中でコールsequencer.stop()すると (ステップ 4)、「エンドレス ノート」の代わりに、その時点で再生されていて、まだノート オフメッセージを受信して​​いないすべてのノートが鳴り止みます。その論理的な説明は、内部でMIDI オール ノート オフメッセージをsequencer.stop()送信することです。そうでなければ本当に混乱するので、私たちは本当に感謝することができます. 私の特定のケースでは、ノートオフメッセージを送信しないようにシーケンサーが本当に必要です。質問は次のとおりです。そのための回避策を作成できますか?sequencer.stop()

※自然に音が減衰するピアノ音だと、いずれ音は死んでしまいます。しかし、シンセサウンドの場合、音がなくなるまで音が持続します。

0 投票する
1 に答える
417 参照

java - Java シーケンサーを一時停止するとテンポがリセットされる

私は、実行時に midi シーケンスの再生を自動開始し、ユーザーがキーを押すことでいつでも一時停止できるコードを書いています。これらのキーイベント処理は問題なく機能しますが、次のようにシーケンサーを一時停止すると、非常に奇妙なエラーが発生します。

シーケンサーのテンポをリセットします。曲/シーケンサーは 120000 MPQ (入力からロードされた) で再生を開始し、500000 MPQ にリセットされます。なぜこれが起こっているのか誰にも分かりますか?ありがとう。

0 投票する
2 に答える
1370 参照

java - try-catch が正しく動作しない

私はHeadFirstから Java を読んでいます。例外処理に関する章を読み始めました。本の中には、私が自分のコンピューターで実行したコードがありました。

try-catch ブロックを削除すると、コンパイラで MidiUnavailableException エラーが発生します。その例外をキャッチするために try-catch を使用しましたが、System.out.println("Bummer");実行されません。代わりに、try ブロックが実行されます。

ここで何が起きてるの?

0 投票する
0 に答える
74 参照

java-8 - シーケンサーと MIDI コードを Java 8 ラムダとストリームに変換する

Java 6 で記述されたコードを Java 8 に変換しています。コードは、すべてのイベントでサウンドが再生されるゲームのイベント通知機能として機能します。私のコードは次のとおりです。

それをJava 8に変換する方法がわかりません。誰か助けてもらえますか?