add midi player
This commit is contained in:
parent
bbbace7f46
commit
f8b07a32b9
6 changed files with 608 additions and 935 deletions
|
@ -14,7 +14,6 @@ import java.net.InetAddress;
|
|||
import java.net.UnknownHostException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
import java.nio.file.Files;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Date;
|
||||
|
@ -47,6 +46,7 @@ import client.gui.GuiConsole;
|
|||
import client.gui.GuiInfo;
|
||||
import client.gui.GuiLoading;
|
||||
import client.gui.GuiMenu;
|
||||
import client.gui.GuiPlayer;
|
||||
import client.gui.GuiServer;
|
||||
import client.gui.Style;
|
||||
import client.gui.character.GuiChar;
|
||||
|
@ -634,25 +634,25 @@ public class Client implements IThreadListener {
|
|||
private int soundFrameSize = 32;
|
||||
|
||||
@Variable(name = "mid_dont_fade", category = CVarCategory.SOUND, display = "Nicht ausklingen")
|
||||
private boolean midiNoWait = false;
|
||||
public boolean midiNoWait = false;
|
||||
@Variable(name = "mid_opl_voices", category = CVarCategory.SOUND, min = 4, max = 192, display = "OPL-Stimmen")
|
||||
private int midiVoices = 64;
|
||||
public int midiVoices = 64;
|
||||
@Variable(name = "mid_keep_notes", category = CVarCategory.SOUND, display = "Stimmen behalten")
|
||||
private boolean midiKeep = false;
|
||||
public boolean midiKeep = false;
|
||||
@Variable(name = "mid_play_unknown", category = CVarCategory.SOUND, display = "Unbekannte Banken")
|
||||
private boolean midiUnknown = true;
|
||||
public boolean midiUnknown = true;
|
||||
// STR(MID_VELO_LOG, "", "Log.+Minimum [m+nlog(x)]")
|
||||
// STR(MID_VELO_ATTN, "", "Log. Gedämpft [nlog(x)]")
|
||||
// STR(MID_VELO_LIN, "", "Linear [x]")
|
||||
// STR(MID_VELO_ONE, "", "Vollklang [1]")
|
||||
@Variable(name = "mid_velocity_func", category = CVarCategory.SOUND, min = -128, max = 127, display = "Anschlag")
|
||||
private int midiVelocity = 1;
|
||||
public int midiVelocity = 1;
|
||||
@Variable(name = "mid_opl_bank", category = CVarCategory.SOUND, display = "Bank")
|
||||
private MidiBank midiBank = MidiBank.DMX_DMX;
|
||||
public MidiBank midiBank = MidiBank.DMX_DMX;
|
||||
@Variable(name = "mid_debug_events", category = CVarCategory.SOUND, display = "MIDI-Debug", callback = MidiDebugFunction.class)
|
||||
private boolean midiDebug = false;
|
||||
public boolean midiDebug = false;
|
||||
@Variable(name = "mid_visualizer", category = CVarCategory.SOUND, display = "Visualisation")
|
||||
private boolean midiVisualizer = true;
|
||||
public boolean midiVisualizer = true;
|
||||
|
||||
public static final Client CLIENT = new Client();
|
||||
|
||||
|
@ -1025,6 +1025,7 @@ public class Client implements IThreadListener {
|
|||
this.world.updateEntities();
|
||||
}
|
||||
this.soundManager.update();
|
||||
GuiPlayer.INSTANCE.updatePlayer();
|
||||
if (this.world != null)
|
||||
{
|
||||
this.tickWorld();
|
||||
|
@ -3450,37 +3451,6 @@ public class Client implements IThreadListener {
|
|||
Log.NETWORK.debug("Variable %s = %s", name, value);
|
||||
}
|
||||
}
|
||||
|
||||
public void playMidi(File file) {
|
||||
byte[] data;
|
||||
try {
|
||||
data = Files.readAllBytes(file.toPath());
|
||||
}
|
||||
catch(Throwable e) {
|
||||
Log.SOUND.error(e, "Konnte Datei '%s' nicht laden", file);
|
||||
return;
|
||||
}
|
||||
MidiDecoder midi;
|
||||
try {
|
||||
midi = new MidiDecoder(data, this.midiNoWait, this.midiVoices, this.midiBank, this.midiKeep, this.midiUnknown, this.midiVelocity);
|
||||
}
|
||||
catch(Throwable e) {
|
||||
Log.SOUND.error(e, "Konnte MIDI '%s' nicht laden", file);
|
||||
return;
|
||||
}
|
||||
midi.setDebug(this.midiDebug);
|
||||
this.audio.alMidi(midi);
|
||||
}
|
||||
|
||||
public void testMidi(int start) {
|
||||
MidiDecoder midi = new MidiDecoder(this.midiVoices, this.midiBank, this.midiKeep, this.midiUnknown, this.midiVelocity, start);
|
||||
midi.setDebug(this.midiDebug);
|
||||
this.audio.alMidi(midi);
|
||||
}
|
||||
|
||||
public void stopMidi() {
|
||||
this.audio.alMidi(null);
|
||||
}
|
||||
|
||||
private void displayTick(int posX, int posY, int posZ) {
|
||||
int range = 16;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue