Plaits Alternative Firmware: Re-routable MODEL CV

Hello folks,

I have made an alternative firmware to Plaits.

With this firmware you can reroute MODEL cv to six destinations:

1. MODEL (original mode)
2. LPG mix.
3. TIMBRE amount amount.
4. FM amount amount.
5. MORPH amount amount.
6. DECAY time.

To access the mode, hold FIRST BUTTON and tap SECOND BUTTON. The first six dots will light up: Green for the current selection and red for the others. To cycle through the selections, continue holding the FIRST BUTTON and tap the SECOND BUTTON. Release FIRST BUTTON when you are done.

The state of the MODEL cv routing will be persistent over power cycles.

[Calibration mode has been removed for this firmware, you will need to re-install the original firmware to calibrate.]

Issues: For some reason, as you are holding down the first button, the sound of the unit becomes very bit-crushy and bleeps. This goes away when the first button is released. Maybe I’m over-taxing the processor?

As usual: Let the hacker beware. I have no real idea what I’m doing. I’m just another internet guy. Maybe this firmware is really bad? I don’t know–it seems to work fine on mine though.

1 Like

I have asked the author to rework this alternative firmware, as it could destroy the flash memory of the module it is installed on after several seconds of use.

If you have seen this topic before me, please immediately revert to the original firmware.

https://mutable-instruments.net/modules/plaits/firmware/

Meanwhile, the link to the code and update file have been deleted from the original post.

1 Like

I have corrected the original problem, as it was an easy fix. For future reference for hackers, make sure not to unconditionally call SaveState in the main UI poll.

But I have one last problem: After releasing Switch 0 to return to UI NORMAL, touching any of the hidden param knobs will show that the display is stuck in hidden param mode (yellow lights), and it’s not until pressing Switch 0 or 1 again that it releases back to NORMAL.

While in NORMAL, to get in to my mode:
//bgFMI Hold WRENCH and tap LEVEL to cycle through MODEL CV routings.
if (switches_.pressed(Switch(0)) &&
switches_.released(Switch(1))) {
ignore_release_[1] = true;
mode_ = UI_MODE_DISPLAY_MODEL_CV_ROUTING;
}

I put that ignore_release_[1] = true in there because it was also switching the engine each time.

//bgFMI
case UI_MODE_DISPLAY_MODEL_CV_ROUTING:
if (switches_.released(Switch(1))) {
patch_->model_cv_target = (patch_->model_cv_target + 1) % 6; //Six modes
}
if (switches_.released(Switch(0))) {
ignore_release_[1] = false;
press_time_[0] = press_time_[1] = 0;
SaveState(); //Only Save when finally exiting this ROUTING mode
mode_= UI_MODE_NORMAL;
}
break;

It seems as though the “just_pressed” characteristic is getting picked up on the next loop though ReadSwitches and therefore dropping into UI OCTAVE and UI HIDDEN. Is there a clean way to prevent this?

Your code is probably interfering with the code responsible for displaying the current value of the decay/LPG setting on a long press of the first button.

1 Like

I think this thread is probably haunted now, I mean, even looking at it might give your Plaits the flu, but I have in fact finished the firmware, if anyone is interested.