Stages - qiemem's alternative firmware

Thanks to @pichenettes for splitting the topic! Hope I didn’t distract from the new sequencer.

Since this is its own topic now, here’s some more information about the firmware!

This is an unofficial firmware for Mutable Instruments Stages. It was originally created by @joeSeggiola and started as a modification to let you enter and exit the “Ouroboros” mode (the harmonic oscillator easter egg) at runtime, while the module is powered on. Then, it evolved adding the ability to sequence harmonic ratios, enable slower free-running LFOs and providing a completely alternative mode that transforms the module into six identical DAHDSR envelope generators.

This fork adds the following to segment generator mode:

  • Control over each segment’s polarity, allowing for, for instance, bipolar LFOs; hold button and wiggle pot to toggle
  • Control over each LFO segments frequency range; hold button and move slider to top, middle, or bottom to select range
  • Control over ramp segments’ re-trigger behavior; hold button and wiggle pot to toggle
  • Arbitrarily slow clocked LFOs and improved audio-rate clocked LFOs
  • Hold and step segment quantization; hold button and move slider to select scale; slider transposes within key, allowing selection of mode
  • Start and end value tracking for ramp segments, which can be used as a kind of VCA or crossfader

See segment generator mode’s usage instructions for details. None of these features interfere with the normal workflow of Stages.

This fork also adds a new mode, advanced segment generator, which:

  • Adds a new random segment type, giving access to three different random/chaotic algorithms:
    • Uniform random CV
    • Emulation of Tom Whitwell’s Turing Machine
    • Logistic map
  • Makes single, non-gated, non-looping ramp (green) segments slew with independent rise and fall: CV is value, pot is rise, and slider is fall; this can be used as ASR envelope or a envelope follower as well
  • Makes single, looping step (yellow) segments attenuate instead of slew

Finally, this fork allows you to control the frequency range of the harmonic oscillator mode (aka ouroboros mode; the Stages easter egg), giving access to 5 harmonically related LFOs.

This fork includes the changes in official firmware 1.1 as well as the extended sequencer official firmware.

:warning: Warning: This firmware does not work with multiple chained modules (yet). It could behave strangely if chained. Obviously I’m not responsible for any issue you might encounter.

Download and installation

:package: Download the latest WAV file here and follow the firmware update procedure here. Source code is available here. joeSeggiola’s original source code is available here.

IMPORTANT: Installation will clear the module settings if coming from a different firmware. Right after updating from an earlier version of this fork, the stock Stages firmware or joeSeggiola’s version, Stages may continuously cycle between green, orange, and red LEDs. Turning the module off and on again should restore functionality. This happens because this fork expands the amount of data stored for each segment, so will be incompatible with the settings stored from a different firmware. If you encounter problems, please let me know, either in a GitHub issue or otherwise.

2 Likes

Oh this is AMAZING! I will definitely be spending a lot of time with this firmware, I love CV addressed sequencers.
I’ve been using a variant of the original Stages firmware that just slowed the LFOs down a bit. Has anyone modified this FW to be identical to the published version but with slower LFOs? I may need to dip my toes into the firmware modification workflow if nobody has… But I’m not at all a programmer so that would take me some time :grin:

@qiemem’s firmware allows you to adjust LFO ranges to get slow ones. This plus Émilie’s new sequencer additions are truly awesome!

I designed the above firmware so that if you don’t care about the fancy stuff, it stays out of your way. If you stick with the default mode, you can modify an LFOs frequency range by holding down its button and moving the slider to the bottom (or top for audio-range). The LED will indicate your frequency range.

You could also switch to mode 3 (hold the third button down for 5 seconds) and then all your LFOs will be 8x slower. That mode does include a fourth segment type (random) and other features though, so might be too much.

If you do want to make the change on the official firmware, I would definitely recommend it! It’s been really fun to get into. You’d basically just change this line to divide by the desired factor: https://github.com/pichenettes/eurorack/blob/master/stages/segment_generator.cc#L333

Ah, thanks so much for that tip! Your firmware sounds like a powerhouse but I’m pretty used to the normal Stages workflow so I think I’ll try and do the modification myself…

Wow and wow
First wow goes to alt firmware from @pichenettes, the second comes by reading the github of @qiemem. You are amazing. I’ll install it tonight on two chained stages to check if it works

1 Like

OK Tested with two connected stages modules:

RIGHT HAND MOUDLE:

  • works in every modes

LEFT SIDE MODULE

  • works in 6DAHDSR mode, in Ororbouros 5 and 6
  • Doesn’t work in mode 1, 2, 3
    • leds doesnt change when button pushed
    • strange behavior with different result depending mode 1 or 2
    • output leds doesn’t responds
    • information seams to pass from one module to another

