Jump to content
IGNORED

Audio Programming


Recommended Posts

How does one learn how to program for audio applications?

 

It seems there is a bit of demand for this position in the gaming industry, and I'm interested in switching careers. I know there are quite a few web developers on here, so I thought you fellas might have an idea.

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/
Share on other sites

openAL is looking very promising these days.

 

there's a lot of middleware stuff these days, especially the UE stuff that has nice editors for sound placement. licenses don't come cheap tho, so get some hands-on C++ experience and experiment with OpenAL, i'd say, and just join an (amateur) development team to get make things real.

Edited by iep
Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1745977
Share on other sites

  On 2/2/2012 at 12:35 AM, tompty said:

c++, dsp books. bam

 

you're probably gonna need some C knowhow and basic dsp/audio manipulation shissle to get stuff done yeah, but middleware will get you very far, semi-codeless.

again, i recommend you join a team of devs that you like and a task that can handle, probably some basic stuff.

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1746023
Share on other sites

we started with portaudio in dsp programming class. it's very easy to begin with, and works on almost anything. if you want something to get going, that will work.

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1746040
Share on other sites

basically you can't learn this on your own. you need some one to supply the sound, and some one to supply the enviroment to put the sounds in. whatever API you use, openAL, UE, portAudio, you'll be the middle man between supplier and demander. unless you want to go solo and do it all yerself, in that case you better have strong ideas. you have strong ideas?

 

  On 2/2/2012 at 12:30 AM, Braintree said:

It seems there is a bit of demand for this position in the gaming industry

 

chortle

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1746052
Share on other sites

Thanks for the tips guys! I have a much better idea of what I should be looking into.

 

 

  On 2/2/2012 at 2:07 AM, iep said:
  On 2/2/2012 at 12:30 AM, Braintree said:

It seems there is a bit of demand for this position in the gaming industry

 

chortle

 

There's more demand than sound designers, anyway :whistling:

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1747212
Share on other sites

  On 2/3/2012 at 10:07 PM, Braintree said:

Thanks for the tips guys! I have a much better idea of what I should be looking into.

 

 

  On 2/2/2012 at 2:07 AM, iep said:
  On 2/2/2012 at 12:30 AM, Braintree said:

It seems there is a bit of demand for this position in the gaming industry

 

chortle

 

There's more demand than sound designers, anyway :whistling:

  On 2/3/2012 at 10:07 PM, Braintree said:

Thanks for the tips guys! I have a much better idea of what I should be looking into.

 

 

  On 2/2/2012 at 2:07 AM, iep said:
  On 2/2/2012 at 12:30 AM, Braintree said:

It seems there is a bit of demand for this position in the gaming industry

 

chortle

 

There's more demand than sound designers, anyway :whistling:

 

yeah maybe, good fucking luck tho. you like audio and you like programming. so what?

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1747423
Share on other sites

  • 11 months later...

Learning C right now to get programming basics. Using this book, Programming in C by Stephen Kochan:

 

9780672326660.jpg

 

Getting everything in order to code has been frustrating. It leaves a lot of things out concerning how to get up and running. The code contained within is simple and easily discernable, but there is little explanation as to how to use it or what to do with it.

 

Anyway, after I'm done with this one, I'm going to move on to The Audio Programming Book by Richard Boulanger and Victor Lazzarini:

 

The-Audio-Programming-Book-Boulanger-Ric

 

At the same time I'm trying to learn the XCode SDK. I have my work cut out for me.

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1931489
Share on other sites

I'm a professional programmer and I was programming in low level C as a job for 4 years and before that as a hobby for at least 10 years. I've never learned any programming language from a book, just by trying out, googling, reading the help files, talking with other programmers, banging my head against the desk, etc. Anyway, K&R is THE classic in C programming. In fact I have it on my shelf here, but I've only used it as a reference. (I bought it because my employer was willing to pay for it..)

 

Prentice-Hall-The-C-Programming-Language

 

About audio programming, I've been thinking of making my own VST plugins but haven't really found the motivation yet. I have a formal education in signal processing, so I know in theory how to calculate FFTs and how to make various filters but I've only ever used it in image processing when programming.

electro mini-album Megacity Rainfall
"cacas in igne, heus"  - Emperor Nero, AD 64

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1931638
Share on other sites

so it looks like you want to write audio stuff for the Apple platforms... that's good, Core Audio is pretty cool I think... it's a pretty convoluted C API to begin programming with imho, but once you realise how much it actually does for you, you'll be really happy it exists...

 

