The Hows and Whys
A lot of you may wonder how we developed a custom ASIC by ourselves. The key is SIMULATION! It might be hard to believe but the fastest simulator for a system of the complexity of one of our audio-controlled synthesizers is actually the freeware Verilog simulator called iverilog!
In order to be able to simulate a chip/system in such detail, one has to write what are called “behavioral models” of all components in the system — these models essentially look similar to C code but with different control constructs that are triggered by events occurring in the simulation (such as positive edges on clocks for example). For example, here is some simple code for a 3-bit binary counter that actually exists in our ACO100 chip:
If these models accurately describe the components of the system, the whole thing can be simulated surprisingly accurately and quickly! Here is a snapshot of a simulation that shows our ACO tracking a violin as it tracks from B (240Hz) to D (287Hz):
A Deeper Look at Simulation Waveforms
What you see at the top is the violin waveform itself, which is read into the simulation from a .wav file. Note that if we try to detect zero crossings directly on this waveform, the synth would never work as it would detect many spurious zero crossings within each cycle due to the strong higher harmonics present in the violin spectrum. The next waveform below the violin is the output of our patented tracking filter, which self-adjusts to always give the optimum amount of filtering for the input signal. As you can see, this waveform is much closer to a sine wave and more appropriate for detecting zero crossings. The next waveform is the reference clock, which is simply the tracking filter output converted to a square wave by detecting the zero crossings.
Below the reference clock is a plot of the ACO output frequency vs. time as the chip tracks to the new note. Then we see the square and sawtooth wave outputs of the ACO100 that you can hear directly in any of our audio-controlled synths.
At the bottom are the gate and envelope signals, which aren’t generated on the ACO100 chip, but rather in standard circuits on our printed circuit board. The simulation includes a VCA which is controlled by the envelope. We write the output of this VCA out to another .wav file so we can listen to the results of our “ConVertor” model and compare them to what we hear in real life. The simulation results are remarkably close to what we hear using our real synths!
But How Does it Sound?
As a demonstration of the accuracy of our ConVertor simulation vs. the real ConVertor, we decided to pass the first few bars of Jaco Pastorius playing Bach’s Chromatic Fantasy through both the simulation and the real synth. By far our most frequently asked question is “But how does it track bass guitar?” Hopefully these demo .wavs will address some of that concern too… So without further ado, here is Jaco playing unadulterated:
Now here is the same audio clip passed through our simulation model (with the original on left channel and simulation output with square wave on right channel):
And finally, here is the clip passed through the real ConVertor (again, the original track is on the left channel and ConVertor output in square wave mode on the right channel):
Note that there are some polyphonic elements in Jaco’s performance that don’t necessarily track well but the demo shows that the result is not at all “unmusical.” Also, a real musician playing our audio-controlled synths live will naturally learn how to articulate notes while playing to get the best performance.
Links for Further Reading
Our own original Audio-Controlled Oscillator (ACO) blog post:
An introduction to Verilog:
Octave, a free tool for designing algorithms, digital (and analog!) filters, DSP-related stuff, etc.:
Julius Smith’s homepage at Stanford University, a goldmine of signal processing knowledge, geared mostly for electronic music applications: