Ribbons Boot State

So far I’m only a few days in with Ribbons but one thing that was confusing me until Jaak explained it was the save system. From my understanding, ribbons saves its full state if you press the push button and wait ten seconds, but when it boots up it always lands on the first page and goes straight to unlocked on all four knobs. In my case this was causing some confusion because I tend to leave it on the Red page and would have the reverb decay set fairly high. Ribbons would save my settings just fine, but when it booted up it would spam the hpf to the position set by knob 1 (which had just been used to set RD to say 3oclock) meaning little to no audio would make it through the effect. I have a few ideas how this somewhat confusing situation could be avoided.

First, ribbons could remember which page the user was controlling when it does its state save. This way, when it boots up it could go back to the page where the knob positions are relevant while maintaining the unlocked state for them as it does now.

Second, it could simply boot with the knobs in the locked state (like they are when you change pages) but still go to page 1 as it does now. This way, it would start up with all 16 knob parameters set where they had saved from and none would update until the user moves a knob. This would prevent the filter(s) from inadvertently closing so far they prevent the effect’s signal being audible, etc.

Hope this all makes sense. It’s a sweet pedal so far, absolute joy to play with!

2 Likes

Great feedback Ray. I think both proposals are great. If I had to choose one I would go with the first one. I think I have a couple spare bytes of space I can use in the 256 bit “state” structure to store the last page used.

I would need to comb through the UI code and just make sure everything gets initialized correctly with a variable start page (I think this will be easy… just need to spend 1-2 hours verifying).

Does anyone else have a preference ? Option 1 or 2?

1 Like

I think I have also been experiencing this phenomenon. For example, I will record a loop before touching any of the parameters on the green page and after making the loop there won’t playback on account of one of the filters cancelling it out. Either option sounds great to me!

2 Likes

I didn’t notice anything in the manual about holding the button for 10s to save state. Perhaps that has been discussed elsewhere?

Anyhow, I hope I’m not hijacking this thread, but there’s a couple things connected to this behavior that I wanted to discuss. If anything warrants its own thread let me know.

Like when booting, when switching between normal and looper modes the Ribbon does not remember the previously selected page. If the behavior is changed for booting, perhaps it can also be changed for switching modes? It would make for a smoother workflow, IMO.

From what I can tell, the knob “locking” means that the knob won’t jump to the new value until it has moved a certain amount (20% rotation or something, I forget). If that’s the case (which it seems to be - correct me if I’m wrong) this can lead to some jarring effects. For instance, if “wow frequency” is set quite low, but then you go back to that page while the corresponding knob is fully clockwise and try to tweak the frequency.

I’m not sure how pedals with multi-function knobs typically handle this, but a lot of synths provide for multiple “pot modes”. DSI/Sequential, for instance, typically offers “relative”, “passthru”, and “jump”. Their manuals explain it better than I can:

  • When set to relative, changes are relative to the stored setting. In Relative mode, the full value range is not available until either the minimum or maximum value and the respective lower or upper limit of the pot’s travel is reached.
  • In Passthru mode, turning the pot has no effect until after the edited value equals the preset value (that is, until the edited value “passes through” the stored value).
  • Jump mode uses an absolute value based upon the position of the pot when edited: turn a pot and the value jumps immediately from the stored value to the edited value.

I wonder if Ribbons could use something like the “passthru” mode, instead of what seems to be a “lock + jump” mode? This could be another solution to the OP’s issue.

(I’ve only had about an hour with Ribbons since getting it yesterday, but I find it wonderful and inspiring! These “page 1 reset” and “pot mode” issues are the only things I could complain about, and they are relatively minor.)

1 Like

First off, loving this feedback. Thanks so much for taking the time to express your thoughts and feelings about Ribbons and what is working and what could be improved.

Let me take a quick moment to summarize the critiques brought up and then share how I’m hoping to address them within the next month.

Critiques:

  1. Ribbons does not save the last page used between power cycles
  2. Ribbons always defaults to page one when switching between normal mode and looper mode
  3. Ribbons parameters “jump” when modified after switching pages

Fixes I am going to attempt to address these things:

  1. I can add the last used page to the “saved state” settings in the next update
  2. I can track the last used looper page and jump back to it when switching between modes. This is the first time this has been requested but it makes sense to me to include it.
  3. I am working on a relative mode for the pots. This was brought up once or twice during beta testing but wasn’t something I felt people cared about that much. It is starting to become more commonly requested though so I will try to prioritize it. I’ll need some feedback from users on the forum to test it before I officially implement it. I think it should resolve the parameter jumps and still feel “natural”.

Let me know if you have any other questions.

3 Likes

Regarding Ribbons “save state” function:

Ribbons does not save state by holding the push button for 10 seconds. I want to emphasize this so other users don’t get confused when they read this thread.

Let me share is actually going on - Ribbons needs to save state in-order to remember your last-used settings between power cycles. Flash memory has a finite life span though and so we need to be careful how often we save state. I have set Ribbons up in a way where it tracks the push button to see if it is a good time to save state. So basically if you don’t change pages for 10 seconds, it assumes you’ve stopped changing settings on other pages and that it is an ok time to save state. If we save state in this manner then Ribbons flash memory will last at least 100+ years.

This is not documented in the manual because it is supposed to be transparent to the user. Some may find it informative though and so I will add it soon (I just don’t have access to a computer at the moment).

3 Likes

Sorry for not responding sooner!

@jaakjensen Everything you suggest sounds good to me. I personally think if there is a priority assigned to these critiques/solutions it would be 3, then 2, then 1. Critique #1 will probably be negated by addressing critique #3.

