OT professional development question

brendan mccloskey's icon

Hi forum
I hope the following question will produce a measure of consensus, but searching previous topics doesn't give me much hope. As a musician and designer, with the ink not dry on my doctorate, I intend to spend a year or two learning a new audio/media programming language. I'm fluent in Max - concepts and methods - and fairly fluent in Arduino and DIY electronics. I could easily spend the next year continuing to noodle aimlessly in Max and Arduino but that won't reinforce my CV. My question is: given your knowledge of trends in academia and industry, which platform/language/protocol will be of continued value over the coming years (I realise that is a cripplingly broad question). I'm jealous of colleagues and peers with a background in computer science that allows them to develop - and even sell - digital media tools. I'm attracted to Raspberry Pi (Linux/Raspian?), PD, SuperCollider. Maybe I should roll my sleeves up and learn (really learn) Jitter - or maybe OpenFrameworks?

I hate asking this type of question cos it's so broad and vague, but if you were teaching sound/graphic design, which language would you deliver to your students. I feel that Max/Arduino aren't enough (not for my artistic needs, just my professional CV).

thanks
Brendan

vichug's icon

did you consider Faust ? if not, why ?

Evan's icon

Very interesting question Brendan, I am similarly interested in focusing on different languages/environments for professional development and potential PhD applications in a few years. I wish that I had more advice on this topic, but I'm posting more to be involved in any future discussions.

To my own end I have taught myself a functional level of javascript, some python (for Live scripts), and am digging into low level C stuff to lay the groundwork for objective-C and C++ in the future. I don't intend on becoming a 'programmer', but I think having some functional skills is very attractive in a professional and academic setting.

brendan mccloskey's icon

@ everyone
thanks for the rapid and very focused responses. Totally unexpected, was nervous about starting a flame war. It seems my fear of generalising was unfounded :)

@evan
"I don’t intend on becoming a ‘programmer’, but I think having some functional skills is very attractive in a professional and academic setting"
my point exactly, I couldn't have said it better; and Python is a name that crops up a lot in the context of my question, but a n00b question would be, is Python a general purpose language or can it be tailored for digital media tools? Such n00bosity :) I will begin looking into Python.

@vichug and raja
Faust. Definitely further discovery needed, for the same "Python" reasons above.

@raja
"If you are thinking to yourself that switching environs is the way to go, then you’re thinking too materialistically. The key is to learn better math"
Not switching, just growing. Math. I hear you raja. Gareth Loy, here I come!
"You learn how to do at least one, you’ll have an easier time learning all the rest(it’s a bit like the way I found max to be so easy by learning a bit of CSound and Supercollider first… except programming in C or C++ is both more extensive, and more extendable)."

I'm actually the other way round: Max allowed me to realise audio tools that I couldn't express in code; and now I want to be able to it in code, so that a far wider range of platforms are available to me (iOS, Android, Linux, yada yada yada); not to turn a buck, but to, erm, just spread the love (man). And bolster the CV of course.

Thanks again
Brendan

brendan mccloskey's icon

ps
@raja
I just re-read your last paragraph or two. Bullshit mate. No pinch of salt needed in any way. The math behind the environment is indeed the key, Speaking as an outsider, of course. Consumer experience may vary!!!

:)

Evan's icon

