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.
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.
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
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.
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.
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
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.
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!
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.
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. )
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.
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.
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)