Generative sequencers

When I stumbled on your repo earlier I was like “Oh noooo…”.

Yes, more orcas the better :slight_smile:

1 Like

I love Coldcut’s Midivolve:
https://www.ableton.com/en/packs/midivolve/

And another good one in a similar vein is Patter:
https://www.ableton.com/en/packs/patter/

7 Likes

context seems really cool in principle, although i’ve never tried to get it up and running to test it out

6 Likes

-came to say how I’ve been enjoying Mutable Instruments Marbles

-leave feeling like a generative plebian

16 Likes

I like your track. How do you prevent a genetic algorithm from straying too far from the original? I appreciate that a random walk can produce shitty results and that genetic algo can better guide progress, but given enough time, I would still expect it to deviate greatly from the seed.

I don’t know how much you are acquainted with how genetic algorithm works so excuse me if I will explain things that you already know.
Basically seed for genetic algorithm is population of random patterns and the target is most of the time constant. And the genetic algorithm makes it so that this random populations tries to arrive at the target so overtime the patterns is more and more similiar to the pattern created by user. In contrast to random walk there is a problem of population fitting to well to target and stopping evolving after arriving at target so there is a mechanism of inserting random mutations to ensure that there is always some change.
Maybe I will try with some example:
Assume that user entered simple four steps pattern (1 is on 0 is off):
1000
At the beginning you start with random population:
0100
0111
0101
1101
You then need to have a function that for every pattern calculates how “far” it is from the target pattern. Even for such simple case there can be different functions but for this example we can assume that we calculate how many steps differ in pattern from steps in target pattern. So for our population we would have distances of:
0000 - 1
0111 - 4
0101 - 3
1101 - 2
We then need a function that creates a new population of patterns from the previous population and takes their distance into account. For example we can choose two patterns that are nearest to the target and then create new population from the by selecting at random bits from the two patterns that were selected:
So as a basis for our population we choose 1101 and 0000 and the next population created from them could be:
1100
1000
0001
1100
You can see that there is already a pattern that has the same steps as target pattern. But to prevent algorithm from getting constant stable results after some time there is also a small chance of random mutation that can happen that can flip some bits in already selected population.

18 Likes

This is brilliant. I wonder who I can get to turn this into a eurorack module.:thinking:

1 Like

Nothing grooves quite like ‘M’

1 Like

Stating the obvious but Numerology

XX is interesting too

2 Likes

If you will find someone how can do electronics then I can do the code no problem :wink: I was thinking about releasing it as a desktop app but I need to clean up code a bit and move it from processing to something like electron so everybody could run it without need for external software.

3 Likes

I know a lot of people who do electronics and who actually manufacture modules (which is the area I’m mostly interested in personally). But then it comes down to functionality, parameters, UI.

Would this have its own sequencer on board or process an incoming sequence? What parameters should the user be able to control?

Lots of things to discuss. I’ll send you a message. This is very interesting indeed!

2 Likes

A few custom operators for Teletype would work too. I have notes about that exact thing in a notepad…

2 Likes

It’s got a steep learning curve. But it does seem really cool and very well documented. I can’t seem to get it to do a basic midi out though.

1 Like

It’s simple and classic, but still worth mentioning because of how powerful it is:

  • waveshaped/folded LFO(s) -> Offset/Scale -> S+H -> Quantizer w/ scale masks/rotations

This can definitely take you pretty far and is a lot of fun/very controllable. Between playing with the relationship between s+h clock and LFO frequency, the shape of the LFO, the offset/scaling for octave ranging and shifting, and changing the scale masks, there’s tons of opportunities for controllable evolution of patterns… it’s also quite fun if you start mixing a few different LFOs (or other sources) with different rates and ranges before going into your s+h…

17 Likes

The “patch modulator” (based on genetic algorithm) in the Nord Modular G2 is also cool as heck.

Someone tell Bitwig to work on something like this.

image

10 Likes

Just stumbled across this, seems very powerful! https://www.loomer.co.uk/architect.htm

2 Likes

Interesting, so does it take control of all patch parameters?

I just found this reference in the Oxford Algorithmic Music Handbook:

Reminds me how much I used to love the mutate function of Metaphysical Function in Reaktor. Must try something like that in Max at some point.

btw - it’s the patch mutator, not modulator.

2 Likes

I’m not exactly sure how you assign parameters. I guess anything you could assign to a knob you could assign to the mutator. Looks like there’s lock and solo functions for parameters as well… I’ve never actually used it, just eyed it.

1 Like

I’ve not tried it myself yet, but I’ve been considering loading up one of the “Hemispheres” known as Neural Net on my Ornament & Crime. Check it out here: https://github.com/Chysn/O_C-HemisphereSuite/wiki/Neural-Net#logic-gate-reference

2 Likes

Sometimes that’s better - seek what they sought.

For anyone interested I found the two papers:

https://www.researchgate.net/publication/2934196_A_MutaSynth_in_Parameter_Space_Interactive_Composition_Through_Evolution

https://www.researchgate.net/publication/228577877_Synthbot_An_unsupervised_software_synthesizer_programmer

Both worth a read.

2 Likes