Python is definitely a general purpose language, and to be fair I have little experience in it outside of Live scripting. It does have libraries for multimedia and audio applications though (thank you for prompting that search!). And it's point of entry is a little less daunting than say, C++. I'd say it's definitely capable of both image and sound processing, but that's not necessarily its strength. The fact that it can feel like an interpreted language (although technically it's not) when writing code can be a huge boon to experimentation and prototyping though.

That Faust looks fun. I might have a go with some of that here in the near future. After I dig into gen a bit more...too many things to learn damnit.

Peter McCulloch's icon

Python is definitely a good recommendation because it also provides access to the very useful NumPy and SciPy packages which many people are using in lieu of Matlab. Python is also very beginner friendly but powerful and a lot of folks in Music Information Retrieval are using it.

vichug's icon

but, is python performant for real time audio synthesizing ?

brendan mccloskey's icon

I've done a little research, and for my own artistic needs I think Python or C/C++ may be 'too' general purpose, but definitely vital for a professional CV. For those reasons, I think Faust or SC are a better fit. But on that point, why is there no n00b-centric and comprehensive tutorial for Gen? Are the helpfiles enough? Raja declares that Gen reignited his interest in Max, and he recommends a solid maths basis for my studies, so learning to code in Gen, whilst also learning SC or Faust seems to be the best way forward, for a non-coder like what myself are. And then later look into Python -> C++.

I'll report back on this thread in 12 months.

Over and out.

Anthony Palomba's icon

Just wanted to throw my 2 cents in. I have been developing software for many years. There is really only one language that has stood the test of time when it comes to portability, security, performance and that is C++. Max, pd, Openframeworks, Cinder, and many other creative software frame works all understand C++ (not to mention iOS, OSX, Win, Linux). It can handle low level tasks as well as high level UI interfaces. It is also self contained which allows you to securely sell your products.

I would also say python is also a good investment of time. Python is basically script driven natively compiled software libraries. Very similar syntax to C++ and also cross platform. While many see it as "just a script language", it is quickly gaining strength and popularity as a production environment. But what I like to use it for is creative coding. Since it is a real-time coding environment, you can develop ideas quickly. The huge developer and user community allows you to get up to speed quickly and rapidly prototype things. There are tons of mathematics and scientific libraries out there to help develop ideas. Prototype it in python, build it in C++, then sell your product.

If you are going for a drive down the programming highway, might as well get in a car that will take you as far as you would like to go.

brendan mccloskey's icon

Yes, I've been meaning to get the Eric Lyons book, which should be my immediate next purchase. I realise this is the wrong place to ask, but I've just embarked on learning SC and can't even get off the ground: I'm having a really hard time saving and re-opening SuperCollider files under Windows 7. anyone here using SC under Win7? Their nabble forum is very slow.

brendan mccloskey's icon

Hi raja
briefly, I'm running SC 3.6.6 (scide) full IDE. If I open any saved files, the entire text (functions and args etc) is monochrome grey, and nothing gets executed when I try to run it, i.e. Shift/Enter means Enter (new line). Brand new unsaved code runs fine, I can boot the server, get audio, do additive synthesis, cool. But if I save the file, SC complains that the file extension has changed and I should re-open the file. Back to monochrome and not working. It's a pisser. I might try downloading an older version to see if this persists. Maybe take this off forum too, if you have further contributions to make?
interposedesign [at] gmail [dotcom]

Thanks again buddy

brendan mccloskey's icon

Downloaded 3.6.5. Let the installer extract to my OS drive. Same fekn problem. Been waiting a week for the mailing list to accept my post re this problem. Sigh.

Mike S's icon

Thought I'd bump this old thread for some info.

I'd like to start some VST/App development. Like Brendan, I recognise my theory and maths is pretty weak. I understand a lot of DSP and digital audio concepts, and can while the hours away in Max, but implementation in code is obviously a different thing.

I've got no great interest in coding externals, so aside from the resources mentioned above, can anyone recommend a few good books or guides that are specifically designed for those with a limited technical background? Something like 'My first VST : for those that took the BA instead of the BSc'

brendan mccloskey's icon

FWIW Mike, I have decided to put Supercollider on the back burner for the moment (got 3.6.2 running ok btw), and concentrate instead on Gen, in parallel with reading Eric Lyon's book on Designing Audio Objects.

HTH

do.while's icon

@MIKE
Oli Larkin's Framework WDL-OL might be helpful for you (that is Iplug based i think) if u desire to develope plugins . You should check this fairly nice tutorial http://www.martin-finke.de/blog/page/3/ .

Mike S's icon

Thanks guys, I have actually made intentions towards doings something with WDL-OL in the past but felt I needed a hand through it all - that tutorial looks perfect.

Brendan, how have you found learning Gen? What are the best tutorials/resources for wrapping your head around it?

oli larkin's icon

Hi,

My advice if you want to develop your skill set, in a useful transferrable way, is to learn C++ rather than learning another high level language. Things like OFX, Cinder, IPlug and JUCE make it possible to get stuck in with the interesting stuff at an early stage, without getting too distracted by annoying mundane things like setting up the IDE (xcode, msvs etc).
It is not necessary to be great at math or engineering to get comfortable with C++ programming and make interesting stuff.

oli

Roman Thilenius's icon

i am not interested (and not firm) in "markets" and "trends", but i´d say for sounddesign and composing: max. for audio only but maybe also for graphics: SC3. if stable and effective releases are your aim, you wont come around C++, but i must say i dont see how you could use a high level language for teaching students about theories and practice apart form the language itself.

Roman Thilenius's icon

>>The math behind the environment>>

actually, i dont see a big difference here between max/pd/sc/csound and java/C++.

if you dont like to use split, change, clip, mtof, or zigzag~, you can do the same in maxmsp by using basic math objects, expr, and the like.

the majority of the max factory objects are simply enough to reproduce them using more low level objects and/or expr in order to understand, demonstrate, or be able to modify these processes.

of course, when it comes to poly~ or pfft~, or some of the bigger GUI objects, this is no longer possible. but in my opinion this is the right moment then to use C++ in addition (like raja noted in his tom example)

but do you want to assing RAM adresses manually when loading audio vectors from disk? what could be the benefit of this compared to using a compiled [buffer~] object or play.() ugen?

i believe you must always make a decision if you want to teach audio and graphics, or of you want to teach a programming language.

do.while's icon

well well , i wouldnt be so discouraging as Roman . Oli pointed at the essence why its not that scary . If we are talking about vectors , memory , disk access - well u do it once (while learning) and then u are reusing your knowledge or even library .
Any named frameworks makes these and many more tasks trivial including MAX/SDK .

But dealing with such environment require some responsibility where in visual programming any lack of such is forgivable which makes u longer to learn some habits .

If one want to learn DSP from back side , he/she should at least get a grasp of it with coding . It will let u build better performance in visual programming environment at least .

brendan mccloskey's icon

Just a quick update - not a bump.

I've dipped my toe into 'proper' coding by looking in more detail at handling Arduino functions, using the Arduino Cookbook and C Programming for Arduino, and trying to do all my scaling/mapping on the board, with gen~ for sound synthesis. Seems the best way for me to go is learning by doing, writing lower-level code that has an end result or a direct impact on functionality. Next stop: port manipulation.

Back in 6~12 months

brendan mccloskey's icon

Again, a quick update for those who generously replied:

These days I am learning to write my own functions and Classes in Processing, and my own audio engines in Supercollider, communicating via OSC. Not so much work done on port manipulation in Arduino, no real need since I discovered Arduivis.

It's slow work, moving from the GUI-based Max paradigm to the function-based one in SC et al, passing arguments and variables around all over the code. But Max is still my main tool for instant creative nourishment.

Brendan