Conclusion

For the final blog post I just want to post a quick summary of the content covered thus far and explain some things that I would have covered had I had the time. This blog was focused on learning audio programming from a basic novice level. It took a couple posts to really get on track and figure out what I was doing because this was a whole new area of programming I had never explored before. There was definitely a learning curve as far as learning how audio is represented and operated on digitally but early on I covered some concepts like sample rate and bit depth that are fundamental features of digital audio. This served as the foundation for what was to come in future posts.

Image from https://www.izotope.com/en/learn/digital-audio-basics-sample-rate-and-bit-depth.html


               At first, knowing nothing about audio programming, I thought I would use the Java Sound API to create some audio programs because this was the language I was most familiar with and it made sense to start there. Unfortunately, it did not seem like there was great documentation on this API and there was limited examples of people using it to actually make similar programs for me to learn from so I needed to find something different. This is when we moved to using a C++ audio framework – JUCE. Here we made a simple application that had a volume knob UI component that would change the audio signal.



               Moving forward, I decided it would be best to go through some basics and share my learning process with the readers because there were definitely some pieces of audio programming in C++ that were not very well explained to me (or I just took a little while to grasp them) and I thought I could be most helpful to the reader by showing them how I learned some of these basic programs and then how that knowledge could be applied to something more important to me and my guitar playing. This meant walking through some tutorial programs, making small modifications here or there to play with frequencies and see how they ticked. Through the next few posts I walked through a white noise generator, a sine wave synthesizer, an oscillator, and finally a wave shaping distortion program that would mimic the soft clipping of a guitar amplifier. This final program was built using the DSP module which was introduced and explained in the oscillator post.

               Through this experience I personally learned a lot about audio programming and thought it was great to have a program that would work like a guitar distortion pedal, and I did not have to pay a dime for it! This is something I will continue to develop, and it will directly impact my life and fit into my hobby. I hope that readers that do not play the guitar can follow the tutorials for the simpler programs and make some cool programs they can play with themselves. Maybe it will inspire someone to make some programs for instruments or dive into more sound synthesis.

Expensive effect pedal listing - wouldn't it be cool to make a free digital version?


               If I was to continue this blog, I would have plenty more material to cover. I think the first topic I would cover is convolution and other amplifier emulation techniques. There are a lot of other elements that play into a guitar tone and some of the most iconic guitar players’ sounds can be recreated to some level of accuracy in the digital world. This can be done through analyzing circuits and trying to mimic the signal changing effects of the analog components or through approximations of these circuits. There is a whole world to dive into there and I would love to explore it more.

Guitar Amplifiers


               Another good direction to go would be looking into other effects and how they work. Digital delays, reverbs, filters, and compressors are all effects that could be used in a musical context and I do not really know much about them. There is a lot of unique sounds that could be created this way and being able to design my own sounds would put a lot of power in my hands when it comes to my music. Instead of finding other effects that people have built before me or buying physical effect units I would just be able to build my own to my desired specs. This would make a huge difference in my guitar playing.

               I definitely learned a lot through this blog and I hope my readers did too. Learning the fundamentals of audio programming also showed me how much more there is to learn and what concepts to look at in the future if I want to learn more. There is a long road ahead of me if I keep developing this skill and I am glad I took this first step.

Comments

Popular posts from this blog

Detour: A Simple White Noise Generator

Introduction To Juce DSP Module: Building An Oscillator