tagirov wrote:To Amos:
LP STAGE II, 3.1.667 OS
BUG: Strange behavior while saving LFO SYNC setting in preset when CLK SRC=MIDI
1) Go to MASTER / LFO SYNC menu
2) Set CLK SRC: MIDI
3) Set CLK DIV to any value using VALUE pot.
4) Press PRESET, STORE, set OVERWRITE:YES and STORE again to store the preset
5) Go back to MASTER - you will see that CLK DIV value is saved in previous state (not the value you have just set in step 3).
BUT if you go back to step 3, and use the alternative way to set the value: press/enable LFO RATE button in Modulation section and set CLK DIV value with Modulation pot, then save the preset (step 4), you will see that the CLK DIV value is saved as expected.
ALSO, if you set CLK SRC: INTERNAL in step 2, the CLK VALUE setting will be saved in preset, regardless of the method (pot) you use to set this value (VALUE or LFO RATE+MODULATION).
This is not exactly a bug; it's just a confusing implementation. Let me explain what is happening, and then, if you can think of a better way to do it, you tell me.
To begin with, the global LFO SYNC->CLOCK DIV parameter is never really saved per-preset. It's a global parameter.
However, when LFO SYNC->CLK SRC = MIDI, then the global CLOCK DIV parameter is overridden by the preset's own LFO RATE. That is to say, the LFO RATE is used as an index into the array of CLOCK DIV settings. This is the mechanism by which you can sweep through the Clock Divs using the LFO Rate knob. When you load a new preset, the global Clock Div value is updated according to the preset's LFO Rate. This is why it seems like you are saving the Clock Div value per preset.
So here is what is happening in your examples:
Step 3: Set CLK DIV to any value using VALUE pot. -- You are editing the global CLK DIV parameter directly; this does not change the preset's LFO Rate parameter.
Step 4: When you STORE a preset, it reloads the preset from memory after the STORE; same routine as if you'd changed to a new preset.
Step 5: when you Store/reload or change presets, if LFO CLK SRC = MIDI, the global LFO CLK DIV is updated according to the preset's LFO RATE. Because you didn't change the LFO Rate in Step 3, the same CLK DIV value is loaded as before, so it looks like your change was lost
If in Step 3, you use the LFO Rate + Modulation pot, you are actually adjusting the LFO Rate, which *is* saved per preset. When you STORE the preset and it reloads, the changed LFO Rate is loaded, this LFO Rate is used to set the CLK DIV, and it seems as though you've saved the CLK DIVs per preset. As long as LFO CLK SRC = MIDI, you effectively have saved the LFO clock divs per preset, because it will consistently load the new clock divs with the preset.
Now, if LFO Clock Source = Internal, then LFO "Clock Divs" doesn't really do anything. You can adjust CLK DIV using the Value knob, and you're adjusting the global parameter value. This has no effect on the current preset, and the current preset has no effect on the LFO CLK DIV parameter. So, saving/reloading the preset has no effect on the CLK DIV, and your changes persist.
Once again, this is a place where a more ideal solution would probably be to have a complete global + per-preset implementation, the same as other parameters such as Arp CLK SRC, KB Priority, Tuning Scale and so on. This is another case where there was not enough code space to do everything in the best way. So, the current implementation is a compromise which I thought offered the most playable set of options.
I am happy to make changes if you can think of a better way to do it.
For example, I can make it so that you can adjust the CLK DIV while in MIDI Sync using the LFO Rate knob, but I can remove the code which automatically overrides the current Global LFO CLK DIV parameter when you load a new preset. This would make the global LFO CLK DIV parameter seem more consistent, BUT it will remove the way in which you can sort-of save the LFO Clock Divs "per preset" as you can now. I thought that this behavior of updating-the-clock-divs from the preset LFO Rate would be useful.
What do you think?
Edit: I think I found a way to explain more succinctly. Here is what I've written for the user's documentation:
LFO MIDI Sync - when you load a new preset while LFO CLK SRC = MIDI, the LFO Clock Division (CLK DIV) is reset according to the new preset's LFO RATE parameter.
NOTE: This means that if you are working with the LFO in MIDI SYNC mode, it's useful to pay attention to the way in which you adjust the LFO CLK DIV parameter.
If you want to set an LFO MIDI Clock Division that is reloaded to the same value every time you load a given preset, adjust the preset's LFO RATE parameter to set the LFO Clock Division, and save the preset.
If you don't want to make any changes to the preset and you just want to adjust the global LFO CLOCK DIV, go to the master LFO SYNC menu, select CLK DIV and adjust it using the Value knob. This sets only the global value and is not saved with the preset.
Does that make sense? Again, is the implementation OK or can you suggest a better one?