This week, I worked on the design review, as well as continually doing research on the audio processing module. As we worked on the design review and the intrinsics of the circuit simulator, we came to realize that the circuit simulator wasn’t going to work as we had initially thought. In our original plan, the circuit simulator would find a transfer function for the circuit, and the audio processing module would use the derived transfer function to apply the effects.
I looked into JUCE’s WaveShaper module, which would have allowed me to apply various functions to incoming signals. However, after some research, we realized that most pedal circuits have non linear components that are a function of time, and that it’s difficult to produce a mathematical model of an arbitrary circuit. Thus, our approach shifted to one where the heavy loading is all done within the circuit simulator. We saw hope in this approach as some other implementations produced fairly promising results, where the processing was faster than the actual audio file (though this may vary with different files and circuits).
We then decided as a team that the audio processing module’s job would now be to load input audio and write output signals, choosing between either the 3.5mm jack or the filesystem as the input, and choosing between the speakers and the filesystem for the output. The structure of the module is shown in the following diagram, which I made using diagrammaker.com:
The JUCE library also supports communication with the computer’s audio hardware via the AudioSampleBuffer module. The interaction with the filesystem can be done with traditional UNIX syscalls.
This model of the audio processing engine is a lot simpler than we had initially conceptualized. Since much of the bulk is now in the hands of the circuit simulation engine, I’ll be shifting gears and help Matt on the circuit simulation portion once the basic structure of the audio processing engine is complete.
I think that earlier in the week, the change in plans for the audio processor caused me to go down certain rabbit holes that are no longer relevant. This caused some lagging in terms of progress, but I think we now have a much more solid foundation as to what our project is going to be. Moving forward, I hope to have the audio processing module done by next week and get ramped up on the circuit simulation.