Forums > MaxMSP

Crossmorphing rhythms over time…

November 12, 2008 | 6:06 pm

I want to create some process that allows me to take two
rhythmic patterns and have one "morph" into the other over
a specified period of time. So this…

x xxx x xxx x xxx x xxx

turns into…

xx xx xx xx xx xx

I was thinking of trying to do this with a multislider
and pattrstorage’s preset interpolation feature. But this
does not quite give me the result I want. I want the elements
to actually move in time, not be faded in. Some elements
might also need to merge into each other.

Does anyone have any ideas how I might go about doing this?



jln
November 12, 2008 | 6:27 pm


November 12, 2008 | 6:29 pm

i don’t know exactically what you’ve gotta do, but I know that you may eventually be able to do that with convolution.. there are some good examples in the legacy examples window in Max Extras.. so you can start to take a look at them


November 12, 2008 | 7:39 pm


November 12, 2008 | 7:43 pm

Quote: tiago_vla wrote on Wed, 12 November 2008 11:29
—————————————————-
> i don’t know exactically what you’ve gotta do, but I know that you may eventually be able to do that with convolution.. there are some good examples in the legacy examples window in Max Extras.. so you can start to take a look at them
—————————————————-

I was going to have a loop of midi notes that morphed from
one rhythm in to the other. Using convolution sounds like
it would be complicated. I would have to convert these note
events into an audio signal and then I guess convolve it with
some other signal to get it to move into the place I want.
If there is a simpler way, I would prefer that.


November 12, 2008 | 7:52 pm

why not store them in a matrix and use a jit.xfade object to do the morph?


November 12, 2008 | 8:20 pm


November 12, 2008 | 8:24 pm

if you are on windows you might like to try out my freeware plugin "beatmorpher" which can output midi (although i don’t think vst~ can)

http://www.olilarkin.co.uk/index.php?p=freeplugins#bm

"Beat morpher is a sample playback drum machine that lets you morph between two rhythms. You specify start and end positions for each drum hit. Then you can morph from one pattern to the next. Each drum hit shifts in time from the start to end position."

basically gate triggers are sent through delay lines modulated by an envelope

oli


November 12, 2008 | 8:39 pm

Quote: Adam Murray wrote on Wed, 12 November 2008 13:20
—————————————————-
> Interpolate between pattrstorage presets. That will only work if the list of durations are the same length.
>
> If one rhythmic pattern has extra beats it gets complicated. You could fade in the velocity of the extra note, or probabilistically play the note as it interpolates from a 0% to 100% chance of playing. But then there is the problem of how to determine which notes will slide over to a new position vs. fade in/out. This starts to get really complicated so I’ve thought about making an external for it. That’s on my todo list for 2010 ;)
>
> But if you keep your rhythm patterns the same length, pattrstorage preset interpolation should work fine.
>
—————————————————-

I was thinking something similarly. Ideally each event would
need to figure out the closest target event it would need to
travel to. Multiple events could migrate to the same destination,
thus merging into one. I agree this is best suited for its own
external but I always try to use existing max objects if possible
before I have to code anything.

I like the idea of doing it in jitter, there are some cool
externals that will do procedural manipulation of matrices
that might lead to some interesting results.


November 12, 2008 | 11:05 pm

matrix interpl (not an ideal solution):

– Pasted Max Patch, click to expand. –

November 13, 2008 | 1:30 pm

Hi Anthony,

you might want to give lp.vim a try. It implements Larry Polansky’s "morphological mutation" ideas. If you’re not familiar with this work, you will probably need to get a hold of Larry’s early papers explaining the technique. The .help files have extensive bibliographies, but most of the material is *not* on the web. You may need to get to a dead-tree library to read up on this stuff.

As an idea on how to do this, I would be inclined to represent your rhythms as strings of 0s and 1s, with 1 indicating "attack".

The mutation algorithms can created highly interesting effects, but they take some practice to get good stuff coming out.