in the end, the process basically boils down to

- you setup some framework code according to your needs (offline processing vs. synthesis etc.. etc..) using Core Audio stuff

- you write numbers into buffers (the creative stufffff)

 

http://my.safaribooksonline.com/book/audio/9780321636973

this book will get you up and running with Core Audio, before it came out you had to scan header files to get an idea of how to set things up....

 

i'd recommend to put the C book back to the shelf and use it as a reference when needed, while learning Audio Units with the Core Audio book..

you should be able to apply concepts from your Audio Programming Book once you get an Audio Unit graph going... that way, you'll maybe more quickly get to the creative part... you can always improve your C skills later, and get to the fun parts quicker... this is really important in my opinion... this shit is hard, you'll need some fun to keep yourself motivated :]

 

that said, i've also tried to seriously learn this stuff, but it's very time consuming and i just didn't want to spend all my time for this.. built some fun FM stuff for iOS a year ago or so, but realised that i had to learn a lot more to make it good.. so I decided to use existing sound processors (Elektron Machinedrum currently) instead, working on controlling these in fancy ways... it's so much more comfy and i can focus on the creative side... however, looking forward to this: http://theamazingaudioengine.com this audio engine should make working with Core Audio a lot easier...

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1931651
Share on other sites

About programming in general (because I have no actual knowledge of audio programming..)

 

The way I've learned any new thing in programming is I never start with the theory but I learn as I go. Set up a project and decide concretely what kind of piece of SW you want to write. Then try to implement it, learn from your mistakes, learn alternative techniques, learn the theory behind the techniques, talk with other programmers and so on. If you manage to get it done or the whole thing fails, see how horribly everything was designed now that you know better and start a new project with more knowledge on how things should be done. Then repeat.

 

Also start modest. Very modest. Write the stupid "Hello, World!" program first. Then do something bigger. Otherwise the frustration of never getting anything done will get you.

electro mini-album Megacity Rainfall
"cacas in igne, heus"  - Emperor Nero, AD 64

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1931693
Share on other sites

I'm a professional programmer and I was programming in low level C as a job for 4 years and before that as a hobby for at least 10 years. I've never learned any programming language from a book, just by trying out, googling, reading the help files, talking with other programmers, banging my head against the desk.

 

Very important indeed. Coding is like surviving in an hostile environment. You can be very good at surviving in rain forests but once you're dropped in the desert, you're helpless. This is something I observed when I started studying programming at uni before having coded on my own. People would just state they weren't able to solve a problem or would ignore the teacher directives once he had turned his back.

A "you will fail" has a way different flavor than a "I have failed and now I should do that". At least you know why you must organize your code in this specific way and not in this one : because you rage-banged your keyboard too many times. It's also important to shout angrily at things and insult people who designed them (at least remotely). Don't take for granted that programs that are widespread are well designed. For instance makefiles syntax defines tabs as something crucial. If you leave a tab in the wrong place, you're up for a few hours of stupid debugging, hunting for something that is invisible.

Often, (non self-taught) people in my class would ask me for help when they encountered problem. Most of time I had no idea what the solution was, but was able to find a way to get through it. Once, a guy had a problem compiling a multithreaded c program with codeblocks. Because I had used xcode in the past and because I knew you had to set compiler flags under certain conditions even though I'd never done it myself (a side information I had gathered from googling other things). I solved the problem in five minutes. He had spent one hour or so trying various things because he didn't know where to look for the solution

Well what I wanted to say is that you have to learn how to learn. This is the only way to not die in the desert if you're used to rain forests.

 

Now a few concrete advices :

- stackoverflow. Append this keyword to any google search you might perform. Also just copy paste error-lines, that'll usually do the job.

- stay away from c. I hate c. People who like c are people who like to pour information then siphonate it out of buffers. Not really interesting. Too verbose, hence too many opened doors for bugs. You'll eventually learn c anyway.

- Make pauses. Hunting specific bugs for hours is counterproductive sometimes. Sometimes you just wake up in the morning, get back to coding and solve the damn thing within minutes.

- do code katas

 

 

And yes I can only agree with mokz. Learn by doing not reading, have fun and get passionated about what you build and coding in general. (You'll eventually Teach Yourself Programming in Ten Years and that won't be painful at all).

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1931711
Share on other sites

Cheers, guys.

 

