Coding

For realtime sound synthesis/audio programming there is no way around C/C++. Other (high level) programming languages won’t give you that kind of lowlevel control that it necessary in that area.

And, as also already suggested, the Juce Framework is an excellent base which is used in a vast number of professional audio programs.

But I wonder if an absolute beginner in both areas (programming and audio/synthesis stuff) should really start like this. Simply just learning C/C++ can be a quite frustrating experience …

Maybe starting with Max, SuperCollider or Pure Data and spice that up later on with some own extensions coded in C/C++ is the better way.

And when it comes down to hardware to run own patches on Organelle is also a nice option (runs Pure Data patches).

4 Likes

Caution with C++ (and Java as well) is needed, as various things can be happening in the background, like garbage collection, plus it’s not always clear what the compiler is going to do, which can interfere with it’s real-time behavior. (There’s lots of help with understanding this various places.) There are a lot of things that are great additions with C++, and safe in time sensitive programs, so it’s good to use those features. If you stick to C and a few nice C++ things, and are smart about it, you’re fine. Plus plain old C is relatively easy to learn. (Though less efficient to code.)

Of course faster processors and larger memory can smooth over bloat nicely.

1 Like

i am genuinely surprised no one has mentioned Will Pirkle’s books on making Synth and FX VSTs and VSTi’s and RackAFX.

http://www.willpirkle.com/

2 Likes

Well, I mentioned the combination C/C++, because normally your audio program is a mixture of both. C++ is fine for not realtime stuff like the GUI or bootstrapping/initialization and C for the audio processing, where you’ll need “full” control due to the realtime restrictions (no system calls/no allocations etc.pp).

And don’t get me started on compiler optimizations. Even with C these can be a real PITA sometimes.

With realtime programming caution to the smallest details is needed.

2 Likes

Been there too.

I always like to look at key sections or sections inside a tight loop that get run a lot (or stuff that come to the top with a profiler) at the assembly level, the code the compiler generates, 'cuz a simple rewrite, or pulling variables outside a loop, etc can make a big difference. Sometimes a compiler, even with speed optimization turned on, can do some very stupid things. I’ve always been able to get efficient code, with simple changes to the C code, without having to resort to inline assembly, which i hate, being that it is so non-portable.

ADDED: This whole efficiency pursuit can become uselessly obsessive as well – i think about efficiency even when i know it doesn’t matter. Usually though i’m able to rein myself in.

You guys are way too cool for me LOL im a lowly Sql Dev with some light python experience. IUve always been interested in how my favorite boxes work under the hood (ive always assumed some degree of c++ was need, but beyond that I really have no idea).

Following for pro tips as it is a subject I’m vaguely interested in. Like the OP, would be interested in learning to code one day.

@Grate_expectations… Whats your learning type/process like?

1 Like

Hey dude, good choice… coding is fun most times. But do you intend to have it as a profession or for fun? That can obviously be a important parameter when you decide how and what to learn.
I´ve been a professional programmer for the last 15 years, last 8 as a consultant doing higher-level system development using most of the modern tools available. Mostly .NET though even if the last few years has been interesting with a lots of mobile development (both for android & iOS) - so hit me with ur questions… :slight_smile:

1 Like

Coding as a hobby can be very rewarding if you can actually produce something that others will use.

As the positive feedback is something you want to maximize in a hobby, you would need a something where you can start with simple routines and building blocks that are still usefull for others, and where there is a community of people receptive of your “products”. Thus, even as you have dismissed it in your post, coding in something like Reaktor could actually be the best bet for a rewarding hobby in DSP coding. There, you have many open-source examples of how things are done, within a framework tailored for DSP/sound programming. Even as a beginner, you can quickly use code from different blocks and combine them in useful ways, creating new stuff for others to use. For instance, many Reaktor blocks could really use a stereo version, something you may start as a programming task this evening with nearly no programming experience. Programming a new OSC or filter requires more skill, but would not require you to learn pointer arithmetics in C first, plus several hundred of library functions.

At last, you can use your skills to program whole new synths, and people will be very grateful for your efforts. In summary, Reaktor would be something that grows with your skills, with a far more beginner friendly learning curve than starting from scatch.

Best,

K

2 Likes

Hi Rusty – Saw you lurking around the Korg Prologue SDK thread here too.

The Prologue would be another interesting synth to develop code for – despite it’s (many) shortcomings. Like for instance the 32K code/data limit, the modest speed processor, the moderate limit on control parameters, and the expense (though $2K isn’t horrible for what you get).

