We sit down with BA (Hons) Sound Design student Jamie Gibney (Pragma Audio) to chat about an exciting project which saw him solo develop an audio plugin for a fellow dBs Institute student, and in doing so, discover his creative 'bread and butter'.
Hey Jamie! Before we dive into chatting about the plugin you created, tell us a little about where this interest for the technical side of audio came from?
"I was always really interested in electronic music and wanted to know how they made those sounds, especially in bass music; I really admired that crazy sound design. But, I was always more interested in the technical side. Whenever I added a processor to a channel, or brought up a synth, I wasn't necessarily thinking, 'how can I create a cool sound?' It was more 'how have they done that? How does this work?' I've always wanted to learn how to 'wire' things."
When did you first start exploring audio programming?
"We had our Introduction to Programming module with Joe Vass last semester, where we used C# and the Unity game engine to make an audio effect. We also had a module with Martin Peacock based in Reaktor, which was a fantastic module about developing our own audio device. I made a tone generator based on physics collisions and a wavetable/phase distortion synthesiser for both modules, respectively. Joe and Martin were highly motivating and seriously helped me to push myself for both projects. Their modules were a lot of fun and I’m very grateful for their help.
"I think having those two modules side by side in the same semester was really beneficial for me personally, because it offered two different perspectives into creating audio effects and instruments: seeing how a program comes together via code, and how audio can be processed in a visual and intuitive way.
"After I finished those modules, I knew that I wanted to continue with programming and figure out how to make these devices more ‘official’, such that they could be used in a DAW. Joe Vass mentioned a framework called JUCE which is written in C++, and that's the route that I decided to pursue."
The plugin you've been creating is for MA student, Isaiah Isaacs (Kidsonic). How did you two first link up?
"I think in his initial email, he was asking if anyone at dBs could code a VST, and if not, if they could recommend someone. That was back in January and I applied pretty quickly. I had just made a plugin - a randomised EQ for basic ear training - and I thought it would be cool opportunity to have a deadline, a bit of pressure, and a more solid idea from him that I could aim to create."
What was the purpose of the plugin?
"Minimal riser was the phrase he used, so a more subdued riser for genres likes liquid drum and bass, tech house, that kind of thing. There's already a plugin out there that creates a riser effect called 'Endless Smile', but it's very intense and has a very high energy sound to it.
"Isaiah has low vision, so along with the core function of the plugin, he wanted something that was accessible to use. He wanted a particular style of UI and sent over some example that I used as a foundation."
What considerations did you have in mind when designing the UI?
"It needed to have contrast and it needed to be clear, so absolutely no small text that would be hard to read. The plugin only has four controls, which was a big advantage in ensuring the layout stayed clean and simple. Isaiah gave a lot of great feedback and requested additional colour palettes, which I hadn't initially considered, but that could make a difference in someone being able to use it.
"I was also thinking about how the plugin actually behaved. I'd been doing some research on Steve Duda, who created Serum, and he's quite open about his process. He was talking about visual feedback and how the user experience can be ruined if a parameter does something unexpected or non-sensical when you interact with it."
Let's talk more about the early development process. Where were you dedicating your time?
“When it came to designing the audio processor, a lot of research was needed. I’m the kind of person who likes to do everything myself, so all of the digital signal processing in the plugin is coded from scratch. That approach can take a long time, but you gain more control and you learn a huge amount by doing it yourself.
“I also used ChatGPT a lot when I got stuck, that thing is insane! Even though it’s not always correct, it can help to plant ideas and explain complicated concepts (like filter design). With a bit of critical thinking, it really helped to accelerate the development process. There are other fantastic resources, such as The Audio Programmer on YouTube/Discord, and the JUCE documentation itself is very helpful. I read through some white papers too, which initially seemed daunting because of all their maths notation, but they’re not supposed to be intimidating - they’re there to help you understand. You just have to persevere and take your time.
“This is another reason why learning those two modules in tandem was so useful. Audio programming - especially DSP - is heavily maths-based, and if that's not an area you feel confident with, then programs like Reaktor, MaxMSP or PureData are very helpful. They're visual, intuitive and accessible programs where you can see all of the connections and modules in front of you, and how they interact. Being just words on a screen, code is quite abstract; you can't see or touch what you've made, so it can be difficult to make sense of a system.
“After that, there was a lot of prototyping. For this project, I made individual plugins for each of the modules I wanted to include in the device - tried to get each of them working well, explored different settings - and consolidated them into one processor. That was followed by integrating the UI.
“So most of this project was research and learning how JUCE and C++ work... I’m still very new to all of that. But it’s so rewarding when something finally works.”
How did you find the collaborative element of developing the plugin?
"The creative process was fairly open-ended, because Isaiah didn't have a completely solid idea of of what the processor should be, so I had a bit of free rein to do that. The end product still had its constraints, but in order to actually get that sound, I could explore quite a lot.
"The UI was a similar approach and I had quite a lot of freedom with that. Isaiah gave me some ideas, and I just tried to mimic them. But in terms of his feedback, it was really good. He is a lovely, lovely guy and very passionate, and his feedback was always helpful and constructive."
Was it tough to stay motivated when you hit roadblocks?
"Before embarking on this project I made a little reverb plugin. I was showing it to one of my tutors, Alex Wilkins, and he was fantastic at encouraging me and just pushing me to keep going with it, and to keep exploring it. I do generally get that feeling from the tutors at dBs. They do want to push you where they can and that was a big motivator for sure that carried over into this project.
"Fundamentally though, I think it does go back to the desire to understand how and why something works. That's really what drives me with all this stuff. And even just programming as a whole, I want to know how a computer works, you know, 'how is it actually calculating these things?'
"To jump in the deep end and go into all these more technical details is fantastic for me. It's enjoyable to see how something comes together on a very low level, and I really enjoy seeing the individual elements come together as a solid product that has some value to it; that you can use it to create something. It's a wonderful process to see it come to life and I definitely think that I've found my 'bread and butter' here."
Any final words of advice for someone looking to start their audio programming adventure?
“Programming is difficult, and there aren’t many shortcuts you can take. Most of the time is spent fixing things because most of the time it isn’t working yet, so you have to be patient and you have to enjoy making mistakes. I always find it funny when the computer does something unexpected, but if I were frustrated, the project would never progress. You cannot give up, and you have to enjoy the process no matter what it throws at you!”
Kidsonic's OneRiser plugin is due to be completed towards the end of 2023. You can follow it's progress on Pragma Audio's GitHub page.
FIND OUT MORE