[Draft discussion] All randomness should repeat within a project + seed of randomness

Interesting. How would users tell the software when they want to keep the random seed and when to keep playing random?

In a Bitwig project there may be dozens of randomizations at play. Devices like Ricochet apply “physics” on top of explicit randomization (the cube icon). Whether all this can be generated in a deterministic way reliably each time is almost a philosophical question. :slight_smile: Where exactly are you missing this “reproducible randomization” the most? Real life examples are welcome.

2 Likes

Seed is always just a value. Personal computers can not generate RANDOM numbers, they are always generated based on some seed value. It’s just this seed by default is “current time + CPU temperature+ free memory space etc”. So my point here is BITWIG should not keep default seed, but instead to introduce one more KNOB “Rnd Seed”.

Answering your question: user can change value of the SEED directly. Also it’s zero position could mean total randomness, like described in first figure. The real life situation is for example as I stated at topic description: if we open same project and re-render it one more time - it should have same music, with same peaks. Or lets say, we want to re-render with different bitrate, or switch off the dithering. We like how random was generated in that instance and we don’t want to have another one.

This could be example of how it works:

  1. We are setting seed to 1, it generates: {+54, +13, -100, +5}
  2. We are setting seed to 2, it generates: {-5, +69, +2, + 106}
  3. We are setting seed to 1 again, it again generates exactly {+54, +13, -100, +5}
  4. We are settings seed to special value of 0: it generates {+7,+92, -1, +54}
  5. playing one more time seed 0: {+13, - 121, -7, -15}
    etc

Also I could imagine that real SEED which we feed to the computer should be sum of user defined SEED + timeline position in microseconds. This way value on the timeline will always be same independently of how many times it has been generated before on the timeline.

1 Like

I think this also touches production wise questions
For bitwig style we more or less should be ready to except the random factor and that it can not be played again the same
This is the strong part of the Bitwig And I think that we will get more profit by giving more random options rather than trying to limit them
I agree this sometimes annoying you can not repeat a sound you liked the most
Thats why I always have a recording track which is ready to record my patches specially when they are combined and chance to go random is big
I decided to always use an audio files while a production of track

What is about BITWIG style?

I’m not sure to argue here, but I don’t see how we are becoming limited by option to repeat. I would say opposite, currently we are limited by impossibility to repeat.

What do you do with your track, if you want to change something? Timbre, for example. Do you just get used to new instrument part or you have some trick?

Sorry I didnt mean to pester you
Actually after re reading I saw it with the new angle and what you proposing will be an interesting perfomance grid tool
Ill tell you more - I saw an opportunity to include this in a live setup
Maybe some alternative of clip “extend” feature with a toggle to lock grid random dice values to the each clip
After all if you set yourself a goal to catch your random generation and to freeze the idea - there are numerous ways to do that in bitwig
And talking about bitwig style - one way or another you will always will find moments when something unexpected happened and you find it satisfying
I am jot debating just expressing my opinion

Though what I wanted to say about randomness is that we want it on way more scenarios than it is presented now
I want to have random play start position of clip or to randomly shuffle samples in drummachine
Or maybe to record two automations of clip instead of one and randomly play between two of them or even morph !

1 Like

It’s funny that a question from the template that had been removed from the description (How does this feature fit in Bitwig as a product?) is being the topic of the conversation here. :slight_smile:

Still, about my question:

You described how the feature would work in the backend, but about from a user point of view. How would this work? The transport is playing, the user hears something random they want to keep. What does the user need to do to retain it? And if they want to get rid of it and bring random back, what does the user need to do?

I’m assuming that users cannot know in advance whether they want to keep a future randomization or not. They need to hear it first.

2 Likes

Currently we do have ability to set specific random seed for clips, which affects all random aspects of operators and expression Spread. I hope that answers the question about how it fits in Bitwig - just expand same capability to modulators and devices that use built-in randomization. I think it’ll sit just fine inside inspector panel for given device or modulator in same way it does for clips.
image image

selecting a dice here would be a default state - seed itself is randomized every playthrough.

5 Likes

I’m offering to have one more knob named “Seed” (in addition to already existing “random amount” knob).
The default value of that brand new knob can be 0 and having this value nothing special changes, total randomness appears as it does now.
But, the user can change it to a positive value (in range of 1 to 127) and this is how randomness becomes managed.
While user keeps same one value, all the random values repeats from play to play. If the user wants to hear other random values, he just changes the value to another. If the user wants to bring back some old random values, he just reverts this “Seed” knob to respective old value. And if the user wants to fallback to current behavior (where each play produce new random sequence) he just set it to 0 back.

This is something similar to what @x.iso descibed (seed of randomness of a clip) (by the way, thank you! I didn’t know it already exists in bitwig), but it is less flexible than what I propose. That “seed” of a clip can not be brought back to some previous value, it neither can be automated. But if it was a knob (how proposed by me) both would be possible.

1 Like

while I agree that the way they implemented seed might be not super intuitive and easy to loose seed value (although you can copy it and paste in other clip), I don’t think a knob is the answer, or trying to put it in forefront of existing random parameters (most devices/modulators UI wasn’t made with this in mind).
just perhaps a better version of current implementation in inspector panel, with visible integer number that you can drag to scroll or edit for specific number, as well as copy and paste.

btw, I’ve already proposed mockup for this in Array modulator/flow FR
image

3 Likes

I like your mockup more. But I’m worrying on how it will be MIDI compatible (should it be?)
I’ve been also thinking that “seed” can appear in device inspector view rather in the device itself. It is also something similar to your proposal, but have nearly 0 impact on UI.
Anyway, I would be fine with any of this.

1 Like

bringing automation to it is troubling as is, but midi is way too limited to control large seed pool numbers.

1 Like

Thank you for this good conversation. I think you agree on the request and the approach to suggest? @jinek, would you like to update the description accordingly, also removing the use if first person? After this, I think this request is ready to go.

just to be clear. Visually were are proposing: for each amount of randomization parameter, where are adding one more parameter = seed of randomization, it appears next to “amount parameter” and looks like a field with a number?

I don’t think seed value needs to be tied or adjacent to amount specifically, the mockup above involves Dice module which does have empty space just enough to add seed value parameter, but for other random elements we need to see by each case if there’s enough room to add same directly in UI of given device/modulator/module or needs to be moved in inspector panel.

Probably. But when random amount is just a knob in a device - it should be visually understandable that they are coupled

Random amount is simply attenuation of random output. There are also some random elements that don’t have such attenuation, like Random direction in Ricochet device. Therefore it would make sense to put seed setting in inspector panel settings for this device. Any time you select device or modulator, you can see if it does have settings for inspector panel. for most people they wouldn’t even touch it and it would be same behavior as we have currently, with option to assign specific seed value.

2 Likes

I love this feature request. Using controlled randomness for composing is a cool feature, and this feature request here could be part of that bigger theme.

Yeah, this makes sense.

Maybe something like this:

Seed behavior: Random | Fixed
Seed Number: 8239842739 [New random seed]

If behavior is set to random the seed number lane is greyed out.
New random seed is a button that generate u a random seed.
You can also enter the seed directly into the seed number textfield.

2 Likes

I think to keep it simple one value is enough. It can have special value 0 for “random”. Also later it can be visually represented by text “random”

Also I don’t think we need additional button to generate new seed, we can just switch to random and back. So whenever you press random to deselect it, it would show current seed