>From the schematic, between the C5 to R7 you have a 5th order filter, since
there are 5 capacitors. Different parts of the circuit are cleanly buffered
by Op-Amps, and since there is no feedback around these sections you can
just model each section independently, and feed the signal forward and
still get an accurate simulation, eg C1R1 as a one pole high pass filter
feeding a buffered signal to C2. It's great to hear you've already used
LTSpice, as you'll need to check your results against something.

I would recommend using some of the automated tools to do the code
generation for you for starters. Here is a julia based circuit solver that
generates the matrices for you:

https://github.com/HSU-ANT/ACME.jl

The MNA / simultaneous equations system would probably be best to form to
get started. I've got a talk and a bunch of technical papers which take
circuit schematics and show how to use MNA / simultaneous equations to turn
them into code, and there are plenty of references in the slides to the
talk:

https://cytomic.com/technical-papers

Then once you're used to MNA / simultaneous equation solving, you can then
look at state space systems, of which there is this paper here which models
a similar EQ (you can ignore the non-linear bits, just look at the State
Space Tone Stack section for now):

http://dafx10.iem.at/proceedings/papers/DempwolfHoltersZoelzer_DAFx10_P7.pdf

Then if you want to delve into Wave Digital Filters I would recommend this
paper, which looks at how to create various WDF adapters for different
complicated linear topologies like you have in your example, and then also
shows same Tone Stack as the previous state space paper:

https://www.dafx.de/paper-archive/2015/DAFx-15_submission_53.pdf

I've simulated a similar circuit in full: Ibanez Tube Scream. To do so I've
written a c++ based symbolic circuit solver that optimises the equations
and generates c++ production ready code. Getting to this point has taken
around 10 years, but ultimately, if you're serious about doing this stuff,
you'll need to automate the process. I chose c++ since I'm most familiar
with it, and it runs the fastest, but I did tinker around with Mathematica,
Python, and Julia first. Julia would have probably been a better choice if
I was more fluent with how to manipulate the expression trees, since it
also has some really handy dynamic code compilation stuff in there.

All the best,

Andy Simper

Reply via email to