This week as a team, we focused primarily on integration before the midpoint demo. This involved several things: First, the circuit simulator was rewritten in C++. The primary reason for this was to make it faster, but it also allowed for easy integration with the audio processor by just combining both modules into a single program, producing a single executable. The way this was done was by defining an API that we call the AudioManager, which allows the circuit simulator to read in signals from the audio processor in a consistent fashion regardless of the source. We now refer to the combination of the circuit simulator and audio processor as the “backend” of our project. Once this step was complete, we moved on to integrating the backend with the frontend. This was fairly simple. The frontend generates a netlist file based on the circuit the user build, and then uses a Javascript library aimed at running shell commands in JS to invoke an instance of the backend, passing in the netlist file path, the input signal source, and the location where the output should be saved as command line arguments. This enables us to have a simple command line interface that can just as easily be tested from the GUI as from a terminal. During the process of integrating the frontend with the backend, we also discovered and fixed a few bugs relating to how the circuit simulator parses netlists. When all was said and done, we made a new release in our repository (linked here) to act as a snapshot of our progress for the midpoint demo.
During the midpoint demo, we were able to get some feedback about our project that we will be taking into careful consideration. In particular, Professor Sullivan suggested adding a feature that allows users to select some pre-built effects without having to get into low-level circuit details. This is a feature we intend to add, and it should be fairly simple to implement this as a layer between the AudioManager and the circuit simulator.
In the coming week, Joseph plans to extend the audio processor to support live audio. Matt plans to implement diodes in the circuit simulator and begin working on transistors. Stephen is going to be putting finishing touches on V1 of the front-end and turning his attention towards user studies. Joseph is going to be working on the dual channel live audio input module we need for our final testing procedure.
Upcoming Schedule: