3 ms·
By "convincing", what sort of delay would you be looking at on reasonably powerful hardware? Enough to fool the ear into thinking it really was real-time? As
by BMarkmann 11y ago
By "convincing", what sort of delay would you be looking at on reasonably powerful hardware? Enough to fool the ear into thinking it really was real-time?
As a side question, are the sorts of modeling / math that would be done in a scenario like this amenable to offloading to a GPU (if the transformations would potentially be better handled by something like http://www.bealto.com/gpu-fft.html http://www.bealto.com/gpu-fft.html, for instance)? Is that a dumb question? :-)
- klodolph 11y agoNo, that's not a dumb question. I suspect that a successful port of a circuit simulator to the GPU would yield impressive performance gains. However, it would be far, far from easy. Disclaimer: I am a developer on a commercial circuit simulator. As for delay, 10ms is fairly reasonable.
- dsharlet 11y agoUnfortunately, the math required for circuit simulation does not lend itself to parallel implementations, whether it be on a GPU or otherwise. I built LiveSPICE (linked elsewhere in the thread), so I fought a lot with this problem :) A small disclaimer on the following, I only attempted simulation of audio amp/effect pedal circuits, which are generally small. There might be ways to effectively parallelize (much) larger circuits. Another disclaimer, I worked on this 1+ years ago, so some of it is fuzzy. The basic issue is that circuit simulation is fundamentally a serial operation. The circuit state at time step n is a function of the circuit state at time step n-1. The relationship between timesteps is basically a non-linear system of equations, where the number of variables is the number of nodes in the circuit. For a typical guitar effect pedal, this might be ~50 variables. There's basically no opportunity for parallelism here. You can't parallelize across the non-linear systems, because you don't know what to solve at timestep n until you've solved for timestep n-1. Within each step, a 50 variable system of equations is probably too small to parallelize, even on the CPU. Note that the technique used here is generally Newton's method, which also is difficult to parallelize for the same reason. The bottom line is that as far as I know, circuit simulation (at least for audio) is entirely limited by single thread performance. As a side note, the fun part of LiveSPICE is that even a 50 variable non-linear system is far too big to solve at real time sample rates (48 kHz, plus oversampling to avoid aliasing artifacts). The trick is to observe that only a fraction of these variables are non-linear, most of them are related to the other variables linearly. LiveSPICE solves for these linear relationships once during initialization of the simulation, and eliminates them prior to solving the non-linear system. This turns a typical ~50 variable system into a ~5 variable non-linear system (plus a 45 linear relationships). This is a massive reduction in computation required (Newton's method involves repeatedly solving a linear system, which is O(n^3) for simple methods).
- ZenoArrow 11y agoHow do DSPs get around this problem? What gives DSPs the edge over CPUs for real-time audio?
- dsharlet 11y agoDSPs generally aren't necessarily that much more powerful than a CPU, their advantages are usually one or more of the following: - Special instructions to help with common DSP tasks (e.g. circular buffers, nice fixed point/rounding instructions, etc.). - Much lower power/better performance per watt. - Directly connected to audio in/out, to minimize latency. - Real time OS, or no OS at all. However, the main takeaway from my comment should probably be that simulating audio circuits by modeling them at such a low level (a circuit) is probably not the right thing to do. There are higher level models of the behavior of these kinds of effects/amps that are easier to implement and faster to evaluate. Lots of CPU cycles are wasted simulating inaudible behavior in the circuit. It's a really fun toy/project, but probably not something you would want to use to design a widely deployed simulation with.