Python Tools and Prototyping


(This website was done with Python Django)


PCB Assembler





Hand-soldering components on a circuit board can be a long, tedious process, especially when you have a lot of components, some of which are used in multiple places on the board. I got tired of this and created the PCB Assembler to make the task quicker and easier. I use Eagle to do circuit board design and layout. I export three files from Eagle: a bill of materials (which has one line for each component value), an image file (PNG which I convert to GIF), and a Fabmaster file, which contains the coordinates of all component locations. In the image above the parts circled in red are on top, while the parts circled in blue are on the bottom. Click here for the PCB Assembler code.




Value Array Header File Writer



The processes required a variety of data types. While the Volume and Mixer processes simply needed floating point type data, the digital filter processes needed an array of filter coefficients. When it came to being able to control the parameter settings of any given process, the simplest solution was to use an array of 100 of the data type, with 0 to 99 being the parameter value range. In addition to the process data types, user-interface data arrays were also written (i.e filter frequency, delay time, etc.) Python scripts were written to create these various data arrays, with a parent script running each of these scripts and writing the data from each script to a header file titled "valueArrays.h". Click here for the Value Array Header File Writer code.



Process Sequencer Prototyping


This was done for pedal version 2, as the processes and interconnections had to be integrated into OfxMain. I started doing the sorting/sequencing algorithms in C++, but got tired of constantly having to re-compile and add debugging output statements. So I converted my code into Python and went from there. Once it was able to sort through multiple process/connection arrangements, I transferred the algorithm back into C++. Click here for the Process Sequencer Prototype code.



Waveshaper Prototyping






This script was used for testing out waveshaping (distortion/overdrive) algorithms. The final algorithm models a waveshaping circuit. Click here for the Waveshaper Prototype code.