EZDSP: From Production to Programming

Apr. 26, 2022 | by Garrett Eckl


My journey into the world of music technology began with a simple question: how can I make a completely unique sound? I started by creating music with the presets built into my DAW (digital audio workstation). I tweaked those presets to make more personalized sounds, and I eventually began making my own presets from scratch, but in the end, I was still always working within the confines of an instrument that someone else had made.  

EZDSP (Easy Digital Signal Processing) is a project that I conceived early last year at the height of pandemic lockdowns. As I sat in my room tinkering with a song for the 10th straight day, unable to recreate the sound in my head, I thought to myself “I really wish there was a straightforward way to create my own fully customizable sounds.” I had been through the process of creating digital audio plug-ins before and knew how time-consuming it was to create even the most basic of effects. I went to my advisor, the always helpful Dr. Geoffrey Wright, who pointed me in the direction of SOUL, a new and groundbreaking programming language designed specifically for audio programming. 

SOUL is a fantastic language that allows you to write digital signal processing code that is both fast and memory safe (it can’t easily crash or mess up your computer’s hard drive). The thing that makes SOUL so unique is that it comes with a runtime environment that can optimize your code based on the host system’s available processors. This means that applications you make with SOUL can customize themselves to run most efficiently on the hardware your users have available. For example, someone with a dedicated DSP processor could harness their advanced computing power, while anyone using their computer’s built-in processors wouldn’t get left behind. Win-win. 

As I began experimenting with SOUL, I started to really enjoy it, but I began to run into the same issue I had with almost every audio programming language I’d encountered: how could I apply this technology to my own music? At the time, I was applying my SOUL effects to audio via the command line, and I think most people who have used the command line would agree that it’s not a particularly inspiring place to create music. No matter what software I tried, it always seemed like there was a compromise between customizability and compatibility, with limited options for someone wanting to make popular music with advanced production techniques. I started researching potential ways to bridge this gap, providing users with a way to apply granular audio processing in a traditional DAW setting.  

So, what exactly is EZDSP? It’s a fully customizable (and fully free!) plug-in that allows the user to modify its own source code from directly within the plug-in itself. Want to create a delay effect that changes based on what key signature you’re in? Sure thing. Want to make a filter that processes each measure of music in a different way? No problem. Want to waste ten hours creating a mediocre equalizer instead of just admitting to yourself that you’re a bad mixing engineer? This is the plug-in for you.

As an example, here’s a “wobbly delay” effect that I created with EZDSP, where the delayed signal is scaled based upon how close the playhead is to the nearest 8th note. 

Guitar riff before EZDSP:

Guitar riff after EZDSP:

Here’s how it works. When a standard audio plug-in is created, the source code is compiled into binary code (a series of ones and zeros). This allows the program to run efficiently, but it also means that the source code is set in stone. The user can only modify certain variables that are exposed, perhaps as a slider or a knob. EZDSP on the other hand, is actually comprised of two plug-ins: an outer shell written in the C++ programming language, which compiles into a standard audio plug-in, and an inner SOUL plug-in that can be modified at any time by the user. The outer plug-in allows EZDSP to be as compatible as any other popular DAW effect, while the inner plug-in allows it to be as flexible as any advanced audio programming language. EZDSP also comes with built-in features that allow the user to easily modify both the DSP algorithm (the SOUL code that modifies the audio signal), and the accompanying GUI (the code that produces sliders, knobs, and buttons).

via GIPHY

————————-

My hope is that EZDSP will inspire musicians to dive deeper into the process of sound creation. I’ve studied music technology at three different schools, and the one thing I’ve consistently noticed is a disconnect between “creatives” and “engineers.” I think this is an outdated relic of a bygone era where recording an album or coding a piece of software took massive amounts of specialized equipment and not-so-accessible knowledge. Thankfully, that is no longer the case. Sometimes the best solution to an engineering challenge is a creative one, and sometimes you need to think as an engineer in order to get where you want to be creatively. To quote the late great Emperor Palpatine: “If one is to understand the great mystery, one must study all its aspects, not just the dogmatic narrow view of the Garage Band.” No disrespect to the most influential DAW of all time, of course.  

This plug-in took hundreds of hours to come together. It is built upon the fantastic (and honestly much more complicated) work of the SOUL development team, the guidance of both Dr. Geoffrey Wright and Dr. Sam Pluta, and the financial support provided by a Peabody Career Development Grant. Special thanks to the undergrads who were so willing to test this software at a time when one mis-click often led to utter hard drive destruction. Your sacrifice will not be in vain.

If this sounds interesting to you, feel free to check out the EZDSP link below where you’ll find free download links, along with the official EZDSP documentation and some basic example tutorials to get you started. May it provide you with some creative inspiration during your most unmotivated of times.

——————————————————————————————————————-

Garrett Eckl

COMPUTER MUSIC

MM 2022

Garrett is a musician and audio programmer doing research in the areas of plug-in development, algorithmic composition, and creative applications of machine learning. He works as a software developer for the music technology company RIFFIT, and releases music through his solo project Your Name Here.

Instagram: @garretteckl