Hope this helps,
Peter

PS: lp.vim is part of the Litter Pro Bundle. There is a time-domain audio mutation objects, lp.tim~, included in the free Starter Pack. URIs below.


November 13, 2008 | 11:05 pm

Quote: Peter Castine wrote on Thu, 13 November 2008 06:30
—————————————————-
> Hi Anthony,
>
> you might want to give lp.vim a try. It implements Larry Polansky’s "morphological mutation" ideas. If you’re not familiar with this work, you will probably need to get a hold of Larry’s early papers explaining the technique. The .help files have extensive bibliographies, but most of the material is *not* on the web. You may need to get to a dead-tree library to read up on this stuff.
>
> As an idea on how to do this, I would be inclined to represent your rhythms as strings of 0s and 1s, with 1 indicating "attack".
>
> The mutation algorithms can created highly interesting effects, but they take some practice to get good stuff coming out.
>
> Hope this helps,
> Peter
>
> PS: lp.vim is part of the Litter Pro Bundle. There is a time-domain audio mutation objects, lp.tim~, included in the free Starter Pack. URIs below.
—————————————————-

Hey Peter, thanks for the tip. I think I found the paper you
speak of…

http://eamusic.dartmouth.edu/~larry/published_articles/icmc_articles/polansky_mckinney.pdf

Looks pretty interesting, I will definitely give it a read.


November 14, 2008 | 6:53 am

Quote: Anthony Palomba wrote on Wed, 12 November 2008 10:06
—————————————————-
> I want to create some process that allows me to take two
> rhythmic patterns and have one "morph" into the other over
> a specified period of time. So this…
>
—————————————————-

I know this isn’t what you wanted, but I tend to think of rhythms as probabilities, rather than events:

– Pasted Max Patch, click to expand. –

mz


November 14, 2008 | 12:00 pm

mzed schrieb:
> I know this isn’t what you wanted, but I tend to think of rhythms as
> probabilities, rather than events:

Nice, love the patch and the quote…

Though I do like the original idea of a continuum of onset times versus
a rigid grid as well (we have so much grigid music in the world…)

Its an interesting topic, worth to explore…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


November 14, 2008 | 3:02 pm

Okay, here is what I have so far. This is the pattrstorage
method of morphing rhythm durations. It has an interesting
effect. It is most notable when you turn on the counter beat
and start with both beats in unison then have one of them
morph into some strange contrasting beat. Give it a try and
let me know what you think.


November 14, 2008 | 3:13 pm

Quote: mzed wrote on Thu, 13 November 2008 23:53
>
> I know this isn’t what you wanted, but I tend to think of rhythms as probabilities, rather than events:
>

—————————————————-

Thanks mzed, very nice. That is an interesting way of
doing it. The probability approach makes it feel more natural.


November 14, 2008 | 8:02 pm

Great patch! Love the simplicity, love the complex results.


November 15, 2008 | 12:39 am

That is a great thread
Here is a modest contibution
but in all the exemples I have seen
I would say that we have to main problems:
– the interpolation of two paterns
– the "minimal values" used to express this interpolation
(it is the Simha Arom term to describe the smallest units which
organize the rythms structures)
I made the interpolation by hand but we could of course imagine
more dynamics ways
I did not change the minimal values (the metro in the patch)
but we could imagine to use a curve in a time domain to control
the metro to have something more alive

I think also that to have a sensation of interpolation or crossmorphing (is it different?) we need to have two diferents paterns…

if
x xxx x xxx x xxx x xxx

turns into…

xx xx xx xx xx xx

it means that
2112211221122111
goes to
121212121212
which are very closes rythms
with this kind of material
I would more speak of changing of groove…
hope it helps
and thanks for this nice topic

sg

– Pasted Max Patch, click to expand. –

November 15, 2008 | 12:46 am

sorry, I had forgoten this thing:
hit the message PaternA before starting the metro to make it work…

– Pasted Max Patch, click to expand. –

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