SynthMaker

linking sliders/knobs in a way...

Archive · 2012 17 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

tester ·

I can find any information or examples about certain way of linking sliders/knobs.

Let say that sliders control comparable parameters (outputs can have independent min/max filtering so this is not an issue anyway). Let say that one slider has one value set and second slider has second value set. How to link two sliders in a bi-directional way (one controls another and vice wersa), but so that the pre-link values do not reset? In every example I saw - each linking process - made reset on one of sliders/knobs, so that both started with the same value.

What I'd like to achieve is - to preserve the initial values while linking, and then - moving both linked sliders (via one or second slider, not master slider over them) in a linear way (the same value is added to both sliders) or in a proportional way ("initial ratio" based).

Of course I mean, that after un-link, values do not reset from their final destinations.

oddson ·

I'm pretty sure it's feasible once you explain it clearly... I've read this three times and don't know for sure what you're saying.

tester ·

Probably the problem is within my english 😉

Okay, once again. You have two independent sliders. Let say, that with slider one - you adjust to value A. Let say that with slider two - you adjust to value B. Now you linkt the sliders. But... slider 1 should preserve value A and slider 2 should preserve value B. Now you move the slider, no matter which one (both are connected, so both go up or down) - bi-directional dependence.

Ratio based behaviour will be: value A to vaule B is constant. So when moving the slider (no matter which one) - second slider will change it's value in a way, that the A/B ratio is preserved. Let say that you adjust the sliders to values AA and BB. Now you unlink the sliders, and values AA and BB on the sliders are preserved.

Linear behaviour will be: adjustment added to value A and Value B is constant. If value AA = A+c, then value BB=B+c too. When you unlink the sliders - values AA and BB are preserved.

😉

What I see on examples: when you link sliders/knobs, then one of them resets.

oddson ·

Ok... I'm not 100% sure I understand but I'm going to try something and see...

Let's leave the proportional movement out of it until I understand what you'll looking for.

Linked sliders that preserve previous settings:

tester ·

The example seems to do the opposite. When I link sliders, and begin to move one of them, then the other slider (state) automatically becomes equal to the first one and then they move together. When unlinked - they do again the opposite.

Let put it in these words.

Let say that in unlinked (independent) state - I adjusted one slider to 1000Hz and other to 2000Hz. When I link them - the values should not change (should not reset to mouse-focused slider when I drag one of the sliders).

In ratio based mode: if in linked state I move one slider from 1000 to 1500Hz, then the other should change from 2000 to 3000Hz (ratio between them is preserved). After unlinking, the final values (1500 on one and 3000 on the other) should remain unchanged. And now I can manipulate then independently again.

In linear mode: if in linked state I move one slider from 1000 to 1500Hz, then the other should change from 2000 to 2500Hz (the same value of 500Hz is added to both). After unlinking, the final values (1500 on one and 2500 on the other) should remain unchanged. And now I can manipulate then independently again.

Bi-directional mode means, that in linked state - it does not matter which slider I drag, to change both.

Again - sorry for my english 🙂

oddson ·

Your English is excellent.

It's a combination of the concept being tricky and my missing key clues in your text.

I've got what you mean now and I should be able to point you at a linear example shortly (I may even have something like this in my archives).

tester ·

Here is a nice slider I created with a help of another forum user.

You can use this one for tests.

I'm attaching it with picture, because it could be useful for others.

oddson ·

Ok... I was a little optimistic on the 'shortly' part because it's going to require using the 'Interact' boolean that comes up out of the depths of the stock controls to get a reading on what the value was when the current interaction starts and read the difference (for linear) or the proportional change (for proportional) and then figure out from the previous value of the other control what the new feedback value should be...

Which is to say I'm not going to finish this tonight...

CoreStyler ·

Try this one i made today. The same posted in "registered user" forums.

trogluddite ·

