Tips for getting into Development

Apple APIs and Mac audio software development
Post Reply
pbass
Posts: 154
Joined: 17 Jan 2005, 18:08

Tips for getting into Development

Post by pbass » 24 Sep 2008, 21:23

Hi,
I'm a long-time computer musician (Logic in particular). I'm a composer/player and a real right-brain kinda guy, so maybe I'm not really cut out for this, but I'minterested in learning some programming language(s) so I can develop music/audio-related software for the Mac, whether new effects, instruments, standalone applications, etc. Of course, I have mountains of ideas;)
I've NEVER done any kind of programming before. Can anyone suggest a good place to start, music/audio related or not? I assume I need to start with a ubiquitous language like C or something (of course, I know nothing about what it is).
Any books or sites that would be good for me to explore to see if I really DO want to go down this path? The other angle here for me is to learn another way to make few bucks programming (but I realize as a newbie that's prolly a looooong way off). Any thoughts greatly appreciated. It all sounds pretty intimidating, but I'm really intrigued to get my hands dirty . . .

renderingtodeath
Site Supporter
Posts: 249
Joined: 16 Oct 2002, 09:44
Location: 50° 56' 00" N, 006° 57' 00" E

Post by renderingtodeath » 25 Sep 2008, 01:40

Hmmm, what speaks against these?

http://www.plogue.com/index.php?option= ... &Itemid=35

http://www.cycling74.com/products/max5

You will need have to learn everytime from a certain point.
These softwares will let you do interesting things also from a very basic point and let you dive into high complexity.
OSXYZ

User avatar
mobilegazer
Posts: 337
Joined: 26 Nov 2004, 10:29
Location: hannover@germany@terra
Contact:

Post by mobilegazer » 25 Sep 2008, 04:50

looking into this myself, actually. i'm also a complete newbie in this regard, so take my reply with a grain (or ton) of salt.

basically you won't get around C / C++ i guess. As far as i gather, AudioUnits are typically coded in C / C++ due to their real-time nature (and the AU SDK stuff is also in C / C++), applications can be made quicker with objective C (as this is the language that the apple cocoa framework uses). The cocoa framework gives you a whole lot of ready-made stuff to use, like GUI elements, reading/writing of various filetypes etc.....but you'll still need to know some C / C++ to get into obj-C

A really cool book on obj-C/cocoa is Aaron Hillegass' Cocoa programming for Mac OS X

keep us posted ;-)

User avatar
Fatnurse
Site Supporter
Posts: 865
Joined: 18 Jan 2005, 14:03
Location: Birmingham,uk

Post by Fatnurse » 25 Sep 2008, 08:17

Why not go for something like reaktor or a more flexible similar thing like MSP Max,
all that coding stuff scares the bejeebus outta me(too be fair i have reaktor and thats scary enough thankyouverymuchta)
Digitallunarsea Studios

http://www.soundcloud.com/fatnurse

For all forms of electronic music creation and tutoring

jonnyfive
Posts: 157
Joined: 06 Jan 2005, 20:34
Location: Austin, TX

Post by jonnyfive » 25 Sep 2008, 08:20

Hi,

I am/was in a similar situation to you recently re wanting to dive into programming, (tho I have some very limited C programming experience and 2 years of Max/MSP patching under my belt). And as a musician first I hope I can offer you some insight.

I think that if you are interested in making things you can use reasonably soon, and dealing with musical/audio stuff straight away, Max or SuperCollider or (Plogue or CSound or something) is going to be more rewarding for you, ie you can start programming with MIDI and audio right away while you learn the syntax etc. and get to making usable stuff pretty quickly (whereas if you start form scratch in C, your going to spend a lot of time learning about control mechanisms, memory management, disk access, UI programming etc. and it is going to take alot of leg work to get to where you can start getting to music and audio...)

Keep in mind these are things you'll have to learn in any environment but it wont be so far removed/abstracted (in both time and theory) from your goal of making plug-ins etc.

I would recommend Max/MSP and/or SuperCollider in that order (because that's what I have experience with, and I think as far as programming goes Max offers a pretty easy point of entry since the way you program is somewhat analogous to modular synth patching; plus it has awesome tutorials. SuperCollider is a full on object oriented programming language). Both platforms will acclimate you to "real" programming while making things you can use and making it easier for you to transition to C later if that's still what you want to do, ie you might find these platforms to be robust enough.

FYI, I'm not trying to discourage you from learning C (I'm doing so myself), just offer you what I think will be more satisfying points of entry for a musician with *no* programming experience.

