Forums > MaxMSP

Techniques For Generative Music?

December 23, 2008 | 11:52 pm

Hi – I am interested in creating generative systems within Max. I’m wondering what techniques people here employ to create self evolving, varying systems? So far with Max, I’ve done a lot with phasing of sequencers, and done some stuff with probability (though I personally am reluctant to use [random] – I’d much rather have the system work as a set of rules without the need for chance). Beyond phasing and weighting with [random], what other approaches are there to creating generative music?

Thanks for any input!


December 24, 2008 | 3:26 am

> …I am interested in creating generative systems within Max. I’m wondering what techniques people here employ to create self evolving, varying systems? So far with Max, I’ve done a lot with phasing of sequencers, and done some stuff with probability (though I personally am reluctant to use [random] – I’d much rather have the system work as a set of rules without the need for chance). Beyond phasing and weighting with [random], what other approaches are there to creating generative music?
>
> Thanks for any input!
—————————————————-

There’s nothing wrong with randomness per se – it’s what you do with it. Peter Castine’s Litter Power objects contain a variety of kinds of generators. Markov processes, Genetic algorithms, weighted averaging, chaotic attractors, neural networks, and so on – they’ve all been used with varying results by all kinds of people. My own view is that (to quote my friend Luke Dubois) "Mapping is everything."

In a way, this is a sort of "Hi! Can you send me a synth patch?" request – the question is sufficiently general that it’s difficult to know how to answer. What kind of variety do you want to generate/organize?


December 24, 2008 | 4:18 pm

you could use jit.conway as a starting point for composition decisions.

On Dec 23, 2008, at 6:52 PM, Kyle Kaplan wrote:

>
> Hi – I am interested in creating generative systems within Max. I’m
> wondering what techniques people here employ to create self
> evolving, varying systems? So far with Max, I’ve done a lot with
> phasing of sequencers, and done some stuff with probability (though
> I personally am reluctant to use [random] – I’d much rather have the
> system work as a set of rules without the need for chance). Beyond
> phasing and weighting with [random], what other approaches are there
> to creating generative music?
>
> Thanks for any input!
> –
> -k.


December 24, 2008 | 4:24 pm

Theres a good introductory book on algorithmic composition called Composing Music with Computers. Its a bit expensive, but comes with a software cd.

http://tinyurl.com/computerMusic


December 24, 2008 | 6:49 pm

I posted a markov utility a while back that you might find
useful…

http://www.cycling74.com/forums/index.php?t=msg&goto=154820&rid=0&S=3f15bccf4052705e820983c0ccd5df42&srch=markov#msg_154820

It allows you to create tables of symbols that have associated
probabilities with it. Give it a try.


December 24, 2008 | 7:48 pm

thanks for the responses! i’ll look into all these things. i have been considering purchasing litter power, and think i’ll just go ahead and do it.

i realized another form of generative music could just be a giant chain of [metro]‘s, [counter]‘s, [selects]‘s [delay]‘s, [onebang]‘s, [switch]‘s and [gate]‘s. It’s like that game mouse trap – a bang gets sent into this giant, tangled system, and leads to a certain results. These results supply new values to certain variables (i.e. metro speed, delay time, gate toggles, etc) so that when the bang gets relaunched into the system, something different (yet similar, if you so choose) happens.

to gTaylor – indeed, it is quite a general question, but that was my intention. To go with your synth analogy, if someone said "what kind of synthesis technqiues exist?" one could say additive, FM, granular, waveshaping, etc. I’m looking for an answer equally as general (no need for people to post patches). I also just realized that your LFO tutorials are another example of a generative system.


December 25, 2008 | 4:24 am

I know it seems simple, but [drunk].

and feedback

Use a bunch of these as bpatches and chain the out put of one to the range of the next and the rate of the one after that.

