changing args and attributes programmatically

jtay's icon

Hi there. I'm brand new to Max and am currently working with the trial version to see if I can make Max do what I want to.

Let's say that I want to output a bang from a metro object every quarter note at a tempo that is defined by the transport object named "tempo1." The obvious way to do this is to crate a metro object like this: "metro 4n @transport tempo1." However, I don't like hard coding arguments and attributes like that. Is there a way that I can change the duration argument and the transport attribute externally? I want to be able to say something like this: "metro $1 @transport $2." Then I could have a control of some sort to change them.

I've looked at using the tempo object as a potential solution, but I'm concerned about accurate timing. Is there any difference in timing between the metro and tempo objects, or do they both use the millisecond timer?

Also, to briefly describe my application, my end goal here is to write a program that records and loops MIDI sequences, but with more freedom than is appropriated by Ableton or other looping solutions. I want this program to be able to loop in multiple meters simultaneously (e.g. 4/4 vs. 7/8), record tied notes across bar lines, and record loops at different tempos.

pid's icon
Max Patch
Copy patch and select New From Clipboard in Max.

max can do what you want:

hth