Hi Tester, You might want to take a look at this thread...Fader Grouping Example It is the original prototype for the control grouping that I use in my Loopa project. It allows three kinds of grouping - Copy; good for switches etc. Linear; controls increment by the same amount. Logarithmic; for volume faders etc. to keep the proportions the same. Also allows you to choose a modifier key to temporarily unlock the group and move a single control. Some work will still be needed to make it work properly with VST presets etc. (didn't need that for my project), but I'd be happy to help you with that if you think the method would be useful to you. (I will also look to see if I did any mod's/improvements when I put it inside Loopa).

tester ·

@trogluddite - you are a genius 😉 First look tells me, that this is exactly what I will look for (and even more), and it works pretty fast.

I see it can be copied as a separate module, so there is no problem to add different modes for individual types of sliders (for example, to separately manipulate linked LFOs in liear mode and linked mixers in log mode).

And what is not working within that, with presets? Is something not stored/reloaded when using presets?

trogluddite ·

Glad you like it! 🙂

tester wrote: And what is not working within that, with presets? Is something not stored/reloaded when using presets?

At the moment, none of the sliders etc. have VST presets or automation included (they were not needed for the project I was working on at the time). I'm pretty sure that this can be added quite easily - but would have to be done with care. The linking would need temporarily disabling when presets/automation values were received, to prevent 'crosstalk' between the newly loaded values. (e.g. knob 1 preset value is loaded, but when knob 2 gets its new value, it could move knob 1 according to the linking method - leaving knob 1 with a different value than that stored in the preset). I will have a look into this, as I'm pretty sure I made some other improvements since the .osm was posted, and it would be nice to make this a simple 'drop in' module that worked well with all of the other SM features that people might like to use alongside it.

tester ·

Thanks!

I'm sure that such linking module (so as the slider/value combiner) would be a great addition to SM as default hi-level component. The more useful addons SM has, the more attractive environment it becomes.

oddson ·

I've not quite figured out how this works...

Am I write that the delta value is all that's transmitted between controls?

So instead of having to know where the other control was you just send the delta amount that corresponds to each triggered update from the DragX?

I see that when you have had a group that is tied with log control if you drag the one that had the lowest initial (solo) setting the others will zoom up to unity much faster... I assume that means the solo settings are retained somewhere (or some scaling value that tells them how fast to move to delta updates) but I haven't found where or how yet.

This is pretty cool but it would take me a while to work out what's going on here.

trogluddite ·

You're on the right tack there.

For 'Copy' mode, the raw value is sent, and set as the value for all linked controls.

For the 'linear' mode, it is just the 'delta' which is sent, and then summed with the current values.

'Logarithmic' mode, works similarly, but Delta = log(new) - log (old) - at the receiver, output=10^(log(current)+log(delta)) - so that the delta effectively becomes a ratio. A small 'cheat' constant is 'pre-added' and 'post-subtracted' from the log values to ensure that internally, the value never reaches zero - enabling the faders to go down to (almost) zero, without losing the relationships between the settings.

The 'moving the lowest fader' effect works the same on some of the hardware desks that I have used with groupable motorised faders - it's unavoidable if you want them to stay in proportion (which doesn't make it any less annoying!). You also have to be very careful not to create a 'log' group when one of the faders is already at zero - turning up the 'zero' fader will then lead to an 'infinite' ratio, and the others will hit the end-stops even if you only move it only slightly! Maybe there is a better way if the faders are made to use a different 'taper' (maybe true dB scaling?), but the maths makes my head hurt!

tester ·

@trogluddite - could you revisit and update your "Channel Grouping v1_0.osm"? I would be very grateful.

By the way - I noticed a strange behaviour related to the "copy mode". When I set it and click on any slider - then all sliders in that particular group just go to the maximum level. First I thought they are no movable then too, but then I found, that they start to adjust after a huge move (decreasing direction) of the mouse cursor. The same huge movement of mouse cursor is required to make it work after the linker is set from "copy mode" to any else.

trogluddite ·

Hi there. As you probably guessed, I just had a little break from SM, but I will return to this once I am up to speed again. Not quite sure yet what the bug with 'copy' is, but I think you are right that it is to do with changing modes - I've been using it OK in other schematics; so I guess the error is corrected when the control initialise at load time.

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.