Forums > MaxMSP

Humanizing tempo



DF
March 7, 2008 | 4:22 am

Hello peeps,

anyone got any knowledge on humanizing a tempo or metronome count.
I would like to utilize a ‘swing’ control on the sequencer I’m building for a uni project…

Recently got myself max/msp and recently started a uni module on it…suffice to say all other work/social/romantic life has now flown right out of the window……
Great.

Cheers in advance for anyone who has the power of knowledge…
its now 4:21 am and my brain is broken…

Oh and hello..

Tim

March 7, 2008 | 7:56 am

Tim Harris wrote:
> Hello peeps,
>
> I would like to utilize a ‘swing’ control on the sequencer I’m building for a uni project…
Hi Tim, hi list

Just use [Delay]. So the ‘direct’ Bang (with no delay) would trigger the
beat, the delayed Bang would trigger the offbeat.

best, Michael

March 7, 2008 | 8:58 am

make any kind of a phasor~ controlled sequencer and then LFO the phasor~ frequency. use rate~ to get a few instances of the phasor~ then amplify the LFO to whichever one you want swinged more. this will give you much tighter swing than working in the scheduler domain. kinda less control from a certain point of view, but from another – more.

March 7, 2008 | 9:09 am

Nothing more human than a little booze. How about multiplying a little drunk into the metro rate?

March 7, 2008 | 10:01 am

Here’s a system I’ve used in the past for a 16 step
drum machine.
I’ll leave you to work out what it’s doing, but don’t
forget that if it’s for a Uni project, you should
quote your source.
I don’t know whether your institution’s plagiarism
software checks this list, but I would be surprised if
your lecturer doesn’t ;-)
cheers
Roger

