1
0
Fork 0

allow changing MIDI parameters while playing

This commit is contained in:
Sen 2025-09-05 09:30:20 +02:00
parent 2d9ea3d654
commit 6c9640203b
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
6 changed files with 115 additions and 55 deletions

View file

@ -296,6 +296,27 @@ public class Client implements IThreadListener {
}
}
public static class MidiFlagFunction implements BoolFunction {
public void apply(BoolVar cv, boolean value) {
if(Client.CLIENT.getAudioInterface() != null)
GuiPlayer.INSTANCE.updateFlags();
}
}
public static class MidiIntFunction implements IntFunction {
public void apply(IntVar cv, int value) {
if(Client.CLIENT.getAudioInterface() != null)
GuiPlayer.INSTANCE.updateFlags();
}
}
public static class MidiBankFunction implements EnumFunction<MidiBank> {
public void apply(EnumVar cv, MidiBank value) {
if(Client.CLIENT.getAudioInterface() != null)
GuiPlayer.INSTANCE.updateBank();
}
}
private interface DebugRunner {
void execute(Keysym key);
}
@ -661,29 +682,31 @@ public class Client implements IThreadListener {
@Variable(name = "snd_frame_size", category = CVarCategory.SOUND, min = 2, max = 8192, display = "Intervall")
private int soundFrameSize = 32;
@Variable(name = "mid_dont_fade", category = CVarCategory.SOUND, display = "Nicht ausklingen")
@Variable(name = "mid_dont_fade", category = CVarCategory.SOUND, display = "Nicht ausklingen", callback = MidiFlagFunction.class)
public boolean midiNoWait = false;
@Variable(name = "mid_opl_voices", category = CVarCategory.SOUND, min = 4, max = 192, display = "OPL-Stimmen")
public int midiVoices = 64;
@Variable(name = "mid_keep_notes", category = CVarCategory.SOUND, display = "Stimmen behalten")
@Variable(name = "mid_pitchbend_range", category = CVarCategory.SOUND, min = 0, max = 24, display = "Pitch-Bend-Bereich", callback = MidiIntFunction.class)
public int midiPitchBendRange = 2;
@Variable(name = "mid_keep_notes", category = CVarCategory.SOUND, display = "Stimmen behalten", callback = MidiFlagFunction.class)
public boolean midiKeep = false;
@Variable(name = "mid_play_unknown", category = CVarCategory.SOUND, display = "Unbekannte Banken")
@Variable(name = "mid_play_unknown", category = CVarCategory.SOUND, display = "Unbekannte Banken", callback = MidiFlagFunction.class)
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")
@Variable(name = "mid_velocity_func", category = CVarCategory.SOUND, min = -128, max = 127, display = "Anschlag", callback = MidiIntFunction.class)
public int midiVelocity = 1;
@Variable(name = "mid_opl_bank", category = CVarCategory.SOUND, display = "Bank")
@Variable(name = "mid_opl_bank", category = CVarCategory.SOUND, display = "Bank", callback = MidiBankFunction.class)
public MidiBank midiBank = MidiBank.DMX_DMX;
@Variable(name = "mid_debug_events", category = CVarCategory.SOUND, display = "MIDI-Debug", callback = MidiDebugFunction.class)
public boolean midiDebug = false;
@Variable(name = "mid_visualizer", category = CVarCategory.SOUND, display = "Visualisation", callback = MidiVisFunction.class)
public boolean midiVisualizer = true;
@Variable(name = "mid_ch_16_workaround", category = CVarCategory.SOUND, display = "Kanal 16 als Perkussion")
@Variable(name = "mid_ch_16_workaround", category = CVarCategory.SOUND, display = "Kanal 16 als Perkussion", callback = MidiFlagFunction.class)
public boolean midiCh16Drums = false;
@Variable(name = "mid_allow_switch_perc_ch", category = CVarCategory.SOUND, display = "Perk.-Kanäle änderbar")
@Variable(name = "mid_allow_switch_perc_ch", category = CVarCategory.SOUND, display = "Perk.-Kanäle änderbar", callback = MidiFlagFunction.class)
public boolean midiDrumProgs = false;
@Variable(name = "draw_use_shader", category = CVarCategory.RENDER, display = "Shader verwenden")