Why modular synthesis is like programming

I am a professional software developer. Most of my spare time is spent writing code for side projects. When I'm not writing code or hanging out with my wife, I'm creating music. I'm just a music hobbyist, so my toolbox isn't as full as I'd wish for.

During my explorations of music, I've evolved from playing the piano by ear as a kid to being obsessed by modular synthesis in recent times.

I've always known that music is very much like software development. You have a certain language that you use to create a product using certain rules depending on what outcome you are trying to achieve. That's obviously oversimplifying music and development, but it makes my point.

Modular Synthesis is even closer to programming (either Object-oriented or functional) in that you have modules (objects/functions) that you patch to other modules (a function on another object), setting dials, knobs, and sliders to get the desired result (function parameters, default constructors on objects), taking the output and sending it to the amplifier (the user interface).

I get the same satisfaction out of playing with modular synthesis as I do writing code. It's instant feedback. The faster the iteration, the better I feel for the session.

When I don't hear the desired sound while working on a patch, I have to follow the wires from start to finish, finding the culprit along the way. This is no different than what I do when I debug my code. When debugging software, you have to follow the operation call from start to finish, examining the variables along the way. The lessons I've learned in my 20 years as a professional developer have prepared me for creating patches with modular synthesizers. I felt instantly at home last week when I got my hands on the Softube Modular plugin. Everything just worked the way I understood it was supposed to.

I think this is why I am so intrigued by modular synthesis. I can imagine that there's a bit of "Inception" in the Softube shop as those developers are writing code that emulates a modular synthesizer in software.