Coding

The thing that’s pretty cool about development work (i’m distinguishing development work here from just programming or coding) is that whatever other expertise you may have you can combine it with computers and have something in that. Even a degree in English :grin:!

1 Like

Keep in mind that object oriented languages are there for a reason, and that functional programming languages, while easier to master, have their pitfalls when designing larger systems. The things you are struggling with are not Java, but the idea of object-oriented expression of problems, which is one abstraction layer above thinking in functions.

Once you realize that modern cars, whose embedded systems often have been programmed in low-level functional languages, do normally have more than 30.000 global variables within their control systems to keep track of all the “states” the subsystems have, you can imagine what kind of horror it must be to debug these monsters. So give Java a chance.

1 Like

I don’t even think I have a choice considering how widely-used it is lol.

1 Like

I worked with Reaktor for many years (maybe 2000-2007?) and transitioned to MAX in around 2010 after a break from computer stuff. I am far from an expert, but find it has a great open community and lots of support and documentation. PD is great due to the open source nature. So is Supercollider, but honestly, it intimidates me. I’ll stick with MAX and my ES8 to interface with my modular stuff.

There’s a great Kadenze class for MAX beginners I’d highly recommend. Youtube channels galore.

I think a lot of this all depends on how much you want to focus on the programming side and how much you want to focus on the creating things side. Given that there’s a relatively steep learning curve even with MAX to get making stuff that’s your own, I’m sure some of these more foundational code languages will be even steeper.

Good luck though! :slight_smile:

4 Likes

im gonna go ahead and be a little contrarian and say PD is an absolute pain in the ass to use, and i attribute this mostly to its open source nature. even with purr data / extended / l2ork etc, max is far superior.

1 Like

JavaScript is a good place to be these days. So much tasty code ripe for the taking on npm. And decent built-in web APIs for MIDI (at least in Chrome) and synthesis.

Plenty of other great suggestions here too. I recommend you do a little shopping around, think about what excites you about code, weigh your options and have a good long think about it. Then dive in deep on the thing that looks the most interesting and promising… and most of all like you could spend many long hours staring at it - because you will!

2 Likes

You make a fair point, and maybe I am too pessimistic here. You are right, there is a lot to be said at ressources now much more available, which greatly helps when you have the determination.

1 Like

One of my favorite developers to work with was in his mid-60s at the time. And he wasn’t the canonical stubborn greybeard - he turned me onto React and Redux (just because he thought they looked cool).

Another friend of mine is almost 40 and just starting his development career. I think he’s making more money than me :slight_smile:

It’s foolish to shut out anyone based on something as superficial as calendar age.

6 Likes

I couldnt agree more. I made switch from Accounting to Development when i was 30 and I have loved every minute of it since. Some of my friends had false assumptions that you have to be super young to be “good at it.” I think just being abot to understand procedural thinking helps alot. In fact, i joke about “if you can read a manaul and follow instructions, you’ll be a decent programmer.” So I guess that means everyone here is capable of being a decent programmer LOL

2 Likes

I’ve begun my career as a programmer at age 30 and i’m 41 now.
I’ve never really been a geek , nerd or whatever. I just wanted to make a good living at the time because my passion is really music and arts. Im a Java programmer and i make very good money (sometime i’m almost embarrassed ). I really like what i do but there is a difference coding for fun and doing this has a living.

I don’t use my computer that much when im at home, i mean i code 40 hours a week so i really need to do something else.

Also i like “programming” stuff for the Axoloti , Nord Modular etc. I don’t think i have the time and patience to build hardcore DSP stuff from scratch since i have 2 kids and not a lot of time.

Sometime i think some of my coworkers are too nerdy even if everyone is very nice :slight_smile:
I mean i don’t understand how you can spend all your spare time in front of a computer.

6 Likes

The most sensible reason to get started with Python is, that many people find it to be the most beneficial language because it’s easy to learn (compared to other languages) it’s fast to write, and it’s used in many different fields (specifically in math, machine learning, etc.). Yes, I can say it’s even a lot of fun to write Python code :slight_smile: Once you know the concepts of writing in Python, it would be much easier to learn C/C++ which you’d be choosing if you really care about low latency giving you the ability to build e.g. something like the Virus TI or many other software based synths. Although it was written in Assembler (which is even more bare bone than C), it today would probably be written in C/C++ when talking to Kemper’s engineers.