Also here's the thread I started over at the Max/MSP developers forum, asking a somewhat similar question. If you back out to the Developers forum you'll see several similar "wanting to learn to program" threads...

Note: The developers forum is not the general forum for Max/MSP users, but people who write Max externals in C (in Max externals are the little boxes you connect together, fyi) so dont read that forum too heavily, jump all the way out to the Max/MSP forum if you want to see what normal users ask questions about, and how the community (which is really helpful) works.

Anyway best of luck,
Feel free to PM me or whatever if you want... :)
j5
I must not fear. Fear is the mindkiller.

pbass
Posts: 154
Joined: 17 Jan 2005, 18:08

Post by pbass » 25 Sep 2008, 08:32

Thanks everybody!
Lots to consider. One other aspect of this I should include is that aside from learning how to create some nifty music/audio gizmos for my own purposes, I'm at a bit of a career crossroads, as many are in the music biz these days---cashflow just aint what it used to be for sessions, composing, etc, etc.
I'm looking for something I can learn to add to my skill set that I can use to hopefully generate additional income(whether it's music-specific or not), so in that sense, I should prolly be looking at learning C and starting from the ground up. I guess I just need to get in there and see if my brain will even work that way (I really am a pretty extreme right-brain type, but I do love problem solving and fine detail and minutiae of the anything I work at)

Jason Hyerstay
Forum Guru
Posts: 1673
Joined: 05 Mar 2003, 01:43
Location: Vermont

Impromptu!

Post by Jason Hyerstay » 25 Sep 2008, 09:13

Free Scheme-based programming environment for audio and visual tools and performance:

http://impromptu.moso.com.au/

You can do live coding while your software is running. Very cool.

jason

foldedSoul
Site Supporter
Posts: 1422
Joined: 16 Feb 2004, 11:02
Location: Glasgow, Scotland

Post by foldedSoul » 25 Sep 2008, 13:14

You don't seem to have strong ideas about particular projects so I'd go for the "C type" route. If you were going to create a particular product then I'd say one of the specific music programming environments would be the quicker route.
-
There are lots of advantages in learning to program using a generic language like C or one of its variants. Firstly, you will learn the principles of programming in an abstract fashion which means that your skills will be portable (i.e. you will be able to hop between languages/environments). Secondly there is overwhelming support, examples, books, and lots of practitioners around to learn from. Thirdly, the tools are completely free and to a very high standard of capability (Xcode, Visual C++, GNU). Fourthly, if you take to it there is potential employment/value in having those skills.
-
In terms of skills needed don't get fixated on the idea that programing is a linear, data-driven kind of task. The biggest difficulty in programming is understanding the task at hand not the technical bravura of writing code (especially nowadays where computer resources are basically limitless). So artistic intuition is as valid a skill as hard-nosed engineering. If you intrinsically understand what you are trying to achieve and then deduce a way of doing it thats 80% of the difficulty.
-
I've been a songwriter and musician most of my life and I wrote my first computer program at the age of 17 and I'm far from alone in combining the skills so it can certainly be done successfully.
I've been doing it so long I've forgotten what it was like not to know how so it's hard for me to suggest specific materials except that for C the bible is the original Kernighan & Ritchie book - beg, borrow or permanently remove one and put it on your shelf, it won't take much room. Apart from that, it's like all these technical skills you have to keep doing it to avoid losing it.
Good Luck.
You pop!
[WALL-E]

pbass
Posts: 154
Joined: 17 Jan 2005, 18:08

Post by pbass » 25 Sep 2008, 13:21

