surge-synthesizer / surge

Synthesizer plug-in (previously released as Vember Audio Surge)
https://surge-synthesizer.github.io/
GNU General Public License v3.0
3.17k stars 400 forks source link

Preset randomizer with mutation #462

Open cybpun opened 5 years ago

cybpun commented 5 years ago

preset randomizer with mutation like Oatmeal VSTi or Tobybear MiniHost

esaruoho commented 5 years ago

this would be lovely to have for sure. a+ stuff

kzantow commented 5 years ago

baconpaul [3:50 PM] Thinking about a patch randomizer some. That’s a tricky feature with surge I think. Not impossible but subtle. There’s an old ticket from feb with someone suggesting it.

Like: Do we randomize routings? Do we randomize both scenes? I think you want some settings, not just a “mash stuff” button

kzantow [3:51 PM] the tricks are a) dependent values & ranges b) modulations in order to get somethin useful

baconpaul [3:52 PM] Ranges are pretty easy since parameters know their range

kzantow [3:52 PM] i would not randomize routings all in all, maybe 1 or 2

baconpaul [3:52 PM] Dependent values are one of the things I’m thinking of yeah. Like “if I tweak osc3 and it isn’t on does anyone care” You sort of want like levels. Like “Randomize OSCs; Randomize Mixing; Randomize Filters; Randomize Effects” And “Add Random Modulations” And then “All the Hippos Go Beserk” Which is of course what I would call the “go crazy” randomizer

kzantow [3:53 PM] i mean... ranges -- in some cases may only make sense between smaller ranges i guess all really just the dependencies

baconpaul [3:54 PM] Right The user has some discretion also. Imagine a menu like “Randomize > A little > OSC|Mix|Filter|FX|Modulation|Everything” And “Randomize > A Lot > OSC|MIX|Filter|Mod|Everything” And “Randomize > All the Hippos Go Beserk” The we just use some good taste for what “a little” or “a lot” is

kzantow [3:56 PM] seems like a rational approach i'd think 'a little' might us the current values as starting points

baconpaul [3:57 PM] Oh yeah totally. “A little” means “tweak +/- 10%” and “a lot” means “set to whatever I want” Or in modulation “a little” means “modulate something unmodulated a bit” or some such Interesting problem

kzantow [3:57 PM] patch morph might be another nice thing. alchemy got a lot of mileage out of that

baconpaul [3:58 PM] I’ve played with alchemy quite a lot but haven’t used patch morph. How’s it work? I mostly just set to init and patch with alchemy

kzantow [3:58 PM] mod/routings and such are a bit of an issue tho oh, i dunno about current alchemy, but 5 years ago when it was camel audio

baconpaul [3:58 PM] Oh gotcha

kzantow [3:58 PM] you basically had 8 different patches all similar, and then a way to interpolate between all 8

baconpaul [3:59 PM] Is it basically “make this patch 0.7 my patch + 0.3 that patch over there” type thing?

kzantow [3:59 PM] yeah

baconpaul [3:59 PM] Oh right. They still have that And you can use continuous controls to move between the different states

kzantow [3:59 PM] right, exactly

baconpaul [3:59 PM] So in surge we could pretty easily add “randomly apply features from > (patch list)” And then grab that patch and you know. Randomly apply features from it. As another form of randomizer

kzantow [4:00 PM] right

baconpaul [4:00 PM] That could give some crazy results too

kzantow [4:00 PM] might almost be the most fun like have a pad, apply some bass features who knows what odd things would result

baconpaul [4:00 PM] Yeah but if the pad is poly and the bass is mono you end up having one or the other Or if one uses FM routing and the other doesn’t, the randomizer picks. And who knows what happens. That’s a good idea

illtellyoulater commented 3 years ago

wow, troubled story had this one so far… :( please guys make it happen… it'd be huge!

esaruoho commented 3 years ago

I'd still +1 this, if it were to start happening. @baconpaul is this something that could happen at some point in time? Can we make some sense of the longer chat conversation in the comments?

K0rrid0r commented 3 years ago

mutation button with % mutation that could be automated would be aaawwweesssoommee, endless 'real' variation

baconpaul commented 3 years ago

I wouldn’t say it’s “troubled” as much as “no one has done it” 😀

the old chat with kzantow was just copied here to be replaced by a proper design when someone does!

the thing that’s hard is a randomizer is Easy, a useful randomizer is hard. So lots of choices and design to be done

also definitely not in the next release - already too much queued up for that - unless we get a volunteer with both design and dev skills joining in

illtellyoulater commented 2 years ago

@baconpaul I understand your points and I fully agree but I think that as we wait for a decent implementation it would be great to just have a simple dumb randomizer thing that we could play with... It would be so much better than nothing!

I understand that something like that could produce a useful sound only once out of 100 runs, but that's part of the fun ;)

tux-00 commented 10 months ago

I'm using a lot of randomization functions, then I tweak. Would be very nice to have this function on Surge. Just to continue the message of @kzantow, here are two ideas of powerful randomization from Korg (modwave and opsix, in this order): image image image

EDIT: I would be happy to help.

baconpaul commented 10 months ago

If you are happy to sling some code, I have a pretty good idea how I would implement a basics randomizer in xt and would be happy to write up some more detailed notes as a gist. Most of it is some juce ui interactions which trigger scoped model updates and a generic-ish way to express constraints on randomization - but also a way to localize it to params so we can use it for rack also.

I’m on vaca for a few days but if that’s interesting let me know and I’ll spend an hour and write some notes. We welcome devs and most of the big 1.3 features were new devs who offered to help :)

baconpaul commented 6 months ago

from discord user jamescorley

On the topic of randomisation, anyone ever used the randomiser in the Nord G2 modular? this might be interesting to note: "The G2 Patch Mutator is based on the work of Palle Dahlstedt, Swedish composer and researcher. His research interest has primarily been in the application of evolutionary algorithms as creative tools, aiding the search of novel musical expressions. This has resulted in a series of tools for evolving electronic sounds and musical scores, and also in programs that compose music by themselves using evolutionary techniques." If anyones looking into implementing a randomisation feature into Surge, Dahlstadt's work and the Nord G2 are probably the best places to look 🙂