Axe-Fx III Firmware Release Version 13.00 Public Beta

I’ve avoided the drive blocks because I am happy with what can be accomplished with an amp block and non-standard controls.

I’m excited about auditioning drive blocks after I do this update.

Thanks Cliff
 
An explicit solution is one where the output does not depend on itself, i.e.
V = f(Vin)

An iterative implicit solution is where you have to iterate an equation to get the result. For example consider a hypothetical component where the current is a function of the voltage. I.e.
I = f(V)

In a series circuit with a resistor the voltage across the device would be
V = Vin - I*R = Vin - f(V)*R

Let's say the function is I = V^2

So then
V = Vin - V^2 * R

V is on both sides of the equation. One way to solve this is using Newton's method (x = x - f(x)/f'(x)). But that takes a lot of time because you have to keep iterating until the error is below some desired value. You also have to use the derivative which adds computations. The other problem is stability/convergence. Sometimes the solution "blows up" and doesn't converge. This is unacceptable in a real-time system.

A resistor in series with a diode results in an equation with an exponential (or log) function that needs to be solved along with its derivative.

Now when you add a capacitor in parallel with the diode you complicate things even further because now you have a nonlinear ordinary differential equation (ODE). So the current is not only a function of the voltage, the voltage has "memory" due to the capacitor. Solving these types of networks is extremely time consuming. Things like SPICE use implicit solutions like Runge-Kutta 4 (RK4).

I've been working on this for a while and came up with a semi-explicit solution that doesn't require iteration, has the accuracy of implicit solutions and is nearly as fast as explicit solutions.

This is a graph of a 1K resistor in series with a diode. The blue trace is the reference and was derived by solving the network using Newton's method. The red trace is the semi-explicit solution. If you can't see the blue trace that's because the red trace is nearly exactly on top of it.

View attachment 71052

On the Axe-Fx III solving the network using Newton's method uses over 30% CPU. The semi-explicit method is around 6%.
It’s been years since I leaned and played with SPICE and Runge-Kutta... If you achieve such speed Improvement with comparable accuracy for an nonlinear ODE of general enough form, you should consider submit a paper, Sir :)
 
Drive types added:
  • Box o'Crunch, based on the MI Audio Crunch Box v1
  • OD 250 now has two variations: OD 250 and OD 250 Gray (DOD)
  • Precise Drive, based on the Precision Drive (Horizon Devices)
  • TS9DX [edit: TS9DX+]
  • Timothy now has 3 variations: 1, 2 and 3
Also, the Ruckus is now called Suhr Riot.
 
Last edited:
Is there something in this update that uses more CPU? I noticed that some of my presets that were in the high 80's are now running in the 91 - 92% area.
 
An explicit solution is one where the output does not depend on itself, i.e.
V = f(Vin)

An iterative implicit solution is where you have to iterate an equation to get the result. For example consider a hypothetical component where the current is a function of the voltage. I.e.
I = f(V)

In a series circuit with a resistor the voltage across the device would be
V = Vin - I*R = Vin - f(V)*R

Let's say the function is I = V^2

So then
V = Vin - V^2 * R

V is on both sides of the equation. One way to solve this is using Newton's method (x = x - f(x)/f'(x)). But that takes a lot of time because you have to keep iterating until the error is below some desired value. You also have to use the derivative which adds computations. The other problem is stability/convergence. Sometimes the solution "blows up" and doesn't converge. This is unacceptable in a real-time system.

A resistor in series with a diode results in an equation with an exponential (or log) function that needs to be solved along with its derivative.

Now when you add a capacitor in parallel with the diode you complicate things even further because now you have a nonlinear ordinary differential equation (ODE). So the current is not only a function of the voltage, the voltage has "memory" due to the capacitor. Solving these types of networks is extremely time consuming. Things like SPICE use implicit solutions like Runge-Kutta 4 (RK4).

I've been working on this for a while and came up with a semi-explicit solution that doesn't require iteration, has the accuracy of implicit solutions and is nearly as fast as explicit solutions.

This is a graph of a 1K resistor in series with a diode. The blue trace is the reference and was derived by solving the network using Newton's method. The red trace is the semi-explicit solution. If you can't see the blue trace that's because the red trace is nearly exactly on top of it.

View attachment 71052

On the Axe-Fx III solving the network using Newton's method uses over 30% CPU. The semi-explicit method is around 6%.
I believe you should publish this. These types of numerical optimizations are massively useful in a lot of areas.
 
wow, read the description, didn’t understand a word of it but still excited....☝

An explicit solution is one where the output does not depend on itself, i.e.
V = f(Vin)

An iterative implicit solution is where you have to iterate an equation to get the result. For example consider a hypothetical component where the current is a function of the voltage. I.e.
I = f(V)

