### Creating a circular LFO

Hello, I am trying to create a circular LFO that I can eventually use to modulate parameters in Live, however I am having some simple mathematical difficulties and am confused as to what the best way to achieve this within max would be.

Basically I just want an oscillator that traces the contour of a circle over and over again. My goal ultimately is to be able to hook this up to two parameters so say you hook up the X coordinate being drawn to effect the gain of an EQ point, and the Y coordinate being drawn to the frequency of the EQ point- you get an automatic version of grabbing an EQ point and moving it around in a circle.

If anybody could point me in the right direction of any objects I should start playing with to achieve this or any simple mathematical formulas for tracing the contour of a circle on an x y grid that would be extremely helpful.

Thanks!

Maybe I’m not understanding you, but I think what you want is a cosine and a sine.

it is easier if you leave out that "tracing" stuff, and only have a circle GUI which is driven by in fact two simple cosine LFOs (and not the other way round)

for the GUI i would draw a little dot using the "paintoval" message to an [lcd] object, and for the number-LFOs [line] and [cos] are your friends.

-110

p.s. this is the gen forum :)

Hi Roman,

That makes perfect sense, but how can I setup the two cosine LFOs to work in sync to ‘draw’ the circle? I know that my way of thinking about drawing the circle is somewhat backward however I am not sure how else to know that I have gotten them in sync and that they aren’t just wobbling around all over the place if that makes any sense…

So far I’ve gotten this far, but cannot figure out how to configure it to actually draw perfect circles… any ideas?

-- Pasted Max Patch, click to expand. --Copyallof the following text. Then, in Max, selectNew From Clipboard.----------begin_max5_patcher---------- 1549.3oc0a0tiiZCE82IOEHT+QqZFj+FSUUk5yQU0JRh2YXWBDAjsS2U67rW aCYByzPhSp4VPynjIDFmCGN2y8dsc91xEgqKeVUGF7KA+QvhEea4hE1CYNvh tWuHbW5yaxSqsmVXg5uJW+ovUsuUi54F6gyKS2tNs3wiuwGKKZpy9px7lXZD p6vEG1kUjqZriEt6f6Sa17TVwienRsooEKbhLhI3BZ7p.ZbDQRXrUABldfBH 3HTvedZ.KOz79Qr8PM+8dU6vEZg1q+SYasXVec7.G2GwEo6r+Gg+dUVZdn4M 99xklGV4H8rSUWm9n5ewOaxUoUmkbHmmbHCSNLBMJNgJkZJAijFNQyQ5Gwxa mYNOqf7KqLfnYe5mCPAnaQyPbSyfYFZMfSuWAyYoEVBPzxlOGjY94rLCNhmv wx3yQOzgomXRazSmTIFaeJwSTCADlYmpopTqMPnalYtfvQFKrbgVyHIBjTaz jbujyfFMLfLZ9A7nwORMeHEIBcbEoUC4q3JPDOUoEaK2EP3hwfbD7nDtP6As RGocupmrhly6GCBAkmUnzITP9z0oidHXj0OFcElgLntY0PZGx7kaPnwkahmy wUsjy3FWwnfYJm3YO4N54jmLi6UO4D.SnORbSu74DumOGifrhGjeYntZAG2J dvD3p3Yj3mQqhGLcFaMejcFUqYLa1lW+XmViVdcLL0CdnvzI5MyLWXZcDsyV ANw17ISduLiQzr5BZGIH7yOGH8YXkHg2qAcRr2inRlkrhPLprBAl73O3YVoi NFKVgwmkrRq8x3wJBXl+uJ0dUw1f8oZfT9E8X6eKXJt07EQ85z.xhAdFR0+f FbNjuDEEecYjnsipDOSQRXJKFEg8z5MPz7QbBMQSBTKkPIQbOtZCLOaAu9PS SYQ3MFXP0WUGWUk31Il40G8VOQzDudK1S2fow7SKnT6Jm34awz4mnW2Q7HyI 91q7vt0paZMFuTz.5jjfoi+4Gaj4BgCmXyJ8ESip5Cphz04VHftRo7CGw.Se f0aRyUAOfiBL+NXGyCrpjB2HRJucsBvHutrjT9XHjd43fpuCopLUgXtEidk. 9u54zmWnsqVqvQA1txsp9utN6QqFKZPUl9LJL0QED9w7xzA5D.nU28oz5xpW BFxp51W3aJlcxpRak2saIj2sJqisNqVCl1k1TV+hm1JI8YGBSyFIXA1H5jiA 834U4cS4tcJiC463mrh8GZB9Qzu9vug+IeQTDwq6eBBBEEyjnDpVGItBQ8pi P0iqeabnAuaJyKqZ+DPQTpHgqG+y8W8+.5SojYshKgYxcNNhM5TntYh1v1Ha 3DckBzjQpvYh7dthTeca5lWBu0R+H16Vbd6rTxO93Uj+8Qa7jMuKNIoqYtIR VWwLMqauthG4btD7byA7D2L5YbIz4aF29VmSnLtD1LVuMh4aIjIbC6Xo8B++ 0d0ky6V06nPZ2dgvycoK.aKUWqZ1m8rJ2Ny3DN+V2i0WfhXskD0FjgYR+NOF 9kgx2r8VqkkSo8T.jtRiLOMvEHanKv7rZarxwm6BcN+By1+pydB1skv69ZYX gq43u8Rtt7P0liepcabqfSvcqptIqHsISWX+oyI9MmySYa2pJ5G4uMq1XFXg H5rTuqnQ5.ZXISJ3nkgZakoBZHRvHmXWfCXjivAz.G2X9dBcckCbBYy2Pmqh GLbvwkvbvPCyEOPLbhGlStfvYJyhmThGlKg5L.ucwcEOv3DZ1k5WEOvY8X9F W3TdBBLvwEmYNbriKFyTzzBOD.C1cI1h.FbntjpfilV3ggmX3YhwOT4DCOwS K7fmXwWX.0ORWsmgI2NM1U6YfviK09PgqTdJy0IP.OcvCErhentTZHAtZCoN 0lLEN73T0XvkNk7Vk5.3AtpUMq95Uwi.N33jbFtrWDmZ0AP9wkvKBbgWDjqc JCicHwU3v.AN3DWwCEF73z7PAmbFKcv8gwgEOWM7BMs3GLbY2wbGm4GffiK0 hggyMD6R1KLfxYWrCwvUKO1orE268q1ENMc+9unpp6FSKTB2k9o18CicgsC2 kUz9R6HFVo9R1wyOdoYz99x+A03u4jA -----------end_max5_patcher-----------