So my thinking is: Starting off with Python’s basics (e.g. with a course on https://www.codecademy.com/) for a week or two, start implementing some algorithms with libraries mentioned in this thread and see how the journey goes. If you get something decent coded and you run into latency issues you’re naturally going to think about other languages and make your choice.

6 Likes

Completely agree with you Brandx.

I will add that Python has some really good libraries too (other languages often do too), so before coding something up look around, you may find what you’re looking for.

Python doesn’t always run fast, but it does develop fast ! That counts for a lot.

Also as far as time sensitive issues: Since Python is so powerful, i find it good to work through ideas, especially if you can work them in a non-time sensitive way, and then take the best and recode them in some other language if you need. You can also compile Python code in various ways and speed it up. Actually there’s lots you can do to speed up Python (or any language for that matter).

Fast processing now-days will even handle many time sensitive problems in a predictable way with interpreted code, so don’t prejudge things. Get the basic function first and then worry about speed-up (This is a good rule - usually. But there is no fix for the impossible design.)

Languages are a lot like audio gear, tools to an end. A moog voyager is a very different proposition from a virus ti and both are very different from a modular, and all which are very different from a rytm and so on.

My advice would be to choose the one that rustles your jimmies so to speak and stick with it till you get where you want to be or know where to go next.

Look at the works that interest or inspire you and find out what was used under the hood. Dont be afraid to ask the creators most people are happy to talk about what they use.

i think it’s important to start from something basic that gives you an understanding of how things work, a bit like you would do with a spoken language :slight_smile:
once you get to know how things work, then it’s mostly a matter of choosing the language you want to use to communicate with the machine. you’ll be using different words to do pretty much the same things in the end. whether it’s Assembly, C, Basic, Python or well…any other language really…you’ll probably find that all of them can perform the same things just by using different words. some are more dedicated to specific tasks but nonetheless, they all have something in common: tell the machine what, how and when to do it :slight_smile:
i would not start by using libraries or pre-built code but rather try things for yourself first, again, to get an understanding of how things work…even if it’s just doing really simple things. C would probably be a good starting point i think, as you’ll find that many other languages are similar to/based on it (and C++ next :scream_cat:) unless you really want to go loooow level, then i’d say Assembly but mh…i don’t think it’s what you’re after…
on the other hand, if you want to just get things done, then there’re plenty resources out there (libraries and the dev platforms) that will allow you to do things pretty quickly, but you could find yourself debugging code and asking why things don’t do what you’d expected them to (of course, this is not always the case but well…those things can happen…there’s always a human being behind libraries and platforms :slight_smile: )

1 Like

Compiler Language, also known as C is a very important basis of understanding. There are low-level functions and presumptions within higher-level programming languages that build upon this as a foundation.

by “higher-level language” i mean a programming language that exists upon a mid-level interpreter platform. this platform allows for quicker programming and prototyping, provides some convenient aspects and possibilities … and in return for the benefits, accesses a few extra cpu cycles and thus is less efficient in realtime performance. although it is possible to ameliorate some of the extra time required.

C# does provide automated memory allocation and so if memory management seems like a hassle with Compiler Language (allocating a memory position pointer for a variable and then deallocating that pointer manually where and how the programmer indicates the program should view the variable as no longer in use), there is the option to go for a memory-managed language after learning the foundational basis upon which the higher-level languages are referencing due to the nature of their structure.

although more importantly i guess, the main idea is to achieve an understanding of what the flows of information look like. the arcs of data going back and forth, creating tides and whirls with inputs and outputs.

initially this might not seem so important as making a User Interface actually work properly.

but then later when exploring data-oriented functions such as making a landscape from a table of realtime generated values from a mathematical function, the data flows and structures start to display their value and integral essence in relation to what a program is capable of.

sure - in a past life (2002) I was on teams writing prototypes for clinical applications for speech analysis. I think you’d be better off jumping in on the C side - since that’s where you’ll end up anyway if you want to do fun & efficient DSP on ‘fullsize’ computers or more specialised devices like a Bela or something.

There’s an array of opensource components you’ll use to help you out: libsndfile, portaudio & portmidi - not to mention actual DSP libraries that make life easier. There’s also no necessity to make a GUI application - you can always make a quick frontend in something like javascript etc later.

Max/PD are indeed great environments to try out stuff in (although the data flow stuff can be unsuited to solving some problems) - Gen is something I’ve completely missed the boat on so far

2 Likes

Learning how to write an iPad synth.

Just saw something that might be of interest if you wanted to learn how to do a synth on the iPad. It’s not out quite yet, but should be later this month. It’s free and completely open source, plus it’s feature rich and great sounding. It’s all written in C/C++.

It’s called AudioKit Synth One.

Here’s an article on it at Sonic State.

ADDED June 29, 2018: AudioKit Synth One has now been released.

5 Likes

Don’t get me wrong :slight_smile: I’m not saying C/C++ is scary, but Python is easier to learn for beginners and in many cases faster to write and better to maintain (e.g. not having to deal with garbage collection). But in some cases you want or have to use C or C++ and I find it to be very powerful languages. Google actually developed “Go”, which is a compiled language too, solves many problems that people didn’t like about C but kept the mechanics to control a program’s behaviour in a way that is only possible in languages like C or C++. It becomes very popular (not so much for musical purposes unfortunately yet or maybe I don’t know about them) and in some areas it’s replacing what Python has been used before. Especially when it comes to performance and high concurrent operations. Try it out: https://tour.golang.org/

3 Likes

What’s this?

2 Likes

Kernighan and Ritchie book (1978)

You have to have gray hair to know this, so you are not qualified man. :rofl:

By the way – not a particularly good way to learn C, but it was the primer for years.

6 Likes