{"id":68153,"date":"2022-04-21T10:37:39","date_gmt":"2022-04-21T14:37:39","guid":{"rendered":"https:\/\/peabody.jhu.edu\/?page_id=68153&#038;preview_id=68153"},"modified":"2025-02-28T15:07:10","modified_gmt":"2025-02-28T20:07:10","slug":"ezdsp","status":"publish","type":"page","link":"https:\/\/peabody.jhu.edu\/life-at-peabody\/career-services\/student-alumni-stories\/creative-wire\/ezdsp\/","title":{"rendered":"Apr. 26, 2022"},"content":{"rendered":"\n<a id=\"read\"><\/a>\n\n\n\n<h2 class=\"wp-block-heading\">EZDSP: From Production to Programming<\/h2>\n\n\n\n<p class=\"has-text-align-left\">Apr. 26, 2022 | by Garrett Eckl<br><em>Edited by Carolyn Dzul<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p>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.&nbsp;&nbsp;<\/p>\n\n\n\n<p>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 \u201cI really wish there was a straightforward way to create my own fully customizable sounds.\u201d 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 <a href=\"https:\/\/twitter.com\/gdwright\" target=\"_blank\" rel=\"noreferrer noopener\">Dr. Geoffrey Wright<\/a>, who pointed me in the direction of SOUL, a new and groundbreaking programming language designed specifically for audio programming.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/soul.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\">SOUL<\/a> is a fantastic language that allows you to write digital signal processing code that is both fast and memory safe (it can\u2019t easily crash or mess up your computer\u2019s 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\u2019s 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\u2019s built-in processors wouldn\u2019t get left behind. Win-win.&nbsp;<\/p>\n\n\n\n<p>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\u2019d 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\u2019s 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.&nbsp;&nbsp;<\/p>\n\n\n\n<p>So, what exactly is EZDSP? It\u2019s 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\u2019re 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\u2019re a bad mixing engineer? This is the plug-in for you. <\/p>\n\n\n\n<p>As an example, here\u2019s a \u201cwobbly delay\u201d effect that I created with EZDSP, where the delayed signal is scaled based upon how close the playhead is to the nearest 8<sup>th<\/sup> note.&nbsp;<\/p>\n\n\n\n<p><em>Guitar riff before EZDSP:<\/em><\/p>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/peabody.jhu.edu\/wp-content\/uploads\/2022\/04\/CleanGuitar.wav\"><\/audio><\/figure>\n\n\n\n<p><em>Guitar riff after EZDSP:<\/em><\/p>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/peabody.jhu.edu\/wp-content\/uploads\/2022\/04\/WobblyDelayGuitar.wav\"><\/audio><\/figure>\n\n\n\n<p>Here&#8217;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).<\/p>\n\n\n\n<div style=\"width:100%;height:0;padding-bottom:93%;position:relative;\"><iframe loading=\"lazy\" src=\"https:\/\/giphy.com\/embed\/QJKwL4rG1MkgxCQojg\" width=\"100%\" height=\"100%\" style=\"position:absolute\" frameBorder=\"0\" class=\"giphy-embed\" allowFullScreen><\/iframe><\/div><p><a href=\"https:\/\/giphy.com\/gifs\/QJKwL4rG1MkgxCQojg\">via GIPHY<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n\n\n\n<p>My hope is that EZDSP will inspire musicians to dive deeper into the process of sound creation. I\u2019ve studied music technology at three different schools, and the one thing I\u2019ve consistently noticed is a disconnect between \u201ccreatives\u201d and \u201cengineers.\u201d 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: \u201cIf one\u202fis to understand\u202fthe\u202fgreat mystery, one must study all its aspects, not just the dogmatic narrow view of the Garage Band.\u201d No disrespect to the most influential DAW of all time, of course.&nbsp;&nbsp;<\/p>\n\n\n\n<p>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 <a rel=\"noreferrer noopener\" href=\"https:\/\/twitter.com\/gdwright\" target=\"_blank\">Dr. Geoffrey Wright<\/a> and <a rel=\"noreferrer noopener\" href=\"http:\/\/www.sampluta.com\/\" target=\"_blank\">Dr. Sam Pluta<\/a>, and the financial support provided by a Peabody <a rel=\"noreferrer noopener\" href=\"https:\/\/peabody.jhu.edu\/studentcdg\" target=\"_blank\">Career Development Grant<\/a>. 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.<\/p>\n\n\n\n<p>If this sounds interesting to you, feel free to check out the EZDSP link below where you\u2019ll 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.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-16018d1d wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-white-color has-text-color wp-element-button\" href=\"https:\/\/geckl.github.io\/EZDSP\/\">Check out EZDSP<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n\n\n<div style=\"margin-top: 0px; margin-bottom: 0px;\" class=\"sharethis-inline-share-buttons\" ><\/div>","protected":false},"excerpt":{"rendered":"<p>EZDSP: From Production to Programming Apr. 26, 2022 | by Garrett EcklEdited by Carolyn Dzul My journey into the world of music technology began with a simple question: how can [&hellip;]<\/p>\n","protected":false},"author":89,"featured_media":0,"parent":52534,"menu_order":225,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-68153","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/peabody.jhu.edu\/wp-json\/wp\/v2\/pages\/68153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/peabody.jhu.edu\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/peabody.jhu.edu\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/peabody.jhu.edu\/wp-json\/wp\/v2\/users\/89"}],"replies":[{"embeddable":true,"href":"https:\/\/peabody.jhu.edu\/wp-json\/wp\/v2\/comments?post=68153"}],"version-history":[{"count":20,"href":"https:\/\/peabody.jhu.edu\/wp-json\/wp\/v2\/pages\/68153\/revisions"}],"predecessor-version":[{"id":94093,"href":"https:\/\/peabody.jhu.edu\/wp-json\/wp\/v2\/pages\/68153\/revisions\/94093"}],"up":[{"embeddable":true,"href":"https:\/\/peabody.jhu.edu\/wp-json\/wp\/v2\/pages\/52534"}],"wp:attachment":[{"href":"https:\/\/peabody.jhu.edu\/wp-json\/wp\/v2\/media?parent=68153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}