I’d be happy to help test any beta updates related to the pot behavior, assuming I have some spare cycles at the time.

Thanks for clarifying about the 10 seconds issue. That makes total sense, having worked with flash memory on embedded devices in the past. I did not actually realize (until now) that Ribbons saved state between power cycles, but that does explain a few “oh wow, where did that come from?” things. Does that apply to both regular and looper settings, or just the regular settings? I assume it does not apply to data recorded in the looper or active MIDI Note On messages?

1 Like

Awesome! I’ll reach out when it’s ready.

Since the looper is supposed to be an easter egg it doesn’t retain state between power cycles and resets back to default settings. Almost all of the other normal parameters do though (the four pages of settings and the last selected Touch Mode).

It doesn’t apply to data recorded in the looper or active MIDI Note On messages.

1 Like

Just giving support for relative knobs.

For the relative mode on the pots, here are two systems I’m fairly familiar with and feel work quite well. In case you’re not familiar, on Mutable Instruments’ “Clouds” module there’s a “blend” knob that controls four different parameters depending on the selected page. Here’s a block from the manual:

It could happen that the position of the knob does not match the value of the parameter - the curse of multi-function knobs! If this is the case, turning the BLEND knob clockwise (resp. counterclockwise) causes a small increase (resp. decrease) in the value of the parameter, and turning it further causes larger changes, until the value progressively catches up with the knob’s position.

Another system I’ve seen and played with that works well (for me) is Shakmat Modular’s “Harlequin’s Context” module where the knobs “lock out” until their position matches that of the parameter - to unlock the knob, you have to turn it to the current param position, then the param will move with the knob. From the HC manual:

Each channel (A, B, C & D) has a dedicated potentiometer controlling its parameter [A]. When switching between Scenes the module locks the potentiometer, so that it recalls the values from the scene and stops referring to the potentiometer position. To unlock the potentiometer, you must pass by the memorised value. Each channel also has a white LED [B] indicating whether the potentiometer is active or locked, and a green LED [C] showing the activity of the channel.

This system works well for HC because it has several LEDs per knob, but it might work well for Ribbons as well if there were some sort of led flash behavior to indicate a locked knob - a white pulse over the parameter value color and brightness level, for example. These are the two “soft takeover” methods I’m familiar, hopefully they give you some ideas! I’d be happy to lend you both my Clouds and my HC if you think getting hands-on would help!

I’ll be re-working some of the code from Plaits to do the relative mode, which basically does what Clouds does.

It’s already in the code base, I just need to uncomment and test it very thoroughly. Gotta make sure there are no conflicts between CV/EXP and MIDI control of parameters.

oh, awesome! I hadn’t even considered Plaits would have a soft takeover, I guess that would have to be related to the “hidden” settings like the envelope and the pitch range? I don’t think I’ve ever seen anything about its knobs having a “slew” so to speak in the manual. Really looking forward to this update!

@nalinodrog @CrazyEmperor893 @diophantine

I have completed fixes #1 and #3 for the next firmware update. Relative parameter adjustments are IN and jumping parameters are OUT! :grinning:

I’m wondering if you could give me some feedback on fix #2. Currently when you jump between looper mode and tape mode (or vice versa), it always defaults to page 1 / track 1. Is the preferred functionality to have Ribbons always remember the last Page AND Track you were using? For example… say you’re on Page 2 in tape mode and then you jump to looper mode and go to Track 4. If you jump back to tape mode, you want to land on Page 2 and then if you jump back to looper mode, you want to land on Page 4?

Heck yeah, so excited for the update!

That seems like a reasonable solution for #2 to me, though honestly I haven’t actually gotten around to playing with looper mode yet myself :see_no_evil:

1 Like

I have mixed thoughts.

On the one hand, returning to page 1 every time in Tape mode allows a really consistent starting point.

On the other hand, I could be in the middle of a loop, flip to tape and change my highpass, go to page 4, adjust reverb, and then head back to tape to adjust my loop volume, etc.
Initially I reacted that it shouldn’t remember the last page but should instead default to the next blank track in the looper. But then I thought more and maybe returning back to loop page 1 would make sense.

It’s the tape mode that kinda makes me want to have different behavior based on what the looper is doing.

If I am in Looper mode but no loops have data, then I think it makes sense to default back to page 1 in tape mode. It acts like an exit back to the default interaction ribbons loads at boot up.

If I’m in looper mode and any loops are running, then return back to the previous tape page that was accessed prior to entering looper mode.

But maybe that is more complicated and over engineered than necessary. It’s also not entirely consistent and that may be a bit of a steeper learning curve.

Up to you ultimately of course, and maybe prototyping that functionality would show whether it is worth implementing and testing.

1 Like

This would be my preferred functionality - yes. (Of course, I don’t know if my use case is representative of other users or not… as a hands-on table-top unit.)

Awesome news about relative parameter adjustments!! :+1: Really exciting to hear!

1 Like

Ditto. This would also be my preference.

@chmjacques @diophantine @nalinodrog @CrazyEmperor893

v0.8 is now available which includes fixes #1 and #3. Check the development blog for a download link. Instructions for updating are at the end of the user manual.

I did not have enough time to complete fix #2 (tracking the last used page when jumping between looper mode and tape mode). It was more nuanced than I expected and I was worried it might introduce some unexpected bugs. I’ve decided to proceed with releasing the v0.8 update so that the next batch of 50 units released tomorrow have most of the new features / bug fixes.

Fix #2 is still on the to-do list and should be available in v0.9

3 Likes

Thanks so much for this! I updated my firmware when you released it and (based on the LEDs) the knob response seems great. Now I just need some time to explore more (i.e. with audio, heh), but I’m really excited.

1 Like