But it is nice to have that much parallel power, 8 or 16 processors (meaning polyphony) depending on which Prologue you have.

That said i’ve decided not to pursue it, at least for the time being.

ADDED: Oh and there is also the FX side of the Prologue available to do stuff on too.

I’m an absolute beginner with no prior experience so it would be foolish to imagine doing it as a profession… that said, I am about to turn 40 and I am looking for a career change (I have a PhD in chemistry and currently work as a drug hunter but have grown tired of this work). I’m pretty confident I can learn and use anything but I just need guidance (and some focus/target of what I really want to do…)

You (and others) make a good point here. Maybe I should look at Reaktor first.

Hi Jukka,

It piqued my interest for a very brief moment of time… and that was it :slight_smile:

If Korg make it easily available below a certain price point; then I will get one. Apart from that, very little interest.

I’d much rather concentrate that time / energy working on my own hardware where I have full creative control over each/every aspect; rather then being restricted to an external SDK and target device.

1 Like

So hang on… there’s a digitone maxforlive plug-in knocking around somewhere?

Ahem

1 Like

Live coding is great fun as you will hear the changes you are making immediately in reference to what you type and run. You will start very quickly to build sounds / tracks and find your own ways to sequence or layer those sounds together - check out ‘Algorave’ and associated software.

For starters install Supercollider and Python - (Python is preinstalled on mac’s) and then install FoxDot. Follow instructions here > http://foxdot.org - it might seem limited at first (which definitely has it’s pros too) but you can go quite deep into sound manipulation once you get the hang of it and you will get a feel for syntax / logic in coding very quickly.

I would not advise going straight into programming Supercollider or trying to wrap your head around C++ - Maybe you have a natural aptitude for it in which case, go for it.

…and as a side note, I started out coding in Processing not long after it’s first release in the early 00’s. It’s a digital coding sketchbook, so predominantly immediate visual based feedback and is built on the Java language and therefore has many uses. There are also sound and midi libraries though limited. Nevertheless, I think you could gain a hell of a lot of understanding from trying it out too. The Processing community is amazing > https://processing.org

4 Likes

This is an interesting discussion. I’m in my late 30’s, and have been working on a Computer Science degree for a few years now, while working full-time and only taking one class a semester. I already have an English degree, so I only needed the required prerequiste & core classes to get admitted into the BA program. I only have a couple more classes, and 8 credits of electives left, but at my pace, that will still take a couple years.

This is my first summer I’m not taking a class because none of the ones I need/want are available so I’ve actually been trying to figure out how to self-teach myself some relevant skills since I’ve been so heavily focusing on theory & math. I just watched part of a Node.js tutorial yesterday; I’m thinking of trying to create a website or app I can use to help me find a job in the future.

My main goal right now is to build some skills, and find ways of showcasing capabilities on platforms that will make me attractive to potential employers. I want to avoid having to take the route of interning for free; I just can’t afford to not be working full-time right now.

I have zero experience with JavaScript, but I’m confident I can pick up any language with a bit of time. I really disliked Java, thought C was ok, and really enjoyed what I learned about OCaml.

4 Likes

What made Java so terrible?

(I’m also pretty grateful for this thread)

Keep in mind my feelings are in the context of a class I had to take which was also teaching me the very basics of algorithms & data structures. It was just really frustrating learning all the conventions that I found unintuitive, like “wrapper classes” to solve problems. I might find it better with more exposure, and without the pressure of completing assignments I guess. I didn’t do so well in a class that required me to learn OCaml, but I just found that language so much more appealing. I think I’m a fan of functional languages.

2 Likes

Similar situation, I went into business consultancy at 40, after doing software engineering and programming for more than 25 years, with a PhD in computer science. As a change at that age, this was very challenging, but still manageable, so this may be something for you if your current skill set is marketable (think of the processes you are good in, and where you could apply these outside of your current line of work).

If you look for a very challenging intellectual hobby you can do on your own time and pace, I’d say coding could be bullseye perfect for you, just like producing electronic music is for me for the past years. For a career change, I strongly advice against it, this is a game younger people have considerable advantages when starting out.

Best,

K

1 Like

Nothing beats walking in to an interview with sample code having something to do with the position you are applying for. It doesn’t have to be jaw dropping, especially if you can say something like, “I was thinking about your problem, and i got interested and so i had to put together this little application, to …” You’ll at least get some attention and stand out a little. Been on both sides of this and believe me it works.

4 Likes