#P user ezdac~ 168 443 212 476 0;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 172 390 37 196617 click~;
#P message 458 32 14 196617 0;
#P button 440 32 15 0;
#P number 325 49 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P newex 291 221 20 196617 t b;
#P flonum 285 271 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P newex 285 250 35 196617 timer;
#P flonum 316 412 71 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P newex 316 387 35 196617 timer;
#P toggle 213 53 15 0;
#P newex 213 73 76 196617 tempo 80 1 16;
#N counter 1 16;
#X flags 0 0;
#P newobj 213 95 68 196617 counter 1 16;
#P user multiSlider 427 61 307 39 -0.5 0.5 16 2681 15
0 0 2 0 0 0;
#M frgb 18 196 21;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 37 52 91;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P toggle 149 80 15 0;
#P newex 233 246 20 196617 t b;
#P newex 234 267 27 196617 0.5;
#P newex 270 291 27 196617 * 1.;
#P newex 149 101 27 196617 + 1;
#P newex 233 174 45 196617 gate 2 1;
#P newex 496 149 38 196617 r maxi;
#P newex 463 120 32 196617 r min;
#P outlet 270 393 15 0;
#P newex 270 325 27 196617 t b f;
#P newex 270 348 32 196617 delay;
#N vpatcher 1390 30 1952 440;
#P origin 0 36;
#P window setfont "Sans Serif" 9.;
#P newex 69 134 41 196617 r rtzed;
#P number 3 228 35 9 0 0 0 3 0 0 0 221 221 221 222 222
222 0 0 0;
#P newex 205 37 45 196617 loadbang;
#P newex 205 60 40 196617 uzi 16;
#P newex 479 130 33 196617 + 0.5;
#P newex 465 112 33 196617 + 0.5;
#P newex 434 130 33 196617 + 0.5;
#P newex 420 112 33 196617 + 0.5;
#P newex 391 130 33 196617 + 0.5;
#P newex 377 112 33 196617 + 0.5;
#P newex 348 130 33 196617 + 0.5;
#P newex 334 112 33 196617 + 0.5;
#P newex 305 130 33 196617 + 0.5;
#P newex 291 112 33 196617 + 0.5;
#P newex 262 130 33 196617 + 0.5;
#P newex 248 112 33 196617 + 0.5;
#P newex 220 130 33 196617 + 0.5;
#P newex 205 112 33 196617 + 0.5;
#P newex 176 130 33 196617 + 0.5;
#P newex 162 112 27 196617 + 0.5;
#N comlet 16 way multislider;
#P inlet 165 4 15 0;
#N comlet steps;
#P inlet 102 3 15 0;
#N comlet rate;
#P inlet 67 3 15 0;
#N comlet on/off;
#P inlet 33 1 15 0;
#P newex 90 152 27 196617 – 1;
#P flonum 303 276 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 286 253 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 268 276 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 251 254 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 233 277 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 216 255 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 198 278 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 180 256 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P message 438 168 35 196617 set $1;
#P message 424 150 35 196617 set $1;
#P message 401 169 35 196617 set $1;
#P message 387 151 35 196617 set $1;
#P message 363 169 35 196617 set $1;
#P message 349 151 35 196617 set $1;
#P message 326 170 35 196617 set $1;
#P message 312 152 35 196617 set $1;
#N counter 0 15;
#X flags 0 0;
#P newobj 34 179 66 196617 counter 0 15;
#P outlet 91 387 15 0;
#P message 288 171 35 196617 set $1;
#P message 274 153 35 196617 set $1;
#P message 251 172 35 196617 set $1;
#P message 237 154 35 196617 set $1;
#P message 213 172 35 196617 set $1;
#P message 199 154 35 196617 set $1;
#P message 176 173 35 196617 set $1;
#P message 162 155 35 196617 set $1;
#P flonum 90 334 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P newex 34 202 288 196617 sel 0 1 2 3 4 5 6 7 8 9 10
11 12 13 14 15;
#P flonum 162 279 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 145 256 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 127 279 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 110 257 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 92 280 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 75 258 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P newex 165 82 354 196617 cycle 16;
#P flonum 56 281 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P flonum 39 259 35 9 0 0 0 3 0 0 0 221 221 221 222
222 222 0 0 0;
#P connect 20 0 60 0;
#P connect 38 0 20 0;
#P connect 20 0 9 0;
#P connect 9 0 0 0;
#P connect 11 0 0 0;
#P connect 9 1 1 0;
#P connect 12 0 1 0;
#P connect 61 0 20 2;
#P connect 9 2 3 0;
#P connect 13 0 3 0;
#P connect 40 0 37 0;
#P connect 37 0 20 4;
#P connect 36 0 10 0;
#P connect 35 0 10 0;
#P connect 34 0 10 0;
#P connect 33 0 10 0;
#P connect 32 0 10 0;
#P connect 31 0 10 0;
#P fasten 30 0 10 0 89 338;
#P connect 29 0 10 0;
#P connect 8 0 10 0;
#P connect 7 0 10 0;
#P connect 6 0 10 0;
#P connect 5 0 10 0;
#P connect 4 0 10 0;
#P connect 3 0 10 0;
#P connect 1 0 10 0;
#P connect 0 0 10 0;
#P connect 10 0 19 0;
#P connect 9 3 4 0;
#P connect 14 0 4 0;
#P connect 9 4 5 0;
#P connect 15 0 5 0;
#P connect 9 5 6 0;
#P connect 16 0 6 0;
#P connect 9 6 7 0;
#P connect 17 0 7 0;
#P connect 2 0 42 0;
#P fasten 42 0 11 0 167 154;
#P connect 9 7 8 0;
#P connect 18 0 8 0;
#P connect 58 2 2 0;
#P connect 41 0 2 0;
#P connect 2 1 43 0;
#P connect 43 0 12 0;
#P connect 9 8 29 0;
#P connect 21 0 29 0;
#P connect 9 9 30 0;
#P connect 22 0 30 0;
#P connect 44 0 13 0;
#P connect 59 0 58 0;
#P connect 2 2 44 0;
#P connect 45 0 14 0;
#P connect 9 10 31 0;
#P connect 23 0 31 0;
#P connect 2 3 45 0;
#P connect 9 11 32 0;
#P connect 24 0 32 0;
#P connect 46 0 15 0;
#P connect 2 4 46 0;
#P connect 47 0 16 0;
#P connect 9 12 33 0;
#P connect 25 0 33 0;
#P connect 2 5 47 0;
#P connect 9 13 34 0;
#P connect 26 0 34 0;
#P connect 48 0 17 0;
#P connect 9 14 35 0;
#P connect 27 0 35 0;
#P connect 49 0 18 0;
#P connect 2 6 48 0;
#P connect 9 15 36 0;
#P connect 28 0 36 0;
#P connect 2 7 49 0;
#P connect 50 0 21 0;
#P connect 51 0 22 0;
#P connect 2 8 50 0;
#P connect 2 9 51 0;
#P connect 52 0 23 0;
#P connect 53 0 24 0;
#P connect 2 10 52 0;
#P connect 54 0 25 0;
#P connect 2 11 53 0;
#P connect 55 0 26 0;
#P connect 2 12 54 0;
#P connect 56 0 27 0;
#P connect 2 13 55 0;
#P connect 57 0 28 0;
#P connect 2 14 56 0;
#P connect 2 15 57 0;
#P pop;
#P newobj 284 132 65 196617 p stepulator;
#P newex 464 177 27 196617 t b i;
#P newex 464 200 27 196617 -;
#P newex 463 150 27 196617 – 1;
#P comment 47 81 100 196617 groove on/off;
#P comment 285 51 100 196617 tempo;
#P comment 399 32 37 196617 zero;
#P comment 549 43 41 196617 groove;
#P connect 31 0 32 0;
#P connect 31 0 32 1;
#P connect 8 0 31 0;
#P connect 8 0 10 0;
#P connect 8 0 23 0;
#P connect 8 0 23 1;
#P connect 30 0 19 0;
#P connect 29 0 30 0;
#P connect 27 0 25 0;
#P connect 27 0 25 1;
#P fasten 20 0 7 0 218 124 289 124;
#P fasten 20 0 27 0 218 158 296 158;
#P connect 22 0 21 0;
#P connect 21 0 20 0;
#P fasten 28 0 21 1 330 69 240 69;
#P connect 26 0 15 1;
#P connect 25 0 26 0;
#P connect 23 0 24 0;
#P fasten 19 0 7 3 432 122 343 122;
#P connect 13 0 17 0;
#P connect 17 0 16 0;
#P fasten 14 0 13 0 154 129 238 129;
#P fasten 7 0 13 1 289 157 273 157;
#P connect 13 1 15 0;
#P connect 16 0 15 0;
#P connect 15 0 9 0;
#P connect 9 0 8 0;
#P connect 9 1 8 1;
#P fasten 5 0 7 2 469 221 403 221 403 111 325 111;
#P connect 18 0 14 0;
#P connect 11 0 4 0;
#P connect 4 0 6 0;
#P connect 6 0 5 0;
#P fasten 12 0 5 0 501 196 469 196;
#P connect 6 1 5 1;
#P window clipboard copycount 33;

