Syncing phasor~, 2d.wave~, function ALL to Ableton

technopoem's icon

Hello,

Does anybody have a better method to setting the domain of a function object to the length in milliseconds it takes for a phasor to go from 0. to 1. ? I've been using the timer object but have found for some reason it produces terribly out of synch results.

What I'm trying to do is essentially this...

Run Ableton while sending and recording a track into a buffer~ in a max patch. Then I want to use 2d.wave~ to manipulate this audio and send it back to Ableton.

Syncing Ableton via sync~ has been easy, but the rate of the phasor has always been based on quarter notes. So, I've tried using rate~ to achieve the appropriate time it would take to run through the buffer~. I hope this makes sense.

EXAMPLE: If my buffer length (the length of the audio clip being manipulated) is 2 measures in Ableton, and I choose to slice it into 2 rows with 2d.wave~, then the x-axis phasor~ should be synced to the length of 4 beats from sync~ (assuming I'm in 4/4 time) This will ensure that I am always playing back the sample at it's original pitch. Even up until this it's still worked fairly well for me.

HERE is the part that's driving me insane. I would like the domain of a function object to be the length of the sample divided by how many rows I select. AND it needs to be triggered at the START of the measures in Ableton. Then I feed the function into a curve~ and feed that to drive the y-axis of 2d.wave~...

So far I've been using timer to get the length of a phasor~ and sending that to function, but it's always off time. Even getting it to trigger at the beginning of a measure is tricky. Is there anyway to sync function to phasor~ in the MSP side of MAX?

here is a stripped down version of my patch that includes the basics of how I want 2d.wave~ to work. The stuff in the red is the failed part of my patch. It's on red because that is the color I see in my head when trying to make this work.

THANKS, SOMEBODY SAVE ME.

PROBLEM.maxpat
Max Patch
daddymax's icon

If your phasor is using some sort of max time format to set its length, perhaps ditch the timer (im not sure its particularly accurate) and instead incorporate something that feeds the note values/ bar:beat:ticks you are using directly into a translate object (notevalues to ms) and use the output of that to set the length/ domain of your function~?

technopoem's icon

Thanks for your response,

I'm not sure I'm using any ticks. I'm simply setting the output of sync~ as my x-axis phasor~... I know that sync~ also outputs ticks, but I'm unfamiliar with this method and don't exactly understand how I would implement your suggestion. Do I feed sync~ into translate?

Thanks again!

technopoem's icon

Sorry for the double post.

If there was a way I could get phasor~ in max to sync to the transport in Live, in the same manner that you can sync phasor~ with the @lock argument, this would be a lot easier. I wonder if this is possible.

Thanks!

bitwise's icon

I think what you're looking for is plugphasor~. That will give you a ramp for every beat. Then you might want to use rate~ to multiply or divide that beat into whatever length you want (bars, 16ths, etc.). Try using plugsync~ to help with phase if you're using rate~ to multiply the phase duration. HTH.

technopoem's icon

Thanks for your reply,

I'm getting closer to solving my issues with this project. I'm not using plugphasor~ or sync~ to get quarter notes in from ableton and then using rate~ to expand that out to the time divisions I need. I am noticing that the original signal from plugphasor~ / sync~ stays in time with each quarter note, but after rate~ the signal seems to drift off, it actually falls back a quarter note, so instead of turning over at the 1 of each measure, it turns over at the 2. This is becoming really annoying.

Does anybody else have these timing issues with rate~?

My audio settings seem to be set correctly ("overdrive" etc)...

daddymax's icon

your rate~ is falling out of time with your source plugphasor? have you set the rate~ using the sync lock argument? If not, that could be it (check the rate help file for a better rundown).

technopoem's icon

I think the issue is syncing the plugphasor~ / rate~ to ensure that the ramp starts at the first beat of each measure in Ableton. When I adjust the parameters of the patch, the rate~ argument changes to ensure my samples remain at the same pitch, every time this adjustment is made, the rate~ skips a beat and thus falls back. Now, instead of the ramp starting at the 1 of each measure (the accented click on the metronome) it starts at the 2. If I change parameters again, the rate is adjusted and now starts to ramp at the 3. I've also set the sync lock argument to 0 (cycle), should I try 1 instead? Oh, and I bang a "reset" message into the rate~ object everytime I adjust the argument as well.

So, I don't think it's that the rate~ object is falling out of sync as I originally believed. Instead, the rate~ object begins to ramp on a different beat each time I change my settings. So, how can I get it to restart the ramp on the next 1 of a measure??

What am I missing here?

Thanks!

matheus leston's icon

Well, this is a very old post, but as I'm facing the exact same issue myself, I'm curious to know if you (or anybody else) found an answer to that.