Audio Programming for the Non-programmer

Started by
7 comments, last by Valoon 9 years, 8 months ago

Hey guys. I know this is a hot topic with some of us, but I know personally I'd love to hear more information on this:

So, I went to GDC a few months ago and a lot of the audio guys I talked to thought it was really important these days for game audio professionals to know how to implement their own audio. This gives the composer/sound designer control of how the audio is used in the game as opposed to throwing your assets "over the fence" to the game developers and hope for the best. I can talk about how important that it might be for the audio person to be mixing in-game, controlling audio behavior, etc, etc, but I'll leave that for another time.

I know how to used FMOD very well, but it's what happens afterwards is what I would like to be more involved with. Where does an audio guy like me begin with learning how to program audio? What programming language should I be looking at? Are there any good resources available to concentrate solely on audio implementation programming and not learning a whole broad language? Should I even bother?

I know the argument has been made that audio people should be focusing on music/sound. I am considering all options and want to assess how much time/effort it would take to learn audio programming. Any thoughts?

Advertisement
Are there any good resources available to concentrate solely on audio implementation programming and not learning a whole broad language? Should I even bother?

Broadening your skills is almost always "worth the bother" :)..

If you can find a cheap community college programming class in something like C++ or C#, it's probably well worth it. Not necessarily because you'll be coding in the game itself, but to give you a much better perspective on what it is the programmers actually do :)... Or to quote Marty O'Donnell.. "Oh, and everyone should learn some programming."

"Scripting", which is sort of 'programming-lite' is also very useful, for being able to create complex audio behaviors--either for things that FMOD/WWise don't do, or for the (very large) percentage of games that don't use middleware.

Knowing how to code of course won't make up for inadequate music/sound chops. But presuming you shine in those areas, understanding more of the tech that goes into the game can help differentiate you from others. In the end, it's all about making the game better, and if you can talk turkey with the programmer, or even help them out, it's only a plus.

As a one-person anecdote, I'm working on a game right now that, because I was able to whip up a (very) simple demo using middleware, convinced the developer it was worth the $'s to license it. And the game will sound that much better for it.

I have a quote on the front page of the GameSoundCon web site from the audio director of Volition discussing his hiring process:

I see a lot of applicants who have experience in [traditional] media... if this is all you got, then you will be outgunned

..if you've got other skills that make you valuable, like knowing how to script... or knowing how memory and streaming work.... well, that is awesome, because that sounds like someone I might want to work with.

And to re-iterate... If you still need to get your composition, orchestration or sound design skills up to snuff, you're better off spending time practicing those. But if you're competitive on those-- knowing some coding can only help you in a career in game audio.

Brian Schmidt

Executive Director, GameSoundCon:

GameSoundCon 2016:September 27-28, Los Angeles, CA

Founder, Brian Schmidt Studios, LLC

Music Composition & Sound Design

Audio Technology Consultant

Broadening your skills is almost always "worth the bother" smile.png..

If you can find a cheap community college programming class in something like C++ or C#, it's probably well worth it. Not necessarily because you'll be coding in the game itself, but to give you a much better perspective on what it is the programmers actually do smile.png...

+1

In my opinion, proper integration of audio is as much the "focusing on music/sound", as picking/recording/composing the right sounds for the job. I think that anyone interested in making audio for interactive projects should put their time and effort into learning at least principles of coding, as it can greatly increase the creative possibilities and can change the way you think about the audio itself.

Brain, thank you for the great information. I definitely appreciate your insight on the topic.I definitely feel good about my composition skills, but it's something you can still spend a lifetime perfecting. However, knowing how to communicate with programmers alone seems to make it worth it for me to learn programming. I'm working on a project now and we have to work pretty hard to understand each other at times :).

Where is a good resource for learning audio scripting?

Stormwave, those are some great points as well. Even using "middleware" changes how I compose and record sounds, so understanding the principles of implementation might improve my whole processes.

Honestly I know "The Audio Programming Book" which is not about implementing but 100% about audio. But you really need to know code before starting it because they do an introduction about C and C++ which is 50 pages (out of 800) for the two and then they just dive "deep". If you've never studied code before you will not get it with just their intro (at least I don't think so but I might be wrong).

So I would start with a book on C/C++ (there is a billion of them) and then go to the one above.

I don't think there is any about just implementing because impleting really is just (I know for Wwise) taking the numbers it gives you and putting them at the right place in the right way in the code. So you really need to get the whole code.

Valoon, that was explained really well, thanks. From what I understand C# is a bit easier to learn and it is used in Unity -- is that correct? Could I just learn within Unity at least initially?

Also, just a bit confused on the terminology here, but a lot of people tell me scripting is easier and more practical. Is that the same thing as what you described as implementation, Valoon?

First I need to say I am not a real pro programmer, I am an audio guy too but I do have a big interest in programming.

What I know about C# I learned it with Unity, so yes it's correct it is in Unity. I think you could learn everything about C# in Unity actually. It's not limited, to my knowledge, they just have some premade functions/classes to help you program games on their engine. But you can very well make your own if you feel like it/have too.

The big bonus here is so many people code in C# in Unity so you have almost endless help on google/youtube/unity website.

You will need a lot of patience tho but that's true for every language.

C# is also indeed easier to learn (It is my favorite language to be honest) but I am 95% sure it's never used by the audio programmers. When I see job offers for them they ask for strong C/C++ skills and not C#.

On the bright side knowing C# makes it way easier to understand C/C++.

For the scripting part, I think this is what programmers call the programming that is pretty high level (meaning that it's not the basics of the code it's basically the final part of it). It's mostly what you do in Unity. For example they have a class called "Input" which will help you to tell what key the player used on his keyboard or mouse so you just use this but you don't have to worry about what's bellow and how it is actually done.

This is exactly what Unity does, the very hard part, like how they handle physics and stuff like this is hidden and you can use what they made to make your game, this way you don't need to be a software engineer to make a small game.

There is also scripting languages like LUA or Python that are easier than all of the ones above. If you have no clue at all about programming this website is nice for basics with Python : http://www.codecademy.com/fr/tracks/python

Long story short I think starting with Unity in C# is the best thing you can do if you are into games. The Python link I gave is good if you really know nothing but it gets boring fast because you don't really do "cool" things.

But even tho I'm pretty confident in what I say, it'd be cool to have a real programmer answer this.

Thanks Valoon! So, it looks like starting with C# within Unity is the best bet for me. Once I get a grasp on that I may then look into C/C++. For now, I just want to learn how to implement my audio and FMOD projects in the game code and go from there. That way when the game is release I can go all Shake'n Bake and scream "and I helped!" :)

I've bought a couple books and it's actually quite invigorating stuff so far! So, what tuts would anyone recomend to learn C# (for the first-time programmer) within Unity. I'll be learning on a mac so all of the visual studio tuts won't help me much anyways.

I'd say you should watch the Unity tutorials on their website if you code in Unity. It's a great start.

This topic is closed to new replies.

Advertisement