— Michael Winkler wrote:

> Tim Harris wrote:
> > Hello peeps,
> >
> > I would like to utilize a ‘swing’ control on the
> sequencer I’m building for a uni project…
> Hi Tim, hi list
>

March 7, 2008 | 10:52 am

Here’s one way of randomising the beat slightly which I used in a
sequencer like patch I built.

master clock pulse
|
[t b b]
|
| [brownian 1. 3.5 0.65] (from the rtc lib)
| |
[delay 2. ]
|
randomised clock pulse

You could (off the top of my head) also use counter and coll – set the
counter to give you the sub-divisions of the bar and store a series of
fixed delay settings for each subdivision of the beat in coll. Use a
multislider to change the delay settings stored in coll.
Of course this only allows you to delay the beat. You could get round
that by having the master clock running ahead of time by putting the
main clock pulse through a global delay value, in effect making the
whole patch run slightly "behind time" (or the main clock "ahead" of
time) so that a delay value of zero means that the clock pulse is
slightly ahead of the "bar line". I guess you could say that you’ve
introduced a degree of latency between the main clock pulse and the
main sequencer patch. Does that make sense? I’ve not built this
myself, but it’s how I was thinking of solving the problem for the way
I work – there may well be more elegant solutions around!

David

On 7 Mar 2008, at 04:22, Tim Harris wrote:

>
> Hello peeps,
>
> anyone got any knowledge on humanizing a tempo or metronome count.
> I would like to utilize a ‘swing’ control on the sequencer I’m
> building for a uni project…
>
> Recently got myself max/msp and recently started a uni module on
> it…suffice to say all other work/social/romantic life has now
> flown right out of the window……
> Great.
>
> Cheers in advance for anyone who has the power of knowledge…
> its now 4:21 am and my brain is broken…
>
> Oh and hello..
>
> Tim


DF
March 7, 2008 | 3:35 pm

Thanks guys, thats given me plenty to think about for the weekend…
I’m sure all of this is going to be useful, if not in this patch but others to come…
Thats what I’m loving about max, the sheer amount of different ways/tools/techniques that you could use for something like this…

Cheers for the speedy replies people,

Thanks a lot.

Tim

March 7, 2008 | 8:47 pm

Quote: DF wrote on Thu, 06 March 2008 20:22
—————————————————-
> Hello peeps,
>
> anyone got any knowledge on humanizing a tempo or metronome count.
> I would like to utilize a ‘swing’ control on the sequencer I’m building for a uni project…
>
>

I made a big tempo world, and the outdated web pages are here:

http://cnmat.berkeley.edu/library/max_msp_jitter_depot/modules_building_blocks_mmj_depot/timing/stepmetro

If you get this thing, there’s a subpatcher in sub-beat.help that demonstrates swing. The tempo doesn’t change, but the microtimings on each subdivision can be altered.

mz

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

Forums > MaxMSP