In a series circuit with a resistor the voltage across the device would be
V = Vin - I*R = Vin - f(V)*R

Let's say the function is I = V^2

So then
V = Vin - V^2 * R

V is on both sides of the equation. One way to solve this is using Newton's method (x = x - f(x)/f'(x)). But that takes a lot of time because you have to keep iterating until the error is below some desired value. You also have to use the derivative which adds computations. The other problem is stability/convergence. Sometimes the solution "blows up" and doesn't converge. This is unacceptable in a real-time system.

A resistor in series with a diode results in an equation with an exponential (or log) function that needs to be solved along with its derivative.

Now when you add a capacitor in parallel with the diode you complicate things even further because now you have a nonlinear ordinary differential equation (ODE). So the current is not only a function of the voltage, the voltage has "memory" due to the capacitor. Solving these types of networks is extremely time consuming. Things like SPICE use implicit solutions like Runge-Kutta 4 (RK4).

I've been working on this for a while and came up with a semi-explicit solution that doesn't require iteration, has the accuracy of implicit solutions and is nearly as fast as explicit solutions.

This is a graph of a 1K resistor in series with a diode. The blue trace is the reference and was derived by solving the network using Newton's method. The red trace is the semi-explicit solution. If you can't see the blue trace that's because the red trace is nearly exactly on top of it.

1n34a.png


On the Axe-Fx III solving the network using Newton's method uses over 30% CPU. The semi-explicit method is around 6%.
That cleared it right up!
 
Thanks Cliff!! Does the new algorithm apply to the drives in the Amp block as well? Just curious.

My guess is no, as the amp block boosts aren't usually running the drives with diode clipping, they're just running them as clean boosts using whatever tone shaping the drives add when being used with Drive at 0.
 
An explicit solution is one where the output does not depend on itself, i.e.
V = f(Vin)

An iterative implicit solution is where you have to iterate an equation to get the result. For example consider a hypothetical component where the current is a function of the voltage. I.e.
I = f(V)

In a series circuit with a resistor the voltage across the device would be
V = Vin - I*R = Vin - f(V)*R

Let's say the function is I = V^2

So then
V = Vin - V^2 * R

V is on both sides of the equation. One way to solve this is using Newton's method (x = x - f(x)/f'(x)). But that takes a lot of time because you have to keep iterating until the error is below some desired value. You also have to use the derivative which adds computations. The other problem is stability/convergence. Sometimes the solution "blows up" and doesn't converge. This is unacceptable in a real-time system.

A resistor in series with a diode results in an equation with an exponential (or log) function that needs to be solved along with its derivative.

Now when you add a capacitor in parallel with the diode you complicate things even further because now you have a nonlinear ordinary differential equation (ODE). So the current is not only a function of the voltage, the voltage has "memory" due to the capacitor. Solving these types of networks is extremely time consuming. Things like SPICE use implicit solutions like Runge-Kutta 4 (RK4).

I've been working on this for a while and came up with a semi-explicit solution that doesn't require iteration, has the accuracy of implicit solutions and is nearly as fast as explicit solutions.

This is a graph of a 1K resistor in series with a diode. The blue trace is the reference and was derived by solving the network using Newton's method. The red trace is the semi-explicit solution. If you can't see the blue trace that's because the red trace is nearly exactly on top of it.

View attachment 71052

On the Axe-Fx III solving the network using Newton's method uses over 30% CPU. The semi-explicit method is around 6%.

I cannot math today. I have the dumb. But...thanks.
 
So if I were to use the Axe-Fx III as a (very expensive 😆) overdrive/distortion pedal and route it between the guitar and a tube amp's input, the best way to do this would be to use the Axe-Fx's Outputs 3 or 4 with the output knobs fully clockwise as that's the setup for unity gain, right?

What's Output 3 and 4's max output level, just so we know how high we can accurately set the drive block's Level knob in this scenario?
 
Last edited:
Is there something in this update that uses more CPU? I noticed that some of my presets that were in the high 80's are now running in the 91 - 92% area.

As noted in the release notes: yes.

I have 3 drives in one preset and CPU went up with about 6-7% by estimate. May depend on the type of drive.

It depends on the type of drive. Diode-based drive types bump CPU usage with a couple of percentage points, for each Drive block.
 
Last edited:
So if I were to use the Axe-Fx III as a (very expensive 😆) overdrive/distortion pedal and route it between the guitar and a tube amp's input, the best way to do this would be to use the Axe-Fx's Outputs 3 or 4 as they're setup for unity gain, right?
Correct. Turn the corresponding knob on the front panel all the way up.
 
Back
Top Bottom