this off topic and I still feel the need to ask- my copy of max5 takes foreeeeever to load up. (i’m typing this as I wait for the file to open so I can copy the patch. . .

is anybody else having this issue? Is my computer getting old and saggy?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

– Pasted Max Patch, click to expand. –

December 31, 2008 | 2:36 am

Quote: ComfortableInClouds wrote on Tue, 23 December 2008 15:52
—————————————————-
> Hi – I am interested in creating generative systems within Max. I’m wondering what techniques people here employ to create self evolving, varying systems? … I’d much rather have the system work as a set of rules without the need for chance).
—————————————————-

Oooh, this is one of my favorite topics! Many of the things I build for Max surround this idea of deterministic (non-random) generative music.

I start with techniques from serialism: short patterns that repeat over and over again. It is very easy to take some simple patterns and make them interact with each other in complex ways in Max.

A basic technique you are probably already familiar with is to take multiple note sequences of different lengths and play them against each other (like 15 vs 16). Each pattern repeats at a different time, so the sequence as a whole will take a long time before it repeats exactly. Steve Reich did a lot with this technique.

On top of that approach you can try some more interesting things. Instead of simply sequencing pitches, you can sequence an interval to be added to the base pitch sequence. If you have a few pairs of pitch+interval sequences, all at different lengths, it can get very unpredictable (and also sound awful if you are not careful!)

I also like separating out the rhythm sequence from the pitch sequence. So you can have some pitch sequence like C D E B, and a rhythm like quarter quarter eighth quarter eighth. Since they are different lengths, it can generate patterns more complex than the simple patterns you start with.

Taking this idea even further, in Max you can devise ways to sequence a pattern of instructions that modify your base patterns (like change their length or insert/delete notes). And of course you can even have sequences that modify the sequences that modify the patterns. Even though each pattern may be very simple, the results can become chaotic. It can be hard to control this kind of approach, but it’s fun to play with.

Then you can start to introduce some controlled randomness into all of this too…

Hopefully that gives you some ideas. In Max 5 it’s possible to do a lot of this will the [zl] object and some [counter]s. You may also want to check out my Max objects. I’m about to release a new version, you can get the "beta" here:
http://compusition.com/ajm-objects/ajm-objects-0.8.6-RC1.zip
Sorry that’s Max 5 only! There’s an older Max 4 version on my site.

A couple examples of things I mentioned are in the help files. In ajm.seq’s help, check the "chords" subpatch for an example of sequencing instructions to modify a sequence. In ajm.rseq, see the "basic example" in the upper right for a rhythm & pitch sequence of different lengths. I also wrote a bit about these ideas here: http://compusition.com/web/articles/musical-decoupling

Also, if what I am saying interests you may want to check out the program Numerology at http://five12.com/


December 31, 2008 | 2:47 am

And take a look at Karlheinz Essl’s real time composition library: http://www.essl.at/works/rtc.html

I never delved into it personally, but it looks very interesting and I’ve heard good things about it. It’s on my todo list…


January 1, 2009 | 7:43 pm


January 2, 2009 | 6:01 pm


January 3, 2009 | 3:21 pm

Okay I can open that one. Interesting stuff, I will definitely
have to do some experimenting with it. Thanks!


January 19, 2009 | 3:08 pm

yeah, making music with max. :)
i have done some "generative" stuff some years ago and i figured out that it needs a lo0t of efort to provide yourself a user interface where you just choose from a set of rules …

start making some simple rules, and you will find out some rules about how to make rules.
my basic method of autocomposing has always been sequencing numbers. this need at first a set of "fixed" events.
that can be counting up, that can be a midifile, that can be bang bang bang, or a list of numbers which can be dynamic.
think "melody".
you can also play the melody from a coll. coll offers, besides other thing, the wonderfull "swap" command (see subpatch in coll.help)

then you need rules for filtering (mainly deciding which parts of the fixed or repetive events should be changed), and lastly you need processes which are able changing input.

before dealing with markov chains, fibonacci numbers, keplers theorems, fast fourier, the scala archive or live video input
for modulation, it is strongly recommended to start building really basic things.

let me give an example; this can be a tutorial.

1. build something which can play chords.

