Axe-Fx II "Quantum" Rev 10.01 Firmware Release

94-96% CPU Usage? That would be your problem. Perhaps the new firmware is using slightly more CPU?

I think you're right. I pulled out everything not totally necessary, dropped to 70-ish% and the problem went away. I guess it was just odd to me that MIDI would have been on the chopping block.
 
I am an ASIC designer by trade. I used to work for a rather large company, which shall remain nameless, that does microprocessors. At on point we were graded by the number of gates we created everyday. Not the best indicator of efficiency let me tell you. I could instance a 32 bit register in a for generate loop and create over a million gates in about 3 minutes. But it would be useless logic.
I remember watching a documentary about IBM back in the early days. Programmers were paid by KLOCs - thousand (K) Lines Of Code.
 
Yep, and then 10 years later we were paid by how many lines we could remove in projects to make systems more effecient. :)

This is why it's a bit important for management to understand what you do. Of course managers who came up through the technical ranks often have pretty miserable people skills, not to mention ethical challenges.
 
The axe3 came out, axe2 FW received two updates, I've been running 6.03 and been nervous about updating but I think it's about time to see what I'm missing...
 
One of the tricks-of-the-trade when doing embedded programming is to make local copies of member variables. I.e., if you have an object foo with a member bar you would do this:

float bar;
...

bar = foo.bar;

for(i = 0; i < FRAME_SIZE; i++)
{
...
bar = bar * x; // for example
...
}

foo.bar = bar;

The operation on bar is a "Read-Modify-Write (RMW)" and most embedded processors are optimized for this if the memory is L1 cache (or some other tightly-coupled on-chip memory). By making a local copy you force the compiler to use fast, local memory. When you are done with the loop you then save the local variable to the object.

Some compilers will do this automatically if you give them some information about the variable via a pragma. I think it's just easier to manually do it rather than dealing with pragmas which aren't portable.

The danger with doing this is if you forget to initialize bar or save it at the end, which is what I did.

Interesting! So I'm guessing your IDE does not complain about uninitialized variables then? I would make so many mistakes if my IDEs didn't help me with small things like that, it's so easy to forget small things like that when you are in the flow programming away.
 
Back
Top Bottom