I'm not trying to learn this stuff overnight. I revel in the journey, in spite of the trials and tribulations. I understand html since I used to fuck around with building websites back in the day, but lower level programming has always been a mystery to me. I actually don't learn that well by reading about something, I've always been more of a kinetic learner. By seeing and doing. I love to play puzzle games, so I like the aspect of trying to find a solution to an unwritten problem. The math is challenging since you're finding numbers from different perspectives. It's interesting, though.

 

So you guys think I should try messing around with XCode first and then come back to C? Or at least read through this book and let the information sink in while I'm working on other stuff? Seems like it's not that long of a read. A chapter a day would take about three weeks.

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1932578
Share on other sites

I don't know a lot about C but I do know that it is pretty low level. Maybe start with C++ and/or Objective-C which are built on top of C anyways. You'll get the general C stuff but in addition you can focus on object oriented programming concepts. I'd say its really important to understand these concepts, and as much as you don't like reading, you kind of have to. But good tutorials will mix English with concrete examples, which makes it easier to understand.

 

You are definitely really good at puzzle games... You have the mind for it. Like people have said already, its an act of constant problem solving and learning. Those really are constants in programming.

 

Oh and yes, stackoverflow.com is your friend. At my last job, I basically taught myself advanced android programming through asking questions there and reading discussions. If you have a question, I promise you its already been asked there.

 

I learn well by discussing back and forth, which is why I went back to school for 2 years, so I could discuss and ask questions in real time. It can be hard to find that kind of setting outside of academia though. I'd try to find groups or friends that you can meet up with. I'm sure there are real time chats for this too, I've just never done it.

 

Anyways, good luck dude! Just don't forget to spend time on sound design while you're at it. Programming can consume you. :)

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1932584
Share on other sites

C is good for low level programming and when you need to optimize something to run as fast as possible or with as little memory foot print as possible. One solution that I see sometimes is that the user interface and some other components are done with higher level language (f.e. Python) and the engine that needs to be optimized is done with C (or sometimes with assembler which is even lower level, being a symbolic representation of the machine code).

 

If you're doing something that has lots of variable size data arrays, string manipulation or other data that changes size runtime then C is going to be pain in the ass because you probably then need to implement lots of code handling the memory allocation and deallocation and the data structures and you better be familiar with pointers then :). Higher level languages will usually do this automatically for you, so you just drop whatever you like in the array and it stretches to fit your data.

 

Anyway, to fully take advantage of optimizing with low level languages you need to understand how the CPU, memory and other HW parts actually work so you know where to optimize and how.

 

Personally I think object-oriented programming is touted too much as an all around solution even to problems that would be much simpler to solve with conventional procedural programming. But if you're planning to work in the industry you will probably run into object-oriented SW sooner or later so you might as well learn it.

electro mini-album Megacity Rainfall
"cacas in igne, heus"  - Emperor Nero, AD 64

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1932690
Share on other sites

Guest frankbank

Hey Braintree,

 

I have used the Audio Programming book before and highly recommend it. I suggest you just do some basic tutorials on using xcode so you can compile etc, and then just focus on the book. It starts of slowly explaining all the concepts very clearly and ends with showing you how to build a phase vocoder ( very cool ) . Once you have completed this book ( make sure you do the exercises! ), you will be at a great point to expand your skills with other resources.

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1932868
Share on other sites

Guest frankbank

The problem with learning C/C++ books etc is that you will end up learning far more than your purposes require. I started this route and was banging my head off the wall as level of difficult goes up dramatically past the fundamentals. I persevered for a couple of months, completing several texts, only to find that to write plugins, design wicked DSP, I would only need some of the most basic language features. As I mention above, complete the audio programming book, absorb all the info. It teaches you the amount of C and c++ required to operate the examples which you will probably find cover 90% of the languages that you will ever need. Good luck!

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1932871
Share on other sites

A good starting point for C/C++ and audio coding could be the Arduino maybe.. http://arduino.cc

 

it enforces economical programming by its limitations and you can get creative with it very quickly...

A lot of hobbyists & professionals work with it, lots of resources on the web...

then there's this: http://www.nicolascollins.com/handmade.htm

and you might end up inventing the next http://mutable-instruments.net

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1932884
Share on other sites

C++ can add a lot of unwanted complexity but a major advantage is that you can use STL containers and libs like boost so you don't have to reimplement every basic data structure. You can write C-style code while still using that stuff.

Link to comment
https://forum.watmm.com/topic/71564-audio-programming/#findComment-1932898
Share on other sites

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   1 Member

×
×