2. build something which can find all notes G in incoming chords, seperate them from the chord and output them on another oupt.

2. build something which can transpose notes, delays notes in time, and record data and numbers in a buffer/coll/mtr/seq.

3. build a simple arp which can break up chords into single 1/16th notes

4. build something which can check if two subsequential notes are even. block them when two same notes com in, but only from 2-10 notes. the 11th identical numbers should be allowed to pass.

those sound boring? you need them! such simple processes are the basis for the strange and interesting things.


February 23, 2009 | 1:40 pm
vanille b_chamel wrote on Fri, 23 January 2009 09:59
Hello maxers,

I know : "- il faut faire simple !", but who cares about rules ?

Here last version (with an exemple) of what i’m working on ; (almost the same but NOT compatible with previous, so don’t have them both in your filepath). You need max 5 AND JITTER.

Next step is to make interaction with my doublebass…

I read stuff about neural networks, but i have no idea using it for generative music, somebody ?

Salutations,
nicolas.

by making rules. music consists of math and math consist of rules. no rules = no music. the more rules, the better the music.

-110
(or 2*55, or 10*11, or two times 1 then one time one number smaller, or…(insert custom cadence here, then repeat for 110 times but substract cos(4Hz/nyquist) from the second 1 every 7th loop.))


March 22, 2009 | 6:48 am
vanille béchamel wrote on Fri, 27 February 2009 00:51
Hello Roman,

"music consists of math and math consist of rules."
my english is too bad to discuss philosophy, sorry Wink

but for neural networks my question was how do people use neural network (or self organized map), if you prefer which kind of RULES do THEY use. The problem is not to implement it (even if it is) but for what ? Neural networks are great to RECOGNIZE stuff, group stuff, gesture, key of a song… but how GENERATE tonal (what an ugly word) music ?

my answer was less philosophical than you think.
melody, harmony, tonal scale systems, and synthetic sound design also involve a lot of math.

and as a result of this, it is not wrong to look at the composing part as a programmer! Smile

i dont believe in "the rules they use", i believe in the unique and new ruleset YOU will create today.

start dividing that rule thing into basic rules.

how can we start? with a coll:
patch a coll, and have a starting melody.

what can we do to it? we could change the pitch:
program something which can do pitch changes to the coll content, and you have the first possibilty to change the melody.

now do the same to the time domain.

then program the next set of rules, this time rules which decide when any why the pitches and times will be changed.

the application is the music. so program the patch and you will end up with a song because the patch is a song.

PATCH = RULES
SONG = RULES

PATCH = SONG
SONG = PATCH

ICH BIN DU UND DU BIST ICH.

WUNDERBAR.

-110


March 22, 2009 | 10:17 am

- convert decimal to binary, tertiary, quartiery
– change every nth input
– compare two streams to make decisions
– probability for events
– randomness for events
– human interface for events
– all kinds of scaling and range distortion
– chord progressions
– population growth
– circulation
– lorenz attractor
– markov chains
– lfos/envelopes/gates
– modulation around center: linear/gauss/drunk
– cellular automatas
– multiplication and addition
– controlled errors
– distribution of data onto different channels
– recogisation of certain numbers/chords/rythms
– filter for certain numbers/chords/rythms
– physical movement/modelling
– magic square
– golden mean
– primes
– control amount of data, lenght of lists
– counting, repeating, looping
– remebering and forgetting
– seperate and combine operations across musical elements
– the 70ies classics: autochord, arpeggio,…
– all kind of mutations of and morphs between values/streams
– multiple and nonlinear masterclocks (very important)
– different tuning scales (very important)
– mapping tables, where calculation no longer work
– realtime time manipulation (delays, "shuffle", "humanize")
– checks for similarity or "contrast"
– linking events or excluding events
– fold, wrap, limit, mean, average and weighten numbers/lists

anyone else?


November 3, 2013 | 9:53 am

Bump. What a list, roman :)


Viewing 17 posts - 1 through 17 (of 17 total)