I worked up a nifty patch of contraptions - 8 stereo channels into a mixer and then out, with each channel comprising some combo of Drums, Basslines, Arpeggiators filtered through SouthPoles and/or other effects - and was enjoying myself. All sounded fine. But then, while watching a particular SouthPole, I noticed that the moving line (the one that indicates time/beat) was significantly behind the actual sound - by a 1/16th or two at 92bpm. Hmmm. I'd never seen this behavior before.
I knew all along I had wired a good many contraptions together, perhaps my most ever, and I was keeping my eye on the CPU load indicator down at bottom right. It was running at around 7.6, sometimes up to 8.5 - well below what I've seen in other AM setups I've created. But this lag in the graphics made me wonder. So, I went to Activity Monitor, a Mac utility, and there I found AM running at ... 103% CPU.
So, I am puzzled. What does AM's CPU load figure refer to? And what is its relation to the one shown in Activity Monitor? (I know that on my 4-core Mac, CPU can range to 400%, or maybe even 600% - I forget; much more than 100%, anyway. All of which I don;t quite understand.) I notice that AM's CPU load figure goes away entirely when the Enable Audio button is off. Likewise, the Mac monitor shows CPU dropping from 100%+ to 10% or so with Enable Audio off.
And what might be causing this visual delay? I don't have any other cpu-intensive apps running at the same time as AM.
I also wonder if contraptions that are open in the AM Patcher window are actively consuming CPU cycles even when they are not actually connected to others or generating any audible sound. I sometimes leave them there after removing them from a patch, just because I might want to add them back into the mix. The evidence says no, they are not taxing the CPU when alone in AM.
Which is to say, how does AM actually work, I wonder? This may be a trade secret, but I am certainly curious about its internal structure, or functional map, or whatever. Any hints? Like, as we add contraptions to Patcher, does this load additional modules of code into memory and kick into play, or are they there all along, just getting shared, perhaps concurrently processing different streams of data in a multi-threaded way? Admittedly, I may know just enough about this to be asking the wrong questions. But I also admit that I am curious, and I often think about what's going on beneath the covers as I am fiddling with AM. The more I play with it, the more impressed I am and the more curious as to how it can possibly do what it does. Any hints?
thanks in advance.