(edited by admin – use ‘copy compressed’)

Like this?

Tip – use Edit/Copy Compressed!

Cheers

Roger

-- Pasted Max Patch, click to expand. --Copyallof the following text. Then, in Max, selectNew From Clipboard.----------begin_max5_patcher---------- 604.3oc0VFsaaCBEF9Z6mBjucYQ.1lTu61ywTUEASSnxFrrIcosp4Ye.1z5V QxbczhxtAKNfg+y24b.dINJYsZOuKA7Cvu.QQuDGE4LYMDMzOJoltmUQ6bSK gopq4Rcxh9wz78Zm8lszNt2pnzYSs9guiPdi2qjZIsl6F5msBZkejFplsUH2 bWKmo6ESJoXIbA.Urx9IK01hgKgfaG9G4tZgrhqcpB8tQ0Ns2JzuwsaV65uD NRJchmcRAgWBsVeMN11rXhb39JkY2B3vEyyegXm+hxrexgSyeanslMPyauiK oqq3i85OxB7Q77Ay8yT+TCuWNV2iZBxfj0T4lDvsyfP7mKorCAHzMmfCYNQA v8Q7rbeaXNfCG2mgX6XpFdHwRNgXwXhUeooCgKTeJawWTtCVYzJFSsS5V7z7 yNmzLjn1z0FoeKPOxyxlUhZFZbg40Whp24ERuyCmU8sj+aCjBdLmp8..ACjq fOqR+bWx9JzoIZ3bHzWjZchMRinlUc8QHC6IVUvJnTxLwhiG39DszabLZ04i khKJUZTxMlrkklrPSa.5jkOO5fcWTfINHQHmlNoWoz4aGLbAmGBKjyBKotRp Lz+mIMGsTJGNKpfytJJkbaWRkP94Wb5jr09GQUmZWKyuf9ZEv6ptj2oERpVn jilj83F.5sIsUTVxkiuuoTzYuBp73OUXx5gLA87IQ+uTO3oHGxESNESPN3qJ 3XqutT4NSMVcYjiyy+a54xk5jRlnblCc5OGh1z7HusaXIcJwb37CpVaWxh39 GQ120shIs7GE94uJ1tZuF+G.tbyegB -----------end_max5_patcher-----------

how to get them in sync? … by using the same [line] object for both LFOs.

in your case: * -1 (or + 0.5, % 1.) for the second cosine should do it.

btw, you are right, of course there is the problem that [line] will have a certain

interval, for example 25 milliseconds – and that doesnt give you a perfect circle

when just writing those coordinates to an lcd (depending on the way you

want to represent it graphically. for a bigger dot it might be no problem.)

so if that is an issue here, i´d pull back my suggestion to write the "cosines"

directly to the GUI but use carthesian(the line´s 0-1 output)-to-polar mapping instead.

actually, you could go one step further and make a signal-rate LFO – and a line-based

one with some 40 ms grains in parallel which is just doing the graphics.

-110

Forums > MaxMSP