Plaits with frequency locking and aux crossfade (alt firmware)

Hi friends - I’m pleased to share a new alternative firmware for Plaits. The changes are minor but add two quality of life features I’ve personally been wishing for. I hope some of you also find them useful.

First and foremost, this revision adds frequency locking for Plaits in the style of Frap Tools Brenso. To lock or unlock coarse frequency, you long-press (2+ seconds) both buttons at once. The FM attenuverter continues to work as a fine frequency control when the FM input is unpatched, and the V/Oct and FM inputs continue to work as normal when patched.

This gesture replaces the calibration procedure, so if the module needs to be recalibrated for any reason after installing this alt firmware, you’ll need to revert to the stock firmware first. This can also be seen as a benefit, as you’re less likely to end up accidentally recalibrating your module.

In addition to making it harder to inadvertently detune the oscillator, this frequency locking frees up the frequency knob for other purposes. When frequency is locked a hidden parameter is now exposed, controlled manually by the frequency knob, for crossfading between the main and aux synthesis models (full-CCW for the main model, full-CW for the aux model). This crossfaded output will be present at the aux output while the main output continues to output only the main synthesis model as in the stock firmware. This replaces the need for an external mixer/crossfader in order to use both models at once, though it is not under voltage control - for voltage controlled crossfading you’ll still need to use an external module or two.

If you’d like to use the aux crossfading without the frequency locking, you can simply switch into frequency locked mode, adjust the crossfade, and then switch back out; the aux crossfade setting you’ve chosen will be maintained.

Frequency locks and aux crossfade settings are preserved across power cycles.

Thanks to @joeSeggiola for sharing his script for generating and playing new firmware files, which helped speed up my development cycles.

Click here to download the WAV file for the firmware update. I’ve done my best to test this new firmware out but please let me know if you run into any issues!



Hi lylem,

Thank you for sharing your code. A ‘frequency lock’ feature was something I’ve been meaning to request/suggest for some time. It’ll be a huge time saver for tuning pre-performace, as well as avoiding unintentional nudging at critical moments. I look forward to giving it a whirl.

Hey, before I update this firmware, I remember at some point someone mentioning it being a no-no to press buttons 1 & 2 together on plaits? Thought it reset it or did something undesirable. Like I say just want to make sure before I go and do this!

1 Like

Okay yes I should’ve read the full description, I see where it says [quote=“lylem, post:1, topic:17340”]
This gesture replaces the calibration procedure, so if the module needs to be recalibrated for any reason after installing this alt firmware, you’ll need to revert to the stock firmware first. This can also be seen as a benefit, as you’re less likely to end up accidentally recalibrating your module

I think this was what I was referencing

Yep that’s right!

Wow, this is incredibly useful! Will update my three Plaits asap!

@lylem, is there any way to repurpose the Morph CV input to control the decay duration of the LPG, as one would by pushing the left button and turning the Morph knob?
I often wish it was possible to play notes of different length with Plaits without having to use a modulatable external envelope into the Level input.

Something like that is certainly possible, though personally I wouldn’t want to sacrifice the Morph CV for that, I’d rather sacrifice something like the Model/Engine CV, which I rarely use.

If you (or someone else) would like to take a stab at it, all it would take would be a few lines updated in the Voice::Render method. A very simple version would be to do this: anywhere in that method where modulations.engine is currently used, you could zero it out to 0.0f, and anywhere patch.decay is used you could replace it with patch.decay + modulations.engine. A slightly improved version might be to save the value of modulations.engine somewhere upon receiving a trigger, i.e. S+H it.

1 Like

Wow, I‘m already super happy to hear that it‘s possible at all.
If I knew anything about working with code I‘d make three separate firmware versions with my requested feature for my three Plaits.
I‘d use a different input on each, thus sacrificing a parameter that I could then still use on the other two.
I‘ll check if any of my more tech/software savy friends know how to do this.

This is a game changer for me… much thanks! Can’t wait to get this on board…

I’ve download the wav, what is the procedure for updated to this firmware?

Hi, thanks! You can find the firmware update procedure in the manual

Thanks, So I’ve followed the procedure, do I have to hold down the buttons to test it? or is there another way to be sure I’ve done everything right? I’m hesitant to try in case I enter the calibration mode.

I’m afraid I don’t have any other way for you to confirm that the new firmware is installed, but if all went according to the description when you updated the firmware, I’m sure it’s fine!

tested. working. can’t wait to have a proper noodle now. Thank you so much mate


Hello! This is a really nice addition to the firmware, thanks for sharing :slight_smile:

1 Like

Just updated my Plaits to this firmware. Works a treat. Love the output crossfading. Great work. :slight_smile:


That’s a great feature! I hope that frequency lock will be included in next MI oscillators :pray:

1 Like

This sounds great! How difficult would it be to change the locked behavior of the frequency knob so that it acts more like a notched octave knob for changing the pitch in one octave increments? Would be a really fun playability feature :slight_smile:

1 Like

That’s a good idea, here you go!