Skip to content

Commit

Permalink
Bit of MIDIThing cleanup (menus, update rates)
Browse files Browse the repository at this point in the history
  • Loading branch information
hemmer committed Mar 25, 2024
1 parent 9d3a09d commit e696dea
Showing 1 changed file with 10 additions and 32 deletions.
42 changes: 10 additions & 32 deletions src/MidiThing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,11 +121,11 @@ struct MidiThing : Module {
""
};

const std::vector<float> updateRates = {200., 1000., 4000., 16000.};
const std::vector<std::string> updateRateNames = {"200 Hz (fewest active channels, slowest, lowest-cpu)", "1 kHz", "4 kHz",
"16 kHz (most active channels, fast, highest-cpu)"
const std::vector<float> updateRates = {250., 500., 1000., 2000., 4000., 8000.};
const std::vector<std::string> updateRateNames = {"250 Hz (fewest active channels, slowest, lowest-cpu)", "500 Hz", "1 kHz", "2 kHz", "4 kHz",
"8 kHz (most active channels, fast, highest-cpu)"
};
int updateRateIdx = 1;
int updateRateIdx = 2;

// use Pre-def 4 for bridge mode
const static int VCV_BRIDGE_PREDEF = 4;
Expand Down Expand Up @@ -279,7 +279,6 @@ struct MidiThing : Module {
}

// debug only
bool setFrame = true;
bool parseSysExMessagesFromHardware = false;
int numActiveChannels = 0;
dsp::BooleanTrigger buttonTrigger;
Expand Down Expand Up @@ -349,10 +348,7 @@ struct MidiThing : Module {
m.setStatus(0xe);
m.setNote(pw & 0x7f);
m.setValue((pw >> 7) & 0x7f);

if (setFrame) {
m.setFrame(args.frame);
}
m.setFrame(args.frame);

midiOut.setChannel(c);
midiOut.sendMessage(m);
Expand All @@ -364,8 +360,6 @@ struct MidiThing : Module {
json_t* rootJ = json_object();
json_object_set_new(rootJ, "midiOutput", midiOut.toJson());
json_object_set_new(rootJ, "inputQueue", inputQueue.toJson());

json_object_set_new(rootJ, "setFrame", json_boolean(setFrame));
json_object_set_new(rootJ, "updateRateIdx", json_integer(updateRateIdx));

for (int c = 0; c < NUM_INPUTS; ++c) {
Expand All @@ -386,11 +380,6 @@ struct MidiThing : Module {
inputQueue.fromJson(midiInputQueueJ);
}

json_t* setFrameJ = json_object_get(rootJ, "setFrame");
if (setFrameJ) {
setFrame = json_boolean_value(setFrameJ);
}

json_t* updateRateIdxJ = json_object_get(rootJ, "updateRateIdx");
if (updateRateIdxJ) {
updateRateIdx = json_integer_value(updateRateIdxJ);
Expand Down Expand Up @@ -428,6 +417,7 @@ struct MidiThingPort : PJ301MPort {
}
));

/*
menu->addChild(createIndexSubmenuItem("Get Port Info",
{"Full", "Port", "MIDI", "Voice"},
[ = ]() {
Expand All @@ -437,6 +427,7 @@ struct MidiThingPort : PJ301MPort {
module->requestParamOverSysex(row, col, 2 * mode);
}
));
*/
}
};

Expand Down Expand Up @@ -769,7 +760,7 @@ struct MidiThingWidget : ModuleWidget {

menu->addChild(new MenuSeparator());

menu->addChild(createSubmenuItem("Select Device", "",
menu->addChild(createSubmenuItem("Select MIDI Device", "",
[ = ](Menu * menu) {

for (auto driverId : rack::midi::getDriverIds()) {
Expand Down Expand Up @@ -802,25 +793,12 @@ struct MidiThingWidget : ModuleWidget {
}
}));


menu->addChild(createIndexSubmenuItem("Select Hardware Preset",
{"Predef 1", "Predef 2", "Predef 3", "Predef 4 (VCV Mode)"},
[ = ]() {
return -1;
},
[ = ](int mode) {
module->setPredef(mode + 1);
}));


menu->addChild(createIndexPtrSubmenuItem("MIDI Rate Limiting",
menu->addChild(createIndexPtrSubmenuItem("All channels MIDI update rate",
module->updateRateNames,
&module->updateRateIdx));

menu->addChild(createBoolPtrMenuItem("Set frame", "", &module->setFrame));

float updateRate = module->updateRates[module->updateRateIdx] / module->numActiveChannels;
menu->addChild(createMenuLabel(string::f("Per-channel MIDI rate: %.3g Hz", updateRate)));
menu->addChild(createMenuLabel(string::f("Per-channel MIDI update rate: %.3g Hz", updateRate)));
}
};

Expand Down

0 comments on commit e696dea

Please sign in to comment.