It shoudl be mentionned that

  • no differenece if both module are in the same mode or not
  • no difference if the mode is selcted during process or booted up in the mode
  • both module are working fine when disconected
    I tried to reinstall the firmaware with same results
  • the boot up LED dance shows that the modules are connected
  • interesting: when flashing firmware, the module reboot itself and is 100% effective. the problem only happens after the first power OFF and back ON

I can run other test if needed

2 Likes

bug found,not present in @pichenettes’s update

problem when making any kind of triggered figure that involves more than one step

  • ex: gate and CV output plugged to stg1, other stages set to any colors
  • then braking the chain by connecting a dummy in, say, gate 4
  • the connection doesn’t break and the the CV output is still outputing stages 1 2 3 4 5 6 as before
  • it actually output a kind of “recording” of the 6 stages, because chaging fader on stage 4,5,6 has no effect
  • the led response from the led out and fader led are braking! but not the CV out
  • changing stage color 1 2 3 resolves the issue and the CV finally output the first 3 stages
1 Like

That specific point is by design. It allows you to temporarily unplug a cable to patch a new one without causing the module to disrupt its behavior.

OK nice! I have installed your firmawre and it doesn’t have the other bugs

Thanks for the report! I’ve reproduced it. Looks like it happens for “splitting” groups in general, not just step sequences. I’ve created an issue to track it: https://github.com/qiemem/eurorack/issues/12. Almost certainly an issue in my firmware. As mentioned, for others than run into this, just hit any of the segments to the left of the gate three times to get it back to the state it should be in.

1 Like

Thank you so much for testing this! Disappointing but not surprising it doesn’t work. I tried to keep the chaining code intact, but without a second module to test… :man_shrugging: I would absolutely appreciate more testing though :smiley:

The rightmost module is responsible for the polling of all buttons, so the fact that that’s the only one that works makes sense. If you plug a gate into the module on the left, does the module on the right seem to recognize it? For instance, if you set a green segment to loop, does it behave as an LFO or does it recognize that it’s in a group? Does the left module respond to gate signals at all?

What makes you say that “information seams to pass from one module to another”? Trying to figure out where the communication breakdown is.

If you plug a gate into the module on the left, does the module on the right seem to recognize it?> Blockquote

Since the last re-flash it behaves all consistently, only the button can’t be changed. left module respond to gates and travel from one module to another,

For instance, if you set a green segment to loop, does it behave as an LFO or does it recognize that it’s in a group?

on left module I can’t, buttons are not responding on Right module, a looping green in a group behaves like part of a group, even when the group start in the left module

I don’t know if it’s helpfull but, when creating a 12 stage group, and later set the right side module to oroboros, the 12 stages sequence continues to be emmitted to the left CV output, as it was a recording.

Also, while the right module buttons are not responding to change color or loop, they do work with the added features (push + fader, push+knob) and are effective

1 Like

This is incredibly helpful. Thank you so much. I’ve created an issue to track problems when chained modules are in the same mode and one to track when they are in different modes so this thread doesn’t get too bogged down.

To clarify, you mean on the left module yes? Buttons are working on right, not working on left?

1 Like

Sorry yes,
Left module, buttons are not working except for combo 'push+fader and push+knob, but they don’t change mode and they don’t loop

everything is 100% fine with right module

1 Like

This should now be fixed in v1.0.2. Thank you again!

1 Like

Outstanding work! Thank you (and Emilie of course!)

1 Like

It looks like I messed up some links when copying the description from GitHub, and I can’t seem to edit my post anymore. Sorry about! Here are the the corrected links:

Thanks to @pyerbass for helping test module chaining! I managed to borrow a second Stages for the weekend and think I’ve got something working pretty well now.

Here’s how it works:

  • A Stages will only chain with other Stages that use the same firmware and are in compatible modes (mode 1 chains with itself, modes 2 & 3 chain together, and the other modes are correctly ignored).
  • A module in an incompatible mode will split the chain. So, with mode 1 - mode 5 - mode 1, the two modules on either end will not be chained, but mode 1 - mode 1 - mode 5 will have the two mode 1 modules chain
  • Changing the mode on one module triggers a rediscovery of neighbors in the other modules, so the chain will correct itself as modes change whether you’re adding or removing modules from the chain by changing mode

A preview build of it is attached, and I would be very grateful to anyone willing to try it out. I’ve only been able to test it with two modules, but it should work with more :crossed_fingers: It has also been updated with the latest version of the official firmware, so has the new sequencer orders pichenettes just added.

stages-bipolar-chaining-test.zip (433.0 KB)

5 Likes

Thanks you a million!! I’ll give it a shot with 5 modules!
Just kidding, I’ll have to stick with two

Thanks again!!

1 Like