Coding

Does anyone have any experience with coding? I’m looking to start a new hobby and I think it might be interesting to learn how to make my own music apps (synths, fx algorithms etc.). I know about reaktor and MAX but I think it might be more useful to learn a programming language that is a bit more universal. Can anyone point me in the right direction for learning resources or do you have any comments and advice?

2 Likes
2 Likes

For programming, Pythons a great place to start- very capable and intuitive. Lots of modules you can import and get going with.

I finally found out about a resource where you can do sound design with Python(the book/pdf is called Think DSP)

I don’t think you can make an iOS app with Python though

5 Likes

Get an Axoloti and pull apart the object C code, gives you a cheap way into DSP type stuff with actual hardware and if you can code C you can probably code most things.

12 Likes

Confirmed!

@Ess mentioned in his AMA that he used Max to draft up a prototype for the Digitone

Definitely worth considering!

4 Likes

+1
A very nice open source platform . The editor is written in Java and the object are in C.

Java is commonly taught as a first language at universities. Python and JavaScript are good first languages as well.

Introduction to Java Programming by Liang is an excellent book. Community college classes are also super cheap. I spent half my life exploring programming on and off for fun, but didn’t really get a good grasp until I took a few courses.

2 Likes

Yep! Digitone is prototyped in Max using ~Gen for the DSP algorithms. You’ll still need to know/learn a lot about signal processing and … Well, audio and synthesis in general.

Since Gen operates per sample it allows you to do very detailed DSP stuff that can sound great. Being able to write C (almost) snippers inside of it makes it incredibly useful. You’re surrounded by a solid, comfortable audio engine that you can mess around with. It’s quick to change up an algorithm once you have your objects or code routed inside a patch, which is great for experimentation during a prototyping stage.

That said, Max and Gen is definitely not for beginners - although the rich and active community helps when you’re trying to figure out certain ways to achieve something. The built-in documentation and tutorials are great as well.

An alternative is Reaktor, it also has a very rich community and can go just as deep (and sometimes deeper) than Gen. It’s prowess shows in brilliant plugins like Razor that is made entirely in Reaktor. It’s data flow programming only (connecting wires) though, and looks way messier than Max.

Supercollider is also very popular for synthesis. The vast library of filters, generators and so on makes it a breeze to make some noise. The syntax is a bit strange though (at least to me who is most used to C) and the fact that you are using “ready-made” modules more like a modular synth makes it tricky when you want to do something very specific. You’ll end up writing C/C++ if the thing you want to do is missing. That’s the reason why I don’t use it for prototyping, I want to go deeper without having to write math-heavy DSP code. Great for composing or making cool sounds though!

At the end of the day: Use what you find comfortable or inspiring. Regardless of tool, you’ll need to learn about synthesis, audio and DSP. But perhaps Reaktor or Max/Gen is a good first step towards writing some C++ with Juce DSP libraries.

(And yes, I have done “real programming” and still do, but DSP is way over my head. In any case, I think it’s good to learn about both! It’s important to know that a lot of things are much easier to do with proper code than a data flow programming environment! Use the tool that is right for the job. I don’t want to spend time writing (for example) a custom audio engine that will crash every few minutes, so I use Max… Which doesn’t crash. That often.)

42 Likes

I would start with something like Java maybe ? You don’t have to worry about memory management and with Java 8 there is some nice features like Lambda, functional programming etc. Just to get the basic.
Swift is another one that could be great to learn if you wanna code for IOS .

But if what you really wanna do is make your own FX, synth etc i would stick to Max MSP, Reaktor or if you want hardware there is the Axoloti or Nord Modular (G1-G2).

With the Axoloti you dont have to code your own object in C, there is lots of existing object already.
Its a very nice platform , very cheap and the editor is nice and its hardware ! :slight_smile:
I used the Axoloti to code a custom step sequencer where i can advances step manually using a foot pedal and record on the fly .You can also use the Axoloti as a midi processor , FX box, synth , sampler etc .
You can use the existing object or build your own if you want.

The Nord Modular is great too.
I have a G1 and G2.
More limited than the rest but still very powerful.

If you really wanna do everything from scratch … good luck cause DSP is not easy (for me anyway) :slight_smile:

2 Likes

I would argue Java is probably the worst basis for coding if you’re planning to go onward to DSP, there is nothing scary about C/C++ and you’ll be a better programmer for learning them.

11 Likes

I think the easier way to start something would be with Python. Check out coursera and kadenze courses. There is already a free sound synthesis course with Python.

That being said… I guess it will take multiple years of not a decade for a beginner to build a working synth that does something useful.

2 Likes

@Ess Thanks for the Juce suggestion! I’ve been doing a good deal of investigation for C++ for sound design and upon 2 clicks in the Juce webpage I’m seeing a lot of exciting looking tutorials!

Oh and - don’t forget that my prototyping gets turned into production code by a DSP engineer. I can’t do anything with my Gen patches other than running them in Max and Max4Live (which is a pretty neat platform on its own)

So if your aspiration is to make an app for iOS, or a desktop OS etc, you’ll need to learn a language that has the ability to properly compile for those targets. Python could be a good starting point - I’m too stubborn for anything besides C/C++ though… Again, Juce is very popular for making plugins and other audio applications (in fact, Max’s GUI is written in Juce) and has an active community. The Juce forums is probably a great place to post this question as well.

8 Likes

@DL could you link to the Python Sound Synthesis course, please?

+1 for kadenze they have interesting stuff.

I saw this in there might be interesting ( I didn’t take the course though, I code for a living)
Edit : Argh it keeps embedding just the video

There you go: https://www.coursera.org/learn/audio-signal-processing

3 Likes

I knew this forum wouldn’t let me down! Thanks everyone so far!

1 Like

Well, I did do this… Bawk!

Need to finish that up really!

3 Likes

Why do you think Java would be bad ?
I mean if you just wanna get the basic Java is easy to understand.
Though i must agree C++ would be a better choice.

There is nothing scary about pointers :slight_smile:

EDIT :
yep since were talking about programming audio apps might be better starting with C/C++

Dirt simple can be Python with the wave module to write wav files – all free if you have a computer with a speaker.

The various low latency Bela hardwares are attractive to me for a platform to develop on and to have a finished functional system at the end.

Many paths

There are many paths up the mountain, but the view of the moon from the top is the same. => Honor different paths and walk your own path.

1 Like