これが重複している場合はお詫びしますが、私がここで見つけたものは何も動作していないようです。私はlibGDXを使ってJavaでデスクトップとAndroidのゲームに取り組んでいます。プラットフォーム固有のモジュールで実装されているコアモジュールのインターフェイスを使用してMIDIサポートを追加しました。そのインターフェイスは次のとおりです。デスクトップ上のlibGDXミディボリュームコントロール
public interface Midi {
void setLooping(boolean looping);
void pause();
void stop();
void setPosition(int pos);
void dispose();
long getPosition();
boolean isLooping();
void setVolume(float volume);
void onPause();
void onResume();
}
私のデスクトップとAndroidプロジェクトの実装では、midiファイルが完全に読み込まれて再生されます。 Android版では、ボリュームを簡単に設定することもできます。しかし、私はデスクトップにボリュームを実装する方法を理解することはできません。私は、トラックの音量を0と1の間のフロートに設定して、0が完全に静かで、1が最も大きな音量になるようにしたいと考えています。私は、次の解決方法を試してみましたが、多くの異なるものを試してみました
public class MidiPlayer implements Midi {
/**
* The sequencer to play the midi track.
*/
private Sequencer sequencer;
/**
* Whether or not the track is looping.
*/
private boolean looping;
public MidiPlayer(FileHandle fileHandle) {
try {
sequencer = MidiSystem.getSequencer();
sequencer.open();
sequencer.setSequence(fileHandle.read());
sequencer.setMicrosecondPosition(0);
sequencer.setLoopStartPoint(0);
sequencer.setLoopEndPoint(-1);
looping = false;
} catch (MidiUnavailableException | InvalidMidiDataException | IOException e) {
Gdx.app.error(getClass().getName(), e.getMessage(), e);
}
}
@Override
public void play() {
sequencer.start();
}
@Override
public void setLooping(boolean looping) {
this.looping = looping;
if(!looping) {
sequencer.setLoopCount(0);
} else {
sequencer.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
}
}
@Override
public void pause() {
sequencer.stop();
}
@Override
public void stop() {
sequencer.stop();
sequencer.setMicrosecondPosition(0);
}
@Override
public void setPosition(int pos) {
sequencer.setMicrosecondPosition(pos);
}
@Override
public void dispose() {
sequencer.close();
}
@Override
public long getPosition() {
return sequencer.getMicrosecondPosition();
}
@Override
public boolean isLooping() {
return this.looping;
}
@Override
public void setVolume(float volume) {
//I have tried several things here and none have worked
}
@Override
public void onPause() {
//ANDROID ONLY
}
@Override
public void onResume() {
//ANDROID ONLY
}
}
:ここでは、デスクトップ上のMIDIプレイヤーの私の現在の実装である http://www.java2s.com/Code/Java/Development-Class/SettingtheVolumeofPlayingMidiAudio.htm
What's the method to control volume in an MIDI sequencer?
How to control the MIDI channel's volume
そして、誰も働いていない。
Androidでボリュームをどのように扱いますか?どのシンセサイザーをデスクトップで使用していますか? –
@ CL.デスクトップでは、私は 'sequencer = MidiSystem.getSequencer();'で説明したシステムシンセサイザーを使用していると仮定していますが、Androidでは簡単に組み込み可能な 'MediaPlayer'クラスを使用しています。 'mediaPlayer.setVolume(volume、volume); 'でボリュームを設定します。 – JoseRivas1998