Best coding languages to learn to design synthesizers/effect boxes

Very new to coding. Taking some online classes to hopefully help me build a very simple website.

Just a week in and it’s been fun and rewarding and I’d like to start learning stuff beyond web development. Was thinking of taking some classes on python or C++.

Like I said I’m extremely new to all of this but I’d like to learn something new that could work well with music applications.

Coding music applications is fairly advanced work. You might have more success with code that makes music, like Sonic Pi.

4 Likes

It depends in where/how/what you’d like to implement your music applications.

If you’re looking for hardware, I’d recommend using some of the Electrosmith Daisy products. They are C++ based but with a lot of preprogrammed objects that makes things a lot easier. Starting that way would help you if you wanna move forward to plugins. JUCE for plugins is also C++ based but much more of a hassle to program. Learning the basics using Daisy helps to then not get that confused in JUCE and just learn the quirks of the platform.

Now, if you wanna make music applications for ‘fun’ and immediate use, I’d suggest going for a more visual code approach using Pure Data or Max. If you don’t have that much previous coding experience is the best way to start making sounds without the hassle of compiling and platform compatibilities.

14 Likes

Yea don’t really expect it to be easy. Or something that I could make use of right away but I’d like it be something that I can expand on later if I wanted to translate what I learn into a more musical environment

Max, Max4Live or Pure Data would all be good places start.

1 Like

Definitely thought about using the daisy platform good to know they use C++

1 Like

They have compatibility with Pure Data and Max too but the core of all the platform is C++ based.

I’d say that if you wanna make music applications AND learn/improve your programming skills, Daisy/JUCE is the way to go. If you just wanna make music applications go Pure Data/Max.

I guess I was also really interested in the daisy platform because of the hardware component.

I actually don’t use a computer in my setup so having something that could translate to some piece of hardware would be ideal.

Max seems really sick but I never got into it just because I haven’t had a computer in my setup in forever

1 Like

There are two very different topics DSP and coding. If you know DSP you can implement it with any language (efficiency aside) or tool like Max, Reactor, whatever. If you know how to code, you have to learn DSP anyway.

If your goal is to play with different ideas I’d recommend to start learn DSP first and implement your ideas with Max. You always translate your ideas to another platform later.
If you like to code then C++ is the best option. Juce helps a lot.

In both cases I’d recommend to check Will Pirkle’s books.

3 Likes

I did not use it for a long time, but there is Faust DSP language that may help with prototyping, as it can produce code in several languages and it can run in a browser

1 Like

You would not say “I like houses, I think I’ll build one.” Or cars. Coding makes it look like you can get something working quickly, and you often can. But understanding what you are doing takes a lot more work. Music is nowhere near the best application to learn that. You can use a library that does 99% of the work and put a bit of framework outside it. Have you accomplished something? It makes sound. Can you make it sound drastically different? What if you had to use a different library? Not so easy any more.

That said, Max or Daisy are not terrible ways to go. But I think with either, you will not understand your results much of the time, and there will not be much available to help you in that respect.

1 Like

DSP (Digital Signal Processing) is a massive topic. Here is one of the standard references, available for free online as html / pdf:

http://www.dspguide.com/pdfbook.htm

C++ is still quite often the language of choice for a bunch of reasons. Many low level libraries are written in C++, so interfacing is easier, but these days you can take your pick. Python, Java, there are also languages designed specifically for generating audio.

To understand DSP you gotta know mathematics. Definitely more involved than putting a button on a webpage!

4 Likes

Yea like I said I don’t expect this to be easy or something that I’ll have quick results with.

I’m sure most people that ever built a house started with an initial interest and of course with anything it takes studying and practice.

I also don’t imagine developing something in max daisy or anything else compares to building a house.

With that said I have a friend who got to build out his mom’s attic and with no prior experience ended up building a full bathroom, bedroom and recording studio.

He’s now a contractor but his initial journey into it was, oh that seems cool let me learn how to do it.

Appreciate your feedback regardless :slight_smile:

5 Likes

Okay, best of luck with this, please report back on the path you chose and how it is going.

This might be related but all the mutable instruments stuff is open source … that might help understand how to approach reverbs / delays / synthesis

Plus the deluge is open source with a community developing synth things from arps ( triggering midi note data ) to synthesis too

And there’s the sdk for korg bug that would restrict you in terms of platform.
As usual I’d suggest - start small and simple … good luck.

1 Like

Thanks, any other suggest reading preferably books would be super helpful.

Ooh yeah. A good book to dip your toe in with the math might be Musimathics. It’s two volumes and it gets spicy after a bit, but it does try to ease you in. (Disclosure: I am bad at math and I am working through the book now and falling asleep after a few pages each session. :laughing:)

Doing stuff in SuperCollider is pretty fun, and it will be easy to get some sounds out of it. The tutorial is good.

The important thing with coding is to understand the basic structures and patterns first, because you’ll use them over and over again regardless of what you’re coding, be it a web page, VST, etc. Like, how do you compare two things, or do something to each member of a list? What if you don’t know ahead of time how long that list is? How do you store the data you need? Languages do stuff in different ways, but they all share some commonalities, it’s just written differently. You are probably not going to be able to do anything very exciting for a while, but once you understand these patterns you open up a world of possibilities.

2 Likes

If you want to see a really really small project, for audio/synthesis look like you can look at this one. There might be really better one, but it’s one I was planning to finish a long time ago to play with.
It’s 7000 lines of codes, and it’s a playground to have a GUI, a virtual analog synth engine and the glue code to plug that into the sound card.
It’s really really dirty in current state, and also a bit broken, it work but it’s not fancy, and it can give you an overview on what a c++ code for audio look like.

max/msp

Outside of ‘which language’, gaining an understand if how digital signal processing (DSP) works is pretty useful/essential. I recommend Understanding Digital Signal Processing, by Rick Lyons. It doesn’t focus on heavy math (my opinion, although I have a bias, as I do have a minor in math from uni), so is a good starting point if you have little to no background in DSP. You can then apply this knowledge to audio with whatever language you settle into. (I have free access to this through my job’s subscription to Safari Books Online, so cost wasn’t a consideration, it might be more than you want to spend if you don’t have similar access)