Timepoint issue...

i snor's icon

Hi everybody,

I am trying to port a Max Patch I did for my band WHOURKR (death/electronica/breakcore) into Max for Live for our gigs, and ran into an interesting problem.

It appears the transport object is totally slaved to Live, so much that it is impossible to reset it. Therefore it seems impossible to use the Timepoint object to make loops within the Max transport (let's say every bar), as it is dependent on the transport itself... which won't reset.

Strange still that the right inlet still exists, as it is supposed to specify a time point within the transport. I don't really know how to deal with that, except probably by making it in a totally different way. Anyone?

I'm putting an example below. As a normal Max patch it works and will rest the transport bar every bar at 120 bpm (and making a bang each time), but in Max for live it will only make one bang and continue as if nothing had happened. Thanks in advance!

Max Patch
Copy patch and select New From Clipboard in Max.

Andrew Pask's icon

If you get a chance to edit this post, Please paste the code in as "Copy Compressed".

You can specify "clocksource internal" to the transport object when running in a Max device so that you can use your ITM patch just like you are in Max.

But then you would lose sync with Live's transport. Maybe what you want to do is create a loop in your Live set?

-A

i snor's icon

Oh I'm so sorry but I couldn't find how to edit my post. How do I do that? In any forum I usually can, but here... If you know how to do it please tell me. Anyway here is the compressed patch.

Then indeed I can switch to Max but the whole point is to be synchronized here! I just want to have the sync AND to be able to manipulate the transport numbers within Max for Live. It could sound like it made no sense, but I could actually do it before by using a small OSC plug that would give me some sync from Live while keeping an internal clock source reference for the Max Transport. Then everything was moving in sync, only Max was making a loop. See? There should be an interediate object, or something like that...

Max Patch
Copy patch and select New From Clipboard in Max.

And of course it would work if I made a 1 bar loop in Live, but I absolutely don't want to do that, as I precisely want my plug to be independant from the Live Transport.

Andrew Pask's icon

Yeah ok. I guess what you're asking for is a kind of "modulo" sync option for ITM whereby ITM loops a subset of time against Live's transport. That's not currently possible. You couldn't fake it in ITM without a whole lot of plumbing ( repositioning all your timepoints every time you go past the loop point, yuck)

The way we do it in the examples and Pluggo devices is to have a ramp over a bar, or some smaller time unit which is synced to Live and drive all our events with non-ITM event handling. Have a look in the guts of Step Sequencer, this actually does more or less what you are talking about. Cyclotron loops over 1 bar as well.

It sounds like you may have to modify your code a bit. But if you do, it will still work in Max at least. I shall definitely log your idea for ITM.

Cheers

Andrew

P.S. Now we have editing!

i snor's icon

Hahaha, well I still can't edit mine!

In the meantime I have found another way, but will look into the Step Sequencer - wasn't it the Loopshifter actually?

So what I did is I extracted the Raw Ticks from the Transport object, used a Modulo function with the number of ticks I wanted in the loop (which can of course vary with a menu). That gave me the position of my lecture in ticks, which I converted into samples with associated tempo and sample rate, which can also vary. The result is very stable, and allows me to be in sync depending on the quantification I use for my Metro object.

Was that clear, or should I send the patch? It was actually very easy, but mostly because I need the plug to always be synced on the beats, no matter how fast they are... But thanks again Andrew!

Andrew Pask's icon

Yeah using a modulo on the raw ticks thing would work fine, but if you use timepoint at all you'll need to update it to keep it firing inside your loop.

Sounds like it's working out. Yeah - the looping ITM thing is in StepSequencer.

-A