Amp simulation and circuit modeling
Posted: Wed Jan 30, 2008 7:13 pm
I decided to break this off of a discussion in the "new engine" forum, as it was getting off-topic there.
To summarize, I've been putting my mind to the problem of how to make a guitar amp simulator. The traditional methods are very difficult, and aren't really producing results that I would call first-rate, though some do, like the Waves GTR and Softube Amp Room, the latter of which I consider the top of the bunch. This all leaves me wondering if a more behavioral approach might be called for.
There are two ways to model a system. One is the black-box approach, where you feed known inputs into a system, get known outputs from that system, and then create a best-fit algorithm of your own to go in-between. The problem with this approach is that it is not parametizable; you can't change an input and get the same result as you would on the original system, and it also does not model interactions between the components of the original system. However, for your one curve-fitted instance, this method is likely to provide really good results.
The other method is via physical or component modeling, where the system components are known, and models of each component are combined in a system where they can interact with each other. This has the advantage of being parameterizable in the same way as the original system, complete with interactions of components. However, these systems are extremely complicated to put together, and don't always guarantee good sounding results across a range of parameters.
I'm wondering if we can't take a hybrid approach, though I don't know exactly how to put it into words.
One of the ways that the "tube" sound is often simulated is with a simple waveshaper using the tanh (hyperbolic tangent) function. You can tweak the sound by applying different bias to the input signal to emphasize one class of harmonics over another. It's not an actual model of a tube, though it does get some of the behavior right: it has a fairly linear range until you push it hard, then the overtones kick in.
Looking at the graphs of various tube datasheets, I can't help but wonder if a more complex waveshaper couldn't be made which matches the curves on the datasheets. It's not true modeling, but combining several of these waveshapers together with other modeled components (EQ and filter networks, DC filtering, etc.) in order to create a complex interacting system that is predictable, like a real guitar amp. Basically, it would be black-box modeling the tube, and component modeling everything else and creating the matrix from that (it remains to be decided how an output transformer would be handled, but I imagine a filter plus a transfer function would work there). As for the cabinet and speakers, I'm wondering if physical waveguide modeling wouldn't be a good way to go there.
It's a lot to think about, and I want to try my hand at a few things. We'll see how it all goes.
To summarize, I've been putting my mind to the problem of how to make a guitar amp simulator. The traditional methods are very difficult, and aren't really producing results that I would call first-rate, though some do, like the Waves GTR and Softube Amp Room, the latter of which I consider the top of the bunch. This all leaves me wondering if a more behavioral approach might be called for.
There are two ways to model a system. One is the black-box approach, where you feed known inputs into a system, get known outputs from that system, and then create a best-fit algorithm of your own to go in-between. The problem with this approach is that it is not parametizable; you can't change an input and get the same result as you would on the original system, and it also does not model interactions between the components of the original system. However, for your one curve-fitted instance, this method is likely to provide really good results.
The other method is via physical or component modeling, where the system components are known, and models of each component are combined in a system where they can interact with each other. This has the advantage of being parameterizable in the same way as the original system, complete with interactions of components. However, these systems are extremely complicated to put together, and don't always guarantee good sounding results across a range of parameters.
I'm wondering if we can't take a hybrid approach, though I don't know exactly how to put it into words.
One of the ways that the "tube" sound is often simulated is with a simple waveshaper using the tanh (hyperbolic tangent) function. You can tweak the sound by applying different bias to the input signal to emphasize one class of harmonics over another. It's not an actual model of a tube, though it does get some of the behavior right: it has a fairly linear range until you push it hard, then the overtones kick in.
Looking at the graphs of various tube datasheets, I can't help but wonder if a more complex waveshaper couldn't be made which matches the curves on the datasheets. It's not true modeling, but combining several of these waveshapers together with other modeled components (EQ and filter networks, DC filtering, etc.) in order to create a complex interacting system that is predictable, like a real guitar amp. Basically, it would be black-box modeling the tube, and component modeling everything else and creating the matrix from that (it remains to be decided how an output transformer would be handled, but I imagine a filter plus a transfer function would work there). As for the cabinet and speakers, I'm wondering if physical waveguide modeling wouldn't be a good way to go there.
It's a lot to think about, and I want to try my hand at a few things. We'll see how it all goes.