foldedSoul wrote:You don't seem to have strong ideas about particular projects so I'd go for the "C type" route. If you were going to create a particular product then I'd say one of the specific music programming environments would be the quicker route.
-
There are lots of advantages in learning to program using a generic language like C or one of its variants. Firstly, you will learn the principles of programming in an abstract fashion which means that your skills will be portable (i.e. you will be able to hop between languages/environments). Secondly there is overwhelming support, examples, books, and lots of practitioners around to learn from. Thirdly, the tools are completely free and to a very high standard of capability (Xcode, Visual C++, GNU). Fourthly, if you take to it there is potential employment/value in having those skills.
-
In terms of skills needed don't get fixated on the idea that programing is a linear, data-driven kind of task. The biggest difficulty in programming is understanding the task at hand not the technical bravura of writing code (especially nowadays where computer resources are basically limitless). So artistic intuition is as valid a skill as hard-nosed engineering. If you intrinsically understand what you are trying to achieve and then deduce a way of doing it thats 80% of the difficulty.
-
I've been a songwriter and musician most of my life and I wrote my first computer program at the age of 17 and I'm far from alone in combining the skills so it can certainly be done successfully.
I've been doing it so long I've forgotten what it was like not to know how so it's hard for me to suggest specific materials except that for C the bible is the original Kernighan & Ritchie book - beg, borrow or permanently remove one and put it on your shelf, it won't take much room. Apart from that, it's like all these technical skills you have to keep doing it to avoid losing it.
Good Luck.
Fantastic---and inspiring. Many Thanks.

zibba
Posts: 8
Joined: 30 Jul 2007, 17:41

Post by zibba » 15 Oct 2008, 17:45

pbass, first up I admire that you want to expand your knowledge and learn to program. I've been programming for a long time. I started on the home computers of the 80's learning BASIC. Today there are a zillion more options and if you google for beginner tutorials and so forth you'll be swamped with information. Have you a programmer friend? Get them to show you a few things, you'll learn and pick things up much faster.

Programming is a huge subject and it will take you a long time to learn and an even longer time to learn how to do the relevant DSP coding to write audio software. On that front, as others have suggested, you're better with the Reaktor / MaxMSP / SuperCollider style environments - quicker results.

However, having a fundamental knowledge of programming will greatly aid your usage of those environments. For this you have to learn to "program", not necessarily what the language is but the concepts. In fact, good programmers don't worry about the language, be it C, C++, Java, Ada, python, whatever, it doesn't matter. So learn about what makes a program, what's an algorithm? The basic elements of data input, process, output data.

I agree with foldedSoul's comment that the hardest part about programming is understanding what it is you are trying to achieve and then having the ability to communicate that, particularly as the size of the task increases. Classic software engineering. As you go further, or even at the beginning, you'll soon realise this.

I wouldn't recommend learning C first. It's a difficult language fraught with complex behaviours that can trip up a novice. I would be more inclined to start with Python or Squeak.

Here's your first Python program:

print "Hello, World!"

Save that line in a file called HelloWorld.py
Then in Terminal (on Mac) do:

$ python HelloWorld.py

Now you're programming :)

Expand on this, for example, there are many tutorials on Python. Learn to do arithmetic with functions, read user input, and the basic algorithms of search and sorting data. Then when you're comfortable with that, apply it to the audio environments and then learn C.

Have fun with it.

johnpitcairn
Site Supporter
Posts: 660
Joined: 01 Dec 2003, 03:06
Location: Auckland, New Zealand
Contact:

Post by johnpitcairn » 15 Oct 2008, 21:05

Stanford have some actual course content up for free:

http://see.stanford.edu/see/courses.aspx
LC Xmu Logic/Mackie Control emulation, LC Xview software LC/MC display,
Logic environments & stuff: http://www.opuslocus.com

bigtiny
Posts: 131
Joined: 16 Aug 2003, 08:58
Location: Boston, MA

Re: Tips for getting into Development

Post by bigtiny » 16 Jun 2012, 21:31

I think you need to make one fundamental decision here:

Do you want to build complex interesting musical tools-environments-score generations etc. or do you want to make software that creates these tools, or MAC apps, etc.?

I think of it this way....if I have some ideas and I want to write a soft synth, or something like Supercollider or such, then bite the bullet and get some books and take some courses, cause you've got some work to do. You'll want to start with an object oriented 'c' course, which will probably be c++ even though you'll then have to figure out how that relates to objective-c, cause that's what MAC 'C' programming is based on. (I'm assuming there aren't a lot of objective-c courses out there, but I could be wrong).

If you want to create complex musical environments, then many of the previous suggestions are right on the money: MAX, Reaktor, Plogue, and Audiomulch are graphically based environments that let you build your own stuff. Or if you want to move into a more programmerly environment, there's Supercollider or Csound. (Csound is used to teach electro acoustic music in most of the big Universities.)

bigtiny

Post Reply