Unified Plaits alt firmware

Works perfectly! The only thing I noticed is the aux output, which originally outputs the root note of the chords. It does not follow the roots of the new chord table but instead just puts out the tonic or the next highest note if the tonic is not present in the chord.

Is there any way to have it output the roots, they are the bold notes in the table? Not knowing how it is coded I wasn’t sure about that. If you can share how the table in the firmware is formatted I might be able to explain better what I’m envisioning.

As far as the table goes, I made that myself this morning.

Oh sure that’s an easy change. I just updated it, same link as before. Of course it means the root note jumps around but that is true to the logic of the chord table so I guess that’s all good. Just to be sure though, if you want to test one more time before I put it into the main release that would be much appreciated!

Re: making the table yourself, cool! I guess now that I read back you said as much in your earlier message, I had skimmed over that detail. I was asking mostly because I thought it might be nice to reference back to some kind of source material in the README for this firmware, so if you had a book or paper or something like that that the concept comes from I’d be interested to see it. But if it’s all original, that’s great too!

That worked great! I might want to revise the table a bit though, give me a day or two to decide if I’m happy with it before finalizing if that’s ok

Sure thing, no rush.

Let’s give this a try, I’ll save you the theoretical explanations for now :joy: I’m assuming the aux output is just the first note in the line?

{ 5.00f, 12.00f, 19.00f, 26.00f }, // iv 6/9

{ 14.00f, 8.00f, 19.00f, 24.00f }, // iio 7sus4

{ 10.00f, 17.00f, 19.00f, 26.00f }, // VII 6

{ 7.00f, 14.00f, 22.00f, 24.00f }, // v m11

{ 15.00f, 10.00f, 19.00f, 20.00f }, // III add4

{ 12.00f, 19.00f, 20.00f, 27.00f }, // I addb13

{ 8.00f, 15.00f, 24.00f, 26.00f }, // VI add#11

{ 17.00f, 12.00f, 20.00f, 26.00f }, // iv m6

{ 14.00f, 17.00f, 20.00f, 23.00f }, // iio

{ 11.00f, 14.00f, 17.00f, 20.00f }, // viio

{ 7.00f, 14.00f, 17.00f, 23.00f }, // V 7

{ 4.00f, 7.00f, 17.00f, 23.00f }, // iii add b9

{ 12.00f, 7.00f, 16.00f, 23.00f }, // I maj7

{ 9.00f, 12.00f, 16.00f, 23.00f }, // vi m9

{ 5.00f, 12.00f, 19.00f, 21.00f }, // IV maj9

{ 14.00f, 9.00f, 17.00f, 24.00f }, // ii m7

{ 11.00f, 5.00f, 19.00f, 24.00f }, // I maj7sus4/vii

{ 7.00f, 14.00f, 17.00f, 24.00f }, // V 7sus4

1 Like

Updated - same link as before. And yep, aux is the first note in the line!

What’s the reasoning behind the wide voicings? To be clear I have no objection to spread chords, and the table sounds very nice as is, I’m mostly wondering because it’s inconsistent with the other chord table options (and inherently higher-pitched) so I’d be interested to know what the thinking was there. And if the answer is music theory I’m still interested haha - some of it may go over my head on a first read but it’s a good excuse for me to go learn these things.

Thanks for your ongoing contributions and for testing these out!

Sounds great! I did notice a small typo in my chord names though. The sixth chord should technically have a lowercase “i” since it’s minor. My bad. :nerd_face:

As far as the voicings goes, wider chord voicings just sound more musical, especially when you get into the weirder ones. Think of a guitar, it would be unnatural if not impossible to play complex chords all within one octave. Also, the chords at either extreme of the chart are based on quartal/quintal harmony, which are built by stacking fourths/fifths instead of thirds, so they will be inherently wider. I voiced all these by hand trying to give a lot of variety, but also in a way that they will work well musically together, especially randomly picked since this is modular after all.

Because of the way the timbre control works, though, you can actually still get closed voicings, too. Let’s say a chord has two notes in a lower octave and two in a higher one. If you start turning up the timbre the first and then the second note will jump up into the higher octave giving you a closed voicing. Maybe all the tables should be revoiced? :rofl:

Thanks again for this! Some day I should actually learn to code … I might be really dangerous then :grinning:

Sounds good! I moved it into the main release and deleted the beta firmware (and fixed the typo in code :slight_smile:)

Re: revoicing the other tables to have more chord spread, could be a cool idea to consider in the future to put behind another option, but I’ll leave those as they are for now.

I added a section to the README with a brief description of your table: eurorack/README.md at master · lylepmills/eurorack · GitHub, please DM me if you care to elaborate on/revise my little writeup.

1 Like

Ok, ran into some strange issues with the new firmware. The module seems to be detecting voltage on the model cv input even with nothing plugged in. I was having trouble with the trigger input not triggering the envelope, tried a few combos and couldn’t figure out what was happening. Re-ran the calibration procedure and that fixed it.

If I can reliably reproduce I’ll let you know.

Huh! What were you observing that made you think there was voltage on the model cv with nothing plugged in? What option did you have the model cv input set to (the second light in the menu)? Is it possible it was set to control aux crossfade (red)? If so, and the frequency knob option (first light in the menu) was set to control something other than aux crossfade (green), then the default aux crossfade value with nothing plugged in is 50% - I set it up that way because the MODEL input is bipolar, and if the frequency knob is set to something other than aux crossfade there is no way to set a middle point, so 50% is the natural middle point.

In any case if you reproduce please let me know.

What made me think that was after power cycling I had the one blinking light (noting the selected model) and one solid light (noting cv addressed model). I was unable to get standard operation back when setting all menu lights back to green.

Now that I’m running back through the steps to double check what blinking/solid lights represent, I’m noticing that it only changes the selected model on a new trigger when addressing model via cv… Maybe the internal voltage offset was normal but the trigger detection wasn’t working as expected? Sorry for throwing out issues without being able to clearly track it describe them. All is working as expected again. Possibly user error/ misunderstanding. I’ll definitely try to make note if it if it happens again.

Hey, big thanks for this! I just saw a post from Jeaux on reddit this morning, I had no idea this existed until now. Updating the firmware and testing it this weekend. Thanks so much to you both, or all if there were also others involved.

This is so amazing! Thank you for your work. Been using the locked octave firmware on my 2 Plaits since you dropped it, but this adds so much more usefulness. I’m using 1-red, 2-green, 3-red, 4-green, 5-N/A and 6-yellow.

I realize you’re probably done taking requests, but an option for CV over octave shift would be a lovely addition for a light number with an extra option left.

A yellow setting for Level CV in is available I think, and “octave level” would be easy to remember :wink:

1 Like

To be clear there is no 3 option limit in the menu, that just happens to be the most different options any one setting has right now. There could easily be 6 (or 9) options using blinking lights to indicate more choices.

I’m not opposed to adding CV control over octave transposition, but with the above in mind, would you still want it as an option for LEVEL over MODEL? MODEL seems like a more natural fit to me because it takes bipolar voltages whereas LEVEL only accepts positive voltages.

(of course it’s not really either/or because in code we can do whatever we want, but because there is a space constraint on the size of the binary I’m trying to avoid just implementing every possible option for everything)

1 Like

What if the red model cv mode is just for whatever you have the freq knob set to, whether it be xfade or octave?

edit: Also maybe add the xfade to Level and switch colors with LPG Decay. That way yellow on menus two and three gives you full cv control of the LPG. The original way to adjust the LPG uses yellow meters so that’s a good mnemonic.

Xfade on unipolar makes sense too. Normalized to full like the default Level cv, aux out would default to full when nothing is patched.

1 Like

Hi Lylem,

Thank you for your work :smile: Really useful to be able to add some variation to the decay time when we don’t have available external envelopes and filters!
Also love the new chord tables :heart:

Would it be a good idea to be able to select an alternate envelope curve as well? Especially when using the chords it would be nice to have something with an attack stage, but still controlled by only one cv.
Perhaps its possible to borrow code from the Tides v2 Slope knob, or from Streams Envelope mode Shape knob?

Thanks for the suggestions @jeaux, I’ll think on those.

@pseudorandom sounds like an interesting proposal, I’ll look into Streams/Tides envelopes when I get some time and see what I can do.

At the moment I’m pretty focused on some exciting new stuff for Rings, so I might not get back to Plaits for a few weeks. Stay tuned!


I think @pseudorandom idea is actually great! The internal VCA in Plaits is very handy, but being able to modulate the envelope and varying that plucky sound is really nice :smiley:

I just got around to installing this alt firmware, and not having to worry about breathing on the frequency knob is glorious. Now I just wish that my Frap Tools Brenso would